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

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.

Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/oas/demot/demo4.html
© Miika Nurminen (minurmin@jyu.fi)
Perustuu osittain Mauri Leppäsen, Eetu Luoman ja Timo Käkölän kurssisivustoihin.
Julkaisujärjestelmä: © Antti Ekonoja, Tommi Lahtonen ja Jukka Mäntylä.
Demojen palautusjärjestelmä: Vesa Lappalainen 2010-04-19 21:49:19
Informaatioteknologia - Jyväskylän yliopiston IT-tiedekunta ja avoin yliopisto