PROGRAMVARUUTVECKLING - INDIVIDUELL PROCESSFÖRBÄTTRINGETS680
The Personal Software Process

Poäng: 6.0 Betygskala: TH Obligatorisk för: PVH2 Kursansvarig: Martin Höst Förkunskapskrav: Programmering med Processuppföljning (EDA680) Rekomenderade förkunskaper: Matematisk Statistik (FMS601) Prestationsbedömning: Projektuppgifter. Webbsida: http://www.telecom.lth.se Övrigt: Sammanfattning av projektrapport skall skrivas på engelska (Abstract). Obligatoriska moment: Övningar och projektuppgifter.

Mål:
Kunskapsmål:
Kursen syftar till att ge en inblick i användningen av processer i utveckling av programvara samt hur utförandet kan predikteras, mätas, analyseras och förbättras.

Färdighetsmål:
Studenten ska efter avslutad kurs kunna definiera en utvecklingsprocess samt kunna definiera mätningar på både processen och produkten. Vidare ska studenten kunna samla in data, analysera och förbättra processen utifrån denna data. Studenten ska också kunna följa en definerad utvecklingsprocess.

Attitydmål:
Studenten ska förstå sambanden mellan utvecklingsprocessen och programmets kvalité. Vidare ska studenten förstå att utvecklingsprocessen ligger till grund för både projektstyrning och samarbete i storskalig programvaruutveckling. Studenten ska dessutom vara medveten om att förbättringsarbete grundar sig på mätningar och analys av data.

Innehåll:
Syftet med kursen är att studenterna ska lära sig att utveckla programvara på ett systematiskt sätt. Normalt försöker man skala upp programmering till större projekt, men denna kurs gör det omvända. Metoder och tekniker som behövs för stora programvaruprojekt skalas ned till att passa den enskilda individen. Detta betyder att studenterna via ett antal programmeringsuppgifter successivt lär sig planering av programvaruutveckling, t.ex. genom uppskattning av storlek på program och skattning av arbetstid. Vidare lär sig studenten att mäta sin egen prestation, genomföra granskningar och att hantera programvarukvalitet.

Kursen baseras på en bok som rönt mycket stort intresse inom programvaruområdet, där man tror att detta angreppssätt kan vara en väg att komma tillrätta med de problem som råder vid utveckling av stora programvarusystem. Målet är att de metoder och tekniker som man lär sig tillämpa som enskild individ skall kunna tillämpas av medlemmarna i stora programvaruprojekt och därmed åstadkomma bättre kontroll och predikterbarhet på programvaruutvecklingen. Det sistnämnda betyder att man skall kunna genomföra projekt inom en given tidsram och till en given kostnad samt med förutsägbar kvalitet.

Projektuppgifter:
Projektarbetet genomförs via 10 programmeringsuppgifter, där man successivt förändrar och förbättrar utvecklingsprocessen, dvs de metoder och tekniker man använder för att utveckla programvara. Den första uppgiften genomförs med en ganska enkel utvecklingsprocess som därefter kompletteras med metoder för skattning av programvarans storlek, metoder för planering av sitt arbete (i termer av arbetstid och ledtid) och granskningar. Mätningar och protokoll från arbetet produceras successivt och målet är att man via de tio övningarna skall uppleva att man förbättrar sig och utvecklar bättre programvara efter den tionde övningen än man gjorde initialt. Återanvändning och modifiering av tidigare program uppmuntras inom ramen för kursen, dvs programmeringsövningarna följer en utvecklingslinje och dessutom används de utvecklade programmen för att t.ex. planera kommande övningar. De 10 programmeringsuppgifterna kompletteras med att man skriver 5 rapporter angående bland annat kodningsstandard och analys av eget arbete.

Litteratur:
Watts S. Humphrey: A Discipline for Software Engineering, Addison-Wesley, ISBN 0-201-54610-8, 1995.