Demo 2 - 28.3.
Mallivastaus - Opiskelijoiden vastauksia
2. demoissa keskitytään dynaamiseen mallintamiseen ja
harjoitellaan CRC-korttien kirjoittamista.
Demojen tulee olla palautettuna verkossa viimeistään
10.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 PlantUML:ssä (ks. esimerkki).
PlantUML:n "pseudokoodi" sallitaan harjoitustyössä vaihtoehtoisena
formaattina osalle sekvenssikaavioista. Myös UMLetissa
on oma tekstisyntaksi sekvenssikaavioita varten (paletti
Sequence-All in One). WWW-pohjainen ratkaisu on WebSequenceDiagrams.
1. Käsitteitä
Vastaa lyhyesti, mutta perustellen. 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 1 ja malliharjoitustyössä kuvatun kirjastojärjestelmän suunnittelua. Tutustu myös kirjastojärjestelmän CRC-kortteihin.2a). Muodosta Päivitä kokoelmaa-käyttötapauksen pohjalta korkean tason yhteistoimintakaavio (robustness diagram tai collaboration diagram, jossa mahdolliset kutsuttavien metodien nimet), joka kuvaa käyttötapauksen kulkua ja huomioi järjestelmän sisäisen rakenteen (huonokuntoisten ja poistettavien niteiden käsittelyä ei tarvitse ottaa huomioon). Jaa tarvittaessa kaavio osiin. (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 esitys kannattaa jakaa moneen kaavioon. (3p)
Vinkkejä:
- ICONIX: sekvenssikaavio-ohjeet.
- Agile Modeling: Sequence
diagrams, Sequence
diagramming guidelines.
3. Rahaliikenteen seurantajärjestelmä
Jatketaan demoissa 1 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.
4. Bonus
Selvitä lyhyesti, miten suunnitteluperiaateluennolla esitetty
MVC (Model-View-Controller) -arkkitehtuurityyli poikkeaa useimmissa
kurssin oliomallinnusesimerkeissä ja harjoituksissa käytetystä
kolmikerrosarkkitehtuurista
(Käyttöliittymäkerros-Ohjauskerros-Tiedonhallintakerros)? Anna
molempien käytöstä (=miten kutsumekanismi ja toimintojen jako eri
luokkiin eroaaa eri arkkitehtuurityyleissä) lyhyet esimerkit
sekvenssikaavioina, jossa käyttäjä suorittaa seuraavat
toiminnot:
- Käyttäjä käynnistää ohjelman
- Käyttäjä hakee tietoja.
- Ohjelma näyttää tiedot käyttäjälle
- Käyttäjä päivittää tietoja
- Käyttäjä sulkee ohjelman
Materiaalia:
- Moniste, luvut 4.1 ja 5.2.1.2
- Luennon 5 lisämateriaalit
