Göm menyn

TDDI02 Programmeringsprojekt

Kursinformation


Kursmål

Ett viktigt mål med kursen består i att du ska arbeta i projektform. Du ska konstruera ett programsystem i samarbete med flera andra personer. I kursen används grupper om 4 personer. Detta ställer lite större krav på planering, kommunikation, dokumentation och arbetsfördelning än vad enskilt arbete, eller arbete i par innebär. Det är dock fortfarande ett ett stort glapp upp till de arbetsrutiner som krävs för att en större projektgrupp om 10 eller 20 personer skall fungera effektivt. Huruvida din grupps arbetssätt skulle fungera i lite större skala är något ni kan fundera på i relektionsdokumentet.

För att få en introduktion till vad som krävs av ett större projekt skall du producera några av de dokument som en god arbetsprocess kräver. Förhoppnigsvis kommer du - om inte omedelbart - tids nog att inse vikten av sådana dokument. Det ingår även att muntligt presentera dina konstruktioner då detta i många lägen är ett effektivare sätt att introducera en konstruktion än att dela ut ett dokument.

I samband med ditt projekt är det också meningen att du och din grupp ska få anledning att själv bygga och hantera program av lite större volym än du ni gjort i tidigare kurser. I termin 4 kommer ni stöta på och arbeta i ett ännu större programvarusystem (Pintos). Lite vana att strukturera och navigera bland en större mängd kod är bra att skaffa sig.

Genom erfarenheter av det egna arbetet och via föreläsningar och texter är ett syfte dessutom att du ska också lära dig lite grann om vad Software Engineering innebär - vad programutveckling 'på allvar' egentligen omfattar.

Organisation

Inledande föreläsningar
ägnas åt en kort översikt av området Software Engineering (SE) och av projektarbetsformen.
En hemtentamen
som löper över några dagar, då det är tänkt att du ska söka reda på och redovisa lite 'fakta' som relaterar till kursens mål.
Industriell systemutveckling i teori och praktik
En gästföreläsning i mitten av kursen. IDAs professor i SE, Kristian Sandahl, en av dem som har erfarenheter från industrin, föreläser då om hur det 'ser ut i verkligheten'. Rekommenderas varmt!
Eventuellt: Make, svn/git, ssh, trac, redmine
Vi skall försöka få till en gästföreläsning om några verktyg som blir oumbärliga i större projekt.
Projektarbete
Du ska få känna på hur det är att i samarbete med andra själva ta ansvar att planera och driva projekt. Handledaren bistår med tips och råd under hela projektet. Utnyttja denna. Uppstår konflikter i projektgruppen ingår det att reda ut dessa på ett proffessionellt sätt.
Dokumentation
Varje grupp skall producera och redovisa några dokument typiska för mjukvaruprojket.
Muntlig presentation
Under ett seminarium kommer varje grupp att få göra en muntlig presentation av sin design. Avsikten med dessa presentationer är att du ska få prova på ett viktigt moment i din blivande yrkesutövning - att på ett proffessionellt sätt presentera din konstruktion för yrkeskollegor (och/eller chefer!). Det kan ju också bli ett tillfälle när du får 'bättre' idéer, även om du redan fattat dina beslut! Du kan utgå från antagandet att det är kollegor du presenterar för, fast dessa är totalt oinsatta i just ditt projekt.
Granskning
Du kommer få granska hur en annan grupp löst de problem de ställts inför i sitt projekt. Detta ger tillfälle testa om deras dokumentation är bra, samt ger idér och insikt i vad som krävs för en fullgod dokumentation. Du får även övning i att ge dem beröm för saker de gjort bra, samt att på ett fint sätt ge konstruktiv kritik och framföra alternativa lösningar.
Demonstration av programprodukt
I slutet av kursen presenteras den slutliga programprodukten. Detta tillfälle ska betraktas som 'leveransen', när ett slutgiltigt fungerande system visas upp för den blivande användaren eller för tilltänkta köpare. Då ska det vara bra!

Var, när och hur de olika momenten ovan äger rum framgår på andra delar av hemsida, och du ska naturligtvis rådgöra med din handledare för ytterligare tips och råd.

En anmärkning beträffande begreppet deadline

Med begreppet deadline för redovisning av olika slags dokument och liknande i denna kurs' projekt avses den tidpunkt då dokumentet i fråga accepteras som godkänt av den person som har mandat att göra så (handledare, oftast). Det är alltså inte det klockslag du lämnar in som avgör. Detta synsätt rimmar väl med rutinerna för utvecklingsarbete bedrivet i projektform överhuvudtaget. 'Ute i verkligheten' duger det inte att leverera in en första version full av fel när något skall vara klart, det gäller att leverera korrekt, felfritt och i tid.

Detta för nu med sig att

  • du måste informera dig om hur lång tid i förväg dokumentet i fråga måste vara handledaren tillhanda
  • du måste vara säker på att inget annat än 'små detaljer' kvarstår inför sista granskningstillfället (och helst inga såna heller!)
  • du alltså behöver handledarens feedback på din aktuella version redan tidigt - och kanske flera gånger!

Missade deadlines

Det går bra att missa en deadline. Det går bra att missa en andra deadline. Missar gruppen dock en tredje deadline får den gruppen en tråkig extrauppgift: Att i slutet av projektet skriva en rapport hur den färdiga programvaran testats, och över resultatet av testningen. Det ingår då att göra tillräcklig testning för att ha underlag för rapporten.

Den som inte tycker om straff kan vända resonemanget till en belöning: Testning och testrapport ingår att göra för alla, med de som håller alla deadlines slipper.

Kursens omfattning

Kursen sträcker sig över hela höstterminen. Den innehåller, enligt plan,

  • 8 timmar föreläsning.
  • 2 timmar lektion (seminarium).
  • Några schemalagda PULtimmar att använda efter eget gottfinnande. I övrigt får lediga PUL användas efter behov och när det passar.
  • Handledning vid tider efter överenskommelse.

Det kan vara bra att känna till hur mycket tid du förväntas lägga på projektet. Detta för att gruppen skall kunna göra en bra planering och kunna boka upp tillräckligt med tider där var och en arbetar. Kursen är 6hp, vilket motsvarar 160h arbetsinsats (4 heltidsveckor). Om vi räknar med att 40h går bort i form av hemtenta och föreläsningar återstår 120h till projektet. Eftersom en projektgrupp är 4 personer innebär det att varje projekt omfattar 480 mantimmars arbete. Det motsvarar en fjärdedel av årsarbetstiden för en heltidsarbetande.

Kursmaterial

Tidigare år har följande kursbok rekommenderats:

  • Software Engineering for Students - A Programming Approach av D.Bell, 4th ed., Addison-Wesley 2005 (SLUTSÅLD)

Till stor sorg och olycka är ovanstående bok dock slutsåld och går förmodligen inte att få tag på om du inte hittar den begagnat. Bok är dock inte obligatorisk utan enbart en rekommendation. Många av de svar du behöver söka, för hemtentan eller för projektet, finns visserligen i den boken, men de finns på många andra håll också! Du är fri att leta information var du vill!

En alternativ men inte lika djuplodande bok är:

  • Introduktion till programvaruutveckling av Claes Wohlin, Upplaga 1, Studentlitteratur 2005

Vi återkommer med ytterligare resurser. Här återfinns början på en än så länge icke-kvalitetsgranskad lista med webresurser relaterade till ämnesområdet:

En högt rekommenderad bok som tar upp mycket relevant om konstruktion av mjukvara, varav flera delar är relevanta för kursen:

  • Code complete av Steve McConnell, Second Edition, Microsoft Press

Kursen ger betyg G

Betyget sätts individuellt. I normalfallet får alla i en projektgrupp med alla moment godkända betyg. Dock kan t.ex. någon i gruppen sakna godkänt på hemtentan, vilket då leder till att den måste lösas innan betyg kan sättas. Det kan i sällsynta fall ävan vara så att handledaren i något stadie upptäcker att någon i projektgruppen inte tar sitt ansvar, och därmed inte kvalificerar sig för godkänt. I bästa fall upptäcks sådant i tid för att rädda situationen. Ni gör alltså alla i gruppen en stor tjänst genom att på ett tidigt stadium ta upp missförhållanden eller problem med ojämn arbetsbelastning med er handledare.


Sidansvarig: Klas Arvidsson
Senast uppdaterad: 2012-09-19