Förslag på arbetsgång - framf0rt/Inte-1-projekt GitHub Wiki
#Förslag på arbetsgång
Uppgiftsinstruktionerna säger: ”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.” Detta förslag till arbetsgång syftar till att göra denna väldigt kortfattade beskrivning lite mer konkret. Observera dock att det som sägs här är just ett förslag. Det står er fritt att organisera arbetet annorlunda om ni vill det så länge kraven på uppgiften uppfylls.
Innan tentan
Innan tentan bör ni ha bildat grupper och satt upp och bekantat er med den utvecklingsmiljö ni ska använda inklusive enhetstestramverk, versionshanteringssystem, byggscript, och eventuell byggserver. Alla dessa verktygstyper ingår i det som examineras på tentan, så det är viktigt att man testat på dem även för den.
Fas 1: grundsystemet
För att ge alla en gemensam bild av systemet så rekommenderar vi att ni utvecklar den första delen av systemet gemensamt. Var noga med att tillämpa testdriven utveckling redan från början, och att få byggscriptet att fungera så snabbt som möjligt. Tänk också på att tillämpa refaktorering ordentligt: man ska ha ett fungerande system med testfall och ändra på det så att strukturen blir bättre utan att funktionaliteten ändras.
Det ska gå att följa allas arbete med projektet i versionshistoriken. När ni arbetar på egen hand är detta inget problem så länge man använder versionhanteringsystemet, men tänk på att få med informationen, t.ex. i checkin-kommentarerna även när ni arbetar gemensamt.
Fas 2: kommandon
När själva kommandotolken och ett par grundläggande kommandon (t.ex. ls och cd) fungerar är det dags att bestämma sig för vilka kommandon man vill ha med, och hur mycket ni ska göra på vart och ett av dem. Beroende på vilka aspekter ni vill fokusera på så kan man gå åt olika håll här. Man kan göra de grundläggande formerna av flera kommandon för att testa olika tekniker, eller man kan göra färre men större kommandon. Det viktiga är att kommandona blir intressanta ur testsynvinkel.
För exempel på kommandon som kan implementeras se t.ex.: https://www.google.se/search?q=most+common+unix+commands Tänk dock på att ni gärna får hitta på era egna kommandon.
När ni bestämt er för vilka kommandon ni vill ha med så delar ni upp dem mellan er så att var och en får en intressant uppgift att göra på egen hand. Man kan också tänka sig att alla implementera samma kommando så att ni kan studera de olika sätten att lösa problemet och jämföra hur testerna skiljer sig åt.
Det finns inget krav på uppgiften att systemet ska bli hundraprocentigt klart, och mängd är inte en kvalitet i sig själv i detta sammanhang. Stoppkriteriet för denna fas blir därför när det inte längre finns intressanta saker att testa.
Fas 3: Testfallsdesign
Komplettera därefter de testfall som tagits fram genom TDD med testfall framtagna genom att tillämpa minst två av de testdesigntekniker som tagits upp på kursen. Ett möjligt upplägg är att ni gemensamt bestämmer er för vilka delar av systemet ni ska tillämpa teknikerna på, och sen gör var och en ett försök på egen hand varefter ni gemensamt diskuterar och kommer fram till en slutgiltig uppsättning.
Tänk på att det ska gå att följa ert arbete även här, så versionshantera allt.
Fas 4: studera systemet
När systemet är klart och vältestat är det slutligen dags att studera det ur olika aspekter. Kraven nämner granskning, kodkritiksystem, statiska mått, täckningsgrad och profiling. Några aspekter som är viktiga att tänka på här är:
· Ni får granska er egen kod, men det är antagligen mer intressant att granska någon annan grupps kod.
· Ni behöver inte tillämpa exakt samma granskningsmodell som vi använde på granskningsseminariet. IEEE 1028 har flera varianter som kan vara intressanta att testa, och samma sak gäller Ship It!
· När det gäller de statiska måtten och profiling så är det viktigt att ni gör ett ordentligt försök att tolka de resultat ni får fram. För att kunna göra det är det viktigt att ni förstår vad måtten mäter och att ni väljer ut intressanta mått.