Djupstudie Code smells / Refaktorisering. Martin Larsson dt08ml5 Stefan Johansson, dt08sj7

Storlek: px
Starta visningen från sidan:

Download "Djupstudie Code smells / Refaktorisering. Martin Larsson dt08ml5 Stefan Johansson, dt08sj7"

Transkript

1 Djupstudie Code smells / Refaktorisering Martin Larsson dt08ml5 Stefan Johansson, dt08sj7 27 februari 2012

2 Innehåll 1 Inledning 1 2 Bakgrund extreme programming Programvaruutveckling i grupp Refaktorisering Code Smells Kodkonventioner Simple design Verktyg Statisk kodanalys Findbugs PMD Checkstyle Viktiga fel Findbugs upptäckte Resultat 7 6 Slutsats 9 1

3 Sammanfattning Denna artikel tar upp hur man vid parallell kodutveckling i ett team identifierar aspekter i koden som kan leda till problem med den fortsatta utvecklingen av programvaran. För att automatisera processen att hitta problemen använder vi tre verktyg Checkstyle, PMD och Findbugs som vi introducerar till utvecklingsteamet. Vi kom fram till att dessa verktyg är en bra hjälp för att hålla koden i tillräkligt bra skick för att samarbetet inte ska stagnera och inget produceras. Men att introducera dem till PVG teamen är ingen bra idé då de redan har många nya saker att lära sig som är viktigare att fokusera och lägga tid på, även om verktygen hjälper till att skapa bra förutsättningar för korrekt och lättläst kod.

4 1 Inledning Alla som har läst kursen programvaruutveckling i grupp [13] på Lunds tekniska högskola(lth) har säkert någon gång under projektdelen av kursen upplevt hur det är att arbeta med kod som har stort behov av en refaktorisering. Att refaktorisera kod kan ibland vara svårt speciellt om man själv har skrivit koden. Då är det svårt att se vad som behöver göras. För att upptäcka problemområden i koden finns det ett antal olika verktyg som detekterar code smells genom statisk analys av byteoch källkod. Dessa kan ge programmeraren indikationer till var en refaktorisering kan behövas. Syftet med vår studie var således att hjälpa elever på kursen med refaktoriseringsarbetet. Planen var att först låta projektet fortskrida i några få veckor för att sedan när refaktoriseringsbehoven blev allt större introducera det verktyg vi fann mest nyttigt av de vi undersökt för att sen möjligtvis även introducera ytterligare verktyg allteftersom. Tanken var då att mäta hur antalet varningar och fel dom olika verktygen gav på projektet utvecklades gentemot ett team som inte använde sig av verktygen. Vårat resultat blev inte riktigt som vi förväntade oss men våra erfarenheter kan ändå ge insikt i hur väl dessa verktyg lämpar sig för ett projekt liknande det i kursen. 2 Bakgrund Den miljö som vi har använt för att utvärdera de verktyg vi har testat är projektdelen av kursen programvaruutveckling i grupp på LTH. Där använder sig ett antal utvecklingsgrupper med 8-10 programmerare i varje team sig av extreme Programing (XP) metoden. 2.1 extreme programming XP är en agil utvecklingsmetod som föreslogs av Kent Beck. Här beskrivs i korthet det som beck föreslår i hans bok [1]. Metoden bryter ned arbetet från den traditionella vattenfallsmodellen och som Beck själv beskriver det "Extreme Programming turns the conventional software process sideways. Rather than planning, analyzing, and designing for the farflung future, XP programmers do all of these activities, a little at a time, throughout development." Sättet detta görs på baserar sig på följande 13 praktiker: Planning game Small releases Metaphor 1

5 Simple Design Tests Refactoring Pair Programing Continuous integration Collective ownership On-site customer 40-hour weeks Open workspace Just rules En av de viktigaste praktikerna är Tests som innebär att arbetet skall drivas framåt av testdriven utveckling. Det vill säga att skriva enhetstester som testar den funktionalitet som skall implementeras innan kod skrivs. Enhetstesterna finns sedan kvar genom hela utvecklingsprocessen som en hel testsvit som kan ge feedback på att eventuella ändringar i koden en utvecklare gjort inte förstört redan befintlig kod. Detta underlättar för en annan praktik, Collective ownership som säger att alla utvecklare får gå in och ändra i alla delar av koden. En annan viktig punkt är att alltid ha kunden som en del av teamet och använda sig av planning game. Planning game innebär att kunden skapar stories som beskriver en liten funktionalitet som den vill ha implementerad, teamet estimerar sen hur mycket tid det skulle ta att implementera funktionaliteten därefter får kunden plannera in stories för nästa iteration av utveckling teamet skall göra. Tack vare att man bara planerar för en iteration i taget är metoden väldigt anpassningsbar då kunden bara behöver skriva nya stories och prioritera dom till nästa iteration för att ändra riktning på projektet. 2.2 Programvaruutveckling i grupp Kursen programvaruutveckling i grupp ges på LTH för studenter som redan läst grundläggande programmering i java. Eleverna delas in i små utvecklingsteam med ungefär 8-10 medlemmar i varje grupp. Grupperna leds i sin tur utav 1 eller 2 äldre elever som går kursen coachning av programvaruteam [2]. Teamen får sen som uppgift att implementera ett tidtagningssystem för tävlingsformen enduro med ett antal förbestämda stories. För att få in XP praktiken med kund i teamet agerar en anställd på instutionen för datorvetenskap kund. En iteration av utvecklingen pågår i en vecka och består av ett två timmar långt planneringstillfälle och en heldag av gemensam utveckling. Under planneringstillfället estimerar teamet stories som kunden sen prioriterar inför nästa heldag med 2

6 utveckling. Här delas även spikeuppgifter ut till teammedlemmarna vilket innebär att under fyra timmar ska dom läsa på och experimentera kring något som kan vara till gagn för teamet under utvecklingen. Utvecklingen sker från då teamet sitter tillsammans i en och samma datorsal och utvecklar enligt XP metoden. 3 Refaktorisering Allt eftersom ett programvaruutvecklingsprojekt växer så blir kodbasen större. Detta leder till att utvecklare får svårare att ha en överblick över hela systemet vilket kan leda till att implementation av nya funktioner i programmet utför samma eller liknande funktion som redan existerande kod, och att utvecklarna hellre än att våga skriva om existerande kod och integrera lösningen i de omskrivna metoderna löser det genom att skriva kod som lappar ihop lösningen. Men det kan finnas fler orsaker till att kod kan behöva skrivas om, ifall utvecklarna inte har ett gemensamt vokabulär, policys för hur metoder och variabel ska döpas, och en gemensam kodkonvention för hur koden ska struktureras skapar det problem i koden. Kent Beck och Martin Fowler [3] har definerat något de kallar code smells som är mönster eller egenskaper i koden som kan ge indikation på att refaktorisering behövs. Enligt Kent Beck är refaktorisering [3]: Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure. It is a diciplined way to clean up code that minimizes the chances of introducing bugs. In essence when you refactor you are improving the design of the code after it has been written. Eftersom koden blir mer strukturerad och mindre omfattande för att koden skrivs om till att innefatta alla implementerade funktioner i samma kod istället för att bygga ut funktionaliteten inkrementellt utan att göra en enhetlig lösning så minskar risken för buggar i koden när utvecklarna har lättare att förstå hur koden är uppbyggd och fungerar. Eftersom XP metoden använder sig av test-first så är det lätt att efter en refaktorisering kontrollera så att funktionaliteten fortfarande är den samma genom att köra testen för koden. Nedanför tar vi upp tre aspekter som kan användas för att bedöma om koden behöver refaktoriseras eller inte. 3.1 Code Smells Det finns 22 stycken olika code smells definerade av Kent Beck och Martin Fowler [3]. Här tar vi upp några av de viktigaste och förklarar hur de kan åtgärdas. Duplicerad kod Om det finns upprepningar av samma kod mönster i en klass så borde den brytas ut till en separat metod som anropas av de metoder som 3

7 behöver använda sig av koden. Detta för att minska mängden källkod och göra det lättare att förstår vad kodavsnittet gör med ett bra metodnamn. Långa metoder Ifall en metod har blivit stor med många rader med kod blir det svårt att se på vilket sätt den fungerar och det blir svårt att införa ändringar i metoden. Lösningen är att man delar upp koden till mindre metoder som anropas i följd med namn som tydligt visar vad koden i metoden gör. Stor klass När ett program innehåller en klass med för mycket funktionalitet och ansvar blir det lätt svårt att se vad klassen är till för och hur den utför det. När sådan design används blir ofta klassen en central komponent som länkar samman övriga klasser och sköter kommunikationen däremellan. För att åtgärda detta bör klassen brytas ned i flera klasser som delar in och isolerar den stora klassens alla ansvarsområden. Lång parameter lista Om en metod har många inparametrar så minskar läsbarheten i metoden. Metodens funktion är mer komplex ju fler parametrar den tar in. För att minska antalet parametrar till en metod kan man lägga in dem i ett objekt som innehåller parametrarna och skicka in det objektet istället. Istället för att skapa ett nytt objekt kan man skicka in den anropande klassen till metoden med användning av this, varifrån alla attribut kan läsas. Shotgun Surgery När det görs en modifikation till en klass som påverkar resten av systemet på så sätt att för att ändringen ska fungera måste flera andra klasser ändras för att logiken är utspridd på flera klasser. Anledningen kan vara att man spridit ut logik över flera klasser istället för att låta en klass ha ett eget ansvarsområde. Det är en bra idé att isolera funktionalitet i ett program till enskilda klasser för att undvika att en ändring som genomförs resulterar till att man måste in i flera olika delar av systemet. Spekulativ generalitet Om en klass eller metod är skriven så generellt som möjligt för att utvecklaren vill förbereda och göra det lättare för möjliga kommande ändringar kommer koden innehålla onödiga satser och för komplex kod för uppgiften som koden faktiskt ska lösa. Det är många som tänker Tänk om vi sedan behöver... vilket gör att kodens struktur skrivs för att förutom lösa uppgiften dessutom har potential att med vissa modifikationer få ytterligare funktionalitet. Men enligt XP ska man implementera det enklaste som får koden att fungera, och sedan skriva om koden om nya krav på den faktiskt framkommer. 3.2 Kodkonventioner Code smells innefattar inte kodkonventioner eller att utvecklarna har ett gemensamt vokabulär som gör metod och variabelnamn självförklarande och minskar risken att missförstånd sker mellan utvecklarna. Att utvecklarna har en gemensam kodkonvention är viktigt för projekt som innefattar parallellt arbete i en större 4

8 kodbas. Om alla utvecklare använder sig av samma praxis för att skriva kod så kan en utvecklare i teamet lätt ta upp att jobba med kod som någon annan har skrivit[4]. Eftersom 40-80% av kostnaden att utveckla en programvara går åt till att underhålla koden[5] och att i de flesta fallen så är det inte grundutvecklarna som underhåller koden under hela livstiden [6], så är det viktigt att någon som ska sätta sig in i ny kod och inte behöver lägga tid på att förstå intetsägande variabel och metodnamn eller en struktur på koden som komplicerar snarare än underlättar inlärningen. En kodkonvention kan innefatta namnkonventioner, kommentarer och kodningsstil/strukturellt upplägg. 3.3 Simple design Simple design är ett XP koncept som går ut på att designen är den enklaste möjliga om den uppfyller de kriterier som Kent Beck tar upp i Extreme programming explained: embrace change. De är [7]: 1. Koden klarar alla test skrivna för den. 2. Har ingen duplicerad logik i klassen eller parallella klasshirarkier. 3. Tydligt förmedlar varje aspekt till programmeraren. 4. Har så få klasser och metoder som möjligt. Koden ska vara självförklarande och utgöra en stor del av kommunikationen mellan programmerare som jobbar i den gemensamma koden. I XP så växer designen fram allteftersom mer funktionalitet implementeras och designen som används ska vara den bästa för vad koden gör just då, utan att vara förberedd på framtida ändringar. För att sedan när mer kod tillkommer skrivas om så att alla klasser och metoder uppfyller de fyra kriterierna. 4 Verktyg I vår studie har vi valt att fokusera på 3 verktyg som samtliga använder sig av statisk kodanalys för att hitta problem i javakod som behöver refaktoriseras. De använder sig av tekniker för att identifiera problem inom code smells, kodkonventioner, buggar i koden, onödig kod och nestlade satser. För området simple design finns inget verktyg som identifierar möjliga problem då det är en högst situationsanpassad och subjektiv egenskap. Verktyget PMD arbetar med att finna problem med kod som är komplicerad, död, ineffektiv och duplicerad[8]. Checkstyle används för att kontrollera så att koden rent presentationsmässigt hålls ren. Man kan själv ställa in vilka egenskaper i koden man vill att checkstyle ska rapportera vilket kan användas för att kontrollera att kodkonventionen i koden följs[12]. Findbugs används för att upptäcka programmeringsmissar i koden som tex att ett returvärde inte tas till vara på eller mönster som tyder på eventuella fel eller missförstånd som programmeraren begått. 5

9 4.1 Statisk kodanalys Statisk kodanalys är en form av analys av programvara med en statisk kod som inte körs, gentemot dynamisk testning som används när ett program körs. Koden kan antingen vara källkoden till applikationen, byte kod eller objectkod genererad av programmet. Om buggar sedan hittas i den genererade koden så refereras problem koden till källkoden för att testarna ska kunna se vilken kod som orsakar felet. 4.2 Findbugs Findbugs är ett verktyg som analyserar statisk kod för att identifiera möjliga buggar i program skrivna i Java. Det utvecklades vid University of Maryland för att hitta rena programmeringsmisstag som även funnits i produktionskod[9]. Programmet är skrivet i Java och finns både som fristående program och plugin till Eclipse. Findbugs använder sig av mönster som generellt beskriver hur kod som kan ge upphov till buggar ser ut. Sökandet efter dessa mönster görs inte på källkoden utan på den genererade byte koden. Findbugs kan identifiera ca 300 olika buggar[10], som sedan kopplas till vilken källkod som orsakade buggen och visas upp grafiskt. Av de buggar som findbugs rapporterar kan upp till 50% vara falska positiva [4], men varje projekt skiljer sig åt så man måste först urskilja vilken typ av buggar som är relevanta. 4.3 PMD PMD är ett program som finns som plugin till eclipse, det använder sig av ett set av regler för att analysera java källkod statiskt [8]. Det detekterar då möjliga buggar eller felaktig syntax i koden. Det kan även med hjälp av sin Copy/Paste Detector(CPD) detektera duplicerad kod i projektet. CPD använder sig, i senare versioner av PMD, av Karp-Rabin string matchnings algoritm. Karp-Rabin utnyttjar hash värden för stringar för att snabbt beräkna likhet. Regelsettet som programmet använder är inte låst utan användare av programmet kan både lägga till och ta bort regler själv. De problem som PMD detekterar kommer i 3 olika typer, varningar, fel och information. Varningar och fel har i sin tur en nivåindelning för att ange hur allvarligt problemet är, med en normal nivå och en högre nivå. Förkortningen PMD står inte för något bestämt utan det är upp till användaren att läsa som den vill. 4.4 Checkstyle Checkstyle använder sig av statisk kontroll av java källkod för att kontrollera om den följer en kodkonvention som defineras i dess olika moduler av regler[12]. Som standardinställning kontrollerar det om koden följer Oracles kodkonventioner. Checkstyle letar inte efter buggar i koden utan kontrollerar snarare syntaxen så den är korrekt. Däremot har även detta program stöd för att hitta duplicerad kod. Som plugin till eclipse ger checkstyle antingen information varningar eller fel. 6

10 4.5 Viktiga fel Findbugs upptäckte Medans utvecklarna i teamet jobbade med att skriva kod så kontrollerade vi koden med findbugs. (och flera?) De buggar som inte var aktuella för projektet eller hade en marginell inverkan på koden lät vi vara, men om vi hittade allvarliga buggar så sa vi till teamet. De allvarliga buggar som vi hittade i koden var. Returvärden som inte togs omhand. public String trim(string str){ return str.trim(); } Metoden är avsedd att trimma bort mellanslag före och efter strängen. Men metoden trim() påverkar inte strängen som är ett objekt men en sträng är oföränderlig efter att den skapats. Vilket gör att metoden trim måste returnera ett värde som sen får skrivas till att pekas på av variabeln str. Användning av == för att jämföra strängar istället för.equals if(str1 == str2){ do.something(); } Vid jämförelse av två strängar hittade vi jämförelsen med == istället för.equals vilket inte ger önskad funktionalitet. Vid användning av == jämförs två objekt om de har samma objekt referens men vid användning av strängar vill man jämföra textvärdet de innheåller och därför använder man.equals. 5 Resultat Våra planer att föra in Findbugs, Checkstyle och PMD till teamet för att på så sätt minska antalet buggar i koden la vi på is efter att givit två teammedlemmar som spike att ta reda på vad findbugs gör och hur det kan användas i vårt projekt, och presentera det för gruppen. Presentationen av pluginen fick inte mycket uppmärksamhet då många av medlemmarna säkert tyckte att det var något som skulle ta tid ifrån implementationen av Storys. Efter att vi coacher märkt att det inte användes bestämde oss för att det fanns viktigare saker teamet behövde fokusera på. Vi körde sen själva Findbugs och PMD på repositoriet efter varje commit för att se hur snabbt felen i koden ökade och när vi hittade något så allvarligt som tex returvärden som inte togs omhand så påpekade vi dem till teamet men lät alla mindre varningar vara. Vi har samanställt en graf över hur utvecklingen av varningar har förändrats allteftersom repositoriet uppdaterats med nya versioner. 7

11 8

12 Pikarna på slutet i framförallt findbugs tror vi beror på att teamet inte gjorde någon slutgiltig refaktorisering av projektet när det led mot sitt slut. De som återfinns i grafen med pmd-violations/kloc tror vi beror på merges av större brancher med påföljande refaktoriseringar. I denna graf råder det också stor osäkerhet på alla värden initialt då antalet rader kod är väldigt få men dessa stabiliseras senare och man kan se en smått nedåt trend då teamet blir bättre på att skriva kod. 6 Slutsats Även om verktygen inte mottogs särskilt bra i teamen av varierande orsaker anser vi ändå att dom kan vara användbara. Som coacher var det ett par gånger vi kunde poängtera ut delar av koden som innehöll buggar som programmen upptäckte, dessa var bland annat jämförelse av strängar i java med == i stället för equals metoden. Detta gör att vi gärna rekomenderar i alla fall FindBugs och till viss mån PMD till framtida coacher i liknande projekt för att användas till att få en bra överblick av koden och eventuela problemområden. Vi kan även tänka oss att själva använda programmen i framtida utvecklingsprojekt vi är del av för att hitta problem och refaktoriserings områden, men att för temmedlemmarna på PVG kursen finns det viktigare saker att lära sig inom att arbeta i grupp med programvaruutveckling. Även om de verktyg vi har testat förbättrar den gemensama kodbasen och på så sätt förbättrar utvecklingstakten och förståelse för koden i gruppen genom att koden är mer lättläslig, är det svårt att integrera användandet av verktygen om de ser det som en börda och inte som ett hjälpmedel. 9

13 Om introduktionsdelen i kursen presenterade något eller några av dessa verktyg till teamen redan innan, till exempel under en labb, och förklarade vad nyttan var och på vilket sätt de kan hjälpa utvecklarna så hade de nog varit mer villiga att se det som en del i utvecklingsarbetet. Referenser [1] Beck, K., Embracing change with extreme programming, Computer, vol.32, no.10, pp.70-77, Oct 1999,doi: / [2] Hedin, G.; Bendix, L.; Magnusson, B.;, Introducing software engineering by means of extreme programming, International Conference on Software Engineering, Proceedings. 25th, vol., no., pp , 3-10 May 2003 doi: /ICSE [3] Martin Fowler,Kent Beck, Refactoring: improving the design of existing code,addison-weasly, 1999 [4] Eva Van Emden et. al, Java Quality Assurance by Detecting Code Smells, Ninth Working Conference on Reverse Engineering, Proceedings. [5] Robert L. Glass: Facts and Fallacies of Software Engineering; Addison Wesley, 2003 [6] Coding_Conventions, publicerad 9 Februari 2012, [7] Kent Beck, Extreme programming explained: embrace change, Addison- Weasly, 2000 [8] sourceforge.net, PMD, publicerad 31 Januari 2012, [9] Jeffrey S. Foster, Improving Software Quality with Static Analysis, University of Maryland: College Park, MD, 2007 [10] Ayewah, N. Pugh, W. et. al, Using Static Analysis to Find Bugs, University of Maryland, 2008 [11] findbugs.sourceforge.net, Findbugs Fact sheet, , [12] sourceforge.net, publicerad 5 November 2011, [13] publicerad 24 Januari 2012,

Verktyget FindBugs. Djupstudie i kursen EDA 270 Coachning av programvaruteam. Christofer Bach dt05cb6 Daniel Nilsson dt05dn4. Lunds Tekniska Högskola

Verktyget FindBugs. Djupstudie i kursen EDA 270 Coachning av programvaruteam. Christofer Bach dt05cb6 Daniel Nilsson dt05dn4. Lunds Tekniska Högskola Verktyget FindBugs Djupstudie i kursen EDA 270 Coachning av programvaruteam Christofer Bach dt05cb6 Daniel Nilsson dt05dn4 Lunds Tekniska Högskola 15 feb 08 1. Sammanfattning Denna djupstudie kommer att

Läs mer

Agil programutveckling

Agil programutveckling Agil programutveckling Pontus Evertsson D00, Lunds Tekniska Högskola d00pe@efd.lth.se Anna Jennerheim D00, Lunds Tekniska Högskola d00aj@efd.lth.se 2003-05-15 1 1. Inledning 3 2. Extreme Programming (XP)

Läs mer

Djupstudie Verktyg för att förebygga problem i källkod. Anders Forslund Anders Lund

Djupstudie Verktyg för att förebygga problem i källkod. Anders Forslund Anders Lund Djupstudie Verktyg för att förebygga problem i källkod Anders Forslund (d04afr@student.lth.se) Anders Lund (et05al1@student.lth.se) 2 mars 2010 Sammanfattning Då kodningsstandard ej hålls så blir ofta

Läs mer

12 principer of agile practice (rörlig)

12 principer of agile practice (rörlig) X-treme programming 12 principer of agile practice (rörlig) Ge nöjd kund genom tidig och kontinuerliga leveranser Den viktigaste punkten som betyder att min vill ha kontinuerlig feedback Välkomna sena

Läs mer

extreme Programming refactored - recension och analys av Kent Becks senaste definition av XP

extreme Programming refactored - recension och analys av Kent Becks senaste definition av XP extreme Programming refactored - recension och analys av Kent Becks senaste definition av XP Måns Gunnarsson d01mg@efd.lth.se Sammanfattning Denna djupstudie består av en recension av andra upplagan av

Läs mer

Petter Berglund. Sammanfattning

Petter Berglund. Sammanfattning EDA270 - Coaching av programvaruteam Verktyg för kodanalys Petter Berglund D05, Lunds Tekniska Högskola dt05pb2@student.lth.se 2008-02-10 Sammanfattning Verktyg för kodanalys blir allt vanligare i programvaruutvecklingsprojekt

Läs mer

Linköpings universitet 1

Linköpings universitet 1 Vanliga faser TDP029 Systemutveckling Annika Silvervarg COIN/HCCS/IDA Analys Vad är problemet? Uppgift Vad är det för arbetsuppgifter och hur utförs de? Användarbehov Vad behöver användaren/användarna?

Läs mer

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH F2 XP Extrem Programmering översikt EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH Vad är XP? En metod för hur man utvecklar programvara i grupp i nära samspel

Läs mer

Testdriven utveckling. Teorin bakom testdriven utveckling. Bakgrund. Januari 2009, KTH. Alexander Tarnowski

Testdriven utveckling. Teorin bakom testdriven utveckling. Bakgrund. Januari 2009, KTH. Alexander Tarnowski Testdriven utveckling Januari 2009, KTH Alexander Tarnowski Teorin bakom testdriven utveckling Bakgrund Testdriven utveckling började nämnas kring 1999-2000 av Kent Beck I praktiken implementationen av

Läs mer

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH

F2 XP Extrem Programmering översikt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH F2 XP Extrem Programmering översikt EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Görel Hedin Datavetenskap, LTH Syfte & Mål Ge en helhet av vad XP är Mål & syfte med XP - varför ser metoden

Läs mer

Kritik av Extrem Programmering

Kritik av Extrem Programmering Kritik av Extrem Programmering Markus Borggren d01mbo@efd.lth.se Martin Persson d01mp@efd.lth.se D01, Lunds Tekniska Högskola 15 februari, 2004 Abstract I denna djupstudie kommer vi att försöka, på ett

Läs mer

D J U P S T U D I E I E D A S I M P L E C O D E A N D D E S I G N

D J U P S T U D I E I E D A S I M P L E C O D E A N D D E S I G N D J U P S T U D I E I E D A 2 7 0 S I M P L E C O D E A N D D E S I G N S. Marcus Jacobsson D03, Lunds Tekniska Högskola d03mj@efd.lth.se S. Magnus Weinberg D03, Lunds Tekniska Högskola d03mw@efd.lth.se

Läs mer

Förändringskontroll i XP-team. Love Johansson (d00lj), Joakim Persson (d00jp)

Förändringskontroll i XP-team. Love Johansson (d00lj), Joakim Persson (d00jp) Förändringskontroll i XP-team Love Johansson (d00lj), Joakim Persson (d00jp) 21 februari 2005 Sammanfattning Under sju veckor har vi agerat coacher åt en grupp relativt oerfarna programmerare i en större

Läs mer

Att lära sig av kodanalys

Att lära sig av kodanalys Att lära sig av kodanalys Om att använda kodanalysverktyg i utbildningssyfte tillsammans med XP Daniel Bengtsson, c02db@student.lth.se Mikael Piotrowski, c04mpi@student.lth.se Lunds Tekniska Högskola den

Läs mer

Coaching av programvaruteam EDA270, djupstudie: Praktisk SCM användning i XP-projekt

Coaching av programvaruteam EDA270, djupstudie: Praktisk SCM användning i XP-projekt Coaching av programvaruteam EDA270, djupstudie: Praktisk SCM användning i XP-projekt Martin Malek Anders Hellström Lunds Tekniska Högskola 22 februari 2005 Version 1.0 Sammanfattning Som utgångspunkt för

Läs mer

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH F7 Agila metoder EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH 1 XP - Scrum - Kanban Agila metoder Vad innehåller SCRUM Hur skiljer sig XP och SCRUM KANBAN

Läs mer

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices Mattias Jarheden och Thomas Forsström Sammanfattning Denna djupstudie försöker ge en inblick

Läs mer

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH

F7 Agila metoder. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH F7 Agila metoder EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson, Ulf Asklund Datavetenskap, LTH 1 XP - Scrum - Kanban - FDD Agila metoder: Vad innehåller SCRUM Hur skiljer sig XP och SCRUM?

Läs mer

Scrum + XP samt konsekvensanalys

Scrum + XP samt konsekvensanalys Scrum + XP samt konsekvensanalys Daniel Nimren dt05dn8 Douglas Frisk dt05df1 Dept. of Computer Science, Lunds Tekniska Högskola, Sweden {dt05dn8 dt05df1}@student.lth.se 1 mars 2010 Sammanfattning Denna

Läs mer

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. 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

Läs mer

Scrum + XP = sant. Kristian Björk D06, Lunds Tekniska Högskola dt05kb1@student.lth.se. Frederik Blauenfeldt Jeppsson. dt06fb8@student.lth.

Scrum + XP = sant. Kristian Björk D06, Lunds Tekniska Högskola dt05kb1@student.lth.se. Frederik Blauenfeldt Jeppsson. dt06fb8@student.lth. Scrum + XP = sant Kristian Björk D06, Lunds Tekniska Högskola dt05kb1@student.lth.se Frederik Blauenfeldt Jeppsson D06, Lunds Tekniska Högskola dt06fb8@student.lth.se 2010-03-02 1 Abstract Scrum och XP

Läs mer

I detta avsnitt beskrivs vart parprogrammering appliceras, hur det ska fungera och även i vilket projekt det introduceras i.

I detta avsnitt beskrivs vart parprogrammering appliceras, hur det ska fungera och även i vilket projekt det introduceras i. PARPROGRAMMERING Mikael Möller, dt07mm5@student.lth.se 2011-02-28 Abstrakt Parprogrammering är ett arbetssätt där två programmerare arbetar tillsammans vid en dator med en uppgift. Studien behandlar frågor

Läs mer

Cult of Code Quality

Cult of Code Quality Jakob Schyberg (d00jsc) 2005-02-13 Coaching av Programvaruteam Josef Granqvist (d00jgr) LTH Institutionen för Datavetenskap Cult of Code Quality Vad kan en coach göra? Denna djupstudie handlar om kodkvalitet.

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

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

Läs mer

TDDD26 Individuell projektrapport

TDDD26 Individuell projektrapport TDDD26 Individuell projektrapport Kort beskrivning av projektet Vi hade som projekt att utveckla en digital media servicer som skulle hjälpa filmentusiasten att organisera sitt filmbibliotek. Programmet

Läs mer

F4 Testning och Parprogrammering i XP. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH

F4 Testning och Parprogrammering i XP. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH F4 Testning och Parprogrammering i XP EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH 1 XP:s Deltekniker (Practices) 1. Planering Planeringsspelet Regelbundna releaser Hållbart

Läs mer

Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod

Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod Systemutveckling TDP029 Systemutveckling Annika Silvervarg COIN/HCCS/IDA Systemutveckling kallas processen att ta emot en beställning på ett datorsystem, skriva en strukturerad kravspecifikation på systemet,

Läs mer

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 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 =

Läs mer

Verktyg för statisk kodanalys

Verktyg för statisk kodanalys Verktyg för statisk kodanalys Av: Peter Seimar, adi09pse 4 mars 2013 Att hitta fel, bad smells och brister i en stor kodbas kan vara både svårt och tidsödande. För att hjälpa till med det arbetet nns en

Läs mer

Att införa Extreme Programming genom processförbättring

Att införa Extreme Programming genom processförbättring Att införa Extreme Programming genom processförbättring Johan Thiborg-Ericson Vahagn Baghomian 14-02-28 Sammanfattning Syftet med denna studie är att studera hur agila metoder uppkommer som en naturlig

Läs mer

SCRUM vs. XP en jämförelse mellan två lättviktsmetodiker

SCRUM vs. XP en jämförelse mellan två lättviktsmetodiker SCRUM vs. XP en jämförelse mellan två lättviktsmetodiker Phut Tran D01, Lund Tekniska Högskola d01pt@efd.lth.se 21 februari 2006 Innehållsförteckning ABSTRACT... 3 1 INLEDNING... 4 2 VAD ÄR EN LÄTTVIKTSMETODIK?

Läs mer

Agil projektmetodik Varför och vad är det?

Agil projektmetodik Varför och vad är det? Agil projektmetodik Varför och vad är det? Boris Magnusson Datavetenskap LTH 2016-02-08 Lite större projekt Sträcker sig över tid Involverar många deltagare som behöver arbeta parallellt Planeras - delas

Läs mer

XP vs. Tillverkningsindustrin

XP vs. Tillverkningsindustrin Djupstudie i Coaching av programvaruteam Lunds Tekniska Högskola 2006-02-20 XP vs. Tillverkningsindustrin Hur behandlar man The FIVE dysfunctions of a TEAM? Emil Svärdh D02, Lunds Tekniska Högskola d02es@efd.lth.se

Läs mer

Refaktorisering i ett XP-projekt

Refaktorisering i ett XP-projekt Författare: Erik Norberg, Joakim Puusaari E-post: {d00en, d00jpu@efdlthse Datum: 2004-02-22 Refaktorisering i ett XP-projekt Sammanfattning I denna djupstudie delar vi med oss av våra erfarenheter av refaktoriseringar,

Läs mer

Kodkomplexitet i agil utveckling. Axel Nilsson Svegard, Patrick Fogwall EDA270 - Djupstudie 2 mars 2010

Kodkomplexitet i agil utveckling. Axel Nilsson Svegard, Patrick Fogwall EDA270 - Djupstudie 2 mars 2010 Kodkomplexitet i agil utveckling Axel Nilsson Svegard, Patrick Fogwall EDA270 - Djupstudie 2 mars 2010 Sammanfattning Denna studie avser att undersöka hur uppmätning av kodkomplexitet kan användas för

Läs mer

Nyttomaximering av spikes

Nyttomaximering av spikes Nyttomaximering av spikes Johan Hedin Sånemyr D11, LTH dat11jh1@student.lu.se Victor Shu-Ming Lam D11, LTH dat11vla@student.lu.se 2016-03-07 Sammanfattning Som projektledare av ett team programmerare så

Läs mer

F4 Testning och Parprogrammering i XP EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH

F4 Testning och Parprogrammering i XP EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH F4 Testning och Parprogrammering i XP EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson,Datavetenskap, LTH 1 XP:s Deltekniker (Practices) 1. Planering Planeringsspelet Regelbundna releaser Hållbart

Läs mer

Scrums användning i Extreme Programming projekt. Lunds Tekniska Högskola D07 Lars-Olof Rydgren EDA270 2011-03-01

Scrums användning i Extreme Programming projekt. Lunds Tekniska Högskola D07 Lars-Olof Rydgren EDA270 2011-03-01 Scrums användning i Extreme Programming projekt Lunds Tekniska Högskola D07 Lars-Olof Rydgren EDA270 2011-03-01 1 Sammanfattning I denna djupstudie givet av kursen Coaching i Programvaruutveckling på Lunds

Läs mer

Labb 1: Vad, hur, och varför?

Labb 1: Vad, hur, och varför? Labb 1: Vad, hur, och varför? jonas.kvarnstrom@liu.se 2017 "En sak i taget": Öva grunder innan det blir mer komplicerat Starkt önskemål från studenter: Prova på kontrollstrukturer Labb 1: Intro till grunder

Läs mer

TUTORIAL: KLASSER & OBJEKT

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

Läs mer

XP-projekt: En fördjupning

XP-projekt: En fördjupning XP-projekt: En fördjupning Extreme Programming Martin Karlsson marka@itn.liu.se K7522 011 36 34 63 Fem värden Kommunikation Var öppna Var ärliga Ta konflikter Diskutera Tag beslut Tag ansvar Kräver feedback,

Läs mer

Continuous Integration med Jenkins. Linus Tolke Enea Experts

Continuous Integration med Jenkins. Linus Tolke Enea Experts Continuous Integration med Jenkins Linus Tolke Enea Experts Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem

Läs mer

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDI02 Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Verifikation, Validering och Testning XP Extreme Programming Vad är ett fel? I engelskan

Läs mer

Användarcentrerad systemdesign

Användarcentrerad systemdesign Användarcentrerad systemdesign Föreläsning 11: Agile-processer och ACSD Stefan Blomkvist Avdelningen för MDI/IT, Uppsala Universitet, Stefan.Blomkvist@hci.uu.se www.it.uu.se/edu/course /homepage/acsd/

Läs mer

Metoder. Inledande programmering med C# (1DV402)

Metoder. Inledande programmering med C# (1DV402) Metoder 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 detta verk av

Läs mer

Djupstudie i parprogrammering

Djupstudie i parprogrammering Djupstudie i parprogrammering Abstrakt P. Abrahamsson D05, Lunds Tekniska Högskola dt05pa1@student.lth.se P. Norlander D07, Lunds Tekniska Högskola dt07pn3@student.lth.se 2011-02-25 Denna studie handlar

Läs mer

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson Rapport grupp 4 Software Engineering Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson 2009-10-29 Processer Sprinter Scrum har varit till stor hjälp för oss för att nå våra mål,

Läs mer

Kodanalys med hjälp utav SemmleCode

Kodanalys med hjälp utav SemmleCode Kodanalys med hjälp utav SemmleCode Henrik Andersson, D05 (dt05ha1@student.lth.se) Erik Mossberg, D01 (d01em@student.lth.se) 18 Februari 2008 Sammanfattning Avsikten med denna rapport är att läsaren ska

Läs mer

F9 del B Organisatoriskt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH

F9 del B Organisatoriskt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH F9 del B Organisatoriskt EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH 1 Projektet - moment Projektstartsmöte 6 Iterationer (en per vecka) - 10-12 team - 12-14 personer

Läs mer

Proj-Iteration 5B. Plan för återstående iterationer

Proj-Iteration 5B. Plan för återstående iterationer Proj-Iteration 5B PVG/Coaching Boris Magnusson Datavetenskap LTH PVG/Coach 2009. Proj-Iter5B : 1 Plan för återstående iterationer Förutom att arbeta vidare på stories skall release göras både under iteration

Läs mer

Analysverktyg för Code smells och Test coverage. Djupstudie för Coaching av programvaruteam 2015

Analysverktyg för Code smells och Test coverage. Djupstudie för Coaching av programvaruteam 2015 Analysverktyg för Code smells och Test coverage Djupstudie för Coaching av programvaruteam 2015 Lund, 6/3 2015 Christian Kuijer Andersen Rickard Johansson dat11can@student.lu.se dat11rjo@student.lu.se

Läs mer

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

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

Läs mer

TDDD78 Objektorientering: Lagring och livstid

TDDD78 Objektorientering: Lagring och livstid jonas.kvarnstrom@liu.se 2017 TDDD78 Objektorientering: Lagring och livstid Tre sorters variabel (1): Lokal 3 Deklareras i en metod Lokal variabel Varje anrop får sin egen "kopia": Två anrop till foo()

Läs mer

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions Testdriven utveckling Magnus Jonsson Siemens Medical Solutions 2 Soarian Stort projekt, ca 400 personer i projektet Distribuerad utveckling i USA, Indien och Sverige Web baserat lösning med admin client

Läs mer

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

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

Läs mer

Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel.

Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel. Page 1 (5) Hemuppgift 1DV404 150115-150118 Deluppgift 1 Processmodeller a) (4p) Alla mjukvaruutvecklare följer någon form av utvecklingsprocess i sitt arbete. Diskutera vad organisationer brukar ange som

Läs mer

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

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

Läs mer

Djupstudie Collective Documentation Ownerhip - Wiki. Jakob Nilsson-Ehle

Djupstudie Collective Documentation Ownerhip - Wiki. Jakob Nilsson-Ehle Djupstudie Collective Documentation Ownerhip - Wiki Jakob Nilsson-Ehle (d02jn@efd.lth.se) 1 1 Innehåll 1 Inledning............................... 3 1.1 Vad är en wiki?............................ 3 1.1.1

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna

Läs mer

Labrapport över Rumbokningssytemet Grupp:1

Labrapport över Rumbokningssytemet Grupp:1 Fakulteten för ekonomi, kommunikation, IT & data Labrapport över Rumbokningssytemet Grupp:1 Kurskod: DVGC18 Kursnamn: Software Engineering Inlämningsdatum: 2009 10 28 Scrummaster: Martin Blom Projektmedlemmar:

Läs mer

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten UTVECKLINGSVERKTYG Praktiska tips för PUM-projekten TEKNIKER I PROJEKTEN ios 2 C#.NET 1 Java (inkl Android) 6 Webb (HMTL/JS) 4 En genomskumning av de tilldelade projektförslagen ger ovanstående uppfattning

Läs mer

F6 Arkitektur, Planering

F6 Arkitektur, Planering F6 Arkitektur, Planering EDA260 Programvaruutveckling i grupp Projekt Ulf Asklund, Boris Magnusson Datavetenskap, LTH PVG, 2013 F6-1 Mjukvaruarkitektur? Enkel Design och Refaktorisering handlar i första

Läs mer

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

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

Läs mer

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn. Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E Föreläsning 4: Villkor och rekursion Konverterar mellan de grundläggande typerna: >>> int("") >>> int(.999) >>> float().0

Läs mer

Objektorientering: Lagring och livstid

Objektorientering: Lagring och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop

Läs mer

GeoGebra in a School Development Project Mathematics Education as a Learning System

GeoGebra in a School Development Project Mathematics Education as a Learning System Karlstad GeoGebra in a School Development Project Mathematics Education as a Learning System Dé dag van GeoGebra Zaterdag 19 oktober 2013 GeoGebra Instituut Vlaanderen, Brussell 1 2 GeoGebra in a School

Läs mer

PROGRAMMERINGSTEKNIK TIN212

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

Läs mer

En studie om parprogrammering i praktiken

En studie om parprogrammering i praktiken En studie om parprogrammering i praktiken Mia Nyström Karin Wanhainen Johan Rix 29 maj 2002 Sammanfattning Parprogrammering är en av de mest omdiskuterade grundstenarna i Extreme Programming (XP). All

Läs mer

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language Ett modelleringsspråk : Exempel Fönster Klassnamn Unified Modelling Language Av Booch, Jacobson, Rumbaugh Exempel: En klass position storlek Attribut (instansvariaböe) Resultatet av en sammanslagning av

Läs mer

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod

Läs mer

TDP023 Projekt: Agil systemutveckling

TDP023 Projekt: Agil systemutveckling TDP023 Projekt: Agil systemutveckling Johan Åberg johan.aberg@liu.se Tre moment Projekt 8hp Marknadsföring av produkt 2hp Kopplat till projektarbetet Individuell rapport 2hp Kopplat till projektarbetet

Läs mer

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

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

Läs mer

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

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

Läs mer

Att införa XP. Daniel Nilsson och Mattias Nordahl Lunds Tekniska Högskola. 27 februari Abstrakt

Att införa XP. Daniel Nilsson och Mattias Nordahl Lunds Tekniska Högskola. 27 februari Abstrakt Att införa XP Daniel Nilsson och Mattias Nordahl Lunds Tekniska Högskola 27 februari 2012 Abstrakt Genom analys och sammanfattning av tidigare publikationer samt diskussion och reflektion av en högskolekurs

Läs mer

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning Översikt Uttryck i tilldelningssatser Typer och typomvandling Klasser Metoder Konstanter Eclipse-tips MERA JAVA OCH ECLIPSE Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 public class

Läs mer

Agile-metoder, XP och ACSD

Agile-metoder, XP och ACSD Användarcentrerad systemdesign. Föreläsning 12 Agile-metoder, XP och ACSD Stefan Blomkvist MDI / IT, stefan.blomkvist@it.uu.se & Profdoc AB www.profdoc.se www.it.uu.se/edu/course /homepage/acsd/s04 XP

Läs mer

Objektorienterad programmering

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

Läs mer

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

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

Läs mer

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

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

Läs mer

Analysverktyg för kod och test

Analysverktyg för kod och test Analysverktyg för kod och test EDA270 Coaching Emil Einarsson dt07ee3 2012-02-27 Abstract Undertiden som man utvecklar programvara vill man på ett eller annat sätt kunna säga på ett så enkelt sätt som

Läs mer

Programmering = modellering

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

Läs mer

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering! Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering! Gränssnitt igen För att kunna ändra på olika delar av programmet utan att andra delar

Läs mer

2010-12-27 SCRUM. Vattenfallsmodellen. Analys. Design. Kod. Test. Rational Unified Process Agile. Kallas också linjär sekventiell modell.

2010-12-27 SCRUM. Vattenfallsmodellen. Analys. Design. Kod. Test. Rational Unified Process Agile. Kallas också linjär sekventiell modell. Vattenfallsmodellen SCRUM Analys Kallas också linjär sekventiell modell Introduktion Design Kod Test Rational Unified Process Agile DSDM Adaptive Software Development Crystal Feature-Driven Development

Läs mer

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Verktyg och Utvecklingsmiljö. Jochim von Hacht Verktyg och Utvecklingsmiljö Jochim von Hacht Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg Editorer Kompilatorer Avlusare (debugger) Versionhantering (kommer i projektkurs)

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

Note to programmers. Embrace Change! Extreme Programming? Fyra basaktiviteter. 12 Practices / sedvanor. Vad är Extreme Programming

Note to programmers. Embrace Change! Extreme Programming? Fyra basaktiviteter. 12 Practices / sedvanor. Vad är Extreme Programming Embrace Change! Note to programmers Extreme programming Even programmers can be whole people in the real world. Extreme Programming is an opportunity to test yourself, to be yourself, to realize that maybe

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik I 2011-03-17 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift

Läs mer

Spårning av krav i agila projekt

Spårning av krav i agila projekt Spårning av krav i agila projekt Jonas Andersson D04, Lunds Tekniska Högskola d04jad@student.lth.se Jonas Andersson D04, Lunds Tekniska Högskola d04jan@student.lth.se 2007-02-20 Abstract Denna rapport

Läs mer

Djupstudie - Datorbaserade system för tracking

Djupstudie - Datorbaserade system för tracking Djupstudie - Datorbaserade system för tracking Torbjörn Lundberg, dt05tl3 Joakim Svensson, dt05js8 18 februari 2008 Sammanfattning Tracking är ett hjälpmedel inom projekt för att hålla reda på information

Läs mer

Therese Hansson & Magnus Jonsson. Motivationsfaktorer - Test inom Agila utvecklingsprojekt

Therese Hansson & Magnus Jonsson. Motivationsfaktorer - Test inom Agila utvecklingsprojekt Motivationsfaktorer - Test inom Agila utvecklingsprojekt Magnus Jonsson & Therese Hansson Flerårig erfarenhet från ett globalt utvecklingsprojekt där vi införde Agile & Scrum metodik i hela organisationen

Läs mer

Mälardalens högskola

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

Läs mer

Användningscentrering i agila utvecklingsprojekt. johanna.sarna@valtech.com Valtech

Användningscentrering i agila utvecklingsprojekt. johanna.sarna@valtech.com Valtech Användningscentrering i agila utvecklingsprojekt johanna.sarna@valtech.com Valtech Vem är jag? Johanna Särnå Jobbar på Valtech sedan 3 år tillbaka Jobbar där med användbarhet och projektledning Certifierad

Läs mer

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

Proj-Iteration1. Arkitektur alt. 1

Proj-Iteration1. Arkitektur alt. 1 Proj-Iteration1 PVG/Coaching Boris Magnusson Datavetenskap LTH Proj-Iter1-1 Registrering Registrering Arkitektur alt. 1 Personuppgifter Starttid Sorterare Måltid Efterbehandling Resultat Tre program som

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Föreläsning 23. Tobias Wrigstad. Refaktorering

Föreläsning 23. Tobias Wrigstad. Refaktorering Föreläsning 23 Tobias Wrigstad Refaktorering Traditionell syn på systemutveckling Analys & Design Implementation Testning (V&V) Den s.k. vattenfallsmodellen Diskreta steg som bildar en pipeline varje steg

Läs mer

Att effektivt strukturera, utföra och utvärdera spikes

Att effektivt strukturera, utföra och utvärdera spikes Att effektivt strukturera, utföra och utvärdera spikes Oscar Rydh - psy13ory@student.lu.se, Axel Rosén - mas11ar1@student.lu.se, and Joel Klint - dat13jkl@student.lu.se Lunds Tekniska Högskola Table of

Läs mer

GIT som alternativ till CVS/SVN i agila utvecklingsmiljöer

GIT som alternativ till CVS/SVN i agila utvecklingsmiljöer 1 GIT som alternativ till CVS/SVN i agila utvecklingsmiljöer Kristofer Jacobson, Patrick Ivarsson Abstrakt En studie om versionshanteringssystemet Git och om möjligheten att använda det som alternativ

Läs mer

Projektuppgift.

Projektuppgift. Projekt Projektuppgift Designa och implementera ett webbaserat gränssnitt för att söka information i en befintlig databas. Webssidan ska vara komplett med navigering, överblick, sökning och strukturerad

Läs mer