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 syftet med användningen av mjukvaruprocesser. Observera att det kan vara flera syften. Diskutera olika anledningar exempelvis, samordning av arbete, upprepbara resultat, likhet i kvalité på producerade system mm. b) (3p) Beskriv och exemplifiera tre typer av huvudkomponenter som ingår i alla mjukvaruprocesser och som utgör grunden för processbeskrivningar. I processbeskrivningar finns alltid roller, artefakter och aktiviteter. Det räcker inte att räkna upp specifika aktiviteter från sepcifika processer, ex. krav, design, implementation utan det handlar om processbeskrivningar generellt. c) (3p) Ge exempel på två mjukvaruprocessmodeller och diskutera skillnader och likheter utifrån de tre huvudkomponenterna. Här kan man exempelvis välja SCRUM och OpenUP och då se att antalet roller, artefakter och aktiviteter i SCRUM är färre än i OpenUP. Likheterna ligger i att båda är iterativa och inkrementella. Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel. Funktionella krav, exempelvis man skall kunna skriva ut en rapport, Kvalitetskrav/Icke-funktionella krav, exempelvis systemets skall kunna hantera 2000 samtidiga användare. Linnaeus University Department of Computer Science Dr. Jesper Andersson, Head of Department SE-351 95 Växjö Visiting address B-House, Campus Växjö Telephone +46 470 708460 Email jesper.andersson@lnu.se Lnu.se
Page 2 (5) Beskriv med hjälp av ett exempel hur man beskriver funktionella krav med hjälp av scenarier och användningsfall (use cases). Här är det viktigt att ni visar på skillnaden mellan scenarier, som är specifika och användningsfall som försöker fånga många scenarier i en beskrivning. Man använder scenarier för att fånga användares syn på funktionaliteten i systemet. Därefter analyseras scenarierna och man skapar användningsfall med olika flöden som representerar scenarierna. c) (4p) Användningsfallsmodellering använder sig av olika flöden. Diskutera, exemplifiera och jämför de tre flödestyperna. Flöden, primärflöde, alternativ, exceptionella/undantag. Primärflödet är ett standard flöde som representeras flest scenarier som uppfyller den funktionalitet som beskrivs i användningsfallet. Alternativa flöden visar på flöden som tar en något annorlunda väg men slutar i att den efterfrågade funktionaliteten uppfylls. Exceptionella flöden är flöden som avviker från det normala, exempelvis att något går fel eller att ett scenario avbryts. Deluppgift 3 Testning a) (4p) Beskriv översiktligt hur man planerar sitt testprojekt. Vilka olika testtyper ingår, vilka aktiviteter ingår, etc. Vad som är viktigt är att man beskriver hur man bryter ned testuppgiften. Tester genomförs ju med olika syften (objective) på olika testobjekt i olika faser. Planeringen går ut på att identifiera vilken typ av tester som skall utföras (objective) på vilka typer av testobjekt. Dessutom måste man bestämma när testerna skall genomföras och av vem. Beroende på vilken typ av syfte och objekt får man välja testteknik. I det här läget har man svarat på alla planeringsfrågor, vad, vem, varför, när och hur. b) (2p) Beskriv och exemplifiera hur en testsvit byggs upp. Vilka delar ingår och vilket syfte har de. Utgå från xunit-arkitekturen.
Page 3 (5) För beskrivningen lånar jag en en bild från xunit-boken som visar på de olika delar som utgör arkitekturen. Vad vi kan se är att centralt är Test som kopplas samman med TestResult där test resultaten samlas. Dessutom finns en TestRunner som kan aropa (exekvera) tester. Ett test anropar exempelvis en metod och jämför sedan det faktiska resultatet med ett förväntat resultat. Vidare kan Test specialiseras (ärvas) av TestCase. TestCase innehåller typiskt flera testmetoder och en TestFixture. En TestFixture används för att sätta upp, återställa och ta bort testomgivningen som används i ett TestCase. Till sist har vi då TestSuite som också specialiserar Test men är en samling av flera Test. Arvet gör att en TestSuite kan innehålla flera TestCase och tillhörande TestFixture. c) (4p) Ge exempel på två olika täckningskriterier för testning och illustrera dem med ett exempel. Vilket syfte har dessa kriterier och när och hur används de? Exempel på täckningskriterier är statement, branch, multi-condition och path. Välj en (väljs path måste ni föklara att den inte alltid fungerar i praktiken och varför det är så). Annars kan ni ta en snutt kod och eventuellt generera en CFG och diskutera olika täckningsgrader som uppstår med givna testfall. Deluppgift 4 Planering a) (3p) Beskriv och exemplifiera hur man planerar i en iterativ utvecklingsprocess. I en iterativ process planerar man i två nivåer långsiktigt och mer kortsiktigt. Den långsiktiga planeringen syftar till att identifiera iterationer och iterationsmål. Den kortsiktiga är mycket mer detaljerad avseende aktiviteter som behövs för att uppfylla
Page 4 (5) iterationsmålen. I slutet av varje iteration planeras projektet d.v.s. både den långsiktiga planeringen gås igenom och eventuell revideras och kommande iteration planeras utifrån mål och nuvarande läge. Osäkerhet (uncertainty) anges som den huvudsakliga anledningen till att det är svårt att planera. Diskutera kortfattat hur riskhantering fungerar i ett projekt. Ge två konkreta exempel på riskhantering i samband med projektplanering som stöds av en utvecklingsprocess. Riskhantering handlar om ett förebyggande arbete där man på olika sätt kan identifiera osäkerheter (t.ex. brist på information) som kan leda till risker i projektet. Genom att identifiera osäkerheter och risker kopplade till dessa kan man planera in aktiviteter/roller/artefakter i projektet som syftar till att minimera eller helt ta bort riskerna i projektet. Två konkreta exempel på riskhantering i planeringsprocessen är iterativ utveckling som ger oss bra möjlighet att förändra planeringen allt eftersom vi förstår vad vi förväntas göra och hur vi kan uppnå detta. Ett annat exempel är inkrementell utveckling där vi kan visa kunder vad vi gjort och få deras återkoppling. Det reducerar osäkerhet/risker kopplat till krav och hur framför allt hur vi uppfattat kundkraven. c) (3p) I SCRUM används en planering i två steg. Beskriv och exemplifiera stegen. SCRUM planerar i två steg i sitt Sprint Planning meeting, först bestämmer teamet omfattningen på Sprinten genom att exempelvis bestämma vilka user stories man kommer klara av i sprinten. I denna planering finns även SCRUM mastern och Product Owner med. Därefter fortsätter Teamet och tillsammans med SCRUM mastern planeras vilka aktiviteter som måste genomföras för att uppfylla målet med sprinten. Detta är en mer detaljerad planering. Deluppgift 5 Agila processer a) (6p) Beskriv en så kallad sprint i SCRUM. Vad händer under en sprint? Vilka deltar? Vad är resultatet av en sprint?
Page 5 (5) I den här bilden finns artefakterna i SCRUM och någon aktivitet. Det som saknas är Sprint Planning, Sprint Review och Sprint Retrospecitive aktiviteterna. Kortfattat kan man beskriva SCRUM som en process där En Product Owner ansvarar för en Product Backlog som innehåller prioriterade beskrivningar av funktionalitet som skall finnas med i produkten. I planeringen inför en sprint skapar teamet en Sprint Backlog som dels innehåller målsättningen med sprinten och vilka aktiviteter som teamet skall gå igenom för att uppnå målet. Därefter går Sprinten igång. Varje dag har man ett kort möte (Daily SCRUM) var syfte är att korrdinera och eventuellt modifiera Sprint Backlog så att man ser återstående tid för att avsluta sprinten. I slutet av sprinten demonstreras produktinkrementet som teamet uppnått. Dessutom kan teamet genomföra ett retrospektiv där de reflekterar på hur de arbetat och diskuterar hur det kan förbättras. I kursen har vi diskuterat SCRUM och extreme Programming (XP). XP beskriver ett antal så kallade engineering practices. Välj två av dessa och diskutera hur de kan användas i SCRUM. I SCRUM kan vi se att vi arbetar med iterativ utveckling och små releaser detta är mer agila principer. Exempel på engineering practices kan vara parprogrammering där en driver ansvarar för att kodningen blir korrekt och en navigator ansvarar för att koden passar in i helheten. Andra exempel är test-driven utveckling, kontinuerlig integrering