Demo 4 - 23.4.
Mallivastaus - Opiskelijoiden vastauksia
4. demoissa keskitytään dynaamiseen mallintamiseen ja
harjoitellaan CRC-korttien kirjoittamista (luennot 8-10).
Demojen tulee olla palautettuna verkossa viimeistään 29.4. klo
12.00. Demot palautetaan NettiDemoWWW:llä. Muista merkitä NettiDemoWWW:ssä
pistemäärä (ja tarvittaessa omia kommentteja). Pisteet voi jakaa
useammalle tiedostolle tai useita tehtäväkohtia voi yhdistää samaan
tiedostoon (suositeltavat formaatit: teksti, html, kuvaformaatit,
pdf).
StarUML-vinkkejä sekvenssikaavioiden piirtoon:
- Staruml
tukee uml 2.0:n sekvenssikaavion ominaisuuksia, mutta
käytettävyydessä on puutteita - erit. asetteluihin joutuu ottamaan
liiaksi kantaa
- Kokeile sekvenssikaavioiden piirtoa myös muilla ohjelmilla!
- Aktori voidaan "vetää" mukaan kaavioon käyttötapausmallista samaan tapaan kuin yhteistoimintakaaviossa
- Viestien
numerointi voidaan piilottaa klikkaamalla sekvenssikaavion ruudun
alueelle (mitään yksittäistä elementtiä ei saa valita) ja
klikkaamalla properties-ikkunan detail-kohdasta "show sequence
number"-rastin pois
- messageSignature-kohta kannattaa asettaa kohtaan NAMEONLY. näin metodien parametrit näkyvät (mutta eivät tyypit)
- Viestin tyyppiä (tavallinen, paluuviesti, konstruktori, destruktori voi muuttaa properties-ikkunan ActionKind-kohdasta
- Erillisen paluunuolen piirron sijaan paluuarvon voi myös kirjoittaa suoraan viestin nimeen "paluuarvo := kutsu" tai properties-ikkunan return-kohtaan
1. Käsitteitä
Vastaa lyhyesti. Ei esseevastauksia!1a). Yksinkertaisilla interaktioilla yhteistoiminta- ja sekvenssikaaviot ovat yhtä ilmaisuvoimaisia. Miten sekvenssi- ja yhteistoimintakaavioiden mallinnustavoitteet eroavat toisistaan (=miksi mallintaa periaatteessa samaa asiaa kahteen kertaan)? (1p)
1b). Standardinmukaisissa UML-yhteistoimintakaavioissa viestit numeroidaan. Missä tilanteessa numerointiin tulee merkitä ylimääräisiä tasoja (esim. 1->2->2.1->2.2->2.1.2)? Miten vastaava asia ilmaistaan sekvenssikaaviossa? (1p)
1c) Millaisessa
tilanteessa sekvenssikaavioon kannattaa merkitä paluuviesti
(reply message)?
(1p)
2. Kirjastojärjestelmä
Jatketaan demoissa 2 ja malliharjoitustyössä kuvatun kirjastojärjestelmän suunnittelua. Yhteistoimintakaavioiden piirtokäytännöistä kannattaa kerrata myös demojen 3 malliratkaisut. Tutustu myös kirjastojärjestelmän CRC-kortteihin.2a). Muodosta Päivitä kokoelmaa-käyttötapauksen mallivastauksen pohjalta korkean tason yhteistoimintakaavio (robustness diagram tai collaboration diagram, jossa mahdolliset kutsuttavien metodien nimet - numerointi ei ole välttämätöntä, mutta hyödyllistä), joka kuvaa käyttötapauksen kulkua ja huomioi järjestelmän sisäisen rakenteen. (2p)
2b). Tarkenna Päivitä kokoelmaa -käyttötapausta kuvaava yhteistoimintakaavio sekvenssikaavioksi. Jos yhteistoimintakaavio on piirretty ICONIX-tyylillä, huomioi ohjain"luokkien" yhdistely ja sijoittelu muiden luokkien metodeiksi. (2p)
Vinkkejä:
- ICONIX: sekvenssikaavio-ohjeet.
- Agile Modeling: Sequence
diagrams, Sequence
diagramming guidelines.
3. Rahaliikenteen seurantajärjestelmä
Jatketaan demoissa 3 kuvatun rahaliikenteen seurantajärjestelmän suunnittelua. Tutustu aluksi huolellisesti rahaliikenteen seurantajärjestelmän käyttötapauskaavioon, käyttötapauksiin ja kohdealuemalliin.3a). Kirjoita CRC-kortit käyttöliittymäluokalle RaporttiUI, ohjausluokalle RaportinLuonti sekä kohdealueluokille RaporttiMalli, TiliRyhma, Tili ja Tapahtuma (huomaa, että avustajina voidaan käyttää myös muita kohdealuemallin luokkia. Voit käyttää esim. seuraavaa CRC-korttipohjaa (html, doc, odt). (4p)
3b). Piirrä Muodosta raportti -käyttötapauksen ja CRC-korttien pohjalta sekvenssikaavio, joka kuvaa käyttötapauksen kulkua tarkasti ja huomioi järjestelmän sisäisen rakenteen. Muista mallintaa sekvenssikaavioon myös poikkeustilanteiden käsittely. (2p)
Vinkkejä:
- Käytä käyttötapauskaaviota ja -kuvauksia apuna miettiessäsi luokkien vastuualueita.
- Täyttäessäsi CRC-korttien avustajat-osuutta mieti, kumpi assosiaatiossa mukana oleva luokka käyttää pääsääntöisesti toisen luokan palveluja (eli toimii korttiin merkityn luokan avustajana) - joskus assosiaatio voi olla aidosti 2-suuntainen, useimmiten ei (assosiaatioiden suunnat tarkennetaan suunnitteluvaiheessa). Älä kopioi luokkakaaviosta suoraan jokaista assosiaatiota avustajiksi!
- Agile Modeling: Class Responsibility Collaborator (CRC) Models.
