Djupstudie Code smells / Refaktorisering. Martin Larsson dt08ml5 Stefan Johansson, dt08sj7
|
|
- Tobias Martinsson
- för 7 år sedan
- Visningar:
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 15 feb 08 1. Sammanfattning Denna djupstudie kommer att
Läs merAgil 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 merDjupstudie 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 mer12 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 merextreme 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 merPetter 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 merLinkö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 merF2 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 merTestdriven 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 merF2 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 merKritik 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 merD 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 merFö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 merAtt 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 merCoaching 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 merF7 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 merA 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 merF7 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 merScrum + 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 merTentamen. 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 merScrum + 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 merI 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 merCult 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 merStatic 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 merTDDD26 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 merF4 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 merLinkö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 merStatic 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 merVerktyg 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 merAtt 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 merSCRUM 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 merAgil 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 merXP 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 merRefaktorisering 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 merKodkomplexitet 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 merNyttomaximering 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 merF4 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 merScrums 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 merLabb 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 merTUTORIAL: 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 merXP-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 merContinuous 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 merTDDI02. 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 merAnvä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 merMetoder. 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 merDjupstudie 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 merKristoffer 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 merKodanalys 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 merF9 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 merProj-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 merAnalysverktyg 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 merMjukvarudesign. 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 merTDDD78 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 merTestdriven 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 merConfiguration 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 merDeluppgift 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 merArv. 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 merDjupstudie 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 merTentamen. 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 merLabrapport ö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 merUTVECKLINGSVERKTYG. 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 merF6 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 merVerktyg 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 merNå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 merObjektorientering: 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 merGeoGebra 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 merPROGRAMMERINGSTEKNIK 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 merEn 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 merUML: 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 merF8 - 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 merTDP023 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 merFö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 merDesignmö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 merAtt 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 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 merAgile-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 merObjektorienterad 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 mer725G61 - 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 merSLUTRAPPORT: 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 merAnalysverktyg 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 merProgrammering = 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! Gränssnitt igen För att kunna ändra på olika delar av programmet utan att andra delar
Läs mer2010-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 merVerktyg 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 merObjektorienterad 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 merNote 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 merDet ä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 merSpå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 merDjupstudie - 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 merTherese 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 merMä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 merAnvä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 merFö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 merProj-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 merLite 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 merFö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 merAtt 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 merGIT 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 merProjektuppgift.
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