Uppgift 1

Betyg: G

Uppgift

I denna uppgift arbetar ni i grupper om tre, såsom de delats upp av Johan och Anton. Grupperna hittar ni på Canvas. Uppgiften består av två deluppgifter, vilka båda måste lösas för att ni ska bli godkända.

Del 1 - OOA och OOD

I den här deluppgiften ska ni göra klass- och sekvensdiagram. Hur dessa ska ritas beskrivs längre ner i texten. Systemet ni ska jobba med är ett meddelandesystem, i vilket personer kan skicka enkla meddelanden mellan varandra via en server. Delsystemet Server är givet och kan bortses från helt. Det är således delsystemet Klient som ni ska designa. Klienten utgör programvaran som en användare använder i meddelandesystemet.

Designen av systemet ska följa tanken om boundary-, control- och entity-klasser:

Funktioner som ska implementeras i systemet

Klientapplikationen består av ett textgränssnitt och av funktionalitet för att kommunicera med en server. Applikationen har en meny med fyra val:

Meddelande från Förnamn Efternamn (datum):

Här hamnar meddelandetexten.

En klient ska kunna ansluta sig till och koppla ner sig från servern, visa, skicka och ta emot meddelanden, samt visa en lista över uppkopplade användare.

Om klienten

Det finns tre givna klasser som ni utgår från. Utöver dessa får ni lägga till vilka klasser ni vill. Dessa tre klasser är:

Message

Klassen Message utgör superklass till samtliga meddelanden som skickas mellan klient och server. Varje typ av meddelande som ni identifierar ska ärva från denna klass. Följande publika metoder är givna:

Observera att inte alla meddelanden behöver ha en mottagare, eftersom en del meddelanden bara går mellan användaren och servern (som exempelvis upp- och nedkoppling). Ett meddelande mellan användare ska dock kunna skickas till en eller flera mottagare.

User

Klassen User representerar en användare. Följande publika metoder är givna:

Connection

Klassen Connection ansvarar för kommunikationen med servern. Ni behöver inte bry er om hur meddelandena faktiskt skickas till och tas emot från servern. Följande publika metoder är givna:

Utöver dessa finns även en privat metod:

Er uppgift

Klassdiagram

Skapa ett klassdiagram över klientapplikationen. Glöm inte att införa era egna klasser utifrån de behov ni identifierar. Diagrammet ska ha hög detaljrikedom med associationstyper, multipliciteter, viktiga attribut och metoder.

Sekvensdiagram

Rita sekvensdiagram för följande scenarier:

Tänk på att hålla klassdiagram och sekvensdiagram konsistenta med varandra!

Del 2 - Från kod till UML

I den här deluppgiften ska ni utifrån given källkod, skapa ett klassdiagram. Vi ger inte någon introduktion till systemet, eftersom ni i grupp genom källkoden ska lista ut detta.

Det finns totalt sju klasser, där varje klass har attribut, metoder, associationer. Alla funktionerna är inte implementerade just nu, det gör inget, de är så kallade stubbar. Några av klasserna är dokumenterade (hur bra går att diskutera), andra inte. Er uppgift är följande:

  1. Skapa ett klassdiagram över systemet, utifrån given källkod. Inkludera: metoder, attribut, multiplicitet, associationstyper i ert diagram.
  2. Dokumentera klart programmet. Vissa av klasserna saknas som tidigare nämt dokumentation - det är er uppgift att köra klart detta. Ni får välja vilken stil ni vill dokumentera efter, här är en bra start för en översikt av olika stilar som används idag.
  3. Under tiden ni arbetar, notera vad som var svårt / otydligt i översättningen från kod till klassdiagram - samt när ni dokumenterar koden. Denna sammanfattning ska lämnas in som PDF i inlämningen (i er ZIP-fil).

Inlämning

Inlämningen görs i grupp. Detta innebär att enbart en i gruppen lämnar in lösningen. Vid enventuella problem i gruppen, prata med Johan eller Anton.

Inlämning sker i form av en zip fil innehållande uppgiftens båda delar. Det är upp till er att strukturera innehållet så länge ni är noggranna med namngivning av filer och/eller mappar. Deadline finner ni på Canvas.