En jämförande studie av JDBC och Hibernate

Storlek: px
Starta visningen från sidan:

Download "En jämförande studie av JDBC och Hibernate"

Transkript

1 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 Handledare: Doktor Mia Persson Examinator: Professor Bengt J Nilsson

2 Resumé Två grundläggande paradigm inom datavetenskap är objektorienterad programmering och relationsdatabasteknik. En kombinering av applikationer gjorda i ett objektorienterat programmeringsspråk med den beständighet och funktionalitet som ges av relationsdatabaser är en möjlig vidareutveckling av ens kunskaper inom dessa områden. Kombinationen av dessa båda förutnämnda paradigm innebär åtminstone ett problem som uppkommer då en relationsdatabas lagrar data i tabeller och en objektorienterad applikation lagrar data i objekt. Detta problem kallas objekt/relations paradigmens missanpassning. På grund av detta problem så måste kopplingen mellan paradigmen skötas av ett ramverk av något slag. I vår rapport så undersöker vi två av de ramverk som behandlar kopplingen mellan paradigmen. Specifikt i våran studie kommer vi att fokusera på kvalitetsattributet användbarhet. De ramverk som vi undersöker heter Java Database Connectivity (JDBC) och Hibernate. Båda dessa verktyg är skapade för det objektorienterade programmeringsspråket Java. Abstract Two of the fundamental paradigms within computer science are object oriented programming and relational databases. A combination of an object oriented application with the persistence and functionality provided by relational databases is a further development of one s knowledge within these areas. The combination of the two aforementioned paradigms will yield at least one problem, which occurs because in a database data is stored in tables whereas an object oriented application stores data in objects. This problem is called the object/relational paradigm mismatch. Because of this problem the connection between the paradigms must be handled by some kind of framework. In our report we investigate two of the frameworks which handle the connection between the paradigms. Specifically in our study we will focus on the quality attribute usability of the two frameworks and conduct a comparison between these two. The frameworks we investigate are called Java Database Connectivity (JDBC) and Hibernate. Both of these tools are created for the object oriented programming language Java. ii

3 Innehåll Resumé...ii Abstract...ii 1. Introduktion Bakgrund Syfte Frågeställnig Metod Teknisk bakgrund Objektorientering Klasser och Objekt Objektidentitet Attribut Metoder Inkapsling Arv Relationsdatabaser Entity Relational (ER) modellering Relationsmodellen Normalformer och normalisering Structured Query Language (SQL) Object Relational Mapping (ORM) Objekt/relations paradigmens missanpassning och mappning Varför behövs ORM? När skall ORM användas När skall ORM inte användas? Java Database Connectivity (JDBC) JDBC arkitektur Hibernate Hibernates arkitektur Hibernate i union Hibernate Query Language (HQL) Java Enterprise Edition (Java EE) och NetBeans Användbarhet iii

4 4. Konceptuellt ramverk Studie ISO-grundande frågeformulär Uppsättning av utvecklingsmiljöer Diskussion Terminologi och systeminformation Inlärning Systemets förmåga Övergripande reaktion på mjukvaran Slutsats Framtida studier Litteraturförteckning Appendix A Appendix B Appendix C iv

5 1. Introduktion I denna uppsats vill vi undersöka hur Hibernate och Java Database Connectivity (JDBC) skiljer sig med avseende på deras användbarhet för utvecklaren. Det är intressant då Object Relational Mapping (ORM) verktyg är relativt okänt i den akademiska världen men används däremot mer frekvent i industrin[22]. Detta har uppkommit vid en initial undersökning vi gjorde av arbetsmarknaden i hela Sverige med sökordet hibernate. Då fann vi att en sökning gjord på Arbetsförmedlingens hemsida gav 26 träffar på företag som vill ha Hibernatekunniga medarbetare och med eventuella Javakunskaper[24]. 1.1 Bakgrund Från studier inom datavetenskap på Malmö högskola har vi fått en bakgrund inom objektorienterad programmering och relationsdatabaser. Eftersom vi initialt har arbetat med ett objektorienterat tänkande kommer det sig naturligt att även göra detta vid databaser. Under en relationsdatabaskurs uppkom det att det finns, utöver relationsdatabaser, andra databasmodeller som har inslag av objektorienterat tänkande. När vi skulle välja inriktning på examensarbetet låg ett intresse om att fördjupa våra kunskaper inom databaser. Ett bra sätt att summera vår utbildning är att fördjupa oss inom två olika paradigm som vi arbetat med. Valet föll på objektorienterade relationsdatabaser då detta är ett bra sätt att erhålla fördjupande kunskaper inom datavetenskap. En vidareutveckling av dessa har funnits intressant och en studie av ORM har växt fram. Vidare har vi fått kunskaper inom hur programmeringsspråket Java kommer till användning vid utvecklande av databasapplikationer. I denna studie kommer vi att fokusera på skillnader i användbarheten hos de två ramverken Hibernate och JDBC. Vårt val här motiveras av det faktum att vid mjukvaruprojekt så jobbar utvecklare ofta med en inkrementell metod. Detta medför att en snabb prototyp skall tas fram och för att göra detta måste utvecklare veta vilket redskap som gör det enklast att snabbt ta fram nya prototyper[28]. 1.2 Syfte Inom ORM området finns det ett ledande verktyg kallat Hibernate [11]. Problematiken med ORM och i synnerhet Hibernate är att det inte är så känt inom den akademiska världen[22]. Vårt syfte med uppsatsen är att beskriva ramverken JDBC och Hibernate samt jämföra dessa med avseende på användbarhet. Vidare kan detta arbete även användas som en introduktion av dessa ramverk inom akademin. 1

6 1.3 Frågeställnig Vår studie kommer att fokusera på följande forskningsfrågor: Vilket ramverk Hibernate eller JDBC är bäst med avseende på användbarhet för utvecklaren? Gör något av ramverken applikationer oberoende underliggande databashanterare? 1.4 Metod En omfattande studie bör göras med hjälp av böcker och artiklar för att skapa förståelse om ORM. Den metodik vi använder kommer utifrån konceptuellt ramverk som beskrivs i kapitel 4. För att få kunskap i Hibernates vitala funktioner gör vi en instruktionshandling för uppsättning av en utvecklingsmiljö för ramverket (se Appendix A). Vidare görs en implementering av Hibernate och JDBC i Virtuell PC vilket låter oss få en djupare förståelse om de olika ramverken, se deras användningsområde och gör det möjligt att göra en jämförelsestudie dessa två emellan (se kapitel 5). Efter uppsättning av de två olika miljöerna så har vi tagit fram ett ISO-grundande frågeformulär som beskrivs i avsnitt 5.1 där det är tänkt att utsätta testgruppen för de båda ramverken. 2

7 2. Teknisk bakgrund I detta kapitel tar vi upp de begrepp som är relevanta för att införskaffa sig en förståelse för rapporten. 2.1 Objektorientering Ett vanligt sätt att programmera idag är att använda sig av objektorientering. Dess fördelar är återanvändning av kod, lätt att underhålla, hög produktivitet och ökad kvalitet. Objektorientering är inte så mycket programmering utan ett sätt att tänka på då det modellerar en avgränsad del av verkligheten[29]. Detta används vanligtvis i dagens programmering men även i databasmodellering[23][27] Klasser och Objekt I objektorientering är en klass något som beskriver en sak i verkligheten och sätter regler och krav på hur den ska hanteras i sitt sammanhang. En klass är en ritning på hur ett objekt skall se ut. Objektet i sin tur fylls med värden och beteenden som blir specifika för det objektet. Ett objekt i programmering är en instans av en klass som består av en typ och möjligen en eller flera funktioner[10] Objektidentitet Flera objekt kan avbilda en och samma klass, men ett objekt i sig blir unikt tack vare att varje objekt har ett eget unikt id. Alltså ger det en möjlighet att alltid skilja på två objekt med exakt samma värden med hjälp av den specifika identitet varje objekt innehar[10]. Objektets identitet påminner mycket om en primär nyckel i en relationsdatabas som gör tabellerna unika Attribut Objekt definieras av sina attribut, även kända som instansvariabler, och utgör en uppbyggnad av värden som gör klassen till en avbild av verkligheten. Varje attribut består av ett namn, en typ och ett värde (om inget värde har getts så tilldelas automatiskt värdet NULL i java). Ett exempel kan vara bokklassen i figur 2.1. En bok kan definieras av namn, författare och pris. Finns det flera exemplar som är identiska med exakt samma värden så skiljs objekten åt med hjälp av sina unika id. Ett attribut består av ett namn, en typ och ett värde i java som används i exemplet[27] Metoder Objektets egenskaper bestäms av något som kallas för metoder. Metoder, också kallade funktioner, ger programmerare möjlighet att modifiera eller hämta objektets attribut[27]. I exempelklassen som ses i figur 2.1 finns möjligheter att hämta eller ändra namn, författare och pris. 3

8 Figur 2.1 Klassexempel i Java [27] Inkapsling Attribut och metoder klassas alltid i en synlighetsgrad kallade private, ingen deklaration, protected eller public. När attribut/metoder deklareras som private innebär det att endast klassen dessa är deklarerade i får tillgång till attributen/metoderna. I de flesta fall och som är en god praxis är att deklarera sina attribut som private. Detta gör att attributen kapslas in och ej kan nås utanför klassen. Vidare syns övriga synlighetsgrader i figur 2.2 nedan. Public som används i deklarationen av metoderna i figur 2.1 innebär den högsta graden av synlighet. Set- och get-metoder bör alltid deklareras public då dessa ger den enda möjligheten att hämta och ändra attributvärden i och med att dessa bör deklareras private[27]. 4

9 Synlighetsgrad Klass Paket Subklass Global synlighet private x ingen deklaration x x protected x x x public x x x x Figur 2.2 Olika synlighetsgrader i Java[27] Arv Genom att använda en fördefinierad klass (superklass) ges möjlighet att skapa en ny klass (subklass) som ärver den fördefinierade klassens attribut och egenskaper. Återanvändningen av kod som är en av objektorienterad programmerings stora styrkor kommer från arv. En subklass ärver alla de attribut och metoder som superklassen har, men har också möjlighet att skapa nya samt skriva över redan existerande attribut och metoder. Ett exempel på arv är att du har superklassen Form, som har underklasserna Cirkel, Rektangel och Kub (se figur 2.3). Klassen Form som är superklassen har ett generellt attribut som är färg som gäller för alla subklasser. I sin tur har subklasserna egna specifika attribut som gäller endast för de klasserna. I exemplet visas att Cirkel har attributet radie gemfört med Rektangel som har attributen bredd och höjd. Dessa attribut kan användas för att räkna ut den gällande arean för den specifika formen och returnera korrekt värde[27]. Figur 2.3 Arvexempel[27] 5

10 2.2 Relationsdatabaser Ett vanligt och bra sätt att lagra data i stora mängder är att använda sig av databaser. Detta gör att en databashanterare behövs för att hantera den aktuella data som skall lagras. Databashanterare bör ej förknippas med databas utan heter explicit databashanterare då en databas är endast den rådata som lagras. Det finns flera olika databashanterare idag, både de som har öppen källkod och de som är kommersiella. Några av de mest kända databashanterarna med öppen källkod är MySQL och PostgreSQL och motsvarighet på kända verktyg på den kommersiella sidan är Oracle, DB2 och Microsoft SQL Server[23][10] Entity Relational (ER) modellering Entity Relational (ER) modellering likt objektmodellering är en avbild av verkligheten. Detta för att på ett enkelt sätt kunna konstruera och bena ut de viktiga komponenterna i en databas. Att det är en avbild av verkligheten gör att en grupp människor kan diskutera fram en lösning genom att alla är överrens om en konvention. I ER- modellen beskrivs en databas med hjälp av entiteter, attribut och relationer[26][5]. I ER modellering är entiteter, likt objekt i objektmodellering, saker som finns i verkligheten. Ett exempel på ett ER-diagram ses i figur 2.4 i vilken endast två entiteter visas samt en relation mellan dessa. Vidare syns också information om till exempel olika attribut så som namn, ISBN och pris i entiteten Bok medan entiteten Författare har attributen förnamn, efternamn och personnummer. Även relationen kan ha ett namn som då ger ytterligare information till personer som är inblandade i utvecklingen av databasen. I det enkla exemplet i figur 2.4 namnges relationen Skriven av som ger en beskrivning på förhållandet entiteterna emellan. Även en multiplicitet visas vid förhållandet i relationen och kan beskrivas på följande sätt: En bok kan skrivas av många olika författare. På andra hållet i förhållandet kan en författare skriva många böcker. +ISBN +Titel +Pris Bok * Skriven av * Författare +Personnummer +Förnamn +Efternamn Figur 2.4 ER-diagram [23] 6

11 2.2.2 Relationsmodellen Relationsmodellen är en datamodell populär blanda databaser och introducerades redan Modellen skapades av en man vid namn av Edgar Frank Codd som publicerat en bok som heter The Relational Model for Database Management: Version 2 [4] som är grunden till modellen. Relationsmodellen lagrar data i tabeller och använder dessa för att beskriva verkligheten[23]. I en relationsmodell används nycklar, tuplar, attribut och domäner. Dessa parametrar har en viktig betydelse i skapandet av en modell. I relationsmodellens terminologi kallas en tabell för en relation, en överskrift till en kolumn för attribut och en rad i tabellen kallas för en tupel[9]. En viktig del i relationsmodellen är att lägga en hel del komplexitet i uppbyggnaden av sin databas för att i sin tur underlätta vidare programmering. En struktur kan göras med hjälp av olika nycklar så som att en primärnyckel blir specifik för en tabell och att referensintegritet hindrar användarna att ta bort data som är beroende av varandra och därmed förstöra delar av databasen[10][4] Normalformer och normalisering Ett steg i utvecklandet av en databasimplementering är att göra en normalisering av ER-modellen. Detta görs med hjälp av ett par olika steg och regler som är till för att få ett bra slutresultat[9]. Antal steg i normaliseringen kan variera men slutmålet brukar vara det samma, att få en bra struktur på ens databas[10]. I exemplet (figur 2.5) nedan är en normalisering gjord på föregående figur(2.4) där en ny entitet har skapas för att hantera många till många förhållande och få två ett till många förhållande som gör det möjligt att implementera ER-modellen som en databas. I den nyskapade tabellen används de unika attributen i respektive tabell som blir en referens till vardera entitet. +ISBN +Titel +Pris Bok Skriven av +bokisbn 1 * +författarepnr * 1 Författare +Personnummer +Förnamn +Efternamn Figur 2.5 Normaliserat ER-diagramm [23] Structured Query Language (SQL) För att skapa en databas använder sig utvecklare av ett programmeringsspråk som kallas Structured Query Language (SQL). Det används för att skapa tabeller, mata in, förändra eller förstöra data i en databas och primärt för att söka. SQL delas upp i olika subkategorier som tar hand om olika delar av möjligheterna i SQL. De kategorier som finns under SQL är Data Definition Language (DDL), Data Manipulation Language (DML), Data Control Language (DCL) och slutligen Data Query Language 7

12 (DQL). DDL används för att skapa, förkasta och förändra databasens och tabellernas struktur och innehåller kommandona CREATE, DROP och ALTER. För att förstöra, uppdatera eller lägga in data i tabeller används kommandona DELETE, UPDATE och INSERT som tillhör DML. Hantering av rättigheter för databasen hanteras i nästa grupp som är DCL som innehåller kommandona GRANT och REVOKE. Sista gruppen som är kvar är DQL som används för att framskaffa data ur databasen och detta görs igenom SQL-kommandot SELECT[23][10]. 2.3 Object Relational Mapping (ORM) Objektrelationsmappningsverktyg gör det möjligt att integrera objektorienterade programmeringsspråk med relationsdatabaser. Detta ger både styrkan av paradigmet objektorientering, som används till exempel i programmeringsspråket Java, och relationsdatabasens beständighet och funktionalitet. Med hjälp av ORM- ramverk kan databasobjekt bearbetas i ett programmeringsspråk[1] Objekt/relations paradigmens missanpassning och mappning En viktig sak som ORM bistår med är objekt/relations paradigmens missanpassning. I detalj betyder detta uttryck att när ett försök görs vid att koppla samman en relationsdatabas med ett objektorienterat programmeringsspråk så finns där ett motstånd som ej gör detta möjligt. Motståndet ifråga uppkommer av att en relationsdatabas handskas med data tabulärt medan programmeringsspråket Java använder objekt. Problematiken löses genom att använda olika metoder för mappning Dessa metoder kallas relationship mapping och inheritance mapping. Relationship mapping är den mappning som tar hand om hur en relation (aggregation, komposition och association) skall transformeras medans inheritance mapping är mappningen av den arvshierarki som finns[31][19]. När en ORM implementering görs så löser ORM- verktyget denna opassande koppling och utvecklaren får möjlighet att använda sig av paradigmet objektorientering tillsammans med relationsdatabaser[1] Varför behövs ORM? Då en applikation kan vara komplicerad att utveckla kan det vara bra att göra en mappning från en relationsdatabas till objekt då detta ger en möjlighet att lösa komplicerade problem som lättare görs i ett objektorienterat språk. Som nämnts i kapitlet om objektorientering så fås tillgång till bland annat metoder, arv, och inkapsling samt så ges en möjlighet att återanvända kod som tidigare skrivits för andra applikationer[1][27]. ORM- verktyg gör att utvecklaren kan koncentrera sig på att utveckla applikationen istället för att hantera databasen. Detta gör att en utvecklare kan specialisera sig på ett mindre område och skapa bättre applikationer. 8

13 Christian Bauer och Gavin King beskriver ORM på detta sätt: In a nutshell, object/relational mapping is the automated (and transparent) persistence of objects in a Java application to the tables in a relational database, using metadata that describes the mapping between the objects and the database. [1, sid 25] När skall ORM användas Ett bra scenario för att få användning av ORM är att en relationsdatabas redan är skapad med data av olika slag och en vidareutveckling behövs göras för att behandla denna data. Föredragande väljer utvecklaren ett objektorienterat programmeringsspråk att arbeta med för att utveckla den framtida applikationen och gör det då passande att använda ORM. Ett annat exempel kan vara när en underliggande databashanterare skall bytas, till exempel från MySQL till PostgreSQL. Här är det bra att ha ett ORM ramverk som hanterar mappning av relationsdatabasen och gör att applikationen kan hållas oförändrad[1] När skall ORM inte användas? I kortare projekt som har en snäv tidsbegränsning så bör ORM- verktyg inte användas om inte utvecklarna redan besitter kunskap och vetskap om ramverket i fråga. Detta på grund av att inlärningstiden kan vara lång och tidskrävande. Erik Öjebo diskuterar ORM på följande vis: Något som ofta nämns som en nackdel för ORM-ramverk är försämrad prestanda jämfört med handskriven SQL. Som tidigare nämndes är detta dock något som det råder delade meningar om. ORM-ramverk inför ett ytterligare lager av abstraktion, för att förenkla utvecklingsarbetet. Som med alla abstraktionslager innebär det en viss prestandaförlust. Många ramverk erbjuder dock andra fördelar ur prestandasynvinkel så som cachning och optimering av SQL-frågor efter databashanteringssystem Dessa kan potentiellt kan leda till en bättre prestanda än handskriven SQL, trots den prestandakostnad som abstraktionslagret medför. I de fall ett mer komplext ramverk används kan det även finnas många möjligheter till optimering som behöver behärskas innan ramverkets prestanda kan utnyttjas fullt ut. Otillräcklig kunskap om ramverket kan således leda till att ramverket upplevs ha sämre prestanda än vad det potentiellt kan ha. [35, sid 15] 2.4 Java Database Connectivity (JDBC) Industrins standard för databasoberoende kopplingar mellan programmeringsspråket Java och en mängd olika databashanterare är JDBC Application Programming Interface (API)[17]. Innan ORMramverk kunde nyttjas kunde en applikation bara kommunicera med en specifik SQL- dialekt. Om den nuvarande databashanteraren skulle behöva bytas så måste utvecklare lära sig en ny dialekt samt att 9

14 applikationen måste skrivas om så att den ges möjlighet att kommunicera med den nya databashanteraren[25]. JDBCs API är en call-level API för SQLbaserad databasåtkomst. Denna låter Javaapplikationer kommunicera med olika databashanterare[17]. Detta ger fördelar för att utvecklaren då han inte behöver ändra i sin applikation förutom i de delar som har hand om databaskommunikationen och programmeraren behöver lära sig är den nya SQL-dialekten. JDBC ger möjlighet att utföra tre uppgifter. Den första uppgiften är att skapa en koppling med en databas eller att framskaffa tabulär data. Andra uppgiften är att skicka SQL-kommandon. Slutligen så skall JDBC bearbeta resultaten av SQL-kommandon[18] JDBC arkitektur De klasser som implementerar JDBC-gränssnitt för en speciell databashanterare kallas en JDBC Driver. För att låta utvecklaren fokusera på själva applikationen så skalas detaljerna bort från de olika databashanterarna. På grund av detta behöver utvecklaren inte ändra i applikationen förutom i de delar som har hand om databaskommunikationen vid byte av databashanterare. JDBC arkitektur visas i bilden nedan. Där finns Javaapplikationer som det översta lagret och databashanterare i det understa där JDBC ligger mellan dessa för att sköta kopplingen[18][25]. 10

15 Javaapplikation 1 Javaapplikation 2 JDBC Postgre MySQL Oracle Figur 2.6 JDBC- arkitektur [18] 2.5 Hibernate Hibernate är ett gratis ORM-ramverk med öppen källkod och ramverket är ett av de ledande i sitt område gällande användning av Java och databashanering[11][12]. Hibernate låter utvecklaren se sina databastabeller som rena Javaobjekt. Detta görs genom att ORM- verktyget mappar databastabellerna till objekt med hjälp av konfigurationsfiler som i sin tur generas av Hibernate[1]. Utvecklaren som är van att jobba med Javaobjekt behöver ej bry sig om översättningen från tabeller till objekt och vise versa då Hibernate står för denna del i utvecklandet av projektet[6][8] Hibernates arkitektur Hibernate använder sig av JDBC och tillsammans utgör de ännu ett lager av en abstraktion till en applikation. I Hibernate konfigureras kopplingen till databasen som i sin tur består av JDBC och detta görs med hjälp av konfigurationsfiler. Så som bilden visar nedan verkar Hibernate närmst Javaapplikationerna och så som dens främsta ändamål skapar den Javaobjekt som utvecklaren har till förfogande[13]. 11

16 Javaapplikation 1 Javaapplikation 2 Hibernate JDBC Postgre MySQL Oracle Figur 2.7 Hibernatearkitektur[13] Hibernate i union För utvecklaren så täcker Hibernate allt utom själva Javaapplikationen. I mer detalj tar Hibernate hand om databasuppkopplingen via JDBC genom att använda de olika konfigurationsfilerna som autogenereras. För att kunna hantera SQL frågorna och databashanterarna använder sig Hibernate av ett inneboende frågespråk detta kallat Hibernate Query Language (HQL) som definieras vidare i nästa avsnitt. Ett exempel på hur utvecklaren ser Hibernate kan ses i bilden som följer nedan[1][12]. 12

17 Javaapplikation 1 Javaapplikation 2 Hibernate JDBC Postgre MySQL Oracle Figur 2.8 Hibernate i utvecklarens ögon [13] Hibernate Query Language (HQL) I Hibernate finns det inkluderat ett kraftfullt frågespråk som kallas Hibernate Query Language eller kort HQL. Frågespråket som används i Hibernate är likt SQL som beskrevs i kapitlet om Structured Query language (se avsnitt 2.2.4). HQL skiljer sig däremot i några viktiga aspekter, bland annat är det ett objektorienterat frågespråk och använder sig därför av styrkorna som ingår i objektorientering[14]. 2.6 Java Enterprise Edition (Java EE) och NetBeans Java EE är ett objektorienterat programmeringsspråk och utvinner de fördelar som är förklarade i tidigare avsnitt om objektorientering. Till skillnad från den enklare versionen Java Standard Edition 13

18 (Java SE) så är Java EE en utökning av olika bibliotek i form av klasser förskrivna för att förenkla för utvecklare vid främst skapandet av webbapplikationer[16]. NetBeans är ett gratis opensource Integrated Development Environment (IDE) som kan köras på olika plattformar, Windows, Linux, Mac OS X och Solaris[32]. Den senaste versionen av detta IDE är, den tolfte april 2010, version 6.8 och denna innehåller verktyg för att skapa professionella applikationer med hjälp av till exempel programmeringsspråket Java. Bland dessa verktyg så finns bland annat möjlighen att ladda ner önskvärda plugins. Med plugin menas att ett tillägg kan göras för att utöka en specifik funktion eller ge möjligheter för att förenkla utvecklarens arbetsbörda. Ett exempel på användning av plugin är när en exempeldatabas behövs för att snabbt komma igång med utveckling av applikationer[32]. 14

19 3. Användbarhet I vår rapport vill vi undersöka hur Hibernate och JDBC skiljer sig med avseende på användbarhet för utvecklaren. För att göra detta måste först användbarhet definieras. En bra metod för att angripa detta problem är att undersöka befintliga standarder. Vi har valt att definiera användbarhet genom att använda oss av en pålitlig och reell källa. Denna källa är en ISO standard vilket är en erkänd standard inom dataveteskapen[30]. Standarden vi har valt att använda oss av är ISO [15]. Denna standard beskriver användbarhet på detta sätt: Extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use. [15, sid 2] Alla dessa tre egenskaper ändamålsenlighet, effektivitet och tillfredställelse utgör tillsammans användbarhet. Dessa tre egenskaper definieras vidare i ISO standarden, vilken börjar med ändamålsenlighet och definieras enligt följande citat: Accuracy and completeness with which users achieve specified goals. [15, sid 2] Vidare så definieras effektivitet enligt följande: Resources expended in relation to the accuracy and completeness with which users achieve goals. [15, sid 2] Slutligen definierar standarden tillfredsställelse på följande vis: Freedom from discomfort, and positive attitudes towards the use of the product. [15, sid 2] 15

20 4. Konceptuellt ramverk Ett konceptuellt ramverk (conceptual framework) kan vara baserat på olika teorier och aspekter som forskaren argumenterar skall vara relevant och viktigt för att besvara en forskningsfråga. Ramverket är i sig uppbyggt av en samling aktuella och breda källor. Validiteten av det valda ramverket är beroende av sammanhanget i sin helhet och att läsaren känner igen sig i den beskrivna situationen. Vid analys av data är metoden att använda ett konceptuellt ramverk motiverat av att metoden är lämplig att använda i en initial och utforskande studie[2]. Vårt konceptuella ramverk baseras på den tekniska bakgrunden och den litteratur som förekommer i rapporten[2]. 16

21 5. Studie Detta examensarbete påbörjades i augusti 2009 och har pågått fram till dagens datum som är den 21/ Under denna studie har vi jobbat med att få fram förståelse för ramverket Hibernate vilket vi inte hade någon kännedom om i början av projektet. En utökning av vår förståelse för hur JDBC används och är uppbyggt har även erhållits under denna tid. Detta medför att det är svårt att finna lämpliga kandidater till att utföra denna studie vi har arbetat fram och därför att vi har valt att utföra undersökningen ifrån den utgångspunkten vi hade för ett år sedan vilket motiveras av konceptuellt ramverk. Som testgrupp har vi valt en grupp om två personer som har datavetenskaplig utbildning och vi har även här tillämpat metodiken konceptuellt ramverk för analys av insamlad data. Vi anser att en testgrupp bör ha kunskaper i objektorienterad programmering (framförallt inom Java), relationsdatabaser, ER-modellering, normalisering, Hibernate, SQL och HQL. På grund av dessa omständigheter så blir undersökningen av kvalitativ natur. 5.1 ISO-grundande frågeformulär Metodiken konceptuellt ramverk används för att utföra en objektiv studie kring användbarhet och ISO [15] föreslår här ett frågeformulär med attitydskala. Frågoformulär kring detta har tagits fram med hjälp av ett arbete vid namn, Development of an Instrument Measuring User Satisfaction of the Human-Computer Interface [3], som delvis gjorts kring användbarheten vid mjukvaruutveckling. Detta arbete[3] har användts för att skapa ISO standarden [15] och är även en grund för frågeformuläret för denna studie. Metodiken konceptuellt ramverk används för att ta fram frågorna för studien vilka kommer från en filtrering av den ursprungliga källan och är passande i denna studie då de behandlar viktiga aspekter på hur det är för en utvecklare att arbeta med verktygen Hibernate kontra JDBC. Filtreringen i sig har tagits fram genom att göra ett initialt test av frågeformuläret till respektive ramverk. I detta test reducerade vi frågor som inte var relevanta för att se användbarhet i de ramverk studien grundar sig på. Frågeformuläret används för att lyfta fram vilket verktyg, Hibernate kontra JDBC, som är mest användbart. Frågorna i formuläret Usability Questionnaire (Appendix B) är indelade i olika sektioner. Den första sektionen i formuläret är en fördjupning på hur bra terminologin och systeminformation upplevs. Detta är en viktig del av hur användbarheten upplevs av verktyget i fråga då en bra terminologi kan hjälpa utvecklaren genom att hålla en konsekvent namngivning. Systeminformationen i sin tur ger information till användaren när något har gått fel och är mestadels till för att beskriva problemet och peka på var problemet befinner sig. Nästa sektion på frågeformuläret som står på tur att besvaras är inlärning. Detta är viktigt för att bland annat se hur snabbt utvecklaren lär sig funktioner och kommandon i verktyget. Hur utförlig dokumentationen är kommer även in under denna sektion. Den tredje sektionen i formuläret behandlar systemets förmåga, alltså hur snabbt och pålitligt respektive verktyg känns samt vilka behov som tas i beaktning när de används. För att få en helhetsuppfattning så 17

22 ställs utvecklaren inför en sista sektion där denna får besvara en övergripande reaktion på mjukvaran. Detta frågeformulär är en del av ett besvarande av forskningsfrågorna ställda i denna rapport. 5.2 Uppsättning av utvecklingsmiljöer För att kunna använda oss av frågeformuläret som beskrivs ovan i avsnitt 5.1 och besvara de frågor som ingår i formuläret har vi valt att sätta upp två utvecklingsmiljöer. En miljö för JDBC och en för Hibernate. Dessa utvecklingsmiljöer innehåller i sig två stycken emulerade datorer. De emulerade datorena har skapats med hjälp av ett program vid namn Windows Virtual PC [34]. Detta emulatorprogram har valts på grund av att det är gratis, använder sig av Windows vilket är ett operativsystem vi känner till väl och har introducerats för oss under vår utbildning på Malmö högskola. I dessa emulerade datorer så har vi installerat MySQL som databashanterare. Detta val kommer sig av att MySQL är en applikation till vilken det finns fördefinierade databaser. Vi använder en av dessa fördefinierade databaser i vår implementering av utvecklingsmiljöer. Vidare så har vi valt ett IDE att arbeta i. Detta IDE är NetBeans 6.8 och anledningen till att valet faller på NetBeans är att det är gratis och att där finns tillägg som tillhandahålls av detta IDE. Den största anledningen förutom de som beskrivs ovan är att i version 6.8 av NetBeans så finns en möjlighet att initialt välja till ramverket Hibernate för de projekt som skapas. Slutligen installeras en miljö med respektive ramverk för att utföra studien. För en beskrivning av hur vi gått till väga vid uppsättning av utvecklingsmiljöer se Appendix C. 18

23 6. Diskussion Utvecklarna är två studenter på Malmö högskola som går en datavetenskaplig utbildning och anses vara en lämplig testgrupp för vår studie. Vi har valt att sammanställa tabeller innehållande resultaten av våra besvarade frågeformulär, detta för att skapa en översikt av insamlad data över ramverken Hibernate och JDBC. Vi har valt att sammanställa insamlad data enligt följande: 1. Kolumn ett innehåller frågorna som testgruppen har besvarat och en attitydskala från ett till sex. 2. Kolumn två innehåller poängen given av Andreas per fråga och samt en sammanställning underst över totalsumman. 3. Kolumn tre innehåller poängen given av Henrik per fråga och samt en sammanställning underst över totalsumman. I dessa tabeller redogörs i detalj vad varje utvecklare har svarat vid varje fråga. Vi har valt att utveckla vissa resultat som utkom vid besvarandet av frågeformuläret (Appendix B). 6.1 Terminologi och systeminformation Den första sektionen utvecklaren ställs för att besvara är terminologi och systeminformation. Med terminologi och systeminformation så har vi valt att avse följande aspekter: Användandet av termer genom systemet Terminologi är relaterad till det du gör Felmeddelanden Användandet av ovan nämnda aspekter för att studera terminologi och systeminformation motiveras av tidigare nämnda publikation Development of an Instrument Measuring User Satisfaction of the Human-Computer Interface[3]. Vi har valt att fokusera på följande aspekter i vår diskussion eftersom dessa besvarar våra forskningsfrågor: Terminologi är relaterad till det du gör Felmeddelanden Vad gällande frågan om hur terminologin är relaterad till vad utvecklaren gör så tar vi ut ett exempel gällande inskrivning av data till databasen. I JDBC skapas ett SQL kommando som används för att sätta in data i en mysqldatabashanterare som ser ut enligt exempel: "INSERT INTO `actor`(first_name, last_name, last_update)values (?,?,?)" 19

24 I detta exempel så fylls frågetecknen som finns i SQL kommandot på med värden och skickas sedan till databashanteraren som i sin tur bearbetar dessa. En viktig skillnad mellan de två ramverken är att i Hibernate så arbetar utvecklaren direkt med objekt som skapats av de klasser Hibernate automatiskt genererar och gör därmed anrop till dessa då en insättning av data skall ske. Detta är en anledning för att Hibernate får högre poäng än JDBC vid denna fråga. I fråga om felmeddelande så är de båda ramverken relativt lika eftersom båda är Javabaserade verktyg. En av de skillnader som finns är när det uppkommer ett fel angående frågespråken de olika ramverken använder sig av. I JDBC så hänvisas oftast utvecklaren till manualen för den SQL dialekt som används medans Hibernate som använder HQL har mer utförliga felmeddelanden eftersom det alltid gäller samma frågespråk. Skillnaden mellan de två ramverken är inte stor men där finns en betydelsefull fördel för Hibernate där utvecklaren får snabbare tillgång till hjälp. Inom terminologi och systeminformation visar undersökningen på att Hibernate har fått en högre poäng än JDBC under denna sektion. Sektion: Terminologi och systeminformation (JDBC) Andreas Henrik Fråga Poäng (1-6) Poäng (1-6) Användandet av termer genom systemet 4 2 Terminologi är relaterad till det du gör 4 3 Felmeddelanden 1 3 Summering 9 8 Figur 6.1 Sektion över Terminologi och systeminformation för JDBC Sektion: Terminologi och systeminformation (Hibernate) Andreas Henrik Fråga Poäng (1-6) Poäng (1-6) Användandet av termer genom systemet 4 5 Terminologi är relaterad till det du gör 4 5 Felmeddelanden 3 3 Summering Figur 6.2 Sektion över Terminologi och systeminformation för Hibernate 20

25 6.2 Inlärning Med inlärning så har vi valt att avse följande aspekter: Lära sig använda verktyget Lära sig utforska nya funktioner genom att prova sig fram Lätt att komma ihåg kommandon Uppgifter kan lösas genom att gå rakt på problemet Dokumentation Användandet av ovan nämnda aspekter för att studera inlärningströskeln motiveras av tidigare studier om inlärning (se Development of an Instrument Measuring User Satisfaction of the Human-Computer Interface[3]) Vi har valt att fokusera på följande aspekter i vår diskussion eftersom dessa besvarar våra forskningsfrågor: Lära sig att använda verktyget Dokumentation Under sektionen inlärning så ställs bland annat frågan om verktyget var lätt eller svårt att lära sig för respektive ramverk. Undersökningen indikerar att båda verktygen i sig har en hög inlärningströskel. Genom att analysera vår insamlade data så framgår det att Hibernate är svårare att lära sig, med andra ord så har Hibernate en högre inlärningströskel än JDBC. För att styrka ovan nämnda diskussion om inlärningskurvans höjd och längd så citerar vi nedan erfarna utvecklares erfarenheter om Hibernates inlärningströskel: A matter of a month to cover the basics and start utilizing effectively."fully" understanding took 5 months (NonUniqueObjectException, states of an object). [33] En annan aspekt som uppmärksammas under inlärning är dokumentationen. Denna är en viktig del av hur användbart ramverket i sig är då det är först och främst dokumentationen utvecklaren vänder sig till när problem uppkommer. JDBC får en stark dokumentation eftersom det är en delmängd av programmeringsspråket Java. Mätningarna visar att båda ramverken har god dokumentation och att Hibernate har en snar fördel i resultatet. Som tidigare nämndes är dokumentation viktig vid användandet av ramverken och denna aspekt visar att även Hibernate har en mycket god dokumentation. Detta gör att Hibernate kan användas fullt ut och alla dess funktioner kan implementeras vid behov. Överlag inom sektionen inlärning visar undersökningen på att det är lika mellan de två ramverken. Endast mindre avvikelser skiljer på detaljnivå mellan dessa två. 21

26 Sektion: Inlärning (JDBC) Andreas Henrik Fråga Poäng (1-6) Poäng (1-6) Lära sig använda verktyget 2 2 Lära sig utforska nya funktioner genom att prova sig fram 1 3 Lätt att komma ihåg kommandon 3 3 Uppgifter kan lösas genom att gå rakt på problemet 3 5 Dokumentation 4 4 Summering Figur 6.3 Sektion över Inlärning för JDBC Sektion: Inlärning (Hibernate) Andreas Henrik Fråga Poäng (1-6) Poäng (1-6) Lära sig använda verktyget 2 1 Lära sig utforska nya funktioner genom att prova sig fram 1 3 Lätt att komma ihåg kommandon 3 2 Uppgifter kan lösas genom att gå rakt på problemet 4 4 Dokumentation 5 5 Summering Figur 6.4 Sektion över Inlärning för Hibernate 6.3 Systemets förmåga Denna del kan antas innehålla mätvärden av de olika aspekter som sektionen innehåller. Dock har vi fokuserat på att undersöka själva upplevelsen för hur de olika ramverken uppfattas och känns i förhållande av hastighet och pålitlighet. Detta val motiveras av att det redan finns olika mätningar på dessa aspekter. Ett exempel på mätningar gjorda inom ORM- ramverk är Erik Öjebos publikation Objekt-relationsmappning i datacentrerad applikation[35]. Med systemets förmåga avser vi följande egenskaper: Hastighet Pålitlighet Erfarna och icke erfarna utvecklares behov tas i beaktning Inom denna sektion har vi valt att ta upp följande aspekter för diskussion eftersom dessa besvarar våra forskningsfrågor: Hastighet Erfarna och icke erfarna utvecklares behov tas i beaktning 22

27 Under aspekten hastighet enligt det redovisade resultatet på studien så syns att JDBC känns snabbare än Hibernate. En orsak för detta är att Hibernate tillför ett extra lager av abstraktion till en applikation eftersom JDBC är en delmängd av Hibernate (se avsnitt 2.5). Detta abstraktionslager påvisas bland annat genom att JDBC använder SQL till att direkt kommunicera med databashanteraren medans i Hibernate så används HQL. Frågespråket måste därför översättas till SQL för att databashanteraren skall kunna uppfatta kommandon och utföra instruktioner. Detta är då en motivation för att JDBC får ett högre genomsnitt för denna aspekt. En annan aspekt under sektionen systemets förmåga är hur erfarna och icke erfarna utvecklares behov tas i beaktning. Hibernate har här fått en högre medelpoäng än JDBC. En motivering till detta är att i Hibernate finns det större möjlighet att arbeta objektorienterat med hjälp av ett objektorienterat frågespråk. Hibernate är gjort för att förenkla för utvecklarna och detta görs med hjälp av abstraktionen av databashanteringen. Abstraktionen påvisas här på att Hibernate tar bort behovet av att utvecklare manuellt bearbetar data med SQL tillsammans med JDBC. Överlag inom sektionen systemets förmåga visar undersökningen på att det är lika mellan de två ramverken. Endast mindre avvikelser skiljer på detaljnivå mellan dessa två. Sektion: Systemets förmåga (JDBC) Andreas Henrik Fråga Poäng (1-6) Poäng (1-6) Hastighet 4 5 Pålitlighet 4 5 Erfarna och icke erfarna utvecklares behov tas i beaktning 1 2 Summering 9 12 Figur 6.5 Sektion över Systemets förmåga för JDBC Sektion: Systemets förmåga (Hibernate) Andreas Henrik Fråga Poäng (1-6) Poäng (1-6) Hastighet 3 4 Pålitlighet 5 4 Erfarna och icke erfarna utvecklares behov tas i beaktning 1 4 Summering 9 12 Figur 6.6 Sektion över Systemets förmåga för Hibernate 23

28 6.4 Övergripande reaktion på mjukvaran Den sista sektionen vi tar upp är övergripande reaktion på mjukvaran. Här har vi ännu en gång använt oss av Development of an Instrument Measuring User Satisfaction of the Human-Computer Interface[3] för att motivera valet av vilka aspekter vi använder oss av för att studera övergripande reaktion på mjukvaran. Dessa aspekter följer i listan nedan: Hemsk Underbar Svår Lätt Frustrerande Njutbar Otillräckligt kfartfull Tillräckligt kraftfull Tråkig Stimulerande Stelt Flexibelt Vi har under denna sektion valt att ta upp följande aspekter till diskussion eftersom dessa besvarar våra forskningsfrågor: Svår Lätt Otillräckligt kraftfull Tillräckligt kraftfull Stelt Flexibelt Här ges utvecklaren möjlighet att svara på olika påståenden angående hur ramverket känns att arbeta med. Vi börjar med att ta upp hur svårt respektive lätt det är att hämta ut data ur databasen samt skriva till den. Som det syns i tabellerna nedan är både JDBC och Hibernate resultatmässigt nära besläktade i fråga om detta. Vid en uthämtning av data i JDBC fås ett ResultSet (se Appendix C) som måste efterbehandlas och processeras för att det skall gå att använda den data som fås och själv skapa objekt. Här framkommer en av de viktiga fördelarna med att använda Hibernate då klasser som senare blir objekt blir genererade av ramverket. Detta sparar utvecklare arbetet med att själva skapa koden för att göra tabulär data till objekt. Vidare under övergripande reaktion på mjukvaran så görs en utveckling av hur kraftfulla respektive ramverk är. I Hibernate så används det kraftfulla frågespråket HQL som tidigare är definierat i avsnittet om ORM. JDBC använder sig fullt ut av den SQL dialekt som databashanteraren i fråga använder medans Hibernate översätter från HQL till den använda dialekten. Hibernate kan dock också använda sig av ren SQL istället för att översätta från HQL om detta skulle krävas och därför så har Hibernate fått högre antal poäng än sin motsvarighet JDBC. En annan aspekt i vårt frågeformulär vi har fokuserat på är om programvaran är flexibel respektive stel. Här grundar vi det skiljande resultatet på att i Hibernate så finns där ett gemensamt frågespråk vid namn HQL och detta är generellt över användandet av olika databashanterare. Detta innebär att 24

29 Hibernate är flexibelt när olika databashanterare eller SQL dialekter behövs användas. Däremot i JDBC används varje specifik databashanterares olika dialekter, därför saknas möjligheten att använda en gemensam SQL dialekt som i Hibernate och detta gör att JDBC är mindre flexibelt än motsvarande verktyg. Inom övergripande reaktion på mjukvaran visar undersökningen på att Hibernate har fått en högre poäng än JDBC under denna sektion. Sektion: Övergripande reaktion på mjukvaran (JDBC) Andreas Henrik Fråga Poäng (1-6) Poäng (1-6) Hemsk Underbar 2 3 Svår Lätt 1 2 Frustrerande Njutbar 2 2 Otillräckligt kraftfull Tillräckligt kraftfull 3 3 Tråkig Stimulerande 3 2 Stelt Flexibelt 4 4 Summering Figur 6.7 Sektion över Övergripande reaktion för JDBC Sektion: Övergripande reaktion på mjukvaran (Hibernate) Andreas Henrik Fråga Poäng (1-6) Poäng (1-6) Hemsk Underbar 4 4 Svår Lätt 2 2 Frustrerande Njutbar 2 3 Otillräckligt kraftfull Tillräckligt kraftfull 5 5 Tråkig Stimulerande 3 5 Stelt Flexibelt 5 5 Summering Figur 6.8 Sektion över Övergripande reaktion för Hibernate 25

30 7. Slutsats Efter utförd undersökning och analys kan vi dra följande slutsatser: 1. Inom terminologi och systeminformation är Hibernate mer användbart än JDBC 2. Inom inlärning är de två ramverken lika i fråga om användbarhet 3. Inom systemets förmåga är de två ramverken igen lika i fråga om användbarhet 4. Inom övergripande reaktioner på mjukvaran är Hibernate mer användbart än JDBC Dessa fyra slutsatser implicerar alltså att Hibernate har högre användbarhetsvärde än JDBC vilket besvarar vår främsta forskningsfråga. Notera den andra forskningsfrågan, nämligen: Gör något av ramverken applikationer oberoende underliggande databashanterare? besvarades redan i sektion 2.5 och svaret var att Hibernate men inte JDBC gör applikationer oberoende underliggande databashanterare. 26

31 8. Framtida studier En möjlighet till en framtida studie skulle kunna vara att utföra studien igen fast på en större testgrupp. Dessa bör inneha samma förutsättningar som de kandidater som utför studien i denna rapport, det vill säga att kandidaterna bör ha kunskaper inom objektorienterad programmering (framförallt inom Java), relationsdatabaser, ER-modellering, normalisering, Hibernate, SQL och HQL. En annan möjlighet är att dela upp olika testgrupper beroende på vilken bakgrund de har. Till exempel låta en av testgrupperna utgöra individer av redan erfarna utvecklare för vardera ramverk samt en testgrupp som inte har någon tidigare erfarenhet av varken Hibernate eller JDBC. Detta skulle kunna ytterligare förstärka vår initiala studie och vara ett stöd i processen att avgöra vilket ramverk som är bäst anpassat för de olika förutsättningar testgrupperna har. 27

32 9. Litteraturförteckning [1]Bauer, C., & King, G. (2007). Java Persistence with Hibernate. Greenwich: Manning Publications Co. [2]Bergsten, C. (2007). Investigating Quality of Undergraduate Mathmatics Lectures. Mathematics Education Research Journal Vol. 19 No. 3, (pp ). Linköping. [3]Chin, J. P., Diehl, V. A., & Norman, K. L. (1988). Development of an Instrument Measuring User Satisfaction of the Human-Computer Inerface. College Park: University of Maryland. [4]Codd, E. F. (1990). The Relational Model for Database Management: Version 2. Boston: Addison- Wesley Longman Publishing Co., Inc. [5]Connolly, T., & Begg, C. (2005). Database Systems, A Practical Approach to Design, Implementation, and Management. Harlow: Pearson Education Limited. [6]Doernhoefer, M. (2007, Juli). Surfing the Net for Software Engineering Notes. McLean, Illinois, USA: ACM. [7]Download details: Virual PC (2007, Februari 19). Retrieved Mars 9, 2010, from Microsoft Download Center: 48A3-AFA2-2DC0B40A73B6&displaylang=en [8]Elliott, J. (2004). Hibernate: A Developer's Notebook. O'Reilly Media. [9]Elmasri, R., & Navathe, S. B. (1994). Fundamentals of Database Systems Second Edition. Redwood City: The Benjamin/Cummings Publishing Company, Inc. [10]Garcia-Molina, H., Ullman, J. D., & Widom, J. (2002). Database Systems: The Complete Book. Stanford: Prentice Hall. [11]Hart, A. M. (2005, April). Hibernate in the classroom. Mankato, Minnesota, USA. [12]Hibernate - JBoss Community. (n.d.). Retrieved April 6, 2010, from Hibernate: [13]Hibernate Community Documentation. (2004). Retrieved April 27, 2010, from Chapter 2. Architecture: [14]Hibernate Community Docummentation. (2004). Retrieved April 27, 2010, from Chapter 14. HQL: The Hibenate Query Language: [15](1998). INTERNATIONAL STANDARD ISO Geneve: International Organization for Standardization. [16]Java EE at a Glance. (2010). Retrieved April 13, 2010, from ORACLE Sun Developer Network (SDN): [17]Java SE Technologies - Database. (2010, Mars 15). Retrieved from 28

33 [18]JDBC Overview. (2010, Mars 15). Retrieved from [19]Mapping Object to Relational Databases: O/R Mapping In Detail. (n.d.). Retrieved April 6, 2010, from Agile Data: [20]MySQL ::. (2007). Retrieved April 5, 2010, from MySQL: [21]MySQL :: The World's most popular open source database. (n.d.). Retrieved April 5, 2010, from MySQL: [22]O'Neil, E. (2008). Object/Relational Mapping 2008: Hibernate and the Entity Data Model (EDM). Boston, Massachusetts, USA. [23]Padron-McCarthy, T., & Risch, T. (2005). Databasteknik. Lund: Studentlitteratur. [24]Platsbanken. (n.d.). Retrieved April 6, 2010, from Arbetsförmedlingen: sr(1)c(2431f52d)&ps= [25]Reese, G. (2000). Database Programming with JDBC and Java, Second Edition. Sebastopol: O'Reilly Media, Inc. [26]Rob, P., & Coronel. (1997). Database Systems Design, Implementation and Management, Third Edition. Cambrige: Thomson Publishing. [27]Skansholm, J. (2005). Java direkt med Swing. Lund: Studentlitteratur. [28]Sommerville, I. (2007). Software Engineering 8. Edinburgh Gate: Prentice Hall. [29]Stevens, P., & Pooley, R. (2006). Using UML Software Engineering with Objects and Components second Edition. Edingburgh Gate: Addison Wesley. [30]Umar, A., & Tatari, K. K. (2008). Appropriate Web Usability Evaluation Method during Product Development. Ronneby: Blekinge Institute of Technology. [31]Van Zyl, P., Kourie, D. G., & Boake, A. (2006). Coparing the Performance of Object Databasese and ORM Tools. Saicsit. [32]Welcome to NetBeans. (n.d.). Retrieved April 1, 2010, from NetBeans: [33]Who uses Hibernate. (2010, Mars 15). Retrieved Maj 10, 2010, from JBoss Community: [34]Windows Virtual PC: Home Page. (n.d.). Retrieved April 7, 2010, from Microsoft: [35]Öjebo, E. (2009). OBJEKT-RELATIONSMAPPNING I DATACENTRERAD APPLIKATION. Örebro: Örebro universitet. 29

34 Appendix A Hibernatetutorial med hjälp av Maven och NetBeans Andreas Nilsson (tdt07009) Henrik Persson (tda07014) 30

35 1. Java Development Kit Ladda ner och installera Java SE Development Kit - JDK 6 update 17 eller senare version från suns hemsida. Välj plattform (för tutorialen windows) och tryck på download. Ladda ner filen och starta installationen. Följ instruktionerna, välj nästa tills installationen påbörjas och finish när den är klar. 2. Installation av NetBeans Installera netbeans (används i denna tutorial). Finns på Välj alternativet som innehåller stöd för alla program språk och servrar, tryck download och starta installationen. Ändra inga inställningar och acceptera licensavtalet. Välj en sökväg där netbeans skall installeras. Det krävs inte någon registrering eller att ge användardata. Se till att uppdatera netbeans efter installationen. Om det ej är uppdaterat kommer det upp en ruta med information om uppdateringar som bör installeras. Netbeans kan behöva startas om ett par gånger innan alla uppdateringar har slutförts. 3. Installation av databashanterare MySQL I tutorialen används MySQL som databashanterare. Ladda ner en Windows MSI Installer (x86) från klicka på Pick a mirror länken efter MSI Installer (x86). Installationen som används i denna tutorial är mysql win32.msi. Det behövs ingen inloggning utan välj länken som tar en direkt till nerladdningen. Eftersom vi är i Sverige väljer vi Sweden [Sunet]. Välj vilket sätt installationen skall laddas ner på, antingen http eller ftp. Starta installationen. På Setup type välj Typical och fortsätt sedan installationen. När den är klar ges möjligheten att konfigurera MySQL servern. Avmarkera registreringen och se till att konfigurering är markerad. Välj next efter välkomstmeddelandet. Välj standardkonfigurationen. 31

36 Under windows options välj att installera som Windows Service. Behåll värdena som redan är ifyllda, vilka är Service Name och rutan för att starta MySQL servern automatiskt. Markera rutan Modify Security Settings på säkerhetsinställningarna. Fyll i textrutorna med valfritt lösenord, i tutorialen används admin, och tryck next. 32

37 Välj execute så utförs alla gjorda konfigureringar. När det är klart tryck på finish och MySQL servern är klar att användas. 33

38 För att testa att servern fungerar, öppna kommandotolken, och skriv in kommandot "C:\Program\MySQL\MySQL Server 5.1\bin\mysqlshow" -u root -p mysql Kontrollera att MySQL är insatllerat på den angivna sökvägen. När uppmaning om att skriva in lösenrod uppkommer så skriv det lösenord som valdes när MySQL servern konfigurerades, i tutorialen admin. 34

39 4. Databas med hjälp av Netbeans 4.1 Skapa en förbindelse med MySQL Starta Netbeans Välj Services fliken i katalogträdshanteraren, öppna Databases och högerklicka på MySQL. Om det inte redan finns en MySQL server bland databaserna, högerklicka på Databases och välj Register MySQL server. Om där finns en MySQL server i listan högerklicka på den och välj properties. Ändra inte i server Host Name eller Server Port number. Skriv in root i Administrator user name och skriv lösenordet som valdes under installationen av MySQL servern. Bocka för Save Password och tryck OK. 35

40 4.2 Sakila-Plugin Välj tools från menyn och därefter Plugins. Om Plugins inte öppnas på Available Plugins fliken, välj den. Skriv in sakila i sökrutan högt upp till höger vilket är namnet på en fördefinierad databas. Markera databasen och installera. Se till att Sakila Sample Database står med bland de plugin som skall installeras. Tryck på next, acceptera licensen, tryck på install och sedan finish. Stäng ner Plugins rutan. 4.3 Sakila-förbindelse Välj Services fliken i katalogträdshanteraren, öppna Databases. Högerklicka på MySQL Server och tryck start (Detta kan redan var gjort och databasen är startad). Högerklicka på MySQL server och välj create database. Välj sakila i dropdown menyn, tryck OK. 36

41 Databasen skapas, detta kan ta en liten stund. Högerklicka på sakila schemat och välj connect om det inte är inaktiverat. Om allt gått rätt till skall du nu kunna se databasen och dess innehåll genom att öppna sakila fliken. 37

42 5. Maven 5.1 Nerladdning av Maven Ladda ner senaste versionen av Maven från (apache-maven bin.zip för denna tutorial). Välj zip filen, ladda ner och spara den på skrivbordet. Extrahera den och lägg den direkt i C:\ sökvägen som används i tutorialen är C:/apache-maven Windows installation av Maven För att installera Maven måste nya miljövariabler läggas till. Högerklicka på den här datorn och välj egenskaper. Gå till fliken Avancerat och välj miljövariabler. I den översta rutan (användarvariabler) skapa tre nya variabler. En för en sökväg till maven som namnges till: M2_HOME och som variabelvärde skriv in sökvägen till maven som extraherades i 5.1 Nerladdning av Maven, för tutorialen är det C:\apache-maven

43 39

44 Skapa en ny variabel som döps till M2 med variabelvärdet: %M2_HOME%\bin. Slutligen skapa en variabel som skall heta JAVA_HOME med variabelvärdet sökvägen till ditt JDK, för tutorialen är värdet C:\Program\Java\jdk1.6.0_17. 40

45 Tre nya miljövariabler har skapats och sökvägarna skall läggas in i Path som hittas i den undre rutan (Systemvariabler). Markera Path och tryck redigera. I slutet av Path, lägg till ;%M2%;%JAVA_HOME%\bin till Path. För att kontrollera att maven installerats, öppna kommandotolken och gå till C:\apache-maven \bin och skriv där in kommandot: mvn --version. 41

46 42

47 5.3 Netbeans installation av Maven För att installera maven i netbeans, starta netbeans, öppna tools och välj options. Gå in på Miscellaneous och fliken Maven. I External Maven Home ange sökvägen till maven installationen C:/apache-maven Tryck OK. 43

48 För att se om rätt sökväg lagts in i local repository, gå till window, other och välj maven repository browser. Där går det sedan att öppna t.ex. HTTPClient och se en.jar fil. 6. Maven projekt 6.1 Skapa projektet Skapa ett maven projekt. För att skapa ett projekt, välj file new project och välj Maven Project i listan. Som Archetype välj Maven Quickstart Archetype och tryck next. 44

49 Som namn välj DVDStoreAdmin och välj vart på datorn projektet skall sparas. Tryck finish. 45

50 Tryck Ok får att komma vidare. Om detta är det första maven projektet som skapas på datorn kommer maven att ladda ner plugins och artefakter till local repository. 6.2 Format och kodning Högerklicka på projektet i listan och välj properties. Välj sources kategorin och ändra Souce/Binary Format till 1.5 och Encoding till UTF-8. tryck OK. 7. Hibernate 7.1 Skapa konfigureringsfilen Högerklicka på Source Packages, välj nytt och sedan other. 46

51 Välj hibernate och välj Hibernate Configuration Wizard och tryck nästa. 47

52 Behåll filnamnet hibernate.cfg. Välj src/main/resources som Folder. Välj Sakila som Database connection och tryck finish. Detta kan ta lite tid att skapa. Utöver att hibernate.cfg skapas ändras också pom filen. När filen skapats syns hibernate.cfg.xml, vilket är en konfigurationsfil gällande hibernateramverket. 7.2 Möjliggör debugging av SQL frågor. Se till att hibernate.cfg.xml är öppen på design fliken, öppna optional properties och därefter configuration propertiess. Klicka på add och välj property name som hibernate.show_sql och sätt property value till true. Nu skall sql frågor vara möjliga att debugga. Glöm ej att spara ändringarna. 48

53 7.3 Erhålla ett sessions objekt. För att kunna använda hibernate måste en hjälpklass skapas som har hand om uppstart och använder hibernates SessionFactory för att erhålla ett sessions objekt. Högerklicka på source packages, välj new och sedan other. Välj Hibernate i kategorier och välj HibernateUtil som filtyp och klicka på next. Skriv in HibernateUtil som klassnamn och sakila.util som paketnamn. Välj sedan finish. 49

54 Nu skapas en ny mapp vid namn sakila.util som innehåller klassen HibernateUtil. 50

55 7.4 Reverse Engineering filen. Högerklicka på source packages, välj new och sedan other. Välj Hibernate i kategorier och välj Hibernate Reverse Engineering Wizard som filtyp och klicka på next. Skriv in hibernate.reveng som filnamn och src/main/resources som paketnamn. Välj sedan next. Välj alla tillgängliga entiteter och tryck finish. Nu skapas en ny mapp vid namn sakila.util som innehåller klassen hibernate.reveng. 7.5 Hibernate Mapping filer. Högerklicka på source packages, välj new och sedan other. Välj Hibernate i kategorier och välj Hibernate Mapping Files and POJOs from Database som filtyp och tryck nästa. 51

56 Om hibernate.cfg.xml inte är valt som Configuration File, välj det i dropdown listan. Om hibernate.reveng.xml inte är valt som Configuration File, välj det i dropdown listan. Se till så att Domanin Code och Hibernate XML Mappings är ikryssade, och skriv sakila.entity som paketnamn och tryck på finish. 52

57 Nu skapas Java objekt för alla entiteter i src/main/java/sakila/entity och xml filer i src/main/resources/sakila/entity. 8. Skapa ett enkelt Applikations GUI. Högerklicka på source packages, välj new och sedan other. Välj Swing GUI Forms och JFrame Form som filtyp, klicka nästa. 53

58 Skriv in DVDStoreAdmin som klassnamn och sakila.ui som paketnamn tryck sedan finish. Högeklicka någonstans på det gråa området, Välj Set Layout och klicka sedan på Null Layout. 54

59 Markera hela GUIt genom att vänsterklicka på det, gå till Code och ändra Form Size Policy till Generate Resize Code. Dra nu in tre labels som skall döpas till respektive Skådespelare, Förnamn och Efternamn. Dra in två Text Fields, en till förnamn och en till efternamn, ta bort defaulttexten från dem och döp dem till firstnametextfield respektive lastnametextfield. Dra in en Knapp och ändra texten till sök och döp knappen till querybutton. Dra in en Table och döp den till resulttable. 55

60 56

61 9. Skapa en fråga i HQL query editorn. Öppna Projekt fliken, gå till Other Sources, src/main/resources, default package. Högerklicka på hibernate.cfg.xml och välj run HQL Query. 57

62 För att testa att allt fungerar än så länge. Skriv in t.ex. from Actor i HQL fönstret och exekvera frågan genom att trycka på exekveringsknappen. 10. Lägg till fråga till formuläret. Öppna DVDStoreAdmin.java och klicka på source fliken. Lägg till följande kod till klassen: private static String QUERY_BASED_ON_FIRST_NAME="from Actor a where a.firstname like '"; private static String QUERY_BASED_ON_LAST_NAME="from Actor a where a.lastname like '"; private void runquerybasedonfirstname() { } executehqlquery(query_based_on_first_name + firstnametextfield.gettext() + "%'"); private void runquerybasedonlastname() { executehqlquery(query_based_on_last_name + lastnametextfield.gettext() + "%'"); 58

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

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

Webbprogrammering, grundkurs 725G54

Webbprogrammering, grundkurs 725G54 Webbprogrammering, grundkurs 725G54 Bootstrap jquery SEO RWD MuddyCards. Tidigare Muddycards Många positiva kommentarer Ibland för högt tempo på föreläsning Lägg ut labbar tidigare Mer föreläsningar (2

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

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

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU Databaser Design och programmering, IDA Kursen, diverse praktiskt Varför databaser? Vad är en databas? Andra viktiga begrepp Kursöversikt Teori och praktik Fö och bok lektioner, labbar i projekt (3,5hp=100h)

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

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

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

Utvecklingen av ett tidregistrerings- och faktureringssystem

Utvecklingen av ett tidregistrerings- och faktureringssystem Datavetenskap Opponenter: Anders Heimer & Jonas Seffel Respondenter: Daniel Jansson & Mikael Jansson Utvecklingen av ett tidregistrerings- och faktureringssystem Oppositionsrapport, C-nivå 2006:10 1 Sammanfattat

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

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

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser? Databaser Design och programmering! Diverse praktiskt! Varför databaser?! Vad är en databas?! Andra viktiga begrepp Kursöversikt! Teori och praktik! Samläsning! Olika projekt! Examination (tenta, labb

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

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

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

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

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

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

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

Prova på-laboration i SQL

Prova på-laboration i SQL Prova på-laboration i SQL Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2006-09-19 1. Introduktion till databaser Databaser finns i så gott som alla sammanhang

Läs mer

Databaser - Design och programmering

Databaser - Design och programmering Databaser - Design och programmering Eva L. Ragnemalm, IDA (eva.ragnemalm@liu.se) Fö 1; introduktion Kursen, diverse praktiskt Varför databaser? Vad är en databas? Andra viktiga begrepp 2 Kursöversikt

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

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

732G16: Databaser - Design och programmering

732G16: Databaser - Design och programmering 732G16: Databaser - Design och programmering Eva L. Ragnemalm, IDA (eva.ragnemalm@liu.se) Johan Falkenjack, IDA (johan.falkenjack@liu.se) Fö 1 Introduktion 2 Kursöversikt Teori och praktik Kursbok, lektionshäfte,

Läs mer

Kursplan. IK1004 Java - Grafiska användargränssnitt med Swing. 7,5 högskolepoäng, Grundnivå 1. Java - GUI Programming with Swing - Undergraduate Level

Kursplan. IK1004 Java - Grafiska användargränssnitt med Swing. 7,5 högskolepoäng, Grundnivå 1. Java - GUI Programming with Swing - Undergraduate Level Kursplan IK1004 Java - Grafiska användargränssnitt med Swing 7,5 högskolepoäng, Grundnivå 1 Java - GUI Programming with Swing - Undergraduate Level 7.5 Higher Education Credits *), First Cycle Level 1

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

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

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

Informatik med systemvetenskaplig inriktning A, 30 högskolepoäng Informatics, Basic Course, 30 Credits

Informatik med systemvetenskaplig inriktning A, 30 högskolepoäng Informatics, Basic Course, 30 Credits 1(5) Denna kursplan är nedlagd eller ersatt av ny kursplan. Kursplan Handelshögskolan vid Örebro universitet Informatik med systemvetenskaplig inriktning A, 30 högskolepoäng Informatics, Basic Course,

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

Webprogrammering och 729G28 databaser Webprogrammering och databaser Kursöversikt Webprogrammering Designprocessen Lösningsförslag

Webprogrammering och 729G28 databaser Webprogrammering och databaser Kursöversikt Webprogrammering Designprocessen Lösningsförslag 729G28 Webprogrammering och Kursansvarig: Eva Ragnemalm, IDA eva.ragnemalm@liu.se Kursassistent: Anders Märak Leffler anders.marak.leffler@liu.se Webprogrammering och Föreläsning 1: Diverse praktiskt om

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

GIT L0003B. Databaser, en introduktion. Information inför kursstart

GIT L0003B. Databaser, en introduktion. Information inför kursstart GIT L0003B Databaser, en introduktion Information inför kursstart Innehåll Registrering 2 Kursplan 2 Schema 2 Föreläsningar 2 Laborationer 2 Examination 2 Litteratur 3 Alernativ/referens- litteratur 3

Läs mer

Sample exam questions. Database exam TIG058

Sample exam questions. Database exam TIG058 Sample exam questions Database exam TIG058 Distribution of topics covered 1. Grundläggande om Databaser och Databashanterare (5p) 2. SQLite-databashanteraren (5p) 3. SQL - SELECT, ORDER BY, WHERE, LIMIT

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

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem

! Webprogrammering. ! Databasteori och praktik. ! Fö, le, la + projekt. ! Examination (tenta, dugga + labb, ! Studera användarna och deras problem Webprogrammering och databaser! Idag: Diverse praktiskt om kursen Webprogrammering Databaser, terminogi Start på ER-modellering! Webprogrammering Kursöversikt! Databasteori och praktik! Fö, le, la + projekt!

Läs mer

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7) 1 (7) Försättsblad till skriftlig tentamen vid Linköpings universitet Datum för tentamen Sal (1) Tid Kurskod Provkod Kursnamn/benämning Provnamn/benämning Institution Antal uppgifter som ingår i tentamen

Läs mer

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index INNEHÅLL SQL DEL 4 DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index Chapter 3, 6, 8 delar av. Beginning SQL Server 2008 for Developers 1 CREATE

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

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält

Läs mer

Tentamen ISGB01, ISGB24. Databasdesign 7,5 Poäng

Tentamen ISGB01, ISGB24. Databasdesign 7,5 Poäng Tentamen ISGB01, ISGB24 Databasdesign 7,5 Poäng Datum: 2016-09-30 Tid: 08.15-13.15 Lärare: Peter Bellström, Katarina Groth, Johan Högberg Tentamen är på 40 poäng. Gränsen för Godkänd (G) är 20 poäng. Gränsen

Läs mer

ADO.NET Murach Kapitel 17-20

ADO.NET Murach Kapitel 17-20 Databaser och C# ADO.NET Murach Kapitel 17-20 2013-01-30 1 Winstrand Development Databas ADO.NET Är en del av.net ramverket och tillhandahåller delar för att kommunicera med olika datakällor. Dessa kan

Läs mer

TDDD12 och TDDD46 Databasteknik. Lena Strömbäck

TDDD12 och TDDD46 Databasteknik. Lena Strömbäck TDDD12 och TDDD46 Databasteknik Lena Strömbäck http://www.ida.liu.se/~tddd12 http://www.ida.liu.se/~tddd46 Vad är en databas? Ett sätt att lagra data på elektroniskt format. Används i dagliga livet, banker,

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

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta

Läs mer

729G28 Webprogrammering och databaser. Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminologi

729G28 Webprogrammering och databaser. Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminologi 729G28 Webprogrammering och databaser Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminologi 2 Personal Examinator, Ansvarig databasteori: Eva Ragnemalm, eva.ragnemalm@liu.se

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

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

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server DVA234 Databaser 1(6) Kurs: DVA234 Databaser Version: 4, uppdaterad 2016-03-21 Utvecklad av: Dag Nyström, dag.nystrom@mdh.se Laboration 1: Introduktion till databaser och MS SQL Server I den här laborationen

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel

Läs mer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

Klientprogrammering mot databaser

Klientprogrammering mot databaser Klientprogrammering mot Databaser Java DataBase Connectivity, JDBC Klientprogrammering mot databaser Native API olika för olika DBMS, ofta i C/C++ ODBC, Open Datbase Connectivity samma API för olika databashanterare.

Läs mer

Entity Framework 4.0, en utvärdering av ett ORMramverk. Entity Framework 4.0, an evaluation of an ORM-framework Andreas Hall.

Entity Framework 4.0, en utvärdering av ett ORMramverk. Entity Framework 4.0, an evaluation of an ORM-framework Andreas Hall. Entity Framework 4.0, en utvärdering av ett ORMramverk Entity Framework 4.0, an evaluation of an ORM-framework Andreas Hall Daniel Hindrikes Akademin industri och samhälle Nr: IKA052010 EXAMENSARBETE,

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

Javautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år

Javautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år Javautvecklare 400 YH-poäng, 2 år Utbildningsfakta Kurser (12 stycken) Grundläggande programmering och javaverktyg 50 yhp Grafiskt gränssnitt och interaktion 20 yhp Internet, webb och webbramverk 40 yhp

Läs mer

(Data)Modellering. nikos dimitrakas rum 2423

(Data)Modellering. nikos dimitrakas rum 2423 (Data)Modellering nikosd@kth.se 08-161295 rum 2423 Connolly/Begg (3rd edition) Kapitel 11, 12 och 14 (4th edition) Kapitel 11, 12 och 15 (5th edition) Kapitel 12, 13 och 16 (6th edition) Kapitel 12, 13

Läs mer

Daniel.Ringquist@swe.sas.com Copyright 2003, SAS Institute Inc. All rights reserved.

Daniel.Ringquist@swe.sas.com Copyright 2003, SAS Institute Inc. All rights reserved. SAS Enterprise Guide 3.0 och framåt Daniel.Ringquist@swe.sas.com Copyright 2003, SAS Institute Inc. All rights reserved. SAS Enterprise Guide Ett Windowsbaserat rapporterings och analysverktyg. Enterprise

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

Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved.

Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved. Administrera din SAS miljö med SAS Metadata Server och SAS Management Console. Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved. SAS Intelligence Value Chain

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

Databasutveckling Introduktion till SQL och TSQL

Databasutveckling Introduktion till SQL och TSQL Databasutveckling Introduktion till SQL och TSQL Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Introduktion till SQL SELECT satsen, enkla frågor Hämta specifika kolumner Alias

Läs mer

Användarcentrerad systemdesign

Användarcentrerad systemdesign Användarcentrerad systemdesign Användbarhet och användarcentrering Jan Gulan Gulliksen Avdelningen för MDI/IT, Uppsala Universitet, Sverige Jan.Gulliksen@hci.uu.se http://www.hci.uu.se/edu Innehåll Användbarhet

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

DI Studio 4.3 - nyheter

DI Studio 4.3 - nyheter DI Studio 4.3 - nyheter Sofie Eidensten och Patric Hamilton Copyright 2010 SAS Institute Inc. All rights reserved. 2 Varför DI Studio Snabbare utveckling Enklare underhåll Gör det överskådligt 3 Nyheter

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

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

Designmönster, introduktion. Vad är det? Varför skall man använda mönster? Designmönster, introduktion. Vad är det? Varför skall man använda mönster? Kent Petersson EMW, Mölndal Datavetenskap, Chalmers epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL: http://www.cs.chalmers.se/~kentp

Läs mer

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor TENTAMEN För kursen DATUM: 2015-11-06 TID: 14 19 Ansvarig för tentamen: Anna Palmquist Förfrågningar: 0734-612003 Resultat: Betygsskala: Hjälpmedel: Anslås inom 3 veckor Godkänt 20 p, Väl godkänt 32 p,

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

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

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

Opponenter: Erik Hansen Mats Almgren Respondent: Martin Landälv ioftpd-verktyg

Opponenter: Erik Hansen Mats Almgren Respondent: Martin Landälv ioftpd-verktyg Datavetenskap Opponenter: Erik Hansen Mats Almgren Respondent: Martin Landälv ioftpd-verktyg Oppositionsrapport, C-nivå 2006:12 1 Sammanfattat omdöme av examensarbetet Examensarbetet är intressant eftersom

Läs mer

Informatik med systemvetenskaplig inriktning A, 30 högskolepoäng Informatics, Basic Course, 30 Credits

Informatik med systemvetenskaplig inriktning A, 30 högskolepoäng Informatics, Basic Course, 30 Credits 1(5) Denna kursplan har ersatts av en nyare version. Den nya versionen gäller fr.o.m. Vårterminen 2015 Kursplan Handelshögskolan vid Örebro universitet Informatik med systemvetenskaplig inriktning A, 30

Läs mer

Innehåll Översikt: Introduktion till SQL Server... 3 Introduktion till plattform för SQL Server... 4 Översikt introduktion till plattform för SQL

Innehåll Översikt: Introduktion till SQL Server... 3 Introduktion till plattform för SQL Server... 4 Översikt introduktion till plattform för SQL 1 2 Innehåll Översikt: Introduktion till SQL Server... 3 Introduktion till plattform för SQL Server... 4 Översikt introduktion till plattform för SQL Server... 5 Arkitektur för SQL Server... 6 Arkitektur

Läs mer

JAVAUTVECKLING LEKTION 1

JAVAUTVECKLING LEKTION 1 JAVAUTVECKLING LEKTION 1 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Introduktion till kursen Java historik och särdrag Javautvecklarens yrkesroll Installation och konfiguration

Läs mer

Programvaruintensiva system

Programvaruintensiva system Programvaruintensiva system PROFESSOR PER RUNESON, DATAVETENSKAP, LTH PER.RUNESON@CS.LTH.SE CC alijavam at Flickr Mjukvara finns överallt About half of Sweden s exported products are critically dependent

Läs mer

PROGRAMMERINGSTEKNIK TIN212

PROGRAMMERINGSTEKNIK TIN212 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,

Läs mer

GIT L0009B GEOGRAFISK DATABASTEKNIK. Information inför kursstart

GIT L0009B GEOGRAFISK DATABASTEKNIK. Information inför kursstart GIT L0009B GEOGRAFISK DATABASTEKNIK Information inför kursstart Innehåll Registrering 2 Kursplan 2 Schema 2 Föreläsningar 2 Laborationer 2 Examination 2 Litteratur 3 Referenslitteratur 3 Programvaror 3

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut

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

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

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

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram Analys och design med hjälp av CRC 83 Klassdiagram Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt,

Läs mer

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram

Läs mer

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året 729G28 Webprogrammering och databaser Föreläsning 1: Diverse praktiskt om kursen Webprogrammering Databaser, terminogi Webprogrammering och databaser Personal: Examinator Jalal Maleki, jalma@ida.liu.se

Läs mer

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Genomgång av tentamen. Databasteknik ITHS 4/3 2016 Genomgång av tentamen Databasteknik ITHS 4/3 2016 Tentans upplägg Täcka in de 10 delar av kursen vi bedömt som viktigast Säkerställa att det funnits såväl teoripass som övningspass kring varje del Lätt

Läs mer

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7) Översikt Programmering tillämpningar och datastrukturer 729G58 (HKGBB7) Kursinformation Objektorienterad programmering: Klasser och objekt Arv Polymorfism Metoder Programexempel Programmering tillämpningar

Läs mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se

Läs mer

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Vad gör vi här? Programmeringsteknik fördjupningskurs (EDAA01; 7,5hp) Valfri för F, N & BME (kan läsas från åk 2 eller i sommar!) Avancerad

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

Creo Customization. Lars Björs 2014-10-16

Creo Customization. Lars Björs 2014-10-16 Creo Customization Lars Björs 2014-10-16 Norra Europas största partner och återförsäljare av PTC relaterad programvara (Windchill, Creo, Arbortext, MathCad, Relex) 70 anställda Egen utvecklingsavdelning

Läs mer

Analys av BI-system och utveckling av BIapplikationer

Analys av BI-system och utveckling av BIapplikationer Computer Science Fredrik Nilsson, Jonas Wånggren Daniel Strömberg Analys av BI-system och utveckling av BIapplikationer Opposition Report, C/D-level 2005:xx 1 Sammanfattat omdöme av examensarbetet Vi tycker

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