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.

  1. Formalia - Berätta vilken grupp ni är, vilka medlemmar som är närvarande och vilka som eventuellt är frånvarande.
  2. Kort introduktion där ni berättar om målet med projektet.
  3. Diskussion om hur ni planerat och fördelat arbetsuppgifter inom gruppen.
  4. 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.
  5. 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.
  6. Redogör för genomförd och planerad inläsning.
  7. 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).
  8. Visa och berätta kortfattat om katalogstrukturen på Github.
  9. Kort reflektion på gruppens arbete: vad har fungerat bra och vad kan förbättras?
    • Vid behov - uppdatering av gruppkontraktet.
  10. Diskussion av eventuella förslag till framtida förändringar av systemarkitekturen.
  11. Tillsammans sätter vi mål för milstolpe 2.