Demo 4 - 21.4.
Mallivastaus - Opiskelijoiden vastauksia
4. demoissa keskitytään dynaamiseen mallintamiseen ja
harjoitellaan CRC-korttien kirjoittamista (luennot 8-9).
Demojen tulee olla palautettuna verkossa viimeistään 26.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
wikissä. Ks. myös muiden ohjelmien ohjeita.
Piirtämisen sijaaan sekvenssikaavio on myös mahdollista
määrittää tekstimuodossa UMLetissa
(paletti Sequence-All in One) tai PlantUML:ssä (ks. esimerkki).
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)
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 (huonokuntoisten ja poistettavien niteiden käsittelyä ei tarvitse ottaa huomioon). (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. Poikkeusten osalta esityksen voi tarvittaessa jakaa moneen kaavioon. (3p)
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). (3p)
3b). Piirrä Muodosta raportti -käyttötapauksen ja CRC-korttien pohjalta sekvenssikaavio, joka kuvaa käyttötapauksen kulkua ja huomioi järjestelmän sisäisen rakenteen. Kaavioon tulee merkitä myös poikkeustilanteet, mutta niitä ei tarvitse mallintaa tarkasti. (3p)
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.