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ä:

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:

  1. Käyttäjä käynnistää ohjelman
  2. Käyttäjä hakee tietoja.
  3. Ohjelma näyttää tiedot käyttäjälle
  4. Käyttäjä päivittää tietoja
  5. Käyttäjä sulkee ohjelman
Sovellusalueeseen tai käyttöliittymän yksityiskohtiin ei tarvitse ottaa kantaa. (3p)

Materiaalia:
  • Moniste, luvut 4.1 ja 5.2.1.2
  • Luennon 5 lisämateriaalit
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/2012/kevat/oas/demot/demo2.html
© Miika Nurminen (minurmin@jyu.fi)
Julkaisujärjestelmä: © Antti Ekonoja, Tommi Lahtonen ja Jukka Mäntylä.
2012-04-16 21:22:48
Informaatioteknologia - Jyväskylän yliopiston IT-tiedekunta ja avoin yliopisto