Göm menyn

TDDI02 Programmeringsprojekt

Kursinformation


Kursmål

Ett viktigt mål med kursen är att ni ska arbeta i projektform. Ni ska konstruera ett programsystem i samarbete med flera andra personer. I kursen används grupper om 4 personer. Detta ställer större krav på planering, kommunikation, dokumentation och arbetsfördelning än vad enskilt arbete, eller arbete i par gör. Det är dock fortfarande 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 er grupps arbetssätt skulle fungera i större skala är något ni kan fundera på i reflektionsdokumentet.

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

I samband med ert projekt är det också meningen att era grupper ska få anledning att själva bygga och hantera program av lite större volym än vad 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 det också meningen att ni ska lära er lite grann om vad Software Engineering innebär - vad programutveckling 'på allvar' egentligen innebär.

Organisation

Inledande föreläsningar
Ägnas åt en kort översikt av området Software Engineering (SE) och av projektarbetsformen.
En hemtentamen
Uppdelad i 3 delar sträcker sig denna över hela kursen, med inlämningsdeadline lite här och där (se schema). Här ges ni möjlighet att söka reda på och redovisa kunskap som relaterar till kursens mål.
Lektion: OOA/OOD
En övning i hur man från en systembeskrivning på ett strukturerat sätt resonerar sig fram till de objekt och klasser som behövs, och hur de skulle kunna vara designade.
Gästföreläsning: Industriell systemutveckling i teori och praktik
Kristian Sandahl, IDAs professor i SE, en man med mycket erfarenheter från industrin föreläser här om hur det 'ser ut i verkligheten'.
Gästföreläsning inom etik
Elin Palm föreläser om etik inom software engineering. Efter detta kommer även diskussioner i mindre grupper att hållas i seminarieform.
Verktygsföreläsning: Make, Git samt andra verktyg
En föreläsning om några verktyg som blir oumbärliga i större projekt.
Projektarbete
Ni ska få känna på hur det är att planera och driva projekt som självständig grupp. 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 professionellt sätt.
Dokumentation
Varje grupp skall producera och redovisa några dokument typiska för mjukvaruprojekt (se menyn till vänster).
Muntlig presentation
Under ett seminarie kommer varje grupp att få göra en muntlig presentation av sin design. Avsikten med dessa presentationer är att ni ska få prova på ett viktigt moment i er blivande yrkesutövning: att på ett proffessionellt sätt presentera er konstruktion för yrkeskollegor (och/eller chefer!). Det kan ju också bli ett tillfälle när ni får bättre idéer, även om ni redan fattat ert beslut! Ni kan utgå från antagandet att det är kollegor ni presenterar för, fast dessa är totalt oinsatta i just ert projekt.
Granskning
Ni kommer få granska hur en annan grupp löst de problem de ställts inför i sitt projekt. Detta ger tillfälle att testa om deras dokumentation är bra, samt ger idéer och insikt i vad som krävs för en fullgod dokumentation. Ni 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 hemsidan (mestadels schemat), och ni ska naturligtvis rådgöra med er 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 kursens 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 ni 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:

  • ni måste ta reda på hur lång tid i förväg dokumentet i fråga måste vara handledaren tillhanda
  • ni måste vara säkra på att inget annat än små detaljer kvarstår inför sista granskningstillfället (och helst inga sådana heller!)
  • ni alltså behöver handledarens feedback på er aktuella version 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 om hur den färdiga programvaran testats, och över resultatet av testningen. Det ingår i sådant fall att själva planera och genomföra tillräcklig testning för att ha underlag för rapporten.

Om man vill vara optimistisk bör man 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:

  • 12 timmar föreläsning.
  • 2 timmar lektion.
  • 6 timmar seminarie.
  • Några schemalagda PULtimmar att använda efter eget tycke och smak. 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 ni 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.

Rekommenderat kursmaterial

  • Software Engineering av S. L. Pfleeger, J. M. Atlee, 4th ed., Pearson Education Inc. 2010, ISBN-13: 978-0-13-814181-3 (ny kursbok för i år).

Bok är 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å! Ni är fria att leta efter information var ni vill!

  • The Essence of Software Engineering: Applying the SEMAT Kernel av Ivar Jacobson et al, Addison-Wesley Professional, 2013, En intressant fokusering på planerande och övervakande av mjukvaruprojekt.
  • Introduktion till programvaruutveckling av Claes Wohlin, Upplaga 1, Studentlitteratur 2005, En alternativ men inte lika djuplodande bok
  • Code complete av Steve McConnell, Second Edition, Microsoft Press, En högt rekommenderad bok som tar upp mycket relevant om konstruktion av mjukvara, varav flera delar är relevanta för kursen

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 även 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: Filip Strömbäck
Senast uppdaterad: 2017-06-26