Laboration 1

Persistent programmering

Testa ett språk för persistent programmering.

Labben är till för att testa hur enkelt det blir att få till persistens om stödet finns i språket.

Många långa sökningar ger vid handen att endast två användbara språk finns kvar:
Napier och PJama. Båda finns på institutionen. Troligen kan man enklast nå reultat med PJama, som är "Persistent Java"

Problemet blir att läsa manualer, få igång PJama och skapa en "Persistent store"

För att ha ett problem att fokusera på kan nedanstående ide användas:

I facklitteratur finns ofta omfattande referenslistor. Ett intressant problem är att undersöka dessa referenser och upptäcka eventuella cirkulära referenser samt att kunna få en utskrift på samtliga böcker som refereras till, direkt eller indirekt, i en bok.

Cirkulära referenser uppstår då författare har kunskap om varandras verk innan de kommit ut (inte alldeles ovanligt).

Ett annat intressant problem är att se vilka författare som ingår i snittet av referenser i böcker av en given författare (dvs om en eller flera författare alltid refereras av en viss författare).

överför nedanstående relationsdatabasstruktur till en modell för ett objektorienterat program med persistens. Du kan använda vilken notation som helst för objektorienterad modellering. Semantisk modellering a la Elmasri-Navathe, ODL, UML eller annat verktyg går bra. Eftersom alla data är persistenta behövs ingen speciell notation för persistens.

bok(ISBN, titel, upplaga)
författare(författarnr, namn)
förlag(förlagsnr, namn, tel)
skrivit(ISBN, författarnr)
referens(frånISBN, tillISBN)
utgivit(förlagsnr, ISBN)

Skriv ett program för antingen PJama eller Napier som realiserar ett system för att söka i strukturen enligt t.ex. ovan givna frågeställningar. Skulle någon till äventyrs hitta ett annat språk på nätet och testa det vore det bara roligt. Galileo finns ju men (tror jag) bara för ett par gamla MS-Windows-varianter och för MacOS. Egna ideer är välkomna.

På kursbiblioteket (/info/oodb04/) finns en del filkataloger, bl.a. en om pjama. Den innehåller en intieringsfil som ni kan yxa till så att den fungerar för er. Den är gjord av ett gäng som redan redovisat

Lycka till!

Laboration 2

Laborationen är till för att testa dels installation av databassystem, dels implementation av objektorienterad eller objektrelationslösning

Uppgiften är att ladda ner och installera antingen ett objektdatabassystem eller ett objektrelationssystem och att utföra en inte helt trivial uppgift i systemet. Lättast är det att samarbeta så att man har egen, helst bärbar, dator att arbeta på. Det kan gå att fixa så att man får installera på någon NADA-dator eller eventuellt låna bärbar NADA-dator, men då blir tidsplanen snäv.

På länksidan finns nu listor med olika databashanteringssystem. Några kan man ladda ner och använda fritt, andra måste man lova att inte använda kommersiellt och ytterligare några fungerar bara en viss tid.

Välj bland objektorienterade och objektrelationssystemen.

När systemet väl är installerat kan man utföra antingen en egenpåhittad uppgift eller kan man implementera en "lagom" del av följande gamla tentauppgift (modelleringsuppgift).

  1. Ett hyresföretag hyr ut lägenheter på ett antal orter i Sverige och har hittills använt sig av manuella register.
    Nu önskar man överföra administrationen av verksamheten till en objektdatabas.
    Man vill ha uppgifter om:
    Eftersom hela fastighetsbeståndet kontinuerligt ses över har man behov av uppgifter om när inspektion senast skedde och vad som då anmärktes på. Man har en kod för varje tänkbar åtgärd som kan förekomma och en schablonkostnad för varje sådan åtgärd.
    Uppgifter om beställda reparationsarbeten vill man också ha och, naturligtvis, även uppgift om när reparationen utförts.
    Det är också intressant att kunna få veta vilka som släpar efter med hyra.
    Man har ansett att det är viktigt att föra statistik över boendet så att avflyttade personer behålls i registret med uppgifter om när och var de bott.
    Dessa uppgifter använder man sig också av för att skötsamma hyresgäster skall kunna flytta inom det egna bostadsbeståndet (en slags intern bostadskö).
    Man kan alltså bo och ha bott på samma gång, eller ha bott i flera olika lägenheter o.s.v.

    Gör en modell i lämpligt verktyg och implementera databasen (eller rimlig delmängd). Problemet är ju inte ett fullt funktionellt system utan att testa objektorienterad teknik i samband med databashantering.

    Lägg ingen eller bara liten vikt vid gränssnittet. Det är inte heller vitalt. Har man gjort labb 1 och 2 (+ tillräckligt med hemuppgifter) har man godkänt (G/3) på kursen.

    Laboration 3

    Betygshöjande labb

    3 varianter. För alla varianterna ska man sätta upp och starta sin egen webbserver som ska utgöra presentationslagret för applikationen. Man kan välja vilken som helst webbserver som inte följer med aktuellt OS. Man kan konfigurera t.ex. Apache så att man kan starta den lokalt på vilken dator som helst. Det är också ovidkommande vilket OS man använder. De som väljer att jobba på stationär hemmadator måste se till att det går att redovisa på NADA, t.ex. genom att göra databasen tillgänglig på internet. OBServera att resultatet är betygsgrundande på kursen. Iden med labben är att bygga antingen en databasdriven applikation eller en applikation för att söka i en databas.

    1. Gör en XML-databas med möjlighet till sökning och med ett gränssnitt som sköts med XML och transformationer m.h.a. XSLT. Databasen kan ha i stort sett vilket innehåll som helst. Det intressanta är hur man går tillväga för att åstadkomma systemet.
    2. Gör en databas i godtyckligt databashanteringssystem och sköt sökning, uppdatering, presentation av resultat o.s.v med PHP.
    3. Gör en databas i godtyckligt databashanteringssystem och sköt sökning, uppdatering, presentation av resultat o.s.v med servlets.

    webbserver

    För de intresserade har jag hittat en minimal webbserver:
    Abyss Web Server X1 version 1.2.2.2
    URL: http://www.aprelium.com/
    Detta är en fri, liten och fullt standardkompatibel webbserver som man hittar i olika versioner på /info/oodb04/webb-server/ Den finns för
    MacOS X (abwsx1.dmg),
    Linux (abwsx1.tgz),
    FreeBSD (abwsx1-freebsd.tgz) och
    Windows (abwsx1.exe).
    Trots sin lilla storlek (exekveringsfilen för Windowsversionen är mindre än 112 kilobyte) stöds bland annat HTTP/1.1, generering av dynamiskt innehåll genom CGI/1.1-script, SSI (Server Side Includes), anpassningsbara felmeddelandesidor, användarbehörighetskontroll med HTTP-auktorisering, PHP-, Perl- och ASP-script.
    Läs licensen noga innan ni använder