Institutionen för datavetenskap
|
|
- Lovisa Larsson
- för 9 år sedan
- Visningar:
Transkript
1 Institutionen för datavetenskap Department of Computer and Information Science Examensarbete Utvärdering av inläsning av XML-kontra flatfiler av Mathias Pettersson LIU-IDA/LITH-EX-G--12/028--SE Linköpings universitet SE Linköping, Sweden Linköpings universitet Linköping
2 Utvärdering av inläsning av XML- kontra flatfiler Av: Handledare: Björn Eklund Skatteverket Visby Examinator: Patrick Lambrix Linköpings Universitet
3 Sammanfattning Examensarbetet har utförts på Skatteverkets kontor i Visby. Eftersom Skatteverket arbetar med ett befintligt projekt som medför en kommande förändring på filformatet från flatfil till XML- fil så fanns en oro över att det nya formatet skulle medföra prestandaproblem. Därför ville Skatteverket göra en utvärdering på inläsningen från filformaten till en databas med fokus på prestanda men även andra kvalitetskriterier. Målet med examensarbetet var att jämföra inläsningen av de olika filformaten där systemet skulle klara av hundratals till hundratusentals kontrolluppgifter för att sedan sammanställa resultatet av jämförelsen i en rapport. För att arbetet skulle kunna utföras så behövdes en lokal utvecklings- och testmiljö installeras. Testdata behövde även tas fram för att kunna utföra utvärderingen. Slutsatsen blev inte helt oväntat att flatfilsformatet är snabbare att läsa av än XML- formatet. Detta grundar sig i att XML- formatet innehåller betydligt fler tecken än flatfilsformatet. Flatfilsparsern var i genomsnitt 29% snabbare än XML- parsern i de fallen då ett hundratal kontrolluppgifter till flera hundratusentals parsades. Resultatet var dock mer oväntat då skillnaden i filstorlek mellan formaten förhöll sig konstant runt 80% för samma antal kontrolluppgifter. I min mening tycker jag att skillnaden i berarbetningstid och filstorlek borde ha varit mer jämna procentuellt. En graf med bearbetningstiderna finns att se i rapporten. Resultatet blev fyra stycken Eclipse- projekt på totalt 2988 rader kod. XML- parsern som valdes för utvärderingen var SAX- parsern, vilket var den mest lämpade parsern då den strömmar inläsningen av XML- dokument och håller därför en låg minnesanvändning. Flatfilsparsern var lite knepigare, då det inte fanns en färdig parser att tillgå som var anpassat efter formatet, därför var jag tvungen att skriva en egen parser för Skatteverkets format. Detta går att läsa mer om i rapporten. UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER I
4 Innehållsförteckning II UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER 1 Inledning Bakgrund till examensarbetet Krav Motivering Syfte Frågeställning Avgränsningar Målgrupp Språkbruk Rapportens struktur Bakgrund XML Flatfiler Teori Programspråk & tekniker Java XML parser SAX (Simple API for XML) DOM (Document Object Model) StAX (Streaming API for XML) Flatfilsparser JPA (Java Persistence API) JAXB (Java Architecture for XML Binding) Databasdesign Testning Beteendetestning (Black box testing) Glasboxstest (White box testing) Enhetstest (Unit testing) Lasttest (Load testing) Acceptanstest (Acceptance testing) Användbarhet Prestanda... 8
5 3.6 Utvecklingsmiljö IDE- program Databas Metod Utvecklingsmetod Milstolpar Agil utveckling Mitt arbete Testning Utvecklingsmiljö Rational Rose Apache Ant Eclipse IDE- mjukvaruutvecklings- verktyg Databas Oracle WLS Tekniker JAXB SAX- XML parser Flatfils- parser JPA Resultat Arbetsförlopp Generering av testdata XML- dokument Flatfil Parsning av filformat Parsning av XML fil Parsning av flatfil Prestandajämförelse Sammanställning av prestandajämförelse Användargränssnitt Databasstruktur Programkod Statistik UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER III
6 5.5 Prestandamätning Slutsats och diskussion Egen reflektion och diskussion Fortsatt arbete Slutsats Referenser Bilagor Kontrolluppgifter XML- format Flatfilsformat IV UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
7 1 Inledning 1.1 Bakgrund till examensarbetet Skatteverkets IT- avdelning jobbar med utveckling, drift, förvaltning och underhåll av Skatteverkets och Kronofogdens IT- system. Uppdragen kommer från Skatteverkets huvudkontor. Större delen av verksamheten finns i Solna, samt på orterna Göteborg, Umeå, Visby, Västerås och Östersund. Kontoret i Visby är uppdelat i två sektioner och har ca 50 medarbetare. Arbetsuppgifterna är uppdelade i domäner, en datawarehousedomän samt en javadomän. I javadomänen utvecklas allt från infrastrukturella komponenter till Figur 1: Skatteverket är en statlig myndighet i Sverige handläggningsstöd och applikationer avsedda för Skatteverkets externa webbplats. Examensarbetet blev därför placerat i javadomänen. På uppdrag av Skatteverkets kontor i Visby så behövdes en utvärdering på inläsningen av filformaten XML kontra flatfil innehållandes kontrolluppgifter till en databas. Källan till arbetet var att den danska motsvarigheten till Skatteverket hade pekat på att de tvingats gå från XML- format till förmån för flatfiler p.g.a. prestandaproblem med XML- filer. Då Skatteverket ska införa liknande funktionalitet så ville de säkerställa att XML- formatet i sig inte skulle vara något problem Krav Installation av lokal test/utvecklingsmiljö. Testdata skulle tas fram. Stöd för kontrolluppgiftsfiler innehållandes hundratals till hundratusentals kontrolluppgifter. En rapport där IT- miljön beskrivs samt de utvärderade teknikerna. En testbilaga med bearbetningstider och diagram under olika laster. 1.2 Motivering På grund av en kommande formatändring från flatfil till XML fil i ett befintligt projekt hos Skattekontoret i Visby så fanns det oro för eventuella prestandaförsämringar, då den danska motsvarigheten till Skatteverket pekade på detta. Därför var det viktigt för dem att göra en utvärdering som påvisar olikheter i en prestandajämförelse mellan de två olika filformaten. 1.3 Syfte Syftet med examensarbetet var att göra en utvärdering på inläsning av de olika filformaten XML kontra flatfil till en databas. Filerna innehöll kontrolluppgifter 10
8 (KU10) från arbetsgivare m.fl. Detta skulle göras för att påvisa olikheter och eventuella fördelar och nackdelar mellan de olika filformaten, så som prestanda och andra kvalitetskriterier. Testdata skulle tas fram för att kunna göra flera mätningar på olika laster om hundratals till hundratusentals kontrolluppgifter. Resultaten från testkörningarna skulle sammanställas i en testbilaga med grafer och diagram som visar skillnaden i bearbetningstid för olika antal kontrolluppgifter, om hundratals till hundratusentals. 1.4 Frågeställning Finns det någon teknik att generera XML dokument i Java eller hur gör man det enklast? För att förenkla och abstrahera arbetet så är det en viktig fråga. Vilka olika parsningstekniker finns det för att traversera de olika filformaten och vilken metod lämpar sig bäst för arbetet? Eftersom fokus främst låg på prestanda var det viktigt att hitta den tekniken som var snabbast. Eftersom antalet kontrolluppgifter kunde vara hundratusentals som mest så var det även viktigt att hitta den teknik som klarade av att hantera stora mängder för att hålla prestandan uppe. Finns det något bra sätt att hantera databasanslutningen på? Då inläsningen av kontrolluppgifter skulle ske till en databas så ansåg jag det viktigt att hitta ett bra sätt att hantera anslutningen och innehållet i databasen på. Hur stor är storleksskillnaden mellan filformaten och hur mycket påverkar det bearbetningstiden? Eftersom XML filen innehåller betydligt fler tecken än flatfilen så borde storleken vara markant. Det kan även vara av intresse att se om storleken ökar linjärt med antalet kontrolluppgifter. Kommer bearbetningstiden öka sekventiellt med antalet kontrolluppgifter? Då storleken ökar med antalet kontrolluppgifter så ökar även bearbetningstiden. Det kan därför vara av intresse att veta om bearbetningstiden ökar linjärt. 1.5 Avgränsningar Utvärderingen använder programspråket Java med en SQL databas från Oracle. Allt ska köras på en dator vilket Skatteverket tillhandahåller. Arbetet ska integreras med Skatteverkets säkerhetsbibliotek för att det ska kunna köras säkert på en WLS från Oracle. Resultat sammanställs i ett Excelldokument med grafer som påvisar skillnader, om för och nackdelar mellan de två filformaten. 1.6 Målgrupp Den här rapporten är riktad till studenter med datautbildning inom programmering på kandidatnivå eller personer med förståelse och intresse för programmering. 2 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
9 1.7 Språkbruk KU - Kontrolluppgift 10, kontrolluppgift från arbetsgivare m.fl. JPA - Java Percistence API, ett ramverk för att hantera relationsdata mellan objekt. JAXB - Java Architecture for XML Binding, "mappar" Java- klasser till XML representationer. SQL - Ett standardiserat språk för att hämta och modifiera data i en relationsdatabas. WLS - Web Logic Server, en Java web applikationsserver från Oracle. Entitet - Ett objekt/tabell i en databas. Parser (tolk) - tolkar strängar av symboler (indata) enligt regler i en formell grammatik. Kommandorad - När jag skriver kommandorad så syftar jag på raden i ett terminalfönster där olika kommandon kan skrivas in för att kommunicera med olika program. GUI - Graphical User Interface, eller på svenska: grafiska användargränssnitt. XML - Extensible Markup Language, ett märkspråk (engelska: markup language). XML dokument används för att strukturera data. Element - Ett XML- dokument är i grunden uppbyggt av element. Ett element består vanligtvis av en start- och en sluttagg och kan ha olika attribut och innehåll. Flatfil - Har samma funktion som ett XML- dokument. Syntaxen/strukturen däremot bestäms självt. JAR - Java Archive, Är ett arkivformat för att hålla samman många Java- klassfiler, metadata och andra resurser i en och samma fil. Tråd - (programtråd) Används för att utföra saker samtidigt. kb - kilobyte, måttenhet. 1 kb motsvarar 1024 bytes (2^10). ms - millisekunder, på en sekund går det 1000 millisekunder. 1.8 Rapportens struktur Den här rapporten sammanfattar examensarbetet för på Skatteverkets kontor i Visby under våren Rapporten är uppdelad i åtta kapitel. Rapportens första kapitel är inledningen med bakgrunden, syftet och avgränsningar till examensarbetet. Andra kapitlet är lite bakgrundsfakta om filformaten då exjobbet behandlar detta. Tredje kapitlet innehåller teorier som ligger bakom examensarbetet som kan vara bra att känna till. Det fjärde kapitlet handlar om metoder som jag använt under arbetet. Femte kapitlet innehåller resultaten för arbetet och kapitel sex en slutsats och diskussion kring arbetet. Det sjunde kapitlet innehåller de referenser som jag har använt för rapporten och examensarbetet. Åttonde och sista kapitlet innehåller bilagor till rapporten.
10 2 Bakgrund För att reda ut några begrepp och tekniker som jag har använt eller kommit i kontakt med i examensarbetet så har jag valt att beskriva det här för att förståelsen för rapporten ska ökas och läsaren ska ha lättare att hänga med. 2.1 XML Extensible Markup Language (XML) är ett så kallat märkspråk vars syfte är att kunna utväxla data mellan olika informationssystem. XML dokument innehåller data som beskrivs direkt i dokumentet till skillnad från flatfiler som endast brukar innehålla data. Ett XML- dokument är i grunden uppbyggt av element. Ett element består vanligtvis av en start- och en sluttagg och kan ha olika attribut och innehåll. Genom att kombinera ett flertal element med valfria attribut kan olika information beskrivas. Följande exempel är en beskrivning på en kontrolluppgift med lite persondata: <?xml version="1.0" encoding="iso " standalone="yes"?> <!- - Deklarerar att det är en XML- fil med teckenkodning iso >... <Kontrolluppgift> <!- - Kontrolluppgift är ett element i rotelementet Manadsuppgift - - > <Inkomsttagare> <!- - En inkomsttagare/persondata- - > <!- - ns2: är ett "namespace", vilket används för att lösa namnkonflikter - - > <ns2:adress> <ns2:gatuadress>skatteverket 1</ns2:Gatuadress> <ns2:postnr>62123</ns2:postnr> <ns2:postort>visby</ns2:postort> </ns2:adress> <Fornamn>John1</Fornamn> <Efternamn>Doe</Efternamn> <Personnr> </Personnr> <Orgnr></Orgnr> </Inkomsttagare> <!- - Slut på elementet persondata - - > Flatfiler Flatfiler innehåller ren text vars syfte är samma som XML- dokument. Strukturen på dessa skiljer sig dock då flatfiler oftast innehåller en post per rad. Det finns ingen förutbestämd struktur på hur en flatfil ska se ut, utan detta bestäms av skaparen. Inom en post så kan flera fält finnas, vilka kan vara separerade med något sorts tecken (vanligtvis kommatecken), men inte i detta fall då det handlar om nyckelord som t.ex. "#NAMN". 4 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
11 Följande är en del ur en flatfil där en kontrolluppgift beskrivs precis som i exemplet för XML: #POST_START KU10 #PERSONNR #NAMN Doe John1 #ADRESS Skatteverket 1 #POSTORT Visby #POSTNR #POST_SLUT KU10...
12 3 Teori Inom examensarbetet så har jag behövt använda en del tekniker och program för att kunna utföra arbetet. Därför har jag varit tvungen att göra vissa jämförelser mellan dem för att välja det som jag anser lämpar sig bäst för uppgiften. Jag tänkte därför ge lite bakgrund till allt i detta kapitel och där jag även beskriver hur jag har tänkt. 3.1 Programspråk & tekniker Programmeringsspråket ska väljas efter uppgiften. Vilket språk eller vilken teknik som bäst lämpar sig för arbetet kan vara det som har bredast urval av funktioner som kan användas under arbetets gång, eller det som är enklast att använda men kanske inte är så optimerat. Jag kommer här gå igenom några programspråk och tekniker som jag har tittat på och ge lite bakgrund om dem Java Java är ett objektorienterat programspråk som presenterades för världen år Java är ett plattformsoberoende språk som har många användningsområden, som t.ex. programapplikationer i detta fall. Nedan presenterar jag olika fördelar och inbyggda funktioner som Java tillhandahåller vilket jag använt mig av i mitt arbete XML parser Eftersom XML filer innehåller betydligt fler tecken än en flatfil så behövdes en snabb XML parser som inte höll så mycket data i minnet då systemet kunde bli segt om flera hundratusentals kontrolluppgifter skulle hanteras. Jag kom fram till att följande XML parsers fanns att tillgå i Java: SAX, DOM och StAX SAX (Simple API for XML) En SAX- parser skapar inte någon intern struktur av XML dokumentet utan istället tar den påträffandet av olika komponenter som event och talar om för klienten vad den läser under tiden den läser. Eftersom SAX- parsern inte skapar någon intern struktur så är den mycket minneseffektiv vid stora XML dokument. Parsern är också generellt snabbare och lättare att lära sig än DOM- parsern, dock så blir det mer för programmeraren att hålla reda på då denne måste ta hand om all data som kommer och skapa sin egen struktur DOM (Document Object Model) DOM- parsern bygger s.k. DOM- träd från XML dokument och sparar det i minnet. Fördelen med DOM- träd är att det är enklare för programmeraren att ta ut och förändra de delar som behövs. DOM- parsern läser alltid in hela XML dokumentet oavsett hur mycket data som behövs. DOM- parsern är väldigt ineffektiv om XML dokumenten är stora eftersom hela trädet hålls i minnet. Eftersom det var som mest kontrolluppgifter som fanns i ett XML dokument så fanns risken att systemets minne skulle ta slut. Därför ansåg jag att denna parser inte lämpade sig för arbetet. 6 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
13 StAX (Streaming API for XML) StAX parsern är en blandning mellan DOM och SAX parser där det går att välja antingen eller. Huvudingången för StAX är en filpekare som representerar positionen inom XML dokumentet. Applikationen flyttar sedan pekaren framåt och tar informationen som den behöver från parsern Flatfilsparser Eftersom flatfiler kan se lite olika ut så fanns det ingen direkt funktion som passade för att parsa de flatfiler jag hade till handa. Därför är alternativet att delvis läsa in filen (i s.k. "chunks") som programmeraren sedan får sålla ut data ur. Detta ansåg jag vara det mest effektiva sättet för att hålla prestandan uppe vid större flatfiler om hundratusentals kontrolluppgifter JPA (Java Persistence API) JPA är ett ramverk som används för att mappa s.k. entiteter i form av klasser i Java till en relationsdatabas. JPA förenklar därmed anslutningen och hanteringen av databasen då utvecklaren inte behöver bry sig speciellt om hur databasen ser ut då detta specificeras i JPA JAXB (Java Architecture for XML Binding) JAXB används för att mappa Java klasser till XML representationer. Detta förenklar uppbyggnaden av XML filer som skulle genereras som testdata då jag slapp bygga en egen funktion som skulle utföra samma sak. JAXB tar ett XML- schema och genererar objekt utifrån elementen i det. XML- schemat används senare för att validera att alla obligatoriska objekt finns med för att generera ett XML- dokument. 3.2 Databasdesign Databasen ska ha tydliga och strukturerade relationer så den är lätt att följa, med så tydliga entiteter med så hög normalform som möjligt på databasstrukturen. Med databasnormalisering menas att systematiskt för varje normalform (1NF och uppåt) stegvis minska redundans och beroenden i databasen. Databasdesignen är enkel i detta fall, då detta specificeras och sköts av tidigare nämnt JPA, se Endast en entitet kommer att existera i detta fall, vilket är "Kontrolluppgift" för båda filformaten, se utdraget av entiteten kontrolluppgift i kapitel Testning Testningen ska vara likvärdig mellan filformaten då samma antal kontrolluppgifter ska testas för varje filformat. Det är viktigt att testa ofta och så mycket som möjligt då det kommer att förenkla arbetet och undvika eventuellt onödiga fel. Det är bra att använda olika testmetoder för att få olika synvinklar på programmet så det blir lättare att komma fram till ett bra resultat från början. Nedan följer olika testmetoder som jag kommit fram till att jag tycker är bra och passar in på arbetsuppgiften.
14 8 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER Beteendetestning (Black box testing) Den som testar känner endast till vad mjukvaran förväntas göra och inte hur programmet fungerar. Det viktiga här är att programmet ger rätt utdata i förhållande till vad som kommer in. Denna metod är bra eftersom bl.a. saknade funktioner, fel i gränssnittet eller beteendefel uppdagas Glasboxstest (White box testing) Testaren har tillgång till programkoden. Denna testmetod är bra för den garanterar att alla oberoende vägar/möjligheter har exekverats minst en gång. En risk med denna metod är att testerna kan anpassas för att matcha kodens funktion Enhetstest (Unit testing) Utförs generellt av programmeraren. Denna metod brukar ske fortlöpande i takt med att arbetet fortlöper Lasttest (Load testing) En metod för att testa hur systemet beter sig under större/tyngre laster Acceptanstest (Acceptance testing) Används normalt för att verifiera om systemet möter kundens krav. Detta sköts normalt av kunden. 3.4 Användbarhet Användbarheten är av stort fokus. Projektet ska kunna användas och vidareutvecklas efter min tid på Skatteverket. Klasser och projekt ska vara tydligt uppdelade med lämpliga namn som beskriver dess innebörd. Att uppnå en hög abstraktionsnivå är bra, då programmeraren kan dölja mer komplicerade lösningar i konkreta modeller eller användargränssnitt. 3.5 Prestanda Prestanda var något som var väldigt viktigt för examensarbetet, därför gick mycket av tiden åt till att forska i hur stor mängd data som kan läsas in i taget för att hålla en så bra prestanda som möjligt, då antalet kontrolluppgifter kunde variera från hundratals till hundratusentals. Prestanda är något som är viktigt i dagens läge. Därför var det viktigt att hitta de teknikerna och Java- biblioteken som fungerade bäst och gav bäst resultat vid inläsning av filformaten till databasen. Därför jämförde jag bland annat några olika tekniker för att läsa XML- dokument, men även olika sätt att läsa in flatfiler, se tidigare kapitel samt Utvecklingsmiljö Utvecklingsmiljön är väl kanske något av de viktigaste områden för att ett programmeringsarbete ska kunna utföras. För att arbetet skulle kunna utföras så behövdes vissa program och verktyg vara installerat i utvecklingsmiljön IDE- program Då arbetet skulle skrivas i Java och var ganska omfattande så rekommenderar jag att använda ett väl utvecklat IDE- program som är anpassat efter detta.
15 Ett IDE- program (integrerad utvecklingsmiljö) innehåller textredigerare, kompilator och debugger. Bra exempel på dessa är Eclipse och NetBeans som båda har stöd för programspråket Java Databas Då kontrolluppgifterna ska skrivas till en databas så finns det lite olika valmöjligheter som t.ex. Oracles gratisalternativ Oracle Database Express eller MySQL som är helt gratis. Båda alternativen är databaser som använder frågespråket SQL, så det är mest en smaksak eller vad man är van att använda som spelar in.
16 4 Metod 4.1 Utvecklingsmetod Under arbetet har jag valt att utveckla agilt med tio grovplanerade sprints/milstolpar som definierades i tidsplaneringen vilket reflekterade de veckor som examensarbetet var inplanerat på Milstolpar Vecka 1 Planeringsrapport skrivs. Installation av test- och utvecklingsmiljö påbörjas. Vecka 2 Studie av filformat som ska behandlas. Ett testskript för att generera (unika) poster för de olika filformaten som ska testas tas fram. Vecka 3 Forska i och testa vilka tekniker som lämpar sig för arbetet. Detta ska göras innan själva arbetet. Vecka 4-6(7) Implementation av de olika utvärderade teknikerna görs. Vecka (7- )8 Prestandamätning görs. Arbetet färdigställs och en rapport innehållande en beskrivning av systemet lämnas in till arbetsplatsen där olika fördelar påvisas för de tekniker som använts. En bilaga med olika tester under olika laster lämnas även in till Skatteverket. Vecka 9 Reflektionsdokument och rapport påbörjas. Vecka 10 Reflektionsdokument och rapport Agil utveckling Syftet med agil utveckling är att kunden hela tiden är nöjd med vad som utvecklas. Detta sker genom ett mycket nära samarbete och öppenhet under hela utvecklingstiden med täta regelbundna möten mellan utvecklare och kund. Utvecklingen sker iterativt vilket medför att många små delleveranser sker. Detta ger hela tiden en chans till utvärdering av systemet och kan därför lättare ändras för att möta nya krav och önskemål Mitt arbete Då jag arbetade ganska tätt intill mina två handledare Björn Eklund och Gert Lundin så hade jag en naturligt daglig kommunikation med dem om mitt arbete. Därför talade jag ofta om hur jag låg till och vad jag höll på med för stunden och där av fick jag en naturlig feedback (daily communication). Då jag hela tiden utvecklade fortlöpande så höll jag arbetet enkelt utan alltför komplicerade lösningar. Jag lämnade även många små delleveranser utav systemet. Detta för att ge rum för eventuellt plötsliga förändringar eller önskemål som skulle kunna uppstå. 10 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
17 Mot arbetets slut så förfinade jag och snyggade till koden samt dokumenterade systemet så det blev mer lätthanterligt att använda och vidareutveckla i framtiden. 4.2 Testning Testning av systemet har hela tiden skett fortlöpande i takt med alla små delleveranser som jag levererade. Jag testade hela tiden att systemet fungerade som förväntat innan jag gick vidare till nästa del. Inga testfall skrevs för systemet då bland annat JAXB som genererar XML- dokument utifrån ett XML- schema som jag tillhandahöll från Skatteverket validerar att XML- dokumentet är korrekt utifrån schemat innan filen skapas. Sedan var det även svårt att validera tidsåtgången för bearbetning av KU- filerna som var en av de intressantaste aspekterna när det gällde prestandan för systemet, då det var det som skulle utvärderas. Det jag gjorde här var att notera tiden och föra in det i ett Exceldokument för de olika filformaten. Jag noterade även att rätt antal kontrolluppgifter hade skrivits till databasen för varje filformat efter varje mätning. De egentliga testerna som utfördes var generellt de som är beskrivna i kapitel 3.3 (bortsett från enhetstestet). Främst så kontrollerade jag hela tiden att systemet klarade av tyngre laster (lasttest, se kapitel 3.3.4), då det förekom vissa problem när många kontrolluppgifter skulle genereras eller parsas när antingen minnet tog slut eller att en "anslutnings- time- out" förekom till WLSen. Orsaken till time- outen var när många antal KU bearbetades och WLSen inte gav något svar inom en viss tidsram vilket var satt till 30 sekunder från början. Det jag gjorde för att lösa problemet var att sätta connection- time- out till 1800 sekunder (en halvtimme) så förekom inte problemet något mer. 4.3 Utvecklingsmiljö Nedan går jag igenom de program och verktyg som jag har använt mig utav i mitt arbete Rational Rose Rational Rose är ett objektorienterat UML designverktyg som är avsett för visuell modellering. Rose används för att skapa ramen för ett program genom att definiera klasser med attribut och metoder. Rose ger en bra överblick och grund på de klasser som ingår i projektet. Rose användes för att generera tomma Java- klasser som sedan implementerades med själva koden för parsningen för att tillslut publiceras på WLSen Apache Ant Ant är ett kommandoradsverktyg som används som byggstöd för mjukvaruutveckling. Ant använder s.k. byggfiler vilket är XML dokument som beskriver byggprocessen och beroenden. Byggstödet är speciellt framtaget för att användas till Javaprojekt. Ant är väldigt bekvämt att använda i större projekt som innefattar många källkodsfiler.
18 4.3.3 Eclipse IDE- mjukvaruutvecklings- verktyg Eclipse är ett IDE mjukvaruutvecklings- verktyg med stöd för många olika programmeringsspråk och plugins. Skatteverket använder Eclipse som utvecklingsmiljö i sina projekt och jag var mest bekant med programmet sedan tidigare så därför föll valet på att använda Eclipse. Figur 2: Eclipse är ett populärt IDE mjukvaruutvecklingsverktyg Databas Då uppgiften var att utvärdera inläsningen av filformaten till en databas så behövdes en bra och stabil databas som klarar av ett högt tryck och att många frågor (queries) ställs till den samtidigt. Då Skatteverket använder programvara från Oracle så föll även valet där på att använda Oracles databas "Oracle Database Express" som har stöd för SQL och är gratis. Gränssnittet för att hantera databasen var inte något som jag satte mig in i så mycket då JPA (se 3.1.4) skötte det mesta. Men vid de tillfällen då jag behövde kontrollera något så använde jag kommandoraden för eventuella databasförfrågningar Oracle WLS En WLS, eller Web Logic Server används för att agera bl.a. Java EE applikationsserver som i detta fall. På WLSen så publicerade jag min huvudapplikation som parsade filformaten. Applikationen kommunicerade med en Oracle databas där informationen från filformaten hamnade. För att ansluta till applikationen på WLSen så byggs en klient som kan kommunicera med den. 4.4 Tekniker JAXB När jag upptäckte JAXB (se, 3.1.5) så förenklade det en stor del av mitt arbete då jag besparades att skriva en egen funktion som gjorde precis samma sak. En fördel med JAXB är att den validerar XML- objekten mot XML- schemat innan den skapar XML- dokumentet. Nackdelen är att hela XML strukturen hålls i minnet tills dess att den skrivs till fil, vilket kan medföra att arbetsminnet som programmet är tilldelat kan ta slut ifall strukturen blir stor. Detta kan dock lösas enkelt på så vis att programmet tilldelas 12 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
19 mer minne, antingen via Eclipse eller genom kommandoraden när JAR- filen exekveras SAX- XML parser Med förmån till SAX- parserns låga minnesanvändning så valde jag att implementera SAX- parsern för systemet eftersom t.ex. DOM- parsern inte hade varit optimal då flera hundratusentals kontrolluppgifter skulle behandlas i värsta fall. En lösning med StAX parser gjordes också. Det var dock inget som fanns med i den slutgiltiga produkten då jag såg att SAX- parsen var snabbare än StAX- parsern vid en enklare jämförelse mellan dessa Flatfils- parser I och med att det inte fanns en inbyggd parser för flatfiler så valde jag att skriva en egen som läser in Skatteverkets flatfiler bitvis (i chunks). Dessa bitar delas upp med hjälp av separator- tecknet "#" och med nyckelord som beskriver vilket fält värdet tillhör JPA Jag valde att använda JPA för att hantera databasanslutningen till Oracle- databasen. Det var väldig smidigt på så sätt att jag inte behövde skriva några direkta databasförfrågningar utan JPA skötte allt åt mig. Ett utdrag på entiteten "Kontrolluppgift" som användes i arbetet är enligt följande: public class Kontrolluppgift implements private long = true) private String personnr; private String namn; private String adress; private String postort; private String postnr; private String ug;... public Kontrolluppgift() { super(); } public long getid() { return id; } public void setid(long id) { this.id = id; } public String getpersonnr() {
20 } return personnr; } public void setpersonnr(string personnr) { this.personnr = personnr; } public String getnamn() { return namn; } public void setnamn(string namn) { this.namn = namn; } public String getadress() { return adress; } public void setadress(string adress) { this.adress = adress; } public String getpostort() { return postort; } public void setpostort(string postort) { this.postort = postort; } public String getpostnr() { return postnr; } public void setpostnr(string postnr) { this.postnr = postnr; } public String getug() { return ug; } public void setug(string ug) { this.ug = ug; } UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
21 5 Resultat 5.1 Arbetsförlopp Nedan beskriver jag hur upplägget av arbetsförloppet såg ut för examensarbetet Generering av testdata Första uppgiften för examensarbetet var att ta fram testdata i XML format samt flatfilsformat. Skatteverket tillhandahöll mallar för hur strukturen skulle se ut för båda dessa format. Testdatan som användes i utvärderingen genererades i de två filformaten och utgick från samma basklass för att vara så likvärdiga som möjligt så en rättvis prestandajämförelse kunde göras. Basklassen genererade unika personnummer och namn som hade en variabel som ökades med ett för varje ny kontrolluppgift XML- dokument För att generera XML dokumenten valde jag att använda mig av JAXB. Då jag hade fått ett färdigt XML- schema från Skatteverket så var denna process ganska snabbt avklarad. Nackdelen med JAXB var att hela strukturen hölls i minnet innan den skrevs ned till fil, vilket kunde resultera i att minnet tog slut om XML strukturen blev stor vid många KU. Detta löstes genom att tilldela Eclipse mer arbetsminne. Ett exempel på en kontrolluppgift i XML- format finns att se i kapitel Flatfil Flatfilen genererades rakt upp och ned enligt formatet som var förutbestämt från Skatteverket. Ett exempel på en kontrolluppgift i flatfilsformat finns att se i kapitel Parsning av filformat Efter att ha studerat olika tekniker för att parsa XML- och flatfiler så kom jag fram till följande Parsning av XML fil Som tidigare nämnts var jag tvungen att välja bort DOM- parsern på grund utav dess dåliga prestanda när stora XML- dokument ska behandlas (se ). Jag valde därför att främst använda mig utav SAX- parsern, vilket var mycket mer minneseffektiv då den sekventiellt läser in XML- dokument. StAX parsern använde jag även till en annan lösning för XML formatet bara för att jämföra de olika teknikerna och för att se om det var någon större skillnad. Resultatet var att StAX parsern var något långsammare än SAX parsern Parsning av flatfil Det finns väl ett obenämnt antal lösningar för att parsa en flatfil. Mitt val föll på att läsa in ett X antal bitar/tecken i taget, där jag sedan tog ut de olika delarna utav inläsningen för varje KU i filen. Skulle en inläsning vara ofullständig, d.v.s. att den bröts mitt i en "uppgift" så sparade programmet den ofullständiga delen till nästa inläsning och lade sedan till den i början.
22 5.1.3 Prestandajämförelse Prestandajämförelsen som jag har utfört gick till så att jag skapade 9 st. KU- filer för båda filformaten med olika antal KU i varje fil om 100, 500, 1 000, , , , , och st. Jag gjorde ett flertal prestandajämförelser för varje antal KU så jag såg att resultaten blev någorlunda lika varandra Sammanställning av prestandajämförelse Skatteverket efterfrågade en testbilaga med bearbetningstider och diagram och för det så valde jag att använda Microsofts verktyg Excel. Resultatet av prestandajämförelsen blev enligt följande graf. X- axeln motsvarar antal KU och Y- axeln tiden i millisekunder. Figur 3: Resultat för bearbetningstid av XML & Flatfil om KU 5.2 Användargränssnitt I planeringen av examensarbetet så ingick inget grafiskt användargränssnitt (GUI). Men då tid fanns över efter att prestandatesterna hade slutförts så bestämdes det att ett GUI skulle tas fram. Resultatet blev att jag använde mig av Java swing. Målet var att skapa ett enkelt gränssnitt där användaren kan välja antalet KU som ska parsas utifrån en fördefinierad lista med testfiler. Applikationen skriver ut vilken parser som är snabbast och med hur många procent mer den är snabbare jämfört med den andra. 16 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
23 Gränssnittet visar även andra intressanta parametrar så som hur många KU som parsats när som mest arbetsminne användes av datorn samt hur många KU som parsades totalt från varje fil, vilket gör det enklare att se ifall någon parser eller KU- fil skulle misslyckas eller vara trasig förutsatt att användaren vet hur många KU som filen borde ha innehållit. Figur 4: Användargränssnittet uppbyggt av Java- swing 5.3 Databasstruktur Eftersom examensarbetet endast innefattade en entitet "Kontrolluppgift" för databasen så blev det inte ett så stort ER- diagram. Som tidigare nämnts så använde jag JPA för att sätta upp databasentiteterna i Java vilket underlättade för mig då jag inte behövde bry mig så mycket om databasen mer än att anslutningen fungerade mellan Java- projektet och databasen, samt att rätt antal kontrolluppgifter skrevs till databasen och även att databasen tömdes efter varje fil som parsades. Ett utdrag av databasentiteten kontrolluppgift går att se i kapitel Programkod För exjobbet så skapade jag totalt fyra projekt, varav det första används för att generera testfilerna och de tre andra bygger på varandra för att parsa kontrolluppgiftsfilerna. Jag kommer därför ta upp dem i följande ordning som jag utvecklade dem Statistik Projekt ett; Detta är projektet som genererar test- KU- filerna. Projektet är ensamstående och innefattar totalt 4 filer som jag skrivit själv, 18 stycken som genererades av JAXB samt ytterligare 3 filer som är XML- schemat som jag fick från Skatteverket. Totalt antal rader som jag skrev för detta projekt var 821. Projekt två; Projektet är själva basen för parsningen och är en del utav applikationen som ligger på WLSen. Projektet parsar båda filformaten och skriver kontrolluppgifterna till SQL- databasen. Projektet består av 8 filer som jag skrivit själv, samt 1 fil som lånades från en tidigare kurs TDP024 där jag även använde JPA. Det totala antalet rader som jag skrev för projektet var 1847.
24 Projekt tre; En del av projektet genererades av Rational Rose, vilket är den delen som ska implementeras för WLSen. Men då jag gjorde projektet som parsar filformaten innan detta projekt så fick det bli så att det importeras som en JAR- fil i projektet. Totalt så genererade jag en klass i Rose som jag implementerade och blev på totalt 55 rader. Projektet innehöll ett X antal andra filer som jag varken hade skapat eller hade möjlighet att räkna. Dessa filer fick jag av Skatteverket och var beroende av byggstödet Ant för att få upp applikationen på WLSen. Projekt fyra; Projektet innehåller bland annat det grafiska användargränssnittet som jag skapade för att förenkla prestandamätningen. Projektet innehåller även kommunikationen till applikationen på WLSen och implementerar vissa Skatteverksspecifika funktioner i deras säkerhetsbibliotek. Projektet består av 3 filer som jag skrivit och innehåller totalt 265 rader kod. 5.5 Prestandamätning Som tidigare nämnt så valde jag att implementera SAX parsern för att parsa XML- dokument av förut förklarliga skäl. Jag försökte även att så gott som möjligt optimera koden jag skrev för att parsa flatfiler. Resultatet av prestandajämförelsen kan ses i grafen i figur 3 som visar bearbetningstiden för båda filformaten om 100 till KU. Prestandamätningarna som jag utfört för filformaten var vid vissa tillfällen lite oviss då bearbetningstiderna varierade för samma antal KU om dessa parsades ett par gånger efter varandra. Jag kan dock ha kommit på en potentiell lösning vilket är att ändra "last modified" eller senast ändrad- stämpeln som finns för alla filer i operativsystemet till den aktuella tiden när skriptet körs. Enligt min mening borde det vara en av parametrarna som operativsystemet kontrollerar innan den lämnar ut filer från sin cache. Resultatet av bearbetningstiden blev aningen mer jämna efter att jag implementerade lösningen. Jag kom även fram till att min flatfilsparser trots skillnaden i filstorlek mellan kontrolluppgiftsfilerna för flat och XML fil är 29% snabbare i genomsnitt än XML parsern. 18 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
25 6 Slutsats och diskussion 6.1 Egen reflektion och diskussion Arbetet flöt på bra från början till slut. Det enda som jag fastnade på och som jag fick support av min handledare var när projektet skullen integreras med Skatteverkets säkerhetssystem och publiceras på den lokala WLSen. Det var intressant att arbeta med stora mängder data då jag fick erfara hur det kan vara att inte ha all information tillgänglig hela tiden, med risk för att arbetsminnet skulle ta slut. Jag var därför tvungen att ta vara på det som var viktigt och göra något med det för att hålla minnesanvändningen så låg som möjligt. Att arbetsminnet tog slut var ett problem som återkom ett par gånger. Resultatet av prestandajämförelsen med snittet på 29% (se tabell 1) skillnad i bearbetningstiden är rätt oväntat då den procentuella skillnaden i filstorlek är konstant runt 80% (se tabell 2) mellan samma antal KU för filformaten. Jag tycker att flatfilsparsern presterade dåligt och att den procentuella skillnaden mellan filstorleken och bearbetningstiden borde ha varit mer lika. Detta kan bero på att det ännu finns vissa delar kvar att optimera för flatfilsparsern, t.ex. antal tecken som läses in i taget vid varje bearbetning av data eller att en annan algoritm kan vara mer passande, t.ex. reguljära uttryck istället för att leta efter skiljetecken som min parser gjorde. ANTAL KU XML FIL (ms) FLATFIL (ms) Procentuell skillnad , , , , , , , , ,09 MEDEL 29,40 Tabell 1: Procentuell skillnad för bearbetningstid. Enligt formeln: (minsttid/ mesttid) * 100. Där minsttid är filen som tog kortast tid att parsa (ms), mesttid är filen som tog längst tid att parsa (ms) och 100 som det hela (100%) ANTAL KU XML FIL (kb) FLATFIL (kb) Procentuell skillnad , , , , , , , , ,58 MEDEL: 79,64 Tabell 2: Procentuell skillnad för filstorlek. Enligt formeln: (minststorlek/störststorlek) * 100. Där minststorlek är filen som har minst storlek (kb), störststorlek är filen som har störst storlek (kb) och 100 som det hela (100%)
26 En del laborerande med antalet tecken som lästes in för varje parser gjordes. Jag började med att sätta inläsningen till 1024 tecken och ändrade sedan till Jag såg en viss förbättring i bearbetningstiden, i alla fall för flatfils- parsern. Dock behöver fler tester göras för att hitta rätt storlek för inläsningen. Jag testade även att placera parsningen av filerna i trådar för att se hur det påverkade systemet då det är ungefär så det kommer att se ut senare i verkligheten i det riktiga systemet. Resultatet av det blev ovisst eftersom jag inte hittade ett sett att styra hur trådarna fick exekvera vilket medförde att trådarna kunde bli klara i olika ordningar. Därför så använde jag inte denna lösning i det färdiga resultatet. Programspråket Java passade uppgiften alldeles utmärkt då det fanns många stöd som förenklade mitt arbete, bl.a. JAXB som genererade alla nödvändiga klasser utefter ett XML- schema som behövdes för att skapa ett korrekt XML- dokument. JPA var en annan fördel med Java som förenklade databashanteringen mellan Java- projektet och Oracle- databasen. Inga testfall skrevs för arbetet utan systemet testades hela tiden manuellt med provkörningar av generering av KU- filer och parsning av dessa. JAXB validerade också dels att XML- dokumenten utifrån XML- schemat att de var korrekta innan de genererades till filer. Det skulle ha varit bättre om jag hade skrivit några testfall för systemet för att kunna påvisa att systemet fungerar korrekt utifrån de förväntningar det hade, t.ex. att rätt antal KU parsats från filerna Fortsatt arbete Det som finns att fortsätta arbeta vidare på är att utöka databasstrukturen, då jag endast hade en entitet för alla kontrolluppgifter där jag endast tog till vara på informationen för kontrolluppgifter för personer. Ett exempel skulle vara att bryta ut mer information från KU- filerna och dela upp det i flera entiteter, t.ex. en entitet "Arbetsgivare" och sen ha kvar "Kontrolluppgift" där Kontrolluppgift är länkat till Arbetsgivare. Detta för att uppnå en högre normalnivå. En annan sak som kan arbetas vidare på är de varierande bearbetningstiderna som förekom ibland. Under arbetet så gjorde jag ett antagande om att det kunde vara operativsystemet som sparade filerna i en cache för att optimera accessen av filerna. Dock blev resultatet mer jämnt efter att jag implementerat en lösning som uppdaterar senast ändrad- flaggan för filerna innan de börjar parsas. En annan anledning kan vara att något annat program i bakgrunden utförde något vilket påverkade testen. 6.2 Slutsats Här sammanställer jag min slutsats utifrån de frågeställningar som specificerades i kapitel 1.4. "Finns det någon teknik att generera XML dokument i Java eller hur gör man det enklast?" Ja, jag hittade ett verktyg/teknik JAXB som kan användas för att generera Java- klasser utifrån ett XML- schema. Dessa klasser fyller man upp med information och genererar sedan dessa till en fil. JAXB kan även tala om ifall XML- objekten inte är 20 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER
27 fullständiga när XML- dokumentet ska genereras och på så vis förhindra fel, detta valideras mot XML- schemat. "Vilka olika parsningstekniker/metoder finns det för att traversera de olika filformaten och vilken metod lämpar sig bäst för arbetet?" I min undersökning hittade jag tre möjliga tekniker för att parsa XML- filer som jag intresserade mig för: DOM, SAX och StAX. Mitt val föll på att implementera SAX- parsern till förmån av dess prestanda och då de kunde hantera större filer utan problem eftersom det var den parsern som var mest minneseffektiv. För flatfiler hittade jag dock ingen färdig teknik som jag kunde använda mig av. Utan jag implementerade en helt egen teknik som jag ansåg vara den bästa utefter de behov som fanns. "Finns det något bra sätt att hantera databasanslutningen på?" Då jag har arbetat med JPA i en tidigare kurs och tyckte att det fungerade bra så valde jag även att använda det i examensarbetet, vilket förenklade databashanteringen avsevärt. "Hur stor är storleksskillnaden mellan filformaten och hur mycket påverkar det bearbetningstiden?" Båda filformaten använde samma basklass och innehöll samma data så det var lika på det viset. Storleksskillnaden på det blev konstant ungefär 80% för samma antal KU. Bearbetningstiden höll sig även den någorlunda konstant ungefär runt 29% i skillnad för samma antal KU. Jag tycker att skillnaden i bearbetningstiden borde ha varit större eftersom skillnaden i filstorlek mellan filformaten är så pass stor. Bearbetningstiden är inte riktigt linjär men ändå inte långt ifrån. Detta är på grund av några undantag som jag har gjort ett antagande av, att det är operativsystemet som cachar filerna för snabbare uppläsning eller att ett program i bakgrunden utförde något som påverkade testen.
28 22 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER 7 Referenser "Types of software Testing" Hämtad från: < of- software- testing/> Margaret Rouse: "What is Rational Rose?" ( ) Hämtad från: < midmarket.techtarget.com/definition/rational- Rose> "Apache Ant" Hämtad från: < Allu: "Difference between SAX and DOM parsers?" ( ) Hämtad från: < between- sax- and- dom- parsers/> Margaret Rouse "Rational Rose" ( ) Hämtad från: < midmarket.techtarget.com/definition/rational- Rose> Wikipedia "Database normalization" ( ) Hämtad från: < "Java Persistence API" ( ) Hämtad från: < "Simple API for XML" ( ) Hämtad från: < "Document Object Model" ( ) Hämtad från: < "StAX" ( ) Hämtad från: < "Oracle WebLogic Server" ( ) Hämtad från < "Apache Ant" ( ) Hämtad från <
29 8 Bilagor 8.1 Kontrolluppgifter XML- format 1 <?xml version="1.0" encoding="utf- 8" standalone="yes"?> 2 <ns3:manadsuppgift 3 xmlns="se/skatteverket/infoforbeskattning/komponent/0.1" 4 xmlns:ns2="se/skatteverket/gemensam" 5 xmlns:ns3="se/skatteverket/kontrolluppgifter/instans/0.1 6 "> 7 <Transport> 8 <Skapad> T13:11: :00</Skapad> 9 <Behandlingstyp>Produktion</Behandlingstyp> 10 <Mottagare> 11 <Namn>Skatteverket</Namn> 12 <Plats>Solna</Plats> 13 </Mottagare> 14 <Sandare> 15 <Orgnr> </Orgnr> 16 <Namn>Kringlans bageri</namn> 17 <Avdelning></Avdelning> 18 <Kontaktperson>Mästerbagaren</Kontaktperson> 19 <Adress>Skatteverket 1</Adress> 20 <Postnr>62123</Postnr> 21 <Postort>Visby</Postort> 22 <Telefonnummer> </Telefonnummer> 23 <Faxnr> </Faxnr> 24 <Epost>masterbagare@kringlan.se</Epost> 25 </Sandare> 26 </Transport> 27 <Kontrolluppgift> 28 <Inkomsttagare> 29 <ns2:adress> 30 <ns2:gatuadress>skatteverket 31 1</ns2:Gatuadress> 32 <ns2:postnr>62123</ns2:postnr> 33 <ns2:postort>visby</ns2:postort> 34 </ns2:adress> 35 <Fornamn>John1</Fornamn> 36 <Efternamn>Doe</Efternamn> 37 <Personnr> </Personnr> 38 <Orgnr></Orgnr> 39 </Inkomsttagare> 40 <AvdragenSkatt01>2323.0</AvdragenSkatt01> 41 <Deltagare61>true</Deltagare61> 42 <Arbetsstallenr60>892</Arbetsstallenr60> 43 <Kontantlon>
30 UTVÄRDERING AV INLÄSNING AV XML- KONTRA FLATFILER <Bruttolon11> </Bruttolon11> <TillGrundEgenavgifter25>1500.0</TillGrundEgenavgifter25 > <SpecifikationTillGrundEgenavgift67>Hantvärkare tapetserade vardagsrummet</specifikationtillgrundegenavgift67> <InteGrundSocialaAvgifter31>700.0</InteGrundSocialaAvgif ter31> <SpecifikationTillInteGrundSocialaAvg>FRI TIDNING</SpecifikationTillInteGrundSocialaAvg> <SjuklonXX>0.0</SjuklonXX> <ErsattningSjuklForaldrarLedigXX>0.0</ErsattningSjuklFor aldrarledigxx> </Kontantlon> <Formaner> <Skattepliktiga12>1000.0</Skattepliktiga12> <BostadSmahus41>false</BostadSmahus41> <Kost42>false</Kost42> <BostadEjSmahus43>false</BostadEjSmahus43> <Ranta44>false</Ranta44> <Parkering45>false</Parkering45> <AnnanForman47>true</AnnanForman47> <FormanHarJusterats48>false</FormanHarJusterats48> <FormanSomPension49>false</FormanSomPension49> <AnnanFormanSpecifikation65>Tandläkare</AnnanFormanSpeci fikation65> <BilformanUtomDrivmedel13>0.0</BilformanUtomDrivmedel13> <Drivmedel18>1250.0</Drivmedel18> <KodForFormansbil14>TY2</KodForFormansbil14> <AntalKm16>2150</AntalKm16> <BetaltForBilforman17>550.0</BetaltForBilforman17> </Formaner> <Kostnadsersattningar> <SchablonBilersattning50>true</SchablonBilersattning50> <SchablonTraktamenteRiket51>false</SchablonTraktamenteRi ket51> <SchablonTraktamenteUtomRiket52>false</SchablonTraktamen
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...
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
Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar
Skapa testfall Testing Köra testen Hitta fel Inspections and reviews Verifiera resultatet Formal methods Static analysis Completeness Verifiering Kvalitet Maintainability Validering Traceability Fault
Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1
Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4
Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap
Uppmärkningsspråk TDP007 Konstruktion av datorspråk Föreläsning 3 Peter Dalenius Institutionen för datavetenskap 2017-01-26 2 Vad handlar det andra seminariet om? Strukturerad text Uppgifter Hämta information
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
Hantera informationspaket i system för bevarande
Kompetensutveckling har erbjudits deltagare inom projektet Elektroniskt bevarande i form av en kurs i XML. Kursen har genomförts av Riksarkivet och haft en praktisk inriktning. Ett 10-tal personer deltog
TUTORIAL: KLASSER & OBJEKT
TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan
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
F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander
F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se långa ord AKTIVITETER I PROGRAMVARUUTVECKLING Iterativ utveckling Kravspecifikation Design Implementation Testning
Guide för Innehållsleverantörer
Library of Labs Content Provider s Guide Guide för Innehållsleverantörer Inom LiLa ramverket är innehållsleverantörer ansvariga för att skapa experiment som "LiLa Learning Objects", att ladda upp dessa
Inledande programmering med C# (1DV402) Introduktion till C#
Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i
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
Filhanterare med AngularJS
Filhanterare med AngularJS Författare: Filip Johansson Peter Emilsson Oskar Georgsson Christian Nilsson Datum: 2014-03-26 1 Sammanfattning Filhanterare med AngularJS är en filhanterare skapad för Sigma
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.
Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap
Uppmärkningsspråk TDP007 Konstruktion av datorspråk Föreläsning 3 Peter Dalenius Institutionen för datavetenskap 2015-01-29 Vad handlar det andra seminaret om? Strukturerad text Uppgifter Hämta information
Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.
Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning
Programmering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
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,
Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt
Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt Kravhantering / Testprocess - Agenda AGENDA Grundläggande kravhanteringsprocess. Insamling, dokumentation, prioritering, Test och förvaltning
Henrik Häggbom Examensarbete Nackademin Våren 2015
AV Henrik Häggbom Examensarbete Nackademin Våren 2015 1 INLEDNING Som examensarbete på min utbildning på Nackademin Programutveckling.NET kommer jag skapa ett webbaserat system för statistik, tabeller
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:
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
725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack
725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den
TDP003 Projekt: Egna datormiljön
. TDP003 Projekt: Egna datormiljön Egen utvecklingsmiljö Kursmaterial till kursen TDP003 Höstterminen 2017 Version 2.2 2017-06-30 2017-06-30 Egen utvecklingsmiljö INNEHÅLL Innehåll 1 Revisionshistorik
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
Kort om World Wide Web (webben)
KAPITEL 1 Grunder I det här kapitlet ska jag gå igenom allmänt om vad Internet är och vad som krävs för att skapa en hemsida. Plus lite annat smått och gott som är bra att känna till innan vi kör igång.
Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.
Mina listor En Android-applikation Rickard Karlsson 2013-06-09 Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.se Innehållsförteckning 2. Innehållsförteckning 3. Abstrakt 4. Inledning/bakgrund
DAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)
emopluppen Användning av "Ant" Version: 1.4 ( 2002/04/26 07:27:52 UTC) Niklas Backlund Sammanfattning Det här dokumentet handlar om programmet Ant, som är en byggmiljö för programutvecklingsprojekt. Dess
SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS
SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS Individuellt Mjukvaruutvecklingsprojekt (Utvecklare av digitala tjänster) Den 1 juni 2011 ABSTRAKT Rapporten tar upp positiva och negativa erfarenheter som jag erhållit
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
Delrapport DP3. FGS för paketstruktur för e-arkiv Bilaga 1 METS
Delrapport DP3 FGS för paketstruktur för e-arkiv Bilaga 1 METS Karin Bredenberg & Mats Berggren IT/SoU 010-476 71 23 2013-01-14 2.0 1(9) INNEHÅLLSFÖRTECKNING 1. BILAGA 1: METS...3 1.1 INTRODUKTION...3
Priskamp. En prisjämförelsesite Björn Larsson 130609
Priskamp En prisjämförelsesite Björn Larsson 130609 Abstrakt Detta är en post-mortem slutrapport om mitt projekt "Priskamp" inom ramen för kursen Individuellt Mjukvaruutvecklingsprojekt VT 2013. Projektets
Implementering av Model- Based Testing i LoadRunner
Implementering av Model- Based Testing i LoadRunner Kristian Karl Copyright Prolore 2006. All Rights Reserved. Vem står framför Er? Kristian Karl Lasttester i 7 år, testautomatiserat i 12 år Arbetar på
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna
JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund gussk258@student.liu.se. Marcus Widblom marwi026@student.liu.se. Senast ändrad: 13 / 05 / 08
JavaRats Kravspecifikation Version 1.1 Gustav Skoglund gussk258@student.liu.se Marcus Widblom marwi026@student.liu.se Senast ändrad: 13 / 05 / 08 Sammanfattning Kravspecifikationen för JavaRats har skrivit
Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering
och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering
Mälardalens högskola
Teknisk rapportskrivning - en kortfattad handledning (Version 1.2) Mälardalens högskola Institutionen för datateknik (IDt) Thomas Larsson 10 september 1998 Västerås Sammanfattning En mycket viktig del
TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA
Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA Evelina Andersson 18 maj 2011 1 Introduktion Att träna mycket för att bli duktig på ett språk
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar
Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.
Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär
Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse
Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i
Föreläsning 1, vecka 6: Abstraktion genom objektorientering
TDA 548: Grundläggande Programvaruutveckling Föreläsning 1, vecka 6: Abstraktion genom objektorientering Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Hur skulle ni implementera detta? (3D demo) Vi återkommer
Java: Utvecklingsverktyg, datatyper, kontrollstrukturer
Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se
SLUTRAPPORT RUNE TENNESMED WEBBSHOP
SLUTRAPPORT RUNE TENNESMED WEBBSHOP -05-30 Abstrakt Under 10 veckor har jag och Oskar Norling arbetat med att ta fram en webbshop-applikation till företaget Rune Tennesmed i Kalmar. I denna rapport tänker
Inledande programmering med C# (1DV402) Introduktion till programmering
Introduktion till programmering Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt
Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document
Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se
Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10
Projekt Rapport RaidPlanner Jeanette Karlsson UD10 Abstrakt: Denna rapport handlar om mitt projekt i kursen Individuellt Mjukvaruutvecklings projekt. Rapporten kommer att ta upp hur jag gått tillväga,
Big Data i spelbranchen
Big Data i spelbranchen ett projekt med Hadoop och open source i fokus Kunden Företaget arbetar med onlinespel och utvecklar många olika spel för över 100 spelbolag, exempelvis Casinon som Casinostugan
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
Installationsbeskrivning för CAB Service Platform med CABInstall
Installationsbeskrivning för CAB Service Platform med CABInstall INLEDNING... 2 INSTALLATION... 3 AVANCERAD INSTALLATION... 10 YTTERLIGARE INFORMATION... 11 Proxy... 11 Sida 1 av 12 Inledning Denna beskrivning
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Webbtjänster med API er
Webbtjänster med API er Mål med lektionen! Veta kursmålen. Lite grunder om WCF Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se
Calligra. En allmän inledning. Raphael Langerhorst Jost Schenck Översättare: Stefan Asserhäll
En allmän inledning Raphael Langerhorst Jost Schenck Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 1.1 Komponenter i Calligra.................................. 5 1.2 Översikt över funktioner i
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
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
Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur
Objekt-orienterad utveckling Saker man vill uppnå: Objektorienterad analys och design Sven-Olof Nyström Uppsala Universitet 16 mars 2005 en systematisk metod för att gå från problembeskrivning till färdigt
Övningen vill visa på vikten av valet av datastruktur, trots att de ofta erbjuder samma funktionalitet genom sina gränssnitt.
1 Samlingar 1.1 Frekvenstabell En Integer är icke-muterbar (precis som String, Float, Boolean et.c.). Ickemuterbarhet har många fördelar, men en nackdel är att ett helt nytt objekt måste skapas när ett
PROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
Introduktion till MySQL
Introduktion till MySQL Vad är MySQL? MySQL är ett programmerings- och frågespråk för databaser. Med programmeringsspråk menas att du kan skapa och administrera databaser med hjälp av MySQL, och med frågespråk
Gränssnitt för FakeGranska. Lars Mattsson
Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken
Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap
Uppmärkningsspråk TDP007 Konstruktion av datorspråk Föreläsning 4 Peter Dalenius Institutionen för datavetenskap 2015-02-03 Från förra gången XML-dokument specificeras med t.ex. en DTD Två olika sätt att
Författare Version Datum. Visi System AB 2.0 2009 03 30
1. Syfte Syftet med detta dokument är att beskriva hur man installerar Visi på din dator. Dokumentet är uppdelat i fyra delar: Installation Grundinställningar Kom igång med Visi Felsökning 1.1. Systemkrav
Tentamen ID1004 Objektorienterad programmering October 29, 2013
Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.
Federerad Roll Administration ÄR GROUPER EN MEDSPELARE? OVE OLANDER MITTUNIVERSITETET
Federerad Roll Administration ÄR GROUPER EN MEDSPELARE? OVE OLANDER MITTUNIVERSITETET Vad är/var problemet? NyA webben har behörigheter/roller via federerade attribut edupersonentitlement/gmai Studentcentrum
Konstruktion av datorspråk
Konstruktion av datorspråk Fö3: Uppmärkningsspråk Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap Linköpings universitet 2009-01-29 Översikt Uppmärkningsspråk Struktur och specifikation
Webbserverprogrammering
Webbserverprogrammering WES Webbserverprogrammering Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets
Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor
http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar
Datavetenskapligt program, 180 högskolepoäng
GÖTEBORGS UNIVERSITET UTBILDNINGSPLAN IT-fakultetsstyrelsen 2013-02-14 Datavetenskapligt program, 180 högskolepoäng (Computer Science, Bachelor s Programme, 180 credits) Grundnivå/First level 1. Fastställande
Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.
Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Design och konstruktion av grafiska gränssnitt
Design och konstruktion av grafiska gränssnitt Armin Nezirevic Peter Börjesson Interaktionsdesign Tillämpad informationsteknologi Chalmers/GU Idag Vad utmärker ett bra användargränssnitt? Kort kursinfo
Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
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,
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
Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet
Žƒ ƒ Ž Ž ˆ ƒ ƒ ƒ Žƒ ƒ Ž ˆ Œ ŽŽ ƒ Backcode Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Innehållsförteckning 12-05-29 Inledning... 3 Användarhandledningen... 4 Klasser... 4 Metoder...
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
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
Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 3.0
Regelverk Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag Bilaga A Tekniska ramverk Version: 3.0 Innehållsförteckning 1 Bakgrund och syfte... 1 1.1 Definitioner 1 2 Inledning...
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Design och konstruktion av grafiska gränssnitt
Design och konstruktion av grafiska gränssnitt Peter Börjesson Interaktionsdesign Tillämpad informationsteknologi Chalmers/GU Idag Kort kursinfo Lab info Föreläsning - Vad utmärker ett bra användargränssnitt?
Tor Sterner-Johansson Thomas Johansson Daniel Henriksson
Lab 4: Anti Tower Defence Oskar Mothander Alan Mendez Larsson dit06omr dit06mln Lärare: Handledare: Johan Eliasson Johan Granberg Tor Sterner-Johansson Thomas Johansson Daniel Henriksson Innehåll 1. Problemspecifikation...
Institutionen för Tillämpad fysik och elektronik Stefan Berglund och Per Kvarnbrink. Laboration: Flerskiktade applikationer
Institutionen för 2014-11-17 Tillämpad fysik och elektronik Stefan Berglund och Per Kvarnbrink Laboration: Flerskiktade applikationer Målsättning Syftet med denna laboration är att ge den studerande kunskap
Laboration i datateknik
KUNGLIGA TEKNISKA HÖGSKOLAN Laboration i datateknik Felsökning och programmering av LEGO NXT robot Daniel Willén 2012 09 06 dwill@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Syftet med
Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
TMP Consulting - tjänster för företag
TMP Consulting - tjänster för företag Adress: http://tmpc.se Kontakta: info@tmpc.se TMP Consulting är ett bolag som utvecklar tekniska lösningar och arbetar med effektivisering och problemslösning i organisationer.
Ö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
Programmering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Slutrapport YUNSIT.se Portfolio/blogg
Slutrapport YUNSIT.se Portfolio/blogg RICKARD HANSSON 2012-06-04 Abstrakt Rapporten du har i din hand kommer handla om mitt projektarbete som jag genomfört under tio veckor för utbildningen Utvecklare
Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 1.0
Regelverk Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag Bilaga A Tekniska ramverk Version: 1.0 Innehållsförteckning 1 Bakgrund och syfte... 1 1.1 Definitioner 1 2 Inledning...
Testplanering, test-first, testverktyg
Testplanering, test-first, testverktyg Mats Skoglund Department of Computer and Systems Sciences Stockholm University/Royal Institute of Technology Stockholm, Sweden 12 mars 2007 Mats Skoglund Page 1(33)
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket
Testning av program. Verklig modell för programutveckling
Fel i program När man skriver program uppkommer alltid fel. Felen kan indelas i följande kategorier: Under kompileringen upptäcker kompilatorn fel som handlar om att man använt konstruktionerna i programspråket
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
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