Persistensramverk mer än bara ett databasgränssnitt

Storlek: px
Starta visningen från sidan:

Download "Persistensramverk mer än bara ett databasgränssnitt"

Transkript

1 Persistensramverk mer än bara ett databasgränssnitt Utvärdering av olika lösningar för ett databasgränssnitt med hjälp av ett persistensramverk A R V I D N I L S S O N Examensarbete Stockholm, Sverige 2006

2 Persistensramverk mer än bara ett databasgränssnitt Utvärdering av olika lösningar för ett databasgränssnitt med hjälp av ett persistensramverk A R V I D N I L S S O N Examensarbete i datalogi om 20 poäng vid Programmet för datateknik Kungliga Tekniska Högskolan år 2006 Handledare på CSC var Mikael Goldmann Examinator var Stefan Arnborg TRITA-CSC-E 2006:031 ISRN-KTH/CSC/E--06/031--SE ISSN Kungliga tekniska högskolan Skolan för datavetenskap och kommunikation KTH CSC Stockholm URL:

3 Persistensramverk Mer än bara ett databasgränssnitt Utvärdering av olika lösningar för ett databasgränssnitt med hjälp av ett persistensramverk. Sammanfattning Problem Ett återkommande problem vid framtagande av programvara som använder sig av data som måste lagras mellan användning, är utformningen av dess databasgränssnitt. Glappet mellan affärsutvecklarens objektorienterade tänkande och databasutvecklarens relationstänkande visar sig och orsakar snabbt problem, även kallat the impedance mismatch. Idag finns det flertalet olika sätt att bemöta problemet med databasgränssnitt. Den enklaste lösningen är att använda SQL-kod direkt i den objektorienterade applikationen, men för mer komplex mjukvara krävs ett mer avancerat gränssnitt som separerar databasen från applikationen, så att inte applikationen behövs skrivas om vid en ändring i databasstrukturen. En av de kraftfullare lösningarna på marknaden idag är persistensramverk, där SQL-koden genereras dynamiskt och kan bäddas in i en flerskiktsarkitekturlösning. Uppgift Examensarbetets uppgift bestod i att undersöka marknaden av persistensramverk och välja ut ett par kommersiella produkter för en djupare utvärdering. Utvärderingen skulle ge svar på om Sign On AB skulle välja att börja använda ett persistensramverk i deras applikation FormPipe. Om det skulle visa sig att slutsatsen av utvärderingen var att Sign On AB inte bör använda sig av ett persistensramverk, skall rekommendationer ges om hur Sign On AB skulle kunna vidareutveckla det egenutvecklade databasgränssnittet de använder idag. Ramverken TopLink samt Enterprise Java Beans valdes ut för att ligga till grund för byggandet av två prototyper för att underlätta en utvärdering. Prototyperna täckte upp två av de centrala områdena av FormPipe: mottagning av dokument samt hanteringen av de två aktörerna Användare och Kund med deras grupptillhörighet.

4 Slutsatser Varken TopLink eller Enterprise Java Beans medförde någon större positiv effekt för FormPipe. TopLink gav antingen ingen lösning på de i det befintliga databasgränssnittet identifierade problemen, eller så lyfte det upp problemen från databasgränssnittet till en objektorienterad nivå. Att införa Enterprise Java Beans skulle underlätta delar av utvecklingen mot FormPipes databas, men skulle innebära att större delar av koden i FormPipe måste skrivas om helt. Baserat på detta, rekommenderas Sign On AB att inte införa ett Persistensramverk i deras applikation FormPipe. Istället togs rekommendationer fram med regler och riktlinjer att använda vid en vidareutveckling av FormPipe. Dessa rekommendationer presenteras i slutet av denna rapport.

5 Persistensy framework More than just a database interface An evaluation of different solutions for database interfaces with the help of a persistency framework. Abstract Problem description A recurring problem in developing systems which use persistent data, i.e. data that must be saved between uses of the system, is how to define the database interface. The difference between the business developers object oriented thinking and the database developers relational thinking becomes apparent and quickly causes problems, also called the Impedance mismatch. Today there are many different ways of meeting these problems. The simplest solution for this problem is to use SQL-code inside the object oriented application, but for more complex software systems a more sophisticated interface is needed, to allow changes in the database structure without having to change parts of the rest of the application. One of the more powerful solutions on the market today is a Persistency framework, which generates SQL-code dynamically and is embedded in a multi-tier architecture. Task The assignment was to evaluate the market of Persistency frameworks and to choose a couple of commercial products for deeper evaluation. The evaluation should answer if Sign On AB should start to use a persistency framework in their application FormPipe. If the result of the evaluation would show that Sign On AB should not start to use a persistency framework, the assignment was to give some recommendations on what Sign On AB could do to improve their own developed database interface that they use today. The two frameworks TopLink and Enterprise Java Beans were choosen as bases for prototypes in the evaluation. The prototypes covered two central functionalities of FormPipe: receiving documents and the management of Users and Customers with their Group access. Conclusions Neither TopLink nor Enterprise Java Beans brought any real advantage for FormPipe. TopLink either didn t give any solution to the problems, or brought them up from the database interface to an object oriented level.

6 Using Enterprise Java Beans would make it easier to develop a better interface to the database of FormPipe, but it would also mean that a major part of FormPipe would have to be rewritten. Based on that, the recommendations for Sign On AB were not to implement a Persistency framework into their application FormPipe. Instead recommendations with rules and guidelines on how to improve the database interface were developed and they were presented at the end of this thesis.

7 Förord Detta är ett examensarbete i ämnet datalogi vid Nada, Kungliga Tekniska Högskolan. Handledare på Nada var Mikael Goldman och examinator var professor Stefan Arnborg. Examensarbetet utfördes på uppdrag av Sign On AB och handledarepå uppdragsgivarens sida var Henrik Olsson. Först vill jag tacka min mor, far och bror som givit mig stöd under arbetets gång. Jag vill även tacka min vän och studiekamrat Martina Gustavsson som i två omgångar korrekturläst rapporten och kommit med förslag på förbättringar. Sedan examensarbetet genomfördes och att denna rapport avslutats, har persistensravmerket TopLink bytt ägare från WebGain, Inc. till Oracle. Information om TopLink finns i skrivande stund ( ) på webbsidan:

8

9 Innehållsförteckning 1 Inledning Bakgrund Sign On AB Problembeskrivning Uppgiftslydelse Syfte Begränsningar Utförande Resultat Relations kontra Objektorienterat tänkande Relationstänkande Objektorienterat tänkande Impedance mismatch Traditionella databaslager Mappa Attribut Mappa Arv Mappa Relationer Flerskiktsarkitektur Klient/Server-arkitektur Treskiktslager Persistensramverk Vad är ett persistensramverk krav på persistensramverk Java 2 Enterprise Edition Programspråket Java Java Naming and Directory Interface (JNDI) Java Transaction API & Java Transaction Service Java Database Connectivity Java Server Pages Enterprise Java Beans 1.1 tekniska data Enterprise Java Beans 2.0 skillnader från FormPipe FormPipe Notariatserver Utförande Sign On ABs syn på Amblers persistensramverk Identifierade befintliga problem Urvalsprocess persistensramverk - Övergripande Urvalsprocess persistensramverk första urvalet Urvalsprocess persistensramverk Andra urvalet Prototyp - Generellt Prototyp Frågeställningar Prototyp byggd med persistensramverket Toplink Byggandet Löser TopLink problemen i FormPipe?... 52

10 9.3 Identifierade problem med TopLink Allmän analys Slutsats Prototyp byggd med EJB Byggandet Löser EJB problemen i FormPipe? Identifierade problem med EJB Allmän analys CMP - BMP Slutsats Resultat Resultatet i stort Jämförelsetabell Slutsats TopLink och EJB Bygga eget Rekommendation Identifierade problem Lösningar Källförteckning... 67

11 1 Inledning Denna examensrapport är indelad i två delar, den börjar med en sammanfattande del följt av en mer ingående beskrivande del. Inledningen är tänkt att ge en kort övergripande bild över bakgrunden, genomförandet och resultatet av examensarbetet. Den därefter följande delen innehåller en beskrivning av tekniker som används och senare beskrivs genomförande, resultat och slutsatser mer ingående. 1.1 Bakgrund I dagens applikationer blir lagring av information allt viktigare. Lagrad information förekommer i applikationer i allt ifrån ett enkelt digitalt CD arkiv till avancerade system som ett stort E-handelsföretags webbshop. Krav på prestanda, tillförlitlighet, förmåga att lätt kunna anpassas till nya krav, m.m. blir allt högre, men även t.ex. att kunna dela upp system i moduler för att underlätta för utveckling och underhåll av systemen, gör att nya krav på metoder för programmering för hanteringen av persistenta 1 objekt ställs. I dag används främst flerskiktsarkitekturer 2 vid utvecklandet av webbaserade system. Flerskiktsarkitekturer är ett försök till att dela upp ett system i moduler som interagerar med varandra, men trotts detta måste moduler idag överträda varandras gränser. Detta innebär problem vid utvecklandet men framförallt vid underhåll av system byggda med de konventionella utvecklingsmetoderna. Olika tekniker för att underlätta utvecklingen utav system som använder sig av persistent data har därför tagits fram, Objektorienterade databaser (OODB), Enterprise Java Beans 3 (EJB) och persistensramverk är några i raden som tagits fram för att lösa hanteringen utav persistenta objekt. OODB är ett sätt att lösa lagringen utav persistent data på ett rent objektorienterat sätt, medan EJB är ett sätt där lagringen av persistenta data försöks lösas genom att bygga ett objektorienterat gränssnitt för hanteringen av persistent data, men där även flertalet andra problem försöks lösas utöver hanteringen av lagringen av persistent data. Ett rent persistensramverk däremot blir som ett eget skikt i en flerskiktsarkitektur som sammanlänkar den del av systemet som hanterar persistent data, s.k. databaslagret med den delen av systemet som bearbetar data, s.k. affärslagret och erbjuder ett helt objektorienterat gränssnitt mot persistent data. Dessa tekniker har alla sina för och nackdelar och vilket alternativ 1 Persistens betyder beständig eller lagrande. Begreppet Persistens förklaras mer ingående längre fram i rapporten. 2 Flerskiktsarkitektur beskrivs mer ingående i kapitel 4. I rapporten blandas skikt och lager, då de båda används som termer i litteratur. 3 Enterprise Java Beans beskrivs mer i kapitel 6 1

12 som passar bäst vid utvecklingen av ett system beror till stor del på ett systems storlek och tänkta framtid. 1.2 Sign On AB Sign On AB grundades 1991 och är ett företag som idag har sitt kontor i Mörby, strax norr om Stockholm och har cirka 65 anställda. Sign On AB har sedan 1995 arbetat med lösningar för Internet. Deras affärsområden består dels av skapande och underhåll av elektroniska blanketter genom tjänsten Sign On Blankettarkivet och dels av ett system för att hantera elektroniska blanketter och signaturer via Internet i form av deras egenutvecklade produkt FormPipe FormPipe FormPipe är byggt enligt en klient/server-arkitektur. FormPipe består av en klientdel som ligger på användarnas datorer (Denna del av FormPipe kommer inte tas upp i denna rapport) och en serverdel (Notariatserver) som tar emot filer, dekrypterar data, tidstämplar samt verifierar signaturer och certifikat. Denna Notariatserver behandlar inkomna data, sparar undan en originalhandling och kan även skicka data vidare till ett verksamhetssystem hos en mottagare om så önskas. Exempelvis skulle användaren kunna vara en person som fyller i en deklarationsblankett. Denna blankett skickas sedan in via Internet till mottagaren, d.v.s. skatteverket och deras Notariatserver, som efter att ha behandlat blanketten, för informationen vidare in i deras verksamhetssystem. (Olsson, 2001a) 1.3 Problembeskrivning I det befintliga databasgränssnittet som används av FormPipes Notariatserver idag finns inte några enhetliga regler eller riktlinjer för hur relationer 4 skall hanteras. Det är t.ex. inte självklart i vilken typ (klass) som en en-till-många relation hamnar. Inte heller åtkomsten av objekt från databasen sker på ett enhetligt sett. Detta innebär att utbyggnad och underhåll av systemet försvåras. En annan försvårande faktor är att SQL-koden 5 idag ligger hårdkodad i de klasser som representerar de typer som finns i systemet idag. Detta innebär att vid tillägg av nya typer behövs delar av kod för hantering av annat persistent data skrivas om. 1.4 Uppgiftslydelse Uppgiften bestod i att utreda vilka problem som fanns i det befintliga FormPipe-systemet idag, samt se hur ett ramverk för hanteringen utav persistent data skulle kunna byggas upp med olika tekniker för att se om de passar de krav som Sign On AB har på systemet. Detta skulle t.ex. kunna göras med hjälp av EJB eller flertalet persistensramverk som finns på 4 Databasterm, beskrivs mer i kapitel SQL Språk som används för hantering av persistent data i relationsdatabaser. 2

13 marknaden idag, men även aspekten att bygga ett eget ramverk beaktades. Uppgiften gick också ut på att bygga ett par prototyper av en delmängd av FormPipe för att kunna jämföra teknikerna med varandra, samt att lokalisera problem och svårigheter med de olika teknikerna och se hur de skulle kunna lösa de befintliga problemen i FormPipe idag. Problem med ramverken beskrivs senare i rapporten och ett försök till att även ta fram allmänna riktlinjer gjordes. Uppgiften bestod också i att sammanställa resultatet och tillsammans med ett förslag till val av teknik för hur hanteringen av persistent data bör utformas i en examensrapport. 1.5 Syfte Sign On ville ha utrett vilka problem som fanns i det befintliga systemet med avseende på hantering av persistent data, samt hur olika tekniker för hantering av persistent data står sig mot varandra och hur dessa skulle passa att användas vid en vidareutveckling utav FormPipe. Det Sign On AB ville göra var att försöka få en enhetlig hantering av olika relationer m.m. i FormPipe. En annan önskan var att undersöka om det skulle kunna gå att frikoppla databasaccessen från typerna, allra helst på ett generiskt sätt så att man kan addera nytt persistent data till en typ utan att behöva programmera om andra delar utav systemet. 1.6 Begränsningar Först och främst behandlas frågorna om hur hanteringen av persistenta objekt samt hur frikopplingen av databasaccessen från typerna kan utformas. Ett eget persistensramverk var inte aktuellt att bygga då det var ett för stort projekt för detta examensarbete. Sign On AB håller också på att utreda om det är möjligt att distribuera systemet. Ett sätt att lösa detta är att skilja på databaslagret och affärslagret i den flerskiktsarkitektur som används i FormPipe och lägga dem på olika servrar, för att på så sätt möjliggöra en lösning där lasterna kan spridas på ett bättre sätt. Detta tas i beaktning i detta examensarbete, men ingick inte som krav från Sign On AB. Därför tas distributionen endast upp i mindre omfattning och diskuteras enbart vid de olika lösningsförslagen, då den bara berör ramverket indirekt vid exempelvis en EJB-lösning. Objektorienterade databaser tas inte heller i beaktning i denna rapport då Sign On AB i dagsläget anser att de bör satsa på tekniker som deras kunder redan använder och därför enbart beakta de tekniker som bygger på relationsdatabaser. 3

14 1.7 Utförande Initialt genomfördes en snabb utredning av olika tekniker för hantering av persistenta objekt. Då bestämdes att en satsning på ett rent persistensramverk samt EJB skulle utvärderas och ställas mot det befintliga systemet. Dessutom genomfördes en undersökning för att få en överblick över de befintliga problemen med avseende på hanteringen utav persistenta objekt i FormPipe-systemet. Dessa problem sammanställdes och definierades till i 7 punkter. När problemen i det befintliga systemet definierats gjordes ett urval av de olika teknikerna, baserat främst på information från de olika tillverkarna. Ett 15-tal rena persistensramverk utvärderades i två steg, och från andra urvalet som stod mellan 4 olika persistensramverk valdes Toplink 6 ut för att senare utvärderas och jämföras mot EJB och det befintliga FormPipe-systemet. Utvärderingen gjordes genom att prototyper av en delmängd av FormPipe-systemet byggdes. Den del som bäst representerade de identifierade problemen med det befintliga FormPipe-systemet användes som grund för de prototyper som byggdes. Dessa prototyper utvärderades sedan och jämfördes på de definierade befintliga problempunkterna och ett förslag till rekommendationer togs fram. 1.8 Resultat Prototyperna visade att en övergång till att använda ett rent persistensramverk eller EJB i FormPipe inte kommer att innebära några större förbättringar, utan istället kommer att införa nya problem. Toplink erbjöd en enkel utvecklingsmiljö och frikopplade databasaccessen från typerna på ett önskvärt sätt, men erbjöd på de andra punkterna inga större förbättringar. EJB frikopplade databasaccessen från typerna även det på ett önskvärt sätt och erbjöd också lösningar på ett par av problempunkterna i det befintliga systemet. En annan fördel med en övergång till EJB är att det kan göras i två steg. Dock medförde EJB ett par större problem i hur viss funktionalitet i FormPipe-systemet skulle implementeras samt att en större del av systemet måste byggas om vid ett införande av EJB än vid ett persistensramverk. FormPipe är ett för litet system för att det skall dra full nytta av Toplinks alla egenskaper då det riktar sig främst till större system med många olika persistenta objekt. Värt att notera dock är att hur TopLink skulle påverka prestanda inte har tagits upp i denna rapport och därmed inte heller värderats i detta resultat. EJB är ett alternativ som skulle underlätta utvecklingen av hanteringen utav persistenta objekt, men det också innebär 6 TopLink är ett persistensramverk som utvecklas av WebGain, Inc. 4

15 ett stort steg att ta, och är därför heller inte aktuellt i nuläget. Att istället bygga om det redan befintliga ramverket och ta fram riktlinjer för hur de skulle kunna få bukt med problemen verkar vara det alternativ att föredra för Sign On AB. Därför avslutas den nu kommande och mer beskrivande delen utav denna rapport med ett antal regler och riktlinjer för att Sign On AB i fortsättningen skall kunna undvika de i denna rapport identifierade problem som finns i FormPipe idag i avseende på hanteringen utav persistenta objekt. 5

16 2 Relations kontra Objektorienterat tänkande Relations- och Objektorienterat tänkande är två olika sätt att för människan lättare kunna illustrera och förklara olika hanterande av data och databehandling. 2.1 Relationstänkande Relationstänkandet introducerades i början av 70-talet av E. F. Codd (Elmasri, Navathe, 1994). Det bygger på att information kan lagras i form av relationer. Dessa relationer lagras som tabeller i en databas. Det är bara information som lagras i databasen, med andra ord skiljs information ut från funktionalitet. Dock går det numera att till viss del bygga in även funktionalitet i databasen med hjälp av s.k. stored procedures och triggers Tabeller En databas består av tabeller som representerar olika relationstyper. Dessa tabeller består i sin tur av rader och kolumner. Kolumnerna står för värden på en egenskap hos en relation, och raderna representerar en specifik relation. Ta t.ex. en relation Person, den skapas då som en tabell Person. Tabellen kan ha kolumnerna Personnummer och Namn, som representerar olika egenskaper som finns hos Person-relationen. Dessa kolumner är statiska och bestäms av ett fixt databasschema Tupler Rader (i relationsteorin kallade tupler) i Person-tabellen innehåller värden i de olika kolumnerna och representerar den information som lagras i databasen. Ordningen på raderna är ingen informationskälla i sig, men tuplerna ordnas med fördel på lämpligt vis för att passa olika sökstrategier Primärnyckel En tabells primärnyckel är en minimal delmängd av dess kolumner som kan användas för att unikt identifiera en tupel. Det kan finnas flera delmängder som kan identifiera unika tupler, dessa kallas för surrogatnycklar. Primärnycklar kan användas för att representera relationer mellan två tabeller, t.ex. mellan tabellerna Person som har en Adress eller mellan samma tabell, t.ex. relationen mellan personerna far och son. Till exempel som Figur 2-1 visar, skulle Person-tabell kunna innehålla kolumner med namnen personnummer, adress_id, far m m. Där kolumnen personnummer är tabellens primärnyckel och kolumnen adress_id innehåller Adress-tabellens primärnyckel. Då är det lätt kan koppla ihop personen med dess adress från Adress-tabellen. Kolumnen far skulle då kunna innehålla personnumret till personens far. På så sätt fås en koppling mellan 7 För en mer ingående beskrivning av stored procedures och triggers se

17 son och far, men också mellan far och son, då det är lätt att titta igenom alla tupler och se om det finns någon som har faderns personnummer i far-kolumnen. Figur 2-1 Figuren beskriver hur tabeller kan kopplas ihop med hjälp av primärnycklar Relationsdatabas På detta vis kan en informationsstruktur byggas upp i form av relationer i en s.k. relationsdatabas (RDB). I en sådan struktur behövs det ibland att normalisera tabellerna, d.v.s. strukturera dem så att redundans och anomalitet kan undvikas. Vid försök att få bort redundans skapas ofta nya tabeller med den redundanta informationen, så att den samlas på ett ställe. Detta medför i allmänhet att databasens komplexitet ökar ju mer den normaliseras. Det finns 6 stycken olika grader av normalisering, och det som normalt rekommenderas är tredje normalform (3NF). En allt för hög normalisering kan innebära prestandaförluster då det ofta innebär att det krävs många tidskrävande operationer för att läsa upp information (join-operationer). (McClure, 1997) 7

18 Person Person_id Namn Adress Postnummer Postadress 12 Bertil Svensson Avsidesgatan Malmö 13 Sven Nilsson Hemvägen Stockholm 15 Svea Karlsson Långabacken Göteborg 12 Bertil Svenson Bortaplan Malmö 15 Svea Karlsson Hemvägen Stockholm Tabell 2-1 Tabellen visar en onormaliserad enkel tabell Exempel på en normaliseringsåtgärd; En person kan knytas till mer än en adress, t.ex. hemadress, jobbadress mm. Det kan även vara flera personer knutna till en adress, de kan t.ex. bo ihop, eller jobba på samma jobb. I en onormaliserad databas kan tabellen se ut som i Tabell 2-1. Där ser vi att en person finns med flera gånger då personen är knuten till flera adresser. Person_Ny Person_id Namn 12 Bertil Svensson 13 Sven Nilsson 15 Svea Karlsson Person_Adress_Ny Person_ID Adress_ID Adress_Ny Adress_ID Adress Postnummer Postadress 1 Avsidesgatan Malmö 2 Hemvägen Stockholm 3 Långabacken Göteborg 4 Bortaplan Malmö Tabell 2-2 Visar hur en enkel förändring av en tabell i en relationsdatabas kan göras till tre för att förenkla databasstrukturen och minska ner redundanser m.m. En normaliseringsåtgärd kan vara att lägga adresser i en egen tabell med en associationstabell 8 som sammanbinder dem som Tabell 2-2 visar. 8 Beskrivs mer ingående i kapitel

19 För att komma åt data från en relationsdatabas har ett frågespråk tagits fram, Structured Query Language (SQL). SQL är ett mängdbaserat språk. Eftersom strukturerade programmeringsspråk såsom C och Pascal inte är mängdbaserade, har det också tagits fram något som heter markör (cursor) för att underlätta mängdhanteringen. En markör används för att kunna stega igenom en mängd av data som returneras av en SQL-fråga en tupel i taget. Språket Java har dock egna klasser för att klara av konverteringen mellan mängdbaserade frågespråket SQL och Objektorienterade språket Java. I Javas fall behövs Java Database Connectivity (JDBC) för att komma åt data i en relationsdatabas. JDBC är ett standardiserat gränssnitt mot relationsdatabaser och är databasoberoende. 2.2 Objektorienterat tänkande Objektorienterat tänkande introducerades till stora delar när programmeringsspråket Simula67 (simple universal language) lanserades under slutet av 1960-talet av Ole Johan Dahl och Kristen Nygaard (Sklenar J, 1997). Senare har även språk som Smalltalk, C++ och Java byggts på objektorienterande tänkande. Objektmodellen bygger på att världen modelleras i form av objekt som har attribut och funktionalitet. T.ex. en TV: den har en storlek och det går att växla mellan kanaler som den skall visa. TV:n i sin tur kan bestå av mindre objekt som kanalväljare och bildrör som har egna attribut och egen funktionalitet. Objektorienterat tänkande påminner mer om normalt tänkande än relationstänkandet, vilket gör det lättare att skapa modeller utav applikationer för att kunna förklara för beställaren, som ofta inte behöver vara teknisk kunnig, så att denne förstår. En annan fördel är också att en applikation lättare kan delas upp i moduler. Därmed kan gränssnitt specificeras upp mellan olika delar av applikationen. Moduler som då lätt kan bytas ut utan att behöva skriva om hela applikationen Objekt Ett objekt är alltså en abstraktion för begreppen identifierare, funktionalitet och attribut. För att kunna skilja på olika objekt är en objektidentifierare (OID) knuten till varje objekt. Funktionalitet realiseras som metoder hos objekten, och attribut representerar ett objekts tillstånd. Ett objekt är av en speciell typ, en klass. Ur programmerarens synvinkel har en klass ett namn, attribut och metoder. Med metoderna kan ett objekts attribut ändras och därmed dess tillstånd. På så sätt kapslas ett objekts funktionalitet in och programmeraren som använder sig av objektet behöver inte bekymra sig för hur detta är implementerat, utan kan använda sig av objektet som en black box, s.k. inkapsling. Med objektorienterad programmering kommer också vissa begrepp som 9

20 förenklar tänkandet, såsom arv, polymorphism och dynamisk bindning. Dessa förklaras nedan: Arv: I objektorientering försöker man samla klasser som har samma egenskaper och funktionalitet och ordna upp dem i en arvsstruktur. T.ex. en bil och båt har en hel del egenskaper gemensamt, dessa kan samlas i begreppet fordon. Fordon blir en superklass till bil- och båtklasserna som i sig kallas subklasser till Fordonsklassen. Arv beskrivs ofta som is-a-relation (är-en-relation) i modelleringar. I vissa programmeringsspråk kan även multipla arv förekomma, d.v.s. en klass ärver från mer än en klass 9 (Se Figur 2-2). Figur 2-2 Figuren visar en enkel arvsstruktur Polymorphism: Ett objekt som ärver från en annan klass kan utöka superklassen med funktionalitet. Detta gör att när ett objekt refererar till ett annat objekt, vet man inte om det refererar direkt till objektklassen, eller till en av dess subklasser, då subklasserna per definition också är superklassen. Dynamisk bindning: Klasser som ärver av en annan klass kan även skriva över dess metoder, för att få en annan funktionalitet än superklassens. De kan ha metoder med samma namn, inparametrar och returnera samma typ. Detta gör att det inte heller här går att avgöra vilken metod som skall bindas vid anropet förrän det utförs vid exekvering (runtime). 9 Programmeringsspråket Java stödjer inte multipelt arv. 10

21 2.2.2 Identifiering av objekt Objekt har ett OID kopplat till sig som nämndes i förra stycket. Detta är något som är helt skilt från objektet i sig, vilket gör att det finns två sätt att säga om två objekt i själva verket är samma objekt, klonat 10 eller skilda objekt. Det ena sättet är att jämföra objekts OID med varandra, då får man ett svar på om objekten är samma eller skilda, men objekten kan fortfarande hålla samma information, t.ex. vara klonade. Det finns alltså en likhet på informationsnivå och en på OID-nivå. Vid distribuering av system kan fler problem uppstå. Där kan objekt ligga i olika adressrymder och då ha olika OID-generatorer m.m., men detta kommer inte tas upp vidare i denna rapport Relationer mellan objekt Klasser som anropar varandra på något sätt anses ha en relation mellan sig. Det finns två saker som utmärker relationer mellan klasser. Det ena är typen av relation, association eller aggregat. Där aggregat är en striktare variant av association. Det andra är att relationen alltid har en riktning. Den är antingen enkel- eller dubbelriktad. Dessa förklaras nedan: Association - är grundrelationen mellan två klasser. Det är en lös koppling mellan klasser som anropar varandra. Exempel är Flygplats och Flygplan. En Flygplats behöver inte ha några Flygplan på sig Aggregat - är en starkare relation där den ena klassen är en del av den andra. Ett tydligt exempel är klasserna Flygplan och Vinge. Ett flygplan måste ha en vinge för att existera Enkelriktad relation - existerar när en klass har en association mellan sig och en annan klass, där den ena antingen anropar den andra klassen eller vice versa. Exempelvis kan en Pilot informera en Passagerare (via ett högtalarsystem), medan en Passagerare inte kan tala med en Pilot. Dubbelriktad relation - existerar när en klass har en association mellan sig och en annan klass, där båda anropar varandra. Exempelvis kan en Flygvärdinna servera en Passagerare mat och en Passagerare kan fråga en Flygvärdinna om en Filt. 2.3 Impedance mismatch Relationsmodellen är baserat på att spara data, medan objektmodellen är tänkt att användas för att bygga applikationer av objekt som hanterar både data och funktionalitet. The impedance mismatch visar sig när man ser till hur man använder relationsdata i de olika modellerna. I relationsmodellen låter man tabellerna innehålla redundant information i form av främmande nycklar (Foreign keys) för att kunna använda operationen join att binda ihop relationer, medan man i objektmodellen 10 Ett klonat objekt är exakt lika ett annat objekt, men inte samma objekt. Ibland även kallat kopierat objekt (Sun Microsystems, 2001). 11

22 traverserar objekt direkt via deras relationer (Ambler, 2000a). Detta gör att när man försöker föra ihop dessa två tekniker så stöter man på vissa problem Likheter och skillnader Likheter mellan relationsmodellen och objektmodellen är att: modellerna bygger på en liknande struktur, tabeller förhåller sig till tupler som klasser förhåller sig till objekt tupler innehåller atomära data likt objekt har attribut det finns relationer mellan tupler och relationer mellan objekt Det finns alltså stora drag som liknar varandra mellan de två modellerna, men också skillnader. Dessa skillnader är att: objektmodellen hanterar både data och funktionalitet, medan relationsmodellen bara hanterar data vid arv i objektmodellen ärvs även funktionalitet 11 ett objekt kan förändras att representera något annat under exekvering (runtime), detta är inte möjligt i en relationsmodell i en objektorienterad modell, såsom UML 12, modelleras relationer med en riktning i relationsmodellen är data unikt genom primärnyckelrestriktioner, men så fort data läses upp till ett objekt förloras denna unikhet och risk för inkonsistens uppstår, man kan säga att primärnyckel på databasnivå garanterar datas unikhet, medan OID inte gör det 11 Arv kan beskrivas i en extended entity relationship modell (EER-modell) för relationsmodellen (Elmasri, Navathe 1994) 12 Unified Moddeling Language (Fowler, Scott 1997) 12

23 3 Traditionella databaslager Kapitlet beskriver hur traditionella databaslager hanteras och byggs upp. 3.1 Mappa Attribut Som föregående kapitel påvisar finns det en likhet mellan relations- och objektmodellen vilket gör att man lätt kan mappa en klass till en tabell, där tabellnamnet blir samma som klassnamnet och attributens namn hos objektet blir kolumner i tabellen. Ett problem är dock om attributet är av en datatyp som inte det finns stöd för i databasen, då en konvertering av datatypen måste göras. Används en OID för objekten kan denna med fördel bli primära nyckeln för tabellen (Johnson m.fl. 1998). I annat fall kan andra attribut utgöra primärnyckel i tabellen. Dessa bör i dessa fall väljas med omsorg (Elmasri, Navathe 1994). 3.2 Mappa Arv En arvsstruktur kan mappas på tre olika sätt mot databasen: en tabell för hela hierarkin, en tabell för varje konkret klass och en tabell för varje klass. Figur 3-1 Figuren visar en enkel arvsstruktur 13

24 3.2.1 En tabell för hela hierarkin (Metod I) Detta är det enklaste sättet att mappa en arvsstruktur. Man skapar en tabell med alla attribut som finns i rotklassen och alla dess subklasser (Se Figur 3-1) Fördelarna är att: ad-hoc-frågor lätt kan skrivas det är snabbt, då inga join-operationer måste utföras för att hämta data ur hierarkin viss polymorphism stöds då en tupel kan representera flera saker Nackdelarna är att: tabellen kommer att innehålla många kolumner som inte används beroende på vilken klass i arvshierarkin tupeln representerar och kan därför vara utrymmeskrävande om man använder sig av OID, så måste de vara unika inom hela hierarkin, för att bevara unikheten mellan tupler samla många klasser till samma tabell kommer troligen att göra att mycket av databastrafiken kommer att anropa denna, vilket kan bli en flaskhals om t.ex. databasen implementerar page level locking (Keller, 1997) En tabell för varje konkret klass (Metod II) Som Figur 3-1 visar blir det i detta fall tre klasser, där subklassernas tabeller även innehåller superklassens attribut. Fördelarna är att: ad-hoc-frågor är relativt lätta att skriva det är snabbt, då inga join-operationer måste utföras för att hämta data ur hierarkin det inte blir några tomma kolumner i någon tabell och utnyttjar inget onödigt minnesutrymme access av ett objekt låser endast en tabell, (jfr nackdelar under kapitel 3.2.3) Nackdelarna är att: man kan inte representera polymorphism lika lätt som i fallet ovan, om ett objekts roll ändras måste tupeln tas bort från ena tabellen och läggas till i den andra, och om objektet har flera roller ingår tupeln i flera klasser och detta gör att behålla dataintegriteten blir därmed svårare om databasstrukturen ändras kan det beröra många tabeller om ändringen ligger högt upp i arvshierarkin då alla subklassers tabeller måste ändras 14

25 polymorphiska frågor mot databasen blir komplexa då om man söker efter alla som tillhör en klass, måste man traversera igenom dels dess tabell, men även alla subklassers tabeller, vilket i större arvsstrukturer kan påverka prestandan avsevärt En tabell för varje klass (Metod III) I detta fall gör man på samma sätt som föregående kapitel visar, skillnaden är bara att subklasserna inte innehåller annat än de attribut som de tillför i arvshierarkin. I denna variant har man löst kopplingen mellan ärvande klasser genom att använda en övergripande OID som är samma i alla klasser i hierarkin, och knyter på så sätt ihop ärvda attribut. (Keller, 1997) Fördelarna är att: det inte blir några tomma kolumner i någon tabell och utnyttjar inget onödigt minnesutrymme, mer än den övergripande OID:en det är det mest flexibla sättet att mappa arvsstrukturer, dock påverkar det prestandan negativt, se nackdelar nedan Nackdelarna är att: den är prestandakrävande då vid läsning av data ett antal join-operationer på tabeller måste utföras, beroende på djup i arvshierarkin. Dock är lösningen väldigt flexibel, se fördelar ovan vid transaktioner som uppdaterar en tabell som representerar en klass långt ner i arvshierarkin så måste alla superklassers tabeller också låsas, och problem uppstår vid höga belastningar och orsakar därmed sämre prestanda ad-hoc-frågor är svåra att skriva Jämförelsetabell Metoderna för att mappa arvshierarkier medför alla både för och nackdelar som måste avvägas mot varandra beroende på hur de skall används. Kriteria Metod I II III Ad-hoc-frågor Lätt Lätt Svårt Lägga till ta bort attribut Svårt Mycket svårt Lätt Ändra ett objekts roll i DB Lätt Svårt Svårt Tillåta multipla roller Lätt Mycket svårt Svårt Antal tabeller som behövs Få Medium Många Nullvärden (platskrävande) Ja Nej Nej Tabell 3-1 Tabellen visar en jämförelse mellan 3 metoder för att mappa arvshierarkier i relationstänkande 15

26 3.3 Mappa Relationer Ovan klassades relationer på två sätt, typ av relation och riktning (Se kap 2.2.3). Ur mappningssynpunkt är det mer intressant att titta på relationerna i form av ett-till-ett, ett-till-många eller många-till-många förhållanden. Det finns i huvudsak tre olika sätt att mappa relationer till databas, dessa är associationstabell, främmande nycklar och inbäddade klasser Associationstabell (Metod I) Detta är det mest flexibla sättet att mappa relationer mellan objekt på databasnivå. Man skapar en tabell som innehåller de primära nycklarna av de två tabeller man vill skapa en relation emellan. Dock är denna också relativt långsam då den kräver två join-operationer vid hämtande av relationsdata. Detta alternativ innebär att en tredje gemensam klass måste skapas vid objektorienterat tänkande, en s.k. hjälpklass Främmande nycklar (Metod II) Detta är ett snabbare alternativ än associationstabell, då det inte krävs några join-operationer. Nackdelen är att den inte klarar av många-till-många-relationer. Man inför kolumner för främmande nyckeln från den ena tabellen i den andra. T.ex. relationen ägs av mellan objekten Bilägare och Bil. En Bil kan endast ägas av en Bilägare, men en Bilägare kan ha flera Bilar. Denna relation kan man representera i databasen genom att i Bil-tabellen skapa en kolumn med Bilägar-tabellens primärnyckel Inbäddade klasser (Metod III) Inbäddade klasser innebär att två klasser mappas till samma tabell. Det blir snabbt då det inte kräver några join-operationer. Nackdelen är att inte heller denna metod klarar av många-till-många-relationer. Även ett-till-många-relationer måste begränsas, till ett i förväg bestämt antal. Begränsningen leder också till dåligt minnesutnyttjande. Ett exempel kan vara relationen mellan Person och Adress, där man t.ex. vill lägga relationerna bostadsadress och sommarstugeadress i Person-tabellen, vilket då förutsätter att man bara har en bostadsadress och en sommarstugeadress. Detta tar också upp onödig plats för dem som inte har någon sommarstuga. 16

27 3.3.4 Jämförelsetabell Metoderna för att mappa relationer är olika snabba beroende på vilken relation som skall mappas. Nedan följer en tabell som jämför tidsåtgången. Relation Metod I II III Ett-till-ett Långsam Snabb Mycket snabb Ett-till-många Långsam Mycket snabb Mycket snabb men begränsad Många-till-många Ja Nej Nej Tabell 3-2 Tabellen visar en jämförelse av relationers snabbhet i olika objektorienterade metoder för mappning av relationer. I fallet många till många visas bara att endast metod I kan användas. 17

28 4 Flerskiktsarkitektur Kapitlet beskriver övergripande tankarna bakom flerskiktsarkitektur. Stycket är baserat på Roger Jennings Database Workshop Microsoft Transaction Server 2.0 (Gray m.fl., 1997). 4.1 Klient/Server-arkitektur I en klient/server-arkitektur används oftast en tvåskiktslösning. En tvåskiktslösning där klienten utgör ena lagret och som talar direkt med servern, som utgör det andra lagret. Affärslogiken kan antingen ligga på klient eller serversidan. I Figur 4-1 nedan ligger den i klientlagret. Figur 4-1 Figuren beskriver en tvåskiktslösning Roll: Klient Klientens primära uppgift är att handhålla ett gränssnitt till användaren, vilket via de kan anropa servern. Servern kan då svara på anropet med data som klienten sedan kan visa upp för användaren. Denna typ av kommunikation mellan datorer är vanligt i de flesta nätverksprotokoll. Till exempel används det vid surfning på Internet. Då skickas en förfrågan från din webbläsare (klient) till en webbserver (server) som i sin tur returnerar sidan du vill se (data) tillbaks till webbläsaren som då presenterar den för dig (Se Figur 4-2). 18

29 Figur 4-2 En Klient- Serverarkitektur Klienten tillhandahåller inte bara ett användargränssnitt utan ofta även kontroller av indata från användaren samt affärslogik, men även trådning och hantering av databasförbindelser. Det innebär att komplexiteten hos en tvåskiktad lösning lätt växer och klientens ansvar blir större och större, när omfattningen och komplexiteten ökar Roll: Server En server svarar på klientanrop. En server kan behöva besvara flera anrop samtidigt och utnyttja ett flertal resurser för att tillhandahålla data. Server-baserade resurser kan vara databaser, webbsidor, m.m. Databasservrar hanterar klientförbindelser och anrop. Databasservrar kan även hantera resurser för säkerhet, transaktionhantering samt backup av data. Databasservrar kan även innehålla delar av affärslogik genom att använda stored procedures och triggers. Stored procedures är SQL-frågor som kan ta inparametrar och därmed kan de ses som enkla funktioner på databasnivå (Se Figur 4-3). En trigger är en typ av stored procedure som kan konfigureras att utförs vid en speciell händelse 19

30 Figur 4-3 Mer komplex Klient- Serverarkitektur där delar av affärslogiken ligger på serversidan 4.2 Treskiktslager Komplexiteten hos tvåskiktslösningar har ofta visat sig bli för stor. Därför har treskiktslösningar utvecklats. I en tvåskiktslösning hanterar klienten alltid datarepresentationen och servern hanterar databassystemet. Problemet med en tvåskiktslösning är att affärslagret måste implementeras i antingen klient eller serverlagret. Låter man servern implementera affärslogiken kan den lätt bli överbelastad, då den måste dels förse klienterna med data, dels utföra beräkningar i affärslogiken genom stored procedures. Låter man däremot klienten implementera affärslogiken växer klientapplikationen och blir lätt oöverskådlig och komplex. En treskiktslösning separerar ut affärslogiken från både databasen och presentationen (Se Figur 4-4). 20

31 Figur 4-4 Bilden beskriver en treskiktsarkitektur Treskiktslösningar blir större än vanliga tvåskiktslösningar då det blir två gränssnitt istället för ett mellan lagren. En fördel med att utveckla ett flerskiktssystem är att affärslogiksprogrammeraren kan fokusera på just affärslogiken och behöver inte tänka på databaslogiken. Dock innebär treskiktlösningar att man i förväg måste definiera upp båda gränssnitten mellan de tre lagren innan man kan skriva affärslogiken. 21

32 5 Persistensramverk På grund av att Objekt-Relationsproblematiken, även kallad Impedance mismatch, som uppstår vid all objektorienterad applikationsutveckling som använder sig av en relationsdatabas, har en idé om ett generellt tänkande för hur man skall kunna lösa denna problematik tagits fram. Denna idé har resulterat i ett ramverk för hantering av persistent data. Detta kapitel beskriver vad ett persistensramverk används till. Längre fram i rapporten beskrivs flera kommersiella produkter inom området persistensramverk (Se kapitel 8.3). 5.1 Vad är ett persistensramverk Vid utveckling av programvara som har en koppling till en databas behöver man integrera databasen med affärslogiken på ett smidigt sätt. Scott W Ambler beskriver tre olika sätt att integrera en databas (Ambler, 2000b). Ett naivt sätt är att använda en tvåskiktslösning som bild Figur 5-1 visar, att implementera persistensen, d.v.s. SQL-koden i relationsdatabasfallet, direkt i de affärslogiska klasserna. Detta är ett enkelt sätt att programmera och lämpar sig bra för prototyper. Man bygger in databasstrukturen i koden och en ändring av databasstrukturen kommer därför att påverka stora delar av koden som då måste skrivas om. Figur 5-1 En applikation utan ett separerat databaslager (visualiseringslagret syns inte i figuren) Ett annat sätt att implementera kopplingen mot databasen är att använda en treskiktlösning som i Figur 5-2. Där har man istället separerat ut databasaccessen och skapat ett gränssnitt som kapslar in dessa delar av affärslogiken. Detta är ett vanligt tillvägagångssätt vid utveckling av applikationer med upp till runt 50 affärslogikklasser. Man har inga generella riktlinjer och det blir svårt att hålla systemet konsekvent. Ändringar i databasschemat påverkar bara databaslagret, men kan ändå innebära större förändringar inom detsamma. Det är väldigt lätt att 22

33 affärslagret och databaslagret växer ihop, då affärslagret och den persistenta koden oftast hamnar i samma klass. Även problemet med att persistent kod för en klass även kan hamna i andra klasser blir ett problem i detta fall. Ta t.ex. ett scenario med en användare och dennes dokument. Det är lätt att inse i vilken klass koden för att hämta upp ett specifikt dokument eller användare från databasen bör läggas, men om systemet behöver komma åt ett dokument för en viss användare, skall koden (SQLsatserna) för att hämta upp dokumentet då ligga i användar- eller dokumentklassen? Läggs koden i dokumentklassen slipper man problemet med att få koden i flera klasser, men istället fås fler metodanrop som kan påverka prestanda i systemet. Figur 5-2 En applikation med ett separerat databaslager (visualiseringslagret syns inte i figuren) Det tredje sättet som Ambler rekommenderar för större och robustare system är att använda sig av ett persistensramverk, som helt kopplar bort persistensen från affärslogikens objekt (Se Figur 5-3). Med ett persistensramverk kan man ändra i databasschemat utan att det påverkar de affärslogiska klasserna nämnvärt och utvecklaren av affärslogiken behöver inte känna till databasens uppbyggnad, eller ens att objekten är persistenta, utan använda dem som vilka objekt som helst. Detta ger en lättare utveckling av affärslogiken, större system blir mindre komplexa att bygga och man får specificerade regler och en bättre struktur. Nackdelen med detta angreppssätt är att ett persistensramverk kan komma att påverka prestandan negativt, om än i bästa fall marginellt. 23

34 Figur 5-3 En applikation med ett persistensramverk (visualiseringslagret syns inte i figuren) krav på persistensramverk Scott W. Ambler har definierat och beskrivit 14 krav på ett persistensramverk och vad det bör klara av för att överbygga relations kontra objektrelationsproblematiken. Dessa utgör en grund för detta arbete, då det sammanfattar begreppet persistensramverk på ett bra sätt. Nedan följer en beskrivning av de 14 punkterna, dessa punkter är inte alla viktiga för Sign On AB. Detta diskuteras i kapitlet Olika typer av persistens Ett persistensramverk skall vara byggt att klara av flera olika tekniker för persistens. De skall utan förändringar i logiken i lagret ovanför klara av tekniker såsom: spara på fil, relationsdatabaser, objektorienterade databaser, eller någon annan teknik man vill använda för persistens Total inkapsling av persistensen Det ideala är att gömma undan all kod för persistens för de objekt som skall vara persistenta, så de blir så rena som möjligt. Detta förenklar för programmeraren som skall använda sig av det persistenta objektet. Helst skall det bara finnas tre meddelanden man skickar till objekten, spara, hämta och ta bort, resten skall persistensramverket ta hand om Multipla hämtningar av objekt Att hämta fler objekt på samma gång är effektivt då man vill ta fram rapporter m.m. och bör därför stödjas av ett persistensramverk. Även att ta bort multipla objekt på samma gång är något som ett persistensramverk skall klara av Transaktioner Att utföra transaktioner mot databasen innebär att man kan göra flera operationer mot databasen på ett atomärt sätt, det vill säga allt eller inget. Antingen lyckas alla operationer, eller så rullas de tillbaka (Roll back) och lämnar data som det var innan transaktionen ägde rum. 24

35 5.2.5 Utbyggbart Man skall kunna lägga till nya persistenta objekt till applikationen på ett enkelt sätt utan att behöva skriva om persistensramverket, d.v.s. det måste vara flexibelt för ändringar av vad som skall lagras OID - Unik identifierare för objekt Unika objektidentifierare gör att hanteringen av objekt förenklas ur databassynpunkt. Detta kan också betyda prestandaskillnader, då t.ex. vissa databaser är optimerade för att använda stora tal som identifierare och inte strängar (Ambler, 2000a). Dock bör man enligt Ambler inte använda något affärsrelaterat som nyckel, då databasen till stor del använder sig av dessa nycklar och det gör att det blir svårare att ändra om det nyckeln bygger på ändras. T.ex. att ha namn på en Person som OID, och sen komma på att namn bör delas upp i för- och efternamn är inte så lyckat Markör Vid listningar av objekt i databasen kan det vara dumt att hämta upp alla objekt på en gång. Man kanske bara behöver titta på de tio första för att hitta det man söker. Då görs en massa onödigt arbete. En markör håller reda på vilka objekt man har kvar att visa och på så vis kan man hämta upp t.ex. 50 i taget och vinner på så sätt i prestanda vid hämtning av många objekt Proxy En proxy, i databassammanhang, är ett objekt som representerar ett annat objekt, men som bara innehåller det som behövs för att identifiera det andra objektet. Resterande delar av objektet hämtas endast om det skulle behövas. Detta gör att databasaccessen blir i de fall där objektet bara behöver identifieras blir snabbare, då mindre information hämtas upp och det leder i dessa fall till bättre prestanda Poster Många rapporteringssystem som finns idag använder sig av databasposter och ett persistensramverk skall därför kunna ge sådana poster på begäran Klara av flera arkitekturer Persistensramverket skall inte låsa sig vid en arkitektur, utan vara flexibelt så det kan anpassas t.ex. till en klient/server-arkitektur, flerskiktslösning eller ett distribuerat system. 25

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.

Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Entity Framework Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se

Läs mer

Datalagringsmetodik och arkitektur i Java. Projektdefinition. Projektdefinition. Björn Brenander. 7 maj 2001

Datalagringsmetodik och arkitektur i Java. Projektdefinition. Projektdefinition. Björn Brenander. 7 maj 2001 Datalagringsmetodik och arkitektur i Java Projektdefinition Dokumenttitel Projektdefinition Dokumentansvarig Dokumentförfattare Björn Brenander Dokumentnamn Projektdefinition.doc Version 16 Ref. nr. Skapades

Läs mer

NORMALISERING. Mahmud Al Hakim

NORMALISERING. Mahmud Al Hakim NORMALISERING Mahmud Al Hakim mahmud@webacademy.se 1 SCHEMA Schema eller databasschema är en beskrivning av vilka data som kan finnas i en databas, oberoende av vilka data (innehållet) som råkar finnas

Läs mer

Föreläsning 3 Dagens föreläsning går igenom

Föreläsning 3 Dagens föreläsning går igenom Databasbaserad publicering Föreläsning 3 1 Föreläsning 3 Dagens föreläsning går igenom E/R-modellen & Läs om E/R-diagram i kapitel 2-3 i boken "Databasteknik" eller motsvarande avsnitt på http://www.databasteknik.se/webbkursen/er/index.html

Läs mer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till

Läs mer

Objektorienterad programmering. Grundläggande begrepp

Objektorienterad programmering. Grundläggande begrepp Objektorienterad programmering Grundläggande begrepp Hur beskriver vi objekt? Vill ha en representationsoberoende beskrivning Abstrakta datatyper! Data Operationer Objekt Representerar en verklig eller

Läs mer

Konceptuella datamodeller

Konceptuella datamodeller Databasdesign Relationer, Nycklar och Normalisering Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Konceptuella datamodeller Om man ska skapa en databas som beskriver en del av verkligheten

Läs mer

Tentamen DATABASTEKNIK - 1DL116

Tentamen DATABASTEKNIK - 1DL116 Uppsala universitet Institutionen för informationsteknologi Kjell Orsborn Tentamen 2003-05-20 DATABASTEKNIK - 1DL116 Datum...Tisdagen den 20 Maj, 2003 Tid...12:00-17:00 Jourhavande lärare...kjell Orsborn,

Läs mer

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

Läs mer

Introduktion. Byggstenar TDBA63 2005-11-22

Introduktion. Byggstenar TDBA63 2005-11-22 Introduktion UML står för Unified Modeling Language. Det är tänkt att fungera som hjälpmedel vid modellering av alla tänkbara typer av utvecklingsarbeten, inte bara inom dataomdrådet. Det största värdet

Läs mer

Mål med lektionen! Repetera och befästa kunskaperna.

Mål med lektionen! Repetera och befästa kunskaperna. Entity Framework Mål med lektionen! Repetera och befästa kunskaperna. Vad lektionen omfattar Repetera och gå igenom kursen lite snabbt. Vilka problem vill vi lösa? Vi arbetar med Webbapplikationer Vi kommer

Läs mer

Relationsdatabasdesign

Relationsdatabasdesign Vad är Relationsdatabasdesign? Relationsdatabasdesign nikosd@kth.se 08-7904460 rum 8522 Connolly/Begg (3rd edition) Kapitel 4., 4.2 och 5 (4th edition) Kapitel 5., 5.2 och 6 (5th edition) Kapitel 6., 6.2

Läs mer

Databaser. Vad du ska lära dig: Ordlista

Databaser. Vad du ska lära dig: Ordlista Databaser Vad du ska lära dig: Ordlista Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda en

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 2003-01-20 DAV B04 - Databasteknik 2003-01-20 KaU - Datavetenskap - DAV B04 - MGö 26 Relationsmodellen En formell teori som baserar sig på (främst) mängdlära predikatlogik Föreslogs av E.F Codd 1970 i

Läs mer

Vad är molnet?... 2. Vad är NAV i molnet?... 3. Vem passar NAV i molnet för?... 4. Fördelar med NAV i molnet... 5. Kom igång snabbt...

Vad är molnet?... 2. Vad är NAV i molnet?... 3. Vem passar NAV i molnet för?... 4. Fördelar med NAV i molnet... 5. Kom igång snabbt... Produktblad för NAV i molnet Innehåll Vad är molnet?... 2 Vad är NAV i molnet?... 3 Vem passar NAV i molnet för?... 4 Fördelar med NAV i molnet... 5 Kom igång snabbt... 5 Bli kostnadseffektiv... 5 Enkelt

Läs mer

Inkapsling (encapsulation)

Inkapsling (encapsulation) UML UML är en standard för att dokumentera och visualisera sina tankar och beslut under analys och design. Att lära sig allt om UML får inte plats i den här kursen, men vi kommer lära oss vissa delar.

Läs mer

Grunderna för relationsmodellen!

Grunderna för relationsmodellen! Grunderna för relationsmodellen! 1 Varför behöver jag lära mig relationsmodellen?! Relationsmodellen är den totalt dominerande datamodellen i moderna databassystem Beskriver databaser som en mängd tabeller

Läs mer

Objektorienterad programmering, allmänt

Objektorienterad programmering, allmänt Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara

Läs mer

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha? Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet

Läs mer

Systembeskrivning.

Systembeskrivning. KTH Institutionen för Numerisk Analys och Datalogi Systembeskrivning RedInc www.nada.kth.se/projects/prom03/redinc Uppdragsgivare: Projektmedlemmar: Harald Kjellin Daniel Oscarsson Rikard Laxhammar Tommy

Läs mer

Distribuerade affärssystem

Distribuerade affärssystem Distribuerade affärssystem Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska

Läs mer

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

SQLs delar. Idag. Att utplåna en databas. Skapa en databas Idag SQLs delar Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? Behöver

Läs mer

VAD GÖR DU / VEM ÄR DU?

VAD GÖR DU / VEM ÄR DU? INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering

Läs mer

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv

Läs mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

Databaser och Datamodellering Foreläsning IV

Databaser och Datamodellering Foreläsning IV Webbprogrammering - 725G54 Databaser och Datamodellering Foreläsning IV Agenda Databaser ERD SQL MySQL phpmyadmin Labb 4 Databaser Databas - samling med data Databashanterare Enkelt Kraftfullt Flexibelt

Läs mer

Web Services. Cognitude 1

Web Services. Cognitude 1 Web Services 1 Web Services Hur ska tillämpningar integreras? Hur ska tillämpningar integreras (via nätet ) för att erbjuda tjänster åtkomliga på nätet? SVAR: Web Services (Enligt Microsoft, Sun, IBM etc.)

Läs mer

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information. Vad är en databas? Exempel på databaser: Kortregister på kontor Sjukvårdsjournal Bokregister på bibliotek Medlemsregister i en förening Kundregister på företag Telefonkatalogen Databas = Organiserad samling

Läs mer

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer Disposition 1. Kopplingen mellan Processanalys (DFDdiagram) och konceptuell modellering (ERdiagram) (se kap 4) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer Databasen (Kap 2) Den relationella

Läs mer

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion.

Programdesign, databasdesign. Databaser - Design och programmering. Funktioner. Relationsmodellen. Relation = generaliserad funktion. Databaser Design och programmering Relationsmodellen definitioner ER-modell -> relationsmodell nycklar, olika varianter Programdesign, databasdesign Databasdesign Konceptuell design Förstudie, behovsanalys

Läs mer

Enterprise Java Beans Assignment 1

Enterprise Java Beans Assignment 1 Enterprise Java Beans Assignment 1 Distribuerade System HT 02 Fredrik Lundgren Andreas Nyberg fredrikbjurefors@hotmail.com goca8363@student.uu.se frlu4469@student.uu.se andreas.nyberg@hushmail.com Innehållsförteckning

Läs mer

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2014-11-07 TID: 9 14 Ansvarig för tentamen: Cecilia Sönströd Förfrågningar: 033-4354424 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS 180226 Idag (ADT), OOP i Racket, labb 5 2 Allmän info Duggan. Laboration 4 deadline. Planering framöver Muddy cards (nästa timme) 3 Lite repetition ADT

Läs mer

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F) L0009B Moment FL 1: Kursintroduktion. Kursinformation: G:\L0009B\Allmänt\KursInformationL0009B.pdf (F) Kursplan: Se https://portal.student.ltu.se/stuka/kurs.php?kurs=l0009b&lang=swe (F) Allt som markerats

Läs mer

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10 Projekt Rapport RaidPlanner Jeanette Karlsson UD10 Abstrakt: Denna rapport handlar om mitt projekt i kursen Individuellt Mjukvaruutvecklings projekt. Rapporten kommer att ta upp hur jag gått tillväga,

Läs mer

Varför ska man lära sig sånt? Välkomna. Vad är databaser bra till? Kursansvarig. till kursen. Databasteknik och informationssystem

Varför ska man lära sig sånt? Välkomna. Vad är databaser bra till? Kursansvarig. till kursen. Databasteknik och informationssystem till databaskursen Varför ska man lära sig sånt? till databaskursen till kursen Databasteknik och informationssystem Nästan alla större system idag innehåller eller använder data lagrad i en databas Så

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Aletta Nylén http://user.it.uu.se/~aletta Epost: aletta.nylen@it.uu.se Rum: 1216 Kursinfo Lärare: Aletta Nylén Jesper Wilhelmsson Litteratur: Object-Oriented Software Development

Läs mer

Introduktion till databaskursen. Välkomna. till kursen. Databasteknik och informationssystem. DD1370 (kursomgång dbtinf12)

Introduktion till databaskursen. Välkomna. till kursen. Databasteknik och informationssystem. DD1370 (kursomgång dbtinf12) Välkomna Introduktion till databaskursen Välkomna till kursen Databasteknik och informationssystem DD1370 (kursomgång dbtinf12) En kurs om grunderna i databasteknik DD1370 (Föreläsning 1) Databasteknik

Läs mer

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det Behörighetssystem Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det Systemet måste kunna registrera vilka resurser, d v s data och databärande

Läs mer

Tentamen DATABASTEKNIK - 1DL116, 1MB025

Tentamen DATABASTEKNIK - 1DL116, 1MB025 Uppsala universitet Institutionen för informationsteknologi Kjell Orsborn, Tore Risch Tentamen 2004-08-16 DATABASTEKNIK - 1DL116, 1MB025 Datum...Måndagen den 16 Augusti, 2004 Tid...14:00-19:00 Jourhavande

Läs mer

Varför ska man lära sig sånt? Välkomna. Vad är databaser bra till? Kursansvarig. till kursen. Databasteknik och informationssystem

Varför ska man lära sig sånt? Välkomna. Vad är databaser bra till? Kursansvarig. till kursen. Databasteknik och informationssystem till databaskursen Varför ska man lära sig sånt? till databaskursen till kursen Databasteknik och informationssystem Nästan alla större system idag innehåller eller använder data lagrad i en databas Så

Läs mer

Normalisering. Christer Stuxberg Institutionen för Informatik och Media

Normalisering. Christer Stuxberg Institutionen för Informatik och Media Normalisering Christer Stuxberg christer.stuxberg@im.uu.se Institutionen för Informatik och Media Översikt Normalisering Dataredundans och Uppdateringsanomalier Anomalier vid insättning Anomalier vid borttagning

Läs mer

SKOLFS. beslutade den XXX 2017.

SKOLFS. beslutade den XXX 2017. 1 (11) Föreskrifter om ändring i Skolverkets föreskrifter (SKOLFS 2010:247) om ämnesplan för ämnet programmering i gymnasieskolan, inom kommunal vuxenutbildning på gymnasial nivå och inom vidareutbildning

Läs mer

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML Målet Mer OOP Mer om klasser Några exempel UML Modularitet Språkligt modulära enheter Få gränssnitt Små gränssnitt Tydliga gränssnitt Dold information Återanvändbarhet Variation i typer Variation i datastrukturer

Läs mer

Mitthögskolan ITM Telefon 063-16 53 00. Access. Laborationskompendium för grunderna i databasen Microsoft Access. Detta exemplar tillhör:

Mitthögskolan ITM Telefon 063-16 53 00. Access. Laborationskompendium för grunderna i databasen Microsoft Access. Detta exemplar tillhör: Mitthögskolan ITM Telefon 063-16 53 00 Access Laborationskompendium för grunderna i databasen Microsoft Access Detta exemplar tillhör: HT 2003 Innehållsförteckning Tema...1 Databasmiljön...2 Tabeller...2

Läs mer

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: 033-4354424. Anslås inom 3 veckor

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: 033-4354424. Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2014-08-20 TID: 9 14 Ansvarig för tentamen: Cecilia Sönströd Förfrågningar: 033-4354424 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema

Databaser - Design och programmering. Relationsmodellen. Relationer - som tabeller. Relationer som tabeller. Alternativa notationer: Relationsschema Databaser Design och programmering Relationsmodellen definitioner ER-modell -> relationsmodell nycklar, olika varianter Relationsmodellen Introducerades av Edward Codd 970 Mycket vanlig Stödjer kraftfulla

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar hur mjukvaror skapas, anpassas och utvecklas samt programmeringens roll i informationstekniska sammanhang som datorsimulering och praktisk datoriserad problemlösning.

Läs mer

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för: Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för: Namn: Personnummer: Individuell prövning 41E03B Öppen för alla Tentamensdatum: 2013-08-20 Tid: 09:00-13:00 Hjälpmedel: Inga hjälpmedel

Läs mer

Lite om databasdesign och modellering

Lite om databasdesign och modellering Lite om databasdesign och modellering Konceptuell databasdesign Med konceptuell databasdesign avses processen att konstruera en datamodell för en verksamhet, oberoende av fysiska villkor. Modelleringen

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration

Läs mer

Introduktion till frågespråket SQL (v0.91)

Introduktion till frågespråket SQL (v0.91) DD1370: Databaser och Informationssystem Hösten 2014 Petter Ögren Introduktion till frågespråket SQL (v0.91) 13:e November Disclaimer: Dessa anteckningar har producerats under viss tidspress, och kan därför

Läs mer

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query). Arbeta med databas Översikt Arbeta med Entity Data Models. LINQ (Language Integrated Query). Lektion 1: Arbeta med Entity Data Models Introduktion till ADO.NET Entity Framework. Stöd i ADO.NET Entity Framework.

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program. Föreläsning 2 Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program. Vår process Kravbeskrivning (3 dagar). Enkel form av användningsfall (use cases). Analys

Läs mer

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

Läs mer

Rapport inför projektavslut

Rapport inför projektavslut Sidnr. 1(5) 1. Projektets namn Stadsnätsdatabas 2. Kontaktuppgifter Uppgifter Namn Telefon Ulf Borbos +46705373107 Projektledare Paul Wisén +46 705164100 Kontaktperson II Stiftelsen Östen Frånberg +46705190329

Läs mer

Föreläsning 4 Dagens föreläsning går igenom

Föreläsning 4 Dagens föreläsning går igenom Databasbaserad publicering Föreläsning 4 1 Föreläsning 4 Dagens föreläsning går igenom E/R-modellen, fortsättning Frågor till flera tabeller samtidigt Många-till-många-relationer Läs om E/R-diagram i kapitel

Läs mer

CMS, optimerade för programmerare Eller hur kan ett sådan skapas.

CMS, optimerade för programmerare Eller hur kan ett sådan skapas. Examensarbete CMS, optimerade för programmerare Eller hur kan ett sådan skapas. David Strömbom 2011-05-20 Ämne: Datavetenskap Nivå: B Kurskod: 1DV40E Abstrakt Denna rapport fokuserar på att undersöka några

Läs mer

Objektorientering/1.2. 3 Klasser

Objektorientering/1.2. 3 Klasser 3 Klasser 3.1 Att hantera många objekt 3.2 Klasser 3.3 Krav för att bilda en klass 3.4 Får två objekt vara helt identiska? 3.5 Måste vi använda klasser i objektorientering? 3.6 En klassbeskrivning 3.7

Läs mer

Kursens mål. Databasteknik TDDB48. Lärare. Kursorganisation. Laborationsinformation. Inlämning av laborationer. Responsible: 2000-01-26

Kursens mål. Databasteknik TDDB48. Lärare. Kursorganisation. Laborationsinformation. Inlämning av laborationer. Responsible: 2000-01-26 Kursens mål Databasteknik TDDB48 http://www.ida.liu.se/~tddb48 Förstå de koncept som ligger bakom databaser och databasorganisation Designa och bygga datamodeller (effektiva filstrukturer) Använda databasfrågespråk

Läs mer

Alternativ till låsning. Optimistik approach TimeStamp

Alternativ till låsning. Optimistik approach TimeStamp Mera DB Transaktioner ACID-(Atomic, Consistent, Isolation, Durability) Hur hanteras transaktioner? Lost update Dirty read Låsning kan vara en lösning. Vad är problemet? deadlock långsamt Alternativ till

Läs mer

Stored procedure i ASP.NET

Stored procedure i ASP.NET Stored procedure i ASP.NET OBS! Om du vill jobba med att skapa en stored procedure i en SQL Serverdatabas ifrån VS2010 måste du ha fullversion, expressversionen tillåter dig ej att skapa triggers, stored

Läs mer

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1 Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan

Läs mer

Obemannade flygplan. Namn: Hampus Hägg. Datum: 2015-03-02. Klass: TE14B. Gruppmedlemmar: Gustav, Emilia, Henric och Didrik

Obemannade flygplan. Namn: Hampus Hägg. Datum: 2015-03-02. Klass: TE14B. Gruppmedlemmar: Gustav, Emilia, Henric och Didrik Namn: Hampus Hägg Obemannade flygplan Datum: 2015-03-02 Klass: TE14B Gruppmedlemmar: Gustav, Emilia, Henric och Didrik Handledare: David, Björn och Jimmy Abstract In this task I ve been focusing on unmanned

Läs mer

PM 01 En jämförelse av två analysmodeller för val av komponentteknik

PM 01 En jämförelse av två analysmodeller för val av komponentteknik MÄLARDALENS HÖGSKOLA Institutionen för Ekonomi och Informatik v PM 01 En jämförelse av två analysmodeller för val av komponentteknik Eskilstuna, 2002-12-12 EI0230 Komponentbaserad applikationsutveckling

Läs mer

En jämförande studie av JDBC och Hibernate

En jämförande studie av JDBC och Hibernate EXAMENSARBETE I DATAVETENSKAP En jämförande studie av JDBC och Hibernate med avseende på användbarhet A Comparative Study of JDBC and Hibernate Focusing on Usability Andreas Nilsson och Henrik Persson

Läs mer

Databasdesign. E-R-modellen

Databasdesign. E-R-modellen Databasdesign Kapitel 6 Databasdesign E-R-modellen sid Modellering och design av databaser 1 E-R-modellen 3 Grundläggande begrepp 4 Begränsningar 10 E-R-diagram 14 E-R-design 16 Svaga entitetsmängder 19

Läs mer

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Databasföreläsning Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Tabeller Personer Databas Nummer Namn Födelseår 1 Tina 1950 2 Siv 1965 3 Olle 1980 Platt databas: all information

Läs mer

Design och underhåll av databaser

Design och underhåll av databaser Design och underhåll av databaser 1. Modell av verkligheten 2. Normalformer 3. Introduktion till DDL 4. Skapa databaser 5. Skapa tabeller 6. Skapa index 7. Restriktioner 8. Ta bort databaser, tabeller

Läs mer

Mobilt Efos och ny metod för stark autentisering

Mobilt Efos och ny metod för stark autentisering Mobilt Efos och ny metod för stark autentisering I och med lanseringen av E-identitet för offentlig sektor, Efos, kommer Inera att leverera komponenter som möjliggör att en användare ska kunna logga in

Läs mer

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15 DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd

Läs mer

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Är en-relation. Har en-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande

Läs mer

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

Läs mer

Titel Mall för Examensarbeten (Arial 28/30 point size, bold)

Titel Mall för Examensarbeten (Arial 28/30 point size, bold) Titel Mall för Examensarbeten (Arial 28/30 point size, bold) SUBTITLE - Arial 16 / 19 pt FÖRFATTARE FÖRNAMN OCH EFTERNAMN - Arial 16 / 19 pt KTH ROYAL INSTITUTE OF TECHNOLOGY ELEKTROTEKNIK OCH DATAVETENSKAP

Läs mer

Kursplanering Objektorienterad programmering

Kursplanering Objektorienterad programmering Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund

Läs mer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

PROGRAMMERING. Ämnets syfte. Kurser i ämnet PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration

Läs mer

Lösningsförslag, tentamen i Databaser

Lösningsförslag, tentamen i Databaser LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Lösningsförslag, tentamen i Databaser 2004-04-20 1. ER-diagram: Matsedel år vecka serveras 1..5 lagas-med Maträtt Ingrediens dag mängd Allergi

Läs mer

Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in.

Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in. Databaser och Affärssystem Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng Tentamen 41F08A Itek14 TentamensKod: Tentamensdatum: Tid: 2015-10-29 14-17 (3 timmar) Hjälpmedel: Inga hjälpmedel är

Läs mer

dit06omr@cs.umu.se 12 juni 2009 Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE

dit06omr@cs.umu.se 12 juni 2009 Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE Projektplan Webb-baserat bokningssystem för flyg Kurs: Applikationsutveckling för internet, TFE VT-09 Innehållsförteckning Inledning & problembeskrivning...1 Systembeskrivning...2 Affärsobjekt...2 Databasen...4

Läs mer

Webservice & ERP-Integration Rapport

Webservice & ERP-Integration Rapport Webservice & ERP-Integration Rapport Hardwood AB Mustafa Lazem 930916-9713 Jonas Ahrne 920325-0379 Hasan Nerjovaj 940130-7195 Stefan Liden 920628-0639 2014-05-18 Innehåll Bakgrund... 2 Syfte... 2 Projektbeskrivning...

Läs mer

Inga hjälpmedel är tillåtna

Inga hjälpmedel är tillåtna Databaser och Affärssystem Provmoment: Ladokkod: Tentamen ges för: Tentamen 41F08A KITEK15h 7,5 högskolepoäng TentamensKod: Tentamensdatum: 2016-10-27 Tid: 9-12 (3 timmar) Hjälpmedel: Inga hjälpmedel är

Läs mer

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20 Idag Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten 2009 1 / 20 Idag Hur skapar vi och underhåller en databas? Hur skapar man tabeller?

Läs mer

Objektorienterad konstruktion

Objektorienterad konstruktion Analys - Objektorienterad konstruktion Vad är objektorientering?» Ett sätt att angripa programmeringsproblem» Ett sätt att tänka när man programmerar Vad innebär objektorientering?» Att uppmärksamheten

Läs mer

Föreläsning 8. Designmönster

Föreläsning 8. Designmönster Föreläsning 8 Designmönster Designmönster När man designar program kan det vara viktigt att förstå hur man tidigare gått till väga när man konstruerat program. Kännedom om dessa tillvägagångssätt kan snabba

Läs mer

Innehåll. MySQL Grundkurs

Innehåll. MySQL Grundkurs MySQL Grundkurs Copyright 2014 Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Innehåll Introduktion till databaser Installera MySQL lokalt Webbserverprogrampaket (XAMPP) Introduktion till phpmyadmin

Läs mer

Collaborative Product Development:

Collaborative Product Development: Collaborative Product Development: a Purchasing Strategy for Small Industrialized House-building Companies Opponent: Erik Sandberg, LiU Institutionen för ekonomisk och industriell utveckling Vad är egentligen

Läs mer

SKOLFS. beslutade den -- maj 2015.

SKOLFS. beslutade den -- maj 2015. SKOLFS Föreskrifter om ändring i Skolverkets föreskrifter (SKOLFS 2010:247) om ämnesplan för ämnet programmering i gymnasieskolan och inom kommunal vuxenutbildning på gymnasial nivå; beslutade den -- maj

Läs mer

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design RE SD PD I UT IT ST AT Mjukvarudesign System Requirement Specification Inkrementell och iterativ! Konceptuell design (VAD) Systemdesign (OOA) Arkitekturell (grovkornig, UML) Teknisk design (HUR) Programdesign

Läs mer

Objektorienterad analys och design

Objektorienterad analys och design Objektorienterad analys och design Objektorienterad analys och design 1 Dagens föreläsning Första delen, innan rasten: Motivation och bakgrund Analys Funktioner Andra delen, efter rasten: Objektorienterade

Läs mer

Metoder för verifiering av användare i ELMS 1.1

Metoder för verifiering av användare i ELMS 1.1 Metoder för verifiering av användare i ELMS 1.1 2012-12-21 Kivuto Solutions Inc. [KONFIDENTIELLT] INNEHÅLLSFÖRTECKNING ÖVERSIKT...1 VERIFIERINGSMETODER...2 IUV (Integrated User Verification)...2 Shibboleth

Läs mer

Introduktion till Entity Framework och LINQ. Källa och läs mer https://msdn.microsoft.com/en-us/data/aa937709.aspx

Introduktion till Entity Framework och LINQ. Källa och läs mer https://msdn.microsoft.com/en-us/data/aa937709.aspx Introduktion till Entity Framework och LINQ Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Vad är Entity Framework? The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping

Läs mer

Webbtjänster med API er

Webbtjänster med API er Webbtjänster med API er Mål med lektionen! Veta kursmålen. Lite grunder om WCF Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se

Läs mer

Programmering = modellering

Programmering = modellering Programmering = modellering Ett datorprogram är en modell av en verklig eller tänkt värld. Ofta är det komplexa system som skall modelleras I objektorienterad programmering består denna värld av ett antal

Läs mer

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se

Läs mer

Vad är en databas? Databasutveckling Med MySQL/MariaDB

Vad är en databas? Databasutveckling Med MySQL/MariaDB Databasutveckling Med MySQL/MariaDB Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Vad är en databas? Från Wikipedia En databas (tidigare databank) är en samling information som är organiserad

Läs mer