Milstolpe 1
Tisdag 21/4 2020
Under milstople 1 träffas supergrupperna tillsammans med Karl för
ett möte.
- En grupp diskuterar och visar status på projeket och de andra grupperna agerar
bollblank (opponenter), sedan byter grupperna roller med varandra.
- Varje grupp har max 25 minuter till sitt förfogande inklusive frågor
från och diskussion med de opponernade grupperna i supergruppen.
- Opponenterna bör ställa
frågor löpande under presentationen och inte i slutet av presentationen.
Slides
Varje grupp skall förbereda slides (eller liknande) som stöd för presentationen.
- Tänk på att använda tillräckligt stor fontstorlek.
- Tänk på att göra figurer på till exempel systemarkitekturen så stora och
tydliga som möjligt.
Muntlig presentation
Inför milstolpe 1 skall du tänka igenom hur du kan utveckla dina färdigheter
gällande muntlig presentation.
Prioritering och planering
Alla i gruppen skall börja med en snabb genomläsning av hela denna sida, försök
att inte fastna på detaljer. Det finns viktig
information om hur ni skall prioritera i slutet.
Fortsätt sedan med en andra genomläsning när du har en bättre uppfattning om
helheten.
Diskutera sedan i gruppen hur ni skall skall prioritera, planera och dela upp
arbetet inför milstolpe 1.
Inläsning
Vilka liknande system/algoritmer finns och hur fungerar dessa (related work).
- Vad behöver ni lära er mer om?
- Samla på er länkar och dokument och försök prioritera vad som är viktigast.
- Vilken inläsning måste ske nu direkt vid uppstart och vilken inläsning kan
planeras in senare längre fram?
- Vem/vilka läser in sig på vad?
- När och hur skall genomförd inläsning rapporteras tillbaka till övriga i gruppen?
Systemarkitektur
Löpande under projektet måste ni hålla beskrivningen av systemarkitekturen i
form av bilder och diagram uppdaterad. Till mötet skall ni förbereda bilder
eller diagram som beskriver:
- den ursprungliga systemarkitekturen som ni utgick från i ert projektförslag
- den nuvarande systemarkitekturen där det framgår vilka
delar av systemarkitekturen som är implementerade och vilka delar som ännu inte implementerats
- eventuella förslag till framtida förändringar av systemarkitekturen.
Prototyp
Hur ser den absolut enklaste modellen av systemet ut som fortfarande täcker in
alla viktiga delar? Syftet med prototypen är att få all viktig infrastruktur
på plats såsom kommunikation mellan systemets viktigaste delar.
Prototypen kan vara mycket, mycket, mycket förenklad och behöver inte
alltså inte täcka in allt i systemarkitekturen.
Exempel
Om projektet går ut på att bygga ett chatt-system kan man tänka sig att
börja med en första förenklad version av klient och server med två
hårdkodade användare och visa hur dessa kan skicka ett (hårdkodat) meddelande
till varandra. Man kan strunta i GUI och istället använda ett CLI (Command Line
Interface).
Diskutera inom gruppen hur den enklaste (fördummade) versionen av
system som fortfarande täcker in de väsentliga delarna i system kan se ut.
Målet är att ni till mötet skall ha en första grov prototyp klar.
Automatisering
Vilket stöd för automatisering finns på plats?
Sådant som bör automatiseras:
- Kompilering.
- Generering av dokumentation från källkod.
- Uppstart av systemet.
- Testning.
Försök få så mycket av automatiseringen på plats så tidigt som möjligt.
- Även om ni till en början inte skriver mer än några triviala test är det
viktigt att få automatiken att fungera. Utan detta kommer det bli svårt
att komma igång med att skriva test och köra dessa test.
- Även om ni till en början inte har mycket kod att dokumentera är det viktigt
att få automatiken på plats. Utan detta blir det svårt att komma igång med
att lägga till dokumentation i källkoden.
Katalogstruktur
Diskutera inom gruppen hur katalogstrukturen på Github skall se ut.
Planering
Diskutera i gruppen hur ni på bästa sätt kan dra nytta av ni är flera personer
som jobbar mot samma mål.
- Ett sätt är att försöka hitta uppgifter som är lagom avgränsade
för en eller två personer att genomföra på max en dag eller två för att sedan
rapportera tillbaka till gruppen.
- Att synka hela gruppen ofta (minst en gång varje dag) är ett beprövat sätt
att effektivt driva arbetet framåt som används i till exempel Scrum.
Att inte bli klar på den tid man planerat för är mycket vanligt:
- Kanske var uppgiften för stor?
- Kanske behöver flera jobba med samma problem?
- Går det att bryta ner problemet i mindre delar (och dela ut på flera personer)?
- Kanske duger det som tagits fram tills vidare och det finns viktigare saker att
göra just nu, dvs göra en omprioritering?
Agenda för mötet
Detta är agendan för mötet. Ordningen visar även prioritering med det viktigaste
först. Får ni ont om tid eller kör fast försök beta av punkterana uppifrån och ner.
- Formalia - Berätta vilken grupp ni är, vilka medlemmar som är närvarande
och vilka som eventuellt är frånvarande.
- Kort introduktion där ni berättar om målet med projektet.
- Diskussion om hur ni planerat och fördelat arbetsuppgifter inom gruppen.
- Visa och diskutera hur systemarkitekturen utvecklats från projektförslag till nuvarande version.
Visa även vilka delar av den nuvarande systemarkitekturen som finns implementerat och vilka delar som ännu inte implementerats.
- Demo där ni berättar om vilka delar av systemet som ni fokuserat på i den
första prototypen. Starta upp systemet och visa vad som går att göra med den
första grovt förenklade prototypen.
- Redogör för genomförd och planerad inläsning.
- Visa vilken automatik som finns på plats för:
- Kompilering.
- Test (EUnit, JUnit eller liknande).
- Generering av dokumentation (tex mha EDoc, JavaDoc, PyDoc eller
LaTex/TeX).
- Uppstädning (make clean eller liknande).
- Visa och berätta kortfattat om katalogstrukturen på Github.
- Kort reflektion på gruppens arbete: vad har fungerat bra och vad kan
förbättras?
- Vid behov - uppdatering av gruppkontraktet.
- Diskussion av eventuella förslag till framtida förändringar av
systemarkitekturen.
- Tillsammans sätter vi mål för milstolpe 2.