Inlämningsuppgift

OBS! Man får börja med uppgiften efter man fått godkänd på alla laborationer!

Syftet med denna del är att applicera era analys-färdigheter på kod som inte är artificiellt konstruerad för ändamålet (dvs till skillnad från koden i tidigare laborationer). I synnerhet är det följande lärandemål som är relevant för inlämningsuppgiften:

Inlämningsuppgiften görs i grupp precis som de föregående laborationerna. Inlämning görs via Fire, lämna in senast fredag den 11:e januari 2019. Det är alltså fortsatt viktigt att samtliga gruppmedlemmar är delaktiga i utförandet.

Inlämning:

  1. Kodbas (som zip, eller som en stabil länk till en webplats)
  2. UML-diagram, som PDF. Konstruera det hur ni vill (mobil-foto av handritat diagram är acceptabelt om det är läsligt)
  3. En kort analys (max tre A4-sidor text, exklusive bilder) enligt instruktion nedan.

Steg 1: Identifiera kodbas

Hitta en sammanhängande kodbas att utgå ifrån, hur spelar (nästan) ingen roll. Det kan vara något publikt bibliotek ni hittar på till exempel GitHub, något ur Javas standardbibliotek, en kodbas ni skrivit själva tidigare (som är rimligt relevant och håller vettig kvalitet), etc. Det enda kravet är att det inte är kod som tagits från undervisningsmaterial (e.g. i kurs från GU eller Chalmers, annat universitet, Coursera, eller dylikt). Rimlig storlek är 10-20 classes/interfaces, men det är inget hårt krav. Huvudsaken är att den valda kodbasen låter er utföra resten av uppgifterna. Prata med Alex om ni är osäkra på om den kodbas ni tänker er är lämplig.

Steg 2: Beskriv kodbasen med ett UML-diagram

Rita ett UML-diagram som beskriver de klasser/interfaces, samt relationer mellan dessa, som finns i er valda kodbas. Gör en avvägning kring relationer till externa klasser/interfaces (dvs klasser/interfaces som inte är en del av kodbasen); ta med de relationer som känns viktiga för att klargöra kodbasens design, utelämna de som inte gör det. Gör liknande avvägningar för konstruktorer och för privata fält och metoder (men default bör vara att ha med dem).

Steg 3: Analysera kodbasens design

Analysera kodbasen utifrån de principer vi diskuterat i kursen. Peka ut sådant som bryter mot någon av principerna - sådant finns garanterat, medvetet eller omedvetet gjort - och förklara hur det bryter mot principen i fråga. Identifiera och förklara (minst) tre olika användningar av design patterns vi tagit upp i kursen. Rekommendera förbättringar av kodens design, och motivera era rekommendationer med hänvisning till våra principer.

Betygskriterier

Övergripande gäller att vi enbart avser de design-mönster som tagits upp i kursen, och som nämns i manuset för muntan, när vi refererar till design-mönster nedan.

Menu