OMSTRUKTURERING AV LEGACY- KOD MED HJÄLP AV DOMÄNDRIVEN DESIGN
|
|
- Ingeborg Göransson
- för 6 år sedan
- Visningar:
Transkript
1 Examensarbete, Högskolan på Åland, Utbildningsprogrammet för Informationsteknik OMSTRUKTURERING AV LEGACY- KOD MED HJÄLP AV DOMÄNDRIVEN DESIGN Philip Eriksson 18:2018 Datum för godkännande: Handledare: Agenta Eriksson-Granskog 1
2 EXAMENSARBETE Högskolan på Åland Utbildningsprogram: Författare: Arbetets namn: Handledare: Uppdragsgivare: Informationsteknik Eriksson, Philip Omstrukturering av legacy-kod med hjälp av domändriven design Agneta Eriksson-Granskog Crosskey Banking Solutions Abstrakt Syftet med detta arbete är att bygga om en del av avgiftshanteringen inom Crosskeys kortsystem. Idag är denna hantering en del av en växande legacy-kodbas, vilket leder till att ändringar och underhåll av avgifter ofta blir en komplicerad och tidskrävande process. I arbetet ingår att driva systemet till en mera domändriven design, där de olika delarna av systemet är fristående ifrån varandra, för att minska på beroenden. I arbetet presenteras vår bild av domändriven design och hur vi planerar att använda de principerna, samt kortfattat om vad legacy-kod innebär och hur man jobbar med det. Nyckelord (sökord) Java, Spring, Domändriven Design (DDD), Legacy, Avgifter, Omstrukturering Högskolans serienummer: ISSN: Språk: Sidantal: 18: Svenska 25 sidor Inlämningsdatum: Presentationsdatum: Datum för godkännande:
3 DEGREE THESIS Åland Univeristy of Applied Sciences Study program: Författare: Arbetets namn: Handledare: Uppdragsgivare: Information Technology Eriksson, Philip Refactoring of Legacy Code using Domain Driven Design Agneta Eriksson-Granskog Crosskey Banking Solutions Abstract The purpose of this thesis is to rebuild part of the fee handling in Crosskeys card system. Today this handling is a part of a growing legacy codebase, which makes changes and maintenance of fees into a complex and time-consuming process. The thesis includes trying to drive the system towards a more domain driven approach, where the different parts of the system are independent of eachother. In the thesis I present our approach to domain driven design and how we plan on using those principles, along with a section about legacy-code and how to work with it. Keywords Java, Spring, Domaindriven Design (DDD), Legacy, Fees, Refactoring Serial Number ISSN: Language: Number of Pages: 18: Swedish 25 pages Handed in: Date of presentation: Date of approval:
4 INNEHÅLLSFÖRTECKNING 1. INTRODUKTION5 1.1 SYFTE5 1.2 METOD5 1.3 AVGRÄNSNINGAR5 1.4 BESTÄLLARE6 2. BAKGRUND / TEKNIKER7 2.1 DOMÄNDRIVEN DESIGN (DDD)7 2.2 JAVA9 2.3 SPRING METODER LEGACY-KOD OMSTRUKTURERING AV KOD11 3. OMSTRUKTURERING13 4. VAL AV METODER VAL AV DATABASANSLUTNING VAL AV SPRING-KONFIGURATION21 5. RESULTAT23 6. SLUTSATS24 Framtida arbeteerror! Bookmark not defined. REFERENSER25 4
5 1. Introduktion 1.1 Syfte Syftet med detta arbete är att omstrukturera en viktig del av beställarens kodbas, nämligen deras avgiftshantering. I dagsläget skrivs ny kod oftast i egna moduler, för att separera på ansvarsområden, enligt goda objektorienterade principer. Men en stor del av vår kod ligger fortfarande i ett och samma bibliotek, utan någon klar separation av ansvarsområden. 1.2 Metod Till en början var kravspecifikationen för arbetet väldigt lång. Slutsatsen vi drog var att arbetet skulle bestå främst av förberedande delar av ett större projekt. Kunskapen för att utföra kommer i stor utsträckning från Högskolan på Åland, men även genom kontakt och genomgångar på Crosskey. Omstruktureringen kommer att göras i flera steg, som kommar att dokumenteras närmare senare i arbetet. Målet är att driva hela kodbasen mot en mera Domändriven Design (DDD), för att enklare kunna göra ändringar i systemet och minska ner på beroenden mellan moduler. Så mycket som möjligt kommer att göras om från grunden, men för den mer komplexa logiken så kommer implementationen att vara den samma som tidigare. Arbetet kommer att ske med fria händer vad gäller design och val av tekniker, med regelbundna samtal och frågeställningar till min handledare på företaget. 1.3 Avgränsningar En komplett DDD-struktur över systemet skulle ta för lång tid för detta arbete, så vi valde att begränsa arbetet till att omstrukturera den del av koden som ansvarar för att en särskild avgift ska postas till ett konto. Några viktiga delar som uteblev ur arbetet p.g.a. tidsbrist var ändringar i hur avgifter hanteras i vårt backoffice-system. 5
6 1.4 Beställare Crosskey Banking Solutions är ett dotterbolag till Ålandsbanken, som erbjuder utveckling och underhåll av IT-system inom bank- och finanssektorn. Crosskey har upp emot 240 anställda på flera orter, med huvudkontoret i Mariehamn. (Crosskey, 2018) Arbetet har gjorts inom avdelningen Cards & Mobile Payments. Figur 1: Crosskey Banking Solutions 6
7 2. BAKGRUND / TEKNIKER 2.1 Domändriven design (DDD) DDD isn t first and foremost about technology. In its most central principles,ddd is about discussion, listening, understanding, discovery, and business value, all in an effort to centralize knowledge. (Vernon, 2013) Domändriven design (förkortat till DDD) handlar, på teknisk nivå, om att koden man skriver följer affärsområdets modell. Vad det innebär är att verksamhetens bild av systemet stämmer överens med implementationen. Detta gör det inte bara lättare för nya utvecklare att förstå systemet, utan underlättar även kommunikation mellan utvecklare och annan personal i teamen. I detta arbete kommer DDD att användas för att separera på applikationens logik i fristående domäner. Följer man principerna till fullo ska all affärslogik finnas i domänobjekt och services. Vår tanke är att varje domän ska ansvara för en del av applikationen, utan att överlappa till andra domäner, för att hålla antalet beroenden lågt som möjligt. En komplett DDD-struktur över systemet skulle kräva att flera delar av systemet följer DDDprinciperna, så istället använder vi ett slags mellansteg, där vi delar upp systemet i domänoch applikationslager. På så sätt kan vi flytta så mycket logik som möjligt till domänerna, och sedan knyta ihop dem med hjälp av service-klasser i applikationslagret. I figur 2 ses en bild på hur en sådan uppdelning kan se ut. Vår användning av DDD följer inte design-principerna fullt ut, eftersom en sådan struktur skulle kräva en stor insats av ett flertal människor inom flera olika delar av applikationen. Därför har vi bestämt att endast implementera några av principerna för DDD. Vår plan är att dela upp koden i två lager: Ett domänlager där enskilda, fristående domäner har ansvar för sin del av applikationen, utan att ha några som helst beroenden till andra domäner. Ett applikationslager där vi kan knyta ihop flera olika domäner. 7
8 En sådan uppdelning leder till bättre förståelse om vilken logik som ska vara var, samt att det blir lättare att visualisera och hantera beroenden mellan olika delar av systemet. Figur 2 visar hur de två lagren kan kommunicera med varandra. Figur 2: Modell över domän- och applikationslager I figuren ser vi att applikationslagret binder samman två (eller flera) domäner, utan att domänerna behöver kommunicera med varandra. På så vis blir det lättare att med tiden flytta mer och mer logik från applikationslagret till domänlagret. Applikationslagret kommer att agera som en startpunkt för en kedja av metodanrop och kommer att börja från någon slags användargränssnitt eller schemalagda jobb. 8
9 Ett exempel på en sådan kedja visas i följande sekvensdiagram i Figur 3: Figur 3: Sekvensdiagram för ett anrop till applikations-servicen 2.2 Java Java är ett objektorienterat programmeringsspråk som stöder flera olika ramverk och externa bibliotek. Java följer WORA -principen (Write Once, Run Anywhere), vilket betyder att Java-kod som är kompilerad kan köra på alla enheter som har en Java Virtual Machine installerad. (Perry, 2017) 9
10 2.3 Spring Spring är ett populärt ramverk som utökar Java med en mängd ny funktionalitet. De flesta objekt instantieras inte längre på vanligt sätt i kod, utan kommer att skapas som bönor av Spring. Vilka bönor som skapas så definierar man antingen genom en XML- eller Javakonfiguration. Spring använder även någonting som heter Dependency Injection (Beroende injicering) för att hantera beroenden mellan olika objekt. När man skapat en böna så kan den användas som ett vanligt objekt eller vidare injiceras till en annan böna. (Pivotal Software, 2018) Att injicera en böna i en annan betyder i praktiken att man skapar ett objekt av den och anger det objektet som ett konstruktorargument till ett annat objekt. I figur 4 visas hur en böna kan skapas när man använder Java-konfiguration. Figur 4: Exempel på hur en böna skapas i säger åt Spring att denna metod kan användas för att skapa en säger åt Spring att söka efter bönor med namnen som anges (t.ex. FeeDiscountService), och skicka dem som argument till metoden. I figuren ser man även ett exempel på Dependency Injection (beroende-injicering), där de klasser som FeeCalculationService använder sig av, skapas externt av Spring och sedan skickas som konstruktor-argument. 10
11 2.4 Metoder I arbetet kommer jag att gå mera in på olika metoder i Java. En metod (eller funktion) i Java är en isolerad del kod i en klass som erbjuder en viss funktionalitet. Dessa kommer i flera olika tillgångsnivåer, men dom två viktigaste är offentliga och privata metoder. En offentlig metod kan användas av alla som har en instans av ett objekt, och är den funktionalitet som klassen ska erbjuda åt andra. En privat metod kan endast användas inom samma klass som metoden själv är i. Dessa används oftast för att dela upp kod i mindre, mer lättlästa block utan att exponera den metoden till andra klasser. En tumregel för privata metoder är att de gärna får vara statiska, d.v.s. att de är oberoende av objektets tillstånd och endast behandlar sina egna parametrar. 2.5 Legacy-kod Legacy är ett ord som används mycket inom IT-världen, och kan beskrivas som ett system som är gammalt och som är svårt att underhålla. Legacy existerar både inom hård- och mjukvara, och i detta arbete så är det mjukvaru-delen som kommer att tittas närmare på. Legacy-kod kan beskrivas som kod som oftast är gammal och svår att arbeta med. Sådan kod saknar oftast dokumentationen och tester, vilket gör koden svår att förstå. En till orsak varför legacy-kod är svår att arbeta med är brist av kunskap, att det inte längre är någon som vet hur systemet fungerar eller varför det ser ut som det gör. Detta leder till att det går åt mycket resurser för att underhålla systemet och lägga till funktionalitet till systemet tar mycket längre än vad det borde. (Fischer, 2018) 2.6 Omstrukturering av kod Att omstrukturera kod går ut på att förbättra en design av gammal kod utan att förändra programmets beteende. Legacy-kod är ett bra exempel på kod som kan vara i behov att att struktureras om. Om man fortsätter bygga på legacy-kod utan att göra något åt designen så kommer koden bara att bli värre och värre. Figur 5 visar ett exempel på hur dessa problem bygger på varandra. 11
12 Figure 5: Ond cirkel av dåligt designad kod (Code Climate, 2013) Figuren visar hur dåligt designad kod oftast saknar tillräckliga tester, vilket leder till att man oftast inte vågar göra något åt koden. Lägg även märke till att vilken som helst av dessa fyra kriterier kan påbörja en spiral som resulterar i att designen blir sämre och sämre. En viktig del när man ska utföra en omstrukturering är att koden går att testa automatiskt. Då kan man försäkra sig efter varje steg av processen att koden fortfarande utför sin uppgift och att den fortfarande fungerar likadant som tidigare. (DZone, 2018) Så vad gör man om koden man ska strukturera om saknar automatiska tester? Processen blir aningen svårare. Är det att enkelt skriva tester för koden så är det en bra idé att göra det. Men det lönar sig inte heller att spendera veckor på att skriva tester för en stor del kod. I detta fall så borde man att kommunicera med någon chef eller manager och få reda på vilka användarscenarion som det är tänkt att koden ska sköta om. När man strukturerar om sådan kod så får man komma ihåg att skriva tester för de nya gränssnitt man skapar. Då kan man försäkra sig om att den nya koden är robust och säker. (Code Climate, 2013) 12
13 3. OMSTRUKTURERING Att jobba med legacy-kod kan vara en tidskrävande process. Att skriva om en gammal klass kan gå fort, eller ta väldigt länge, beroende på en mängd olika faktorer, bl.a.: Längd En klass som består av flera tusen kodrader innehåller antagligen mera logik än en som endast är ett par hundra. Den kommer på så vis att kräva både mera förberedande arbete och även flera nya klasser om så behövs. Komplexitet En klass kan ansvara för flera olika områden. En klass som är väldigt lång innehåller ofta logik som skulle passa bättre i en egen klass. Om en klass är för komplex så blir det svårt att förstå vad koden gör eller vilken del av programmet den ansvarar för. Min omstrukturering gjordes i flera olika steg: 1. Undersöka vilken del av funktionaliteten som inte krävde någon kontakt med andra delar av systemet, och således kan flyttas till en avskild domän. 2. Skapa en ny avgiftsdomän och flytta den koden som går dit. 3. Ta den resterande koden av avgiftshanteringen och dela upp den i flera mindre klasser, och gör den mera läs- och testbar. 4. Skriva automatiserade tester för de nya klasserna. 5. Byta ut användningen av de gamla klasserna mot de nya. Koden som idag hanterar avgifter så är tätt kopplad till flera olika delar av systemet och klasserna är långa och otydliga. Den första delen av avgiftshanteringen och den som kommer att behandlas inom detta arbete är den del som hanterar postningen av enskilda avgifter till ett kundkonto. Den funktionaliteten sköts idag av en klass som med åren har blivit onödigt lång och komplex. Som en konsekvens av klassens komplexitet har den utökats istället för att blivit återanvänd när någon har behövt den. I figur 6 ses en bild över hur klassen ser ut i dagsläget, med medlemsvariabler och metoder. 13
14 Figur 6 FeePostingService (Medlemmar + Metoder) 14
15 Figur 6 visar flera tecken på att klassen är i behov av omstrukturering. Flera metoder med samma namn, fast med olika parametrar och implementation. En uppsjö av (otestbara) privata metoder som är beroende av objektets tillstånd. En stor mängd beroenden till andra klasser (visat av de gula symbolerna i Figur 5). Det framstår ganska klart från figuren också att antalet metoder leder till att klassen i sig har blivit väldigt lång. En stor del av avgiftshanteringen sköts idag av en fasad över den del av systemet, men arbetet kommer endast att behandla de delar av fasaden som behövs för avgiftspostning: Hitta rätt enskild avgift baserat på input-parametrar. Räkna ut totalt pris för en avgift (kan vara fast eller procentbaserat pris). Applicera en rabatt på en avgift (t.ex. rabatt på uttagsavgifter över en helg). Facade - Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. (SourceMaking, n.d.) I figur 7 visas metoderna i FeeFacade. 15
16 Figur 7 FeeFacade interface Att påbörja en omstrukturering till en domändriven design från en legacy-kodbas är svårt, eftersom de olika delarna av koden är tätt kopplade till varandra. För att få en komplett domändriven struktur över koden skulle det krävas att flera delar av applikationen följde designen och det går utanför avgränsningarna för detta arbete. Efter en del undersökande och diskussion med handledare så kunde vi extrahera två nya klasser ifrån våran avgiftsfasad. En klass för att hantera rabattering av avgifter. En klass för att hantera kopplingar mellan olika domänobjekt, och agera som ett högnivå gränssnitt mot databasen I Figur 8 så visas dessa två nya klasser. 16
17 Figur 8: Klasser i den nya domänen Här är gränssnitten betydligt mindre än tidigare och klassnamnen är lite mer beskrivande. Tyvärr är majoriteten av logiken såpass tätt kopplad till andra delar av systemet så att en stor del av de tidigare klasserna inte kunde placeras i den nya domänen. Så vad gör vi med logiken som inte kunde flyttas till den nya domänen? Svaret är att den skrivs om till flera mindre klasser, som är mera begränsade i ansvar, och mer testbara än tidigare. I Figur 9 visas de två nya klasserna som blev i applikationslagret. 17
18 Figur 9: Avgiftsklasser i applikationslagret 18
19 De nya klasserna är i stort sett kopierade från den tidigare logiken, men har fått ett snyggare och mera lättförståeligt gränssnitt och överflödig eller onödig kod har tagits bort. Klasserna innehåller fortfarande mycket logik och hade kunnats omstruktureras vidare, men detta skulle kräva att man dök in i flera olika områden avsystemet, vilket skulle gå utanför begränsningarna för arbetet. Det viktiga här är att mängden privata metoder har sjunkit något. Privata hjälpmetoder är bra för att göra koden mera lättläst och enklare att följa, men medför även nackdelar. Den stora nackdelen i mitt arbete är att privata metoder inte går att enhetstesta med konventionella metoder, vilket gör det svårt att verifiera att metoden fungerar som den borde. 19
20 4. VAL AV METODER 4.1 Val av databasanslutning När det kommer till metoder för att ansluta sin applikation till en databas fanns det två möjligheter att välja mellan: Spring Data JPA och MyBatis. Med Spring Data JPA använder vi oss av speciella klasser för att skapa och använda databasfrågor. Objektet kommer att färdigt innehålla grundläggande metoder för att t.ex. hämta ett objekt utifrån primärnyckel, eller för att spara ett befintligt objekt i databasen. Men det finns även stöd för att manuellt skriva frågor till databasen. Är man inte i behov av av någon komplex fråga, så kan verktyget färdigt generera de flesta frågor utifrån metodens namn. Men om man behöver, går det även att helt manuellt skriva en fråga genom att annotera metoden (Gierke, Darimont, Strobl, & Paluch, 2018) I Figur 10 visas ett exempel på en sådan metod. Figur 10: Exempel på manuell query med Spring Data JPA MyBatis är ett ramverk som också hanterar anslutningar till databaser i Java, där SQL-frågor skrivs manuellt i XML-filer. Förutom SQL-satserna kan man också manuellt skriva så kallade Result Maps (resultat-mappningar). Dessa Maps har till uppgift att ta resultatet från en SQL fråga och konvertera det till ett Java-objekt. Spring Data JPA kräver mindre konfiguration och de flesta metoder fungerar Out-of-thebox, vilket gör JPA till en attraktiv lösning för många. MyBatis kräver en del konfiguration och manuellt skrivande för att det ska fungera. Det positiva är att när man har konfigurerat färdigt så har man i princip full kontroll över allt som händer, till skillnad från JPA där det mesta sköts osynligt av Spring. I slutändan valde jag att använda Spring Data JPA. Varför jag valde den är för att den krävde mindre tid att konfigurera, och att jag inte heller hade något behov av att den komplexa funktionalitet som MyBatis erbjuder. 20
21 4.2 Val av Spring-konfiguration I Spring finns det två sätt att konfigurera hur ens bönor ska skapas och hur de injiceras i andra bönor. Detta kan antingen göras i XML-filer eller i dedikerade Java-klasser. XML-versionen används genom att man definierar bönorna med ett namn och vilken klass som ska instansieras, samt eventuella konstruktor-parametrar. Väljer man att använda Javakonfiguration istället så skapar man en klass som annoteras Då kommer Spring att använda den klassen för att instansiera och injicera bönor. Javakonfiguration brukar även anses vara mer modern och är lättare för en utvecklare att läsa. Mitt val av konfiguration är Java-konfiguration. Till störst del var det en personlig preferens, då XML snabbt kan bli svårt att förstå sig på. Spring kan automatiskt scanna efter klasser med vissa annoteringar, och skapa bönor av dem utan att man manuellt behöver skapa dem med en konfiguration. Figur 11 visar hur en sådan konfiguration kan se ut. Figur 11: Exempel på Java-konfiguration med Component Scanning I figur 11 visas hur en Java-konfiguration kan skapas. Klassen har tre annoteringar som alla tillför någon slags Klassen känns igen av Spring som en konfiguration och Spring kommer att använda klassen för att skapa Det går även att i Java-konfiguration importera konfigurationer gjorda i XML och vice-versa. Detta gör det lätt att använda både XML- och Javakonfigurationer, om man så Spring kommer att söka igenom det givna paketet efter klasser med särskilda annoteringar och färdigt skapa bönor av dem. Exempel på några sådana som vi tog upp tidigare, men det finns 21
22 I Figur 12 och 13 så visas exempel på hur man kan markera klasser så att de känns igen av Spring. Figur 13 visar även en speciell klass som används som databasanslutning som jag skrev om i kapitel 4.1 Figur 12: Exempel med manuell namngivning Figur 13: Exempel I båda dessa fall kommer Spring att skapa bönor av dessa klasser, förutsatt att de ligger under det paket som anges i basepackages -parametern. I Figur 12 ser vi även att det går att manuellt ge ett namn åt bönorna. 22
23 5. RESULTAT Resultat för arbetet blev, efter en del avgränsningar, lyckat. En ny domän för avgifter har skapats och en del av den relevanta logiken har flyttats ut, men systemet är ännu långt ifrån en komplett DDD-stuktur. Mycket onödig kod har tagits bort och klasserna är betydligt mera förståeliga. De nya klasserna är även betydligt mer robusta tack vare introduktionen av unittester för dem, vilket nästan inte alls fanns tidigare. En ny domän för avgiftshantering har skapats, och en del av logiken har extraherats dit. Den kod som blev kvar i applikationslagret har blivit uppdelad i flera mindre klasser. De nya klasserna är manuellt testade för att försäkra att funktionaliteten är den samma som tidigare. De nya klasserna har automatiserade tester. 23
24 6. SLUTSATS Syftet med arbetet är utfört i och med att: Metoden formulerad i kapitel 1 har följts när lösningarna har tagits fram. Avgränsningarna som nämns i kapitel 1 har följts, likaså nya avgränsningar som kommit upp under arbetets gång. Resultaten i detta arbete är de fyra punkterna som är uppräknade i kapitel 5 Resultat. Arbetet har varit intressant och lärorikt, men har vid flera tillfällen kännits som att man gjort samma sak om och om igen, utan att egentligen komma någonstans. Utöver detta har nya avgränsningar dykit upp på nästan varje vecka, eftersom de flesta delar av arbetet tagit mera tid än förväntat. Som jag skrev i kapitel 1.2 Metod är detta arbete främst en språngbräda för framtida förändringar. Det finns fortfarande mycket att göra inom domänen och omstruktureringen kommer att fortsätta även efter detta arbete är avslutat. Den största förändringen som är planerad är att kommunikationen till domänerna/modulerna ska göras via ett REST-gränssnitt, som tillåter maskin-till-maskin kommunikation att ske med hjälp av webbtjänster. 24
25 Referenser Code Climate. (2013, 12 05). Code Climate. Retrieved 05 13, 2018, from Refactoring Without Good Tests: Crosskey. (n.d.). Retrieved 04 27, 2018, from About Crosskey: Evans, E. (2003). Domain-Driven Design - Tackling Complexity in the Heart of Software. Fischer, C. (2018, January 8). Extending Legacy Software with Functional Programming. Fowler, M. (1999). Refactoring: Improving the Design of Existing Code. Gierke, O., Darimont, T., Strobl, C., & Paluch, M. (2018, 04 04). Spring. Retrieved 04 24, 2018, from Spring Data JPA - Reference: Perry, S. (2017, 8 24). Introduction to Java programming. Retrieved 4 29, 2018, from IBM developerworks: Pivotal Software. (2018, 04 03). Core Technologies. Retrieved 04 29, 2018, from Spring Framework Documentation: SourceMaking. (n.d.). Facade Design Pattern. Retrieved from Design Patterns & Refactoring: Vernon, V. (2013). Implementing Domain-Driven Design. Addison-Wesley. VersionOne. (n.d.). VersionOne Unified Agile & DevOps. Retrieved 05 13, 2018, from Code Refactoring in Agile Programming: 25
Vad är. Domändriven design?
Vad är Domändriven design? 1 Domändriven design är utvecklare och domänexperter som arbetar tillsammans för att skapa mjukvara som är både begriplig och möjlig att underhålla. ett sätt att fånga och sprida
VIDAREUTVECKLING AV ADMINISTRATIONSAPPLIKATION
Examensarbete, Högskolan på Åland, Utbildningsprogrammet för Informationsteknik VIDAREUTVECKLING AV ADMINISTRATIONSAPPLIKATION Dag Karlsson 15:2018 Datum för godkännande: 30.05.2018 Handledare: Joakim
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
Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018
Separation of Concern Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Modulär design Fördelar med välgjord modulär design: Lätt att utvidga Moduler går
TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS
TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS 180226 Idag (ADT), OOP i Racket, labb 5 2 Allmän info Duggan. Laboration 4 deadline. Planering framöver Muddy cards (nästa timme) 3 Lite repetition ADT
Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017
Separation of Concern Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017 Modulär design Ett programsystem är för stort för att kunna förstås i sin helhet.
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.
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
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
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
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
Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =
Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Modulär design. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018
Modulär design Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Separation of Concern principle Do one thing do it well. Separation of Concern är inte specifikt
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
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
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
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
UPPGRADERING AV JBOSS EAP & JBOSS AMQ
Examensarbete, Högskolan på Åland, Utbildningsprogrammet för informationsteknik UPPGRADERING AV JBOSS EAP & JBOSS AMQ Anton Jansson & Conny Ljunggren Datum för publicering: 22.12.2017 Handledare:
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
Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes
Vad kännetecknar en god klass F12 Nested & En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.
Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.
SOLID är en akronym för fem stycken designprinciper som används vid mjukvaruutveckling. SOLID står för:
Lektion 32 Övningar Korta punkter Jag vill ha en redovisning från alla grupper där ni går igenom person för person vad personen har ansvarat för och vad och vem personen har parprogrammerat på. Ta även
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
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar Vi kommer att behöva hantera samlingar av objekt - Har oftast använd Array (fält) - Bra om
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
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
Regressionstestning teori och praktik
Regressionstestning teori och praktik Lic. Emelie Engström emelie.engstrom@cs.lth.se Software Engineering Research Group LUND UNIVERSITY Sweden SWELL the Swedish Research School in Software Verification
HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)
Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet
Azure Designer. Version 1.0 Mats Persson
Version 1.0 Distributionslista Befattning Bolag/enhet Namn Åtgärd Info. Student KaU Carl Philip Matsson Konsult/huvudhandledare Sogeti Konsultchef Sogeti Åsa Maspers Projektledare/handledare Sogeti Marcus
UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
UML Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Unified Modelling Language Grafiskt modelleringsspråk för att beskriva olika aspekter av objektorienterade system. Vi kommer
Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015
Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora
TUTORIAL: SAMLING & KONSOLL
TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även
Swedbank Mobile Loadtesting. LoadRunner 11.04 Mobile App protocol
Swedbank Mobile Loadtesting LoadRunner 11.04 Mobile App protocol Bakgrund Mission: Prestandatesta mobilt backend Typ: RESTful tjänst Underlag: Dokumenterat URI och API (Uniform Resource Identifier, Application
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
Objektorienterad Programmering (OOP) Murach s: kap 12-16
Objektorienterad Programmering (OOP) Murach s: kap 12-16 2013-01-28 1 Winstrand Development Objektorienterad Programmering Förkortas OOP Objektorientering innebär att man delar in koden i olika block,
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)
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
UTVECKLING AV DOKUMENTÖVERFÖRINGSMODUL I JAVA/SPRING
Examensarbete, Högskolan på Åland, Utbildningsprogrammet för informationsteknik UTVECKLING AV DOKUMENTÖVERFÖRINGSMODUL I JAVA/SPRING William Eriksson 42:2016 Datum för publicering: 15.12.2016 Handledare:
Användning av testautomation inom Extendas utvecklingsorganisation
Testautomation Användning av testautomation inom Extendas utvecklingsorganisation Agenda Presentation av Extenda Vad är en POS? Test av POS Automatiska tester Sammanfattning 2 Kort historik 1982 Extenda
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:
INTRODUKTION TILL JDBC
INTRODUKTION TILL JDBC Vad är JDBC? JDBC står för Java DataBase Connectivity. JDBC ingår i Java och består av en del klasser som har hand om databasfunktionalitet. Med Java följer JDBC-ODBC Bridge driver,
Plattform as a Service, leverantör tillhandahåller plattformen, jag tillhandahåller applikation och ansvarar för denna.
Modul 1: Molntjänst Publikt moln Privat moln Hybrid moln IaaS PaaS SaaS DaaS DaaS SLA Infrastructure as a Service, leverantör tillhandahåller infrastrukturen, jag tillhandahåller virtuella maskiner eller
Designmönster - EMW. Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL: http://www.cs.chalmers.
Designmönster - EMW Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL: http://www.cs.chalmers.se/~kentp arbetar på Inst. för Datavetenskap, Cth & Gu, 50% och Software
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
Kort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
"Distributed Watchdog System"
Datavetenskap Emma Henriksson Ola Ekelund Oppositionsrapport på uppsatsen "Distributed Watchdog System" Oppositionsrapport, C-nivå 2005 1 Sammanfattande omdöme på exjobbet Projektet tycks ha varit av
Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design
RE SD PD I UT IT ST AT Mjukvarudesign System Requirement Specification Inkrementell och iterativ! Konceptuell design (VAD) Systemdesign (OOA) Arkitekturell (grovkornig, UML) Teknisk design (HUR) Programdesign
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
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
Gissa det hemliga talet
Laborationsanvisning Gissa det hemliga talet Steg 2, laborationsuppgift 1 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i
PROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar hur mjukvaror skapas, anpassas och utvecklas samt programmeringens roll i informationstekniska sammanhang som datorsimulering och praktisk datoriserad problemlösning.
Laboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
Beskrivning av gesällprov RMI Chat Mikael Rydmark
Beskrivning av gesällprov RMI Chat Mikael Rydmark rydmark@kth.se Mikael Rydmark 1(8) 12-06-06 Innehållsförteckning Inledning...3 Server...3 Klient... 3 Ansluta till servern...3 Huvudchat...4 Privat kommunikation...5
TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16
TDDC74 Programmering: Abstraktion och modellering Dugga 2, 207-04-06, kl 4-6 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.
Designmönster i Javascript
C-uppsats i Datavetenskap Designmönster i Javascript Författare: Fredrik Johansson Handledare: Martin Blomberg Termin:VT11 Kurskod: 2DV40E Abstrakt Programmeringsspråket Javascript har sina brister som
Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:
Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte
Modulär design Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Modulär design Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Vad är ett bra program? I kursen pratar vi om bra kod utifrån ett utvecklar-perspektiv, dvs det som gör koden lätt
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,
Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1
Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan
Ökat personligt engagemang En studie om coachande förhållningssätt
Lärarutbildningen Fakulteten för lärande och samhälle Individ och samhälle Uppsats 7,5 högskolepoäng Ökat personligt engagemang En studie om coachande förhållningssätt Increased personal involvement A
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:
LVDB i GEOSECMA. Innehåll. Inledning. Produkt: GEOSECMA Modul: LVDB Skapad för Version: Uppdaterad:
Produkt: GEOSECMA Modul: LVDB Skapad för Version: 10.4.1 Uppdaterad: 2019-05-21 LVDB i GEOSECMA Innehåll Inledning... 1 Hämta XML från NVDB... 2 Full LVDB-import... 3 Inkentell LVDB-import... 4 NVDB inställningar...
729G06 Föreläsning 1 Objektorienterad programmering
Översikt Formalia Vad är objektorienterad programmering 729G06 Föreläsning 1 Objektorienterad programmering Definieria klasser Skapa och använda objekt Annika Silvervarg Ciltab, IDA, Linköpings universitet
Säkra Designmönster (Secure Design Patterns)
Säkra Designmönster (Secure Design Patterns) Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT) Säkra designmönster Beskrivningar eller mallar
Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.
Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel
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,
Inledande programmering med C# (1DV402) Tärningarna ska kastas
Tärningarna ska kastas 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
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
Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:
Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60 Superscalar vs VLIW Cornelia Kloth IDA2 Inlämningsdatum: 2018-12-05 Abstract Rapporten handlar om två tekniker inom multiple issue processorer
KAP 18 SQL SERVER AGENT
KAP 18 SQL SERVER AGENT Tjänsten Sql Server Agent Operator Job Alert (larm) http://www.youtube.com/watch?v=ii1tc493bzm 1 VAD ÄR SQL SERVER AGENT? SQL Server Agent är en tjänst (service) som ansvarar för:
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
Mönster. Ulf Cederling Växjö University Ulf.Cederling@msi.vxu.se http://www.msi.vxu.se/~ulfce. Slide 1
Mönster Ulf Cederling Växjö University UlfCederling@msivxuse http://wwwmsivxuse/~ulfce Slide 1 Beskrivningsmall Beskrivningsmallen är inspirerad av den som användes på AG Communication Systems (AGCS) Linda
Webbserverprogrammering
Webbserverprogrammering WES Webbserverprogrammering Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets
Make a speech. How to make the perfect speech. söndag 6 oktober 13
Make a speech How to make the perfect speech FOPPA FOPPA Finding FOPPA Finding Organizing FOPPA Finding Organizing Phrasing FOPPA Finding Organizing Phrasing Preparing FOPPA Finding Organizing Phrasing
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
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
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
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
Objektorienterad programmering, allmänt
Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet
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
Beijer Electronics AB 2000, MA00336A, 2000-12
Demonstration driver English Svenska Beijer Electronics AB 2000, MA00336A, 2000-12 Beijer Electronics AB reserves the right to change information in this manual without prior notice. All examples in this
Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15
DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd
ANVÄNDAR MANUAL. SESAM 800 RX MC Manager
ANVÄNDAR MANUAL SESAM 800 RX MC Manager Åkerströms Björbo AB Box 7, SE-780 45 Gagnef, Sweden street Björbovägen 143 SE-785 45 Björbo, Sweden Phone +46 241 250 00 Fax +46 241 232 99 E-mail sales@akerstroms.com
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
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
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.
Administrationsmanual ImageBank 2
Administrationsmanual ImageBank 2 INNEHÅLL 1. Konventioner i manualen 3 2. Uppmärksamhetssymboler 3 3. Vad är imagebank SysAdmin 4 4. Guide för att snabbt komma igång 5 5. Uppgradera din imagebank 1.2
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
Oppositionsrapport: Experior DSTL. Vincent Thuning, Björn Nordström 4 juni 2012
Oppositionsrapport: Experior DSTL Vincent Thuning, Björn Nordström 4 juni 2012 1 Innehåll 1 Sammanfattat omdöme av examensarbete 2 2 Synpunkter på uppsatsen knuten till examensarbetet 2 2.1 Titel..................................
Visuell GUI Testning
Visuell GUI Testning Vad är ett Graphical User Interface (GUI)? Icke-animerat GUI Animerat GUI Nuläget System- och acceptanstestning är dyrt! Manuellt Långsamt Enformigt Svårt att replikera exakt Nödvändigt
Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.
Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod
PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning
PMM (Process Maturity Metrics) PMM är en metod för att mäta processmognad i utvecklingsprojekt. I korthet går metoden ut på att man utvärderar sin utvecklingsprocess med avseende på ett antal framgångsfaktorer
Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).
LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Tomas Johansson, 491000 Resultatet anslås senast 08-05-16 i A-huset. Tillåtna
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
Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17
Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17 Bakgrund och kursmål Kursens mål är att ge kunskaper inom funktionell programmering, fördjupade kunskaper inom objektorienterad
Insamlingsverktyg - teknisk beskrivning av metadataformuläret
Digitala leveranser Insamlingsverktyg - teknisk beskrivning av metadataformuläret Innehåll: Allmänt Layout och uppbyggnad Hur man använder programmet Starta Fylla i metadata Skapa metadatafiler och leverera
Generics och polymorfism. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Generics och polymorfism Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Live code Pair public class Pair { private A a; private B b; public A getfirst() { return a; public
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