Uppgiftsinstruktioner - framf0rt/Inte-1-projekt GitHub Wiki

Instruktioner

Inlämningsuppgiften på kursen är på 3,5hp och består av ett grupparbete som betygssätts på skalan U/G. Uppgiften är avsedd att göras i grupper om 3--5 personer och motsvarar alltså ungefär 2--300 timmars arbete. Det mesta av denna tid förväntas ni lägga ner under kursens tre sista veckor, efter tentan, men ni bör åtminstone sätta upp miljön ni ska arbeta i innan dess. Gruppstorlek, otillåtet samarbete, plagiat etc.

Större grupper än fem personer tillåts normalt inte. Om ni absolut vill arbeta i en större grupp måste ni ha goda skäl eftersom det är denna gruppstorlek uppgiften är anpassad efter. Det är inte tillåtet att arbeta själv eller i grupper om två personer eftersom ni då inte kan uppfylla de krav som finns på uppgiften.

Samarbete mellan grupper är inte tillåtet annat än i rent tekniska frågor och samtliga inlämningar kommer att plagiatkontrolleras och även sparas så att de kan användas som underlag för framtida plagiatkontroller.

Generellt gäller att allt material ni producerar ska vara eget arbete. Allt som ni hämtar från andra källor ska citeras och/eller refereras till i vedertagen stil. Vid misstanke om otillåtet samarbete eller plagiat kommer ärendet att överlämnas för behandling i Stockholms universitets disciplinnämnd.

Observera också att grupperna är solidariskt ansvariga för det som lämnas in. Om en uppgift lämnas vidare till disciplinnämnden så kommer det alltså att drabba samtliga medlemmar i den eller de inblandade grupperna.

Examination

Uppgiften examineras via en skriftlig rapport och en muntlig redovisning åt vilken de sista dagarna på kursen är vikta samt ett antal statusredovisnignar under projektets gång. Om gruppen inte är klar med projektet när kursen är slut, eller det inte blir godkänt, så ges ytterligare en möjlighet till redovisning ungefär två veckor efter kursslut, och slutligen en sista möjlighet veckan innan jul. Grupper som inte är godkända då får börja om med uppgiften nästa gång kursen går och då göra den uppgift som gäller då.

Grupper som blir klara tidigare kan om de vill kontakta kursansvarig och boka i en redovisning vid ett tidigare tillfälle.

Rapporten lämnas in via Moodle innan redovisningen. Endast en person i gruppen ska lämna in. En mall för rapporten finns i Moodle och ska användas. Mallen tillhandahålls i två versioner: Microsoft Word och LaTeX, men inget hindrar er från att använda andra system, bara utseendet stämmer och den efterfrågade informationen finns med. Miljö

För inlämningsuppgiften tillhandahåller vi en miljö som består av Java, JUnit, Ant och Subversion. Eventuellt också någon byggserver och ett ärendehanteringssystem. Detta är en miljö som är helt inriktad mot Java. Eftersom kursen handlar om testning och inte javaprogrammering så är det inget krav att använda sig av just dessa verktyg utan gruppen får välja språk och verktyg själva. Dessa är dock de enda verktyg som vi stödjer och ger handledning på. Uppgiften

Uppgiften går ut på att utveckla och testa ett program som fungerar som en enkel kommandotolk med några grundläggande kommandon i grupp med hjälp av de verktyg och tekniker som tagits upp på kursen. Samtliga medlemmar i gruppen ska delta i samtliga aktiviteter och kunna diskutera dessa vid redovisningen. Samtliga delar ska också dokumenteras i den rapport som ska lämnas in i samband med redovisningen.

Krav

De krav som finns på genomförandet är dessa

Grupparbete

Att man blir underkänd om man inte kan visa att man deltagit aktivt är naturligtvis uppenbart, men man kan också bli underkänd om man gör en alltför stor andel av uppgiften själv. Flera av nedanstående punkter blir helt eller delvis meningslösa i alltför små grupper.

Versionshantering

Allt arbete ska versionshanteras. Detta gäller kod, test, byggscript, dokumentation och rapporterna. Från versionshanteringshistoriken ska det tydligt framgå att alla deltagit i arbetet. Vid redovisningen måste versionhanteringssystemet vara tillgängligt, och salen vi kommer att vara i är (troligtvis) inte utrustad med en stationär dator. Om ni inte använder DSVs Subversion-repository måste därför någon i gruppen ha med sig en dator.

Enhetstestramverk

Ett enhetstestramverk i stil med JUnit ska användas. Ni får gärna använda andra typer av testverktyg också om ni tycker de tillför något, men detta är inget krav.

Byggscript

Ett byggscript, till exempel Ant, ska kunna användas för att bygga och testa systemet.

Ytterligare verktyg

Ni får gärna testa på att använda andra typer av verktyg, till exempel byggservrar eller ärendehanteringssystem, men detta är inget krav.

Testdriven utveckling

Ni ska tillämpa testdriven utveckling under projektet, och detta ska gå att följa i versionshistoriken.

Testfallsdesign

Ni ska välja ut några lämpliga delar av projektet och tillämpa minst två av de tre testdesigntekniker som tas upp i boken: ekvivalensklassuppdelning, beslutstabeller och tillståndsmaskiner. De testfall som tas fram på dessa sätt kan utgöra grunden för utveckling av dessa delar med TDD eller tas fram i efterhand för att komplettera de testfall som ni redan har tagit fram genom att tillämpa testdriven utveckling.

Granskning

Ni ska genomföra minst en formell granskning av koden. Testa gärna mer informella typer av granskningar också så att ni har något att jämföra med. Ett tips är att prata med någon annan grupp och granska varandras kod.

Kodkritiksystem

Efter att ni genomfört granskningen och rättat de saker som kommit fram så ska ni testa minst ett kodkritiksystem, till exempel Findbugs, på koden. Detta ska göras både på koden som den ser ut då, och på koden som den såg ut innan ni granskade den. Vilka typer av fel hittar verktyget? Är det samma fel som ni hittade?

Statiska mått

När ni är klara med projektet så ska ni använde ett verktyg i stil med Metrics 1.3 för att ta fram statiska mått på koden. Dessa ska redovisas i slutrapporten tillsammans med de slutsatser ni drar av dem. Det räcker alltså inte med att bara upprepa den information som siffrorna själva ger, utan ni måste kunna tolka dem också.

Täckningsgrad

Ett minimikrav på era tester är att de uppnår 100% täckningsgrad på programsatserna i koden. Detta ska visas med hjälp av ett verktyg i stil med Emma. Testa gärna även att försöka uppnå högre nivåer av täckningsgrad på någon mindre del av koden.

Profiler

Slutligen ska ni också testa på att använda en profiler på koden. Här är det lämpligt att ni väljer ut någon intressant del av koden och skriver ett speciellt test eller testprogram som bara är till för att ni ska köra profilern på det. Detta är test blir kanske inte helt realistiskt, men eftersom det inte ingår i uppgiften att implementera ett tillämpningsprogram så får vi göra så.

Last modified: Tuesday, 27 September 2016, 4:07 PM