Demo 3 - 11.4.

Mallivastaus - Opiskelijoiden vastauksia

3. demoissa harjoitellaan yksityiskohtaista suunnittelua ja arkkitehtuurin mallintamista.

Demojen tulee olla palautettuna verkossa viimeistään 17.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.

1. Käsitteitä

Vastaa lyhyesti, mutta perustellen. Ei esseevastauksia!

1a). [Lähde: Bennett, teht. 8C]. Käy läpi Agate-casen yleiskuvaus ja sen perusteella muodostettu mainoksiin liittyvä alustava luokkakaavio (s. 236-238, luku 8.3.3 ja kuva 8.8). Piirrä luokkakaavio uudelleen täydennettynä kuvauksen perusteella eri mainostyypeillä. Mahdollisia uusia luokkia voisivat olla ainakin MagazineAdvert, PosterAdvert ja LeafletAdvert. Tarvitaanko muita (yli)luokkia, joissa yksittäisten mainostyyppien yhteisiä ominaisuuksia tai toimintoja on pakattu yhteen (esim. PrintMediaAdvert)? (1p)

1b). Kuvaa omin sanoin useimmissa kurssin luentoesimerkeissä noudatetun (loogisen) kolmikerrosarkkitehtuurin eri kerrosten vastuualueet.  (1p)

2. Kirjastojärjestelmä

Jatketaan demoissa 1 ja 2 sekä malliharjoitustyössä (ks. myös englanninkielinen versio) kuvatun kirjastojärjestelmän yksityiskohtaista suunnittelua.

2a). Muodosta Päivitä kokoelmaa-sekvenssikaavioiden ja kohdealuemallin pohjalta suunnitteluvaiheen luokkakaavio, jossa attribuutit, metodit ja assosiaatioiden toteutustapa on kuvattu tarkasti. Voit käyttää pohjana malliharjoitustyön StarUML-projektia (3p)

2b). Tarkenna Kadonneiden käsittely -sekvenssikaavioita niin, että assosiaatioiden toteutus näkyy metodikutsuissa. Esitä kaaviomuotoisen kuvauksen rinnalla tekstimuotoinen versio. Suositeltavin formaatti on PlantUML (löytyy mikroluokista Start-valikon UMLTools-hakemiston alta). Muita vaihtoehtoja ovat web-pohjainen websequencediagrams, tai Umletin tekstiformaatti. Kaavioesitys tulisi generoida tekstiversiosta. (2p)
PlantUML-tekstiversio (kuva)

3. Rahaliikenteen seurantajärjestelmä

3a). Jatketaan demoissa 1 ja 2 kuvatun rahaliikenteen seurantajärjestelmän suunnittelua.

Hahmottele demojen 2 CRC-korttien ja kohdealuemallin pohjalta looginen arkkitehtuuri rahaliikenteen seurantajärjestelmälle: (2p)

  1. Esitä arkkitehtuuri UML-paketteina (package, StarUML:ssä mm. luokkakaavion mallinnuselementeissä), joiden yleiset riippuvuussuhteet on kuvattu dependency-nuolilla. Käytä tarvittaessa myös alipaketteja.
  2. Pakettien sisälle ei tarvitse lisätä yksittäisiä luokkasymboleja, mutta tiettyyn pakettiin kuuluvat luokat tulee merkitä esim. listaamalla luokat UML-kommenteilla (Annotation->Note).
  3. Perustele ja arvioi suunnittelemaasi arkkitehtuuria lyhyesti.
Vinkkejä:
  • Arkkitehtuurin ja suunnittelun perusteita: luentojen 4 ja 5 Bennett-kalvot (esim. Agaten alijärjestelmäjako Advert/Campaign Costs).
  • Pakettien esittämisestä: Agate-Casen suunnitteludokumentit (huom. demovastauksessa ei tarvitse ottaa kantaa toteutusympäristön omiin paketteihin)

3b). Täydennä 1. demoissa mallinnettu seurantajärjestelmän kohdealuemalli suunnitteluvaiheen luokkakaavioksi, jossa assosiaatioiden toteutus (sis. mahdolliset uudet kokoelmaluokat) on huomioitu. Käyttöliittymä- ja ohjausluokat voi tässä vaiheessa sivuuttaa, lisäksi analyysivaiheessa mallinnetut yksittäiset attribuutit ja metodit (sikäli kun eivät muutu suunnitteluvaiheen kuvauksessa) voidaan jättää pois. (3p)

4. Bonus

4a). Esitä tehtävän 2b sekvenssikaaviota vastaava toiminnallisuus "Python-pseudokoodina" (koodin ei välttämättä tarvitse kääntyä eikä varsinkaan "tehdä" mitään erityistä, mutta sen tulee noudattaa mahdollisimman tarkasti sekvenssikaaviossa kuvattua kutsulogiikkaa ja Python-kielen kontrollirakenteita). (2p)

Materiaalia:

Huom. jos Python ei ole ennestään tuttua, keskity vain olioiden kuvauksen kannalta oleellisiin kielen ominaisuuksiin: kontrollirakenteet (for-silmukka, if-lause), funktiot, luokat ja tarvittaessa esim. listat.

4b). Kokeile ArgoUML:n (tai minkä tahansa muun ohjelmakoodia ymmärtävän UML-työkalun, esim NetBeansin) koodin importointitoimintoa jollekin tuntemallesi olemassa olevalle (ei välttämättä itse tehdylle) ohjelmistoprojektille (esim. Ohjelmointi2-kurssin harjoitustyö). ArgoUML:ssä toiminto käynnistyy valikosta File->Import Sources (ks. myös ohje foorumilla. Taustatietoa myös manuaalissa). Muodosta importoinnin tuloksena "toteutusvaiheen" luokkakaavio, jossa esitetty "oleelliset" luokkamallista poimitut asiat. Kuvaa myös lyhyesti työvaiheet, joita kaavion muodostaminen vaati, sekä mahdolliset prosessin aikana ilmenneet ongelmat. (2p)

Vinkki: jos et löydä muuta valmisohjelmaa, voit käyttää Ohjelmointi 2 -kurssin malliharjoitustyötä. Harjoitustyön saa SVN-versionhallinnalla (ks. ohje) osoitteesta (https://svn.cc.jyu.fi/srv/svn/ohj2k12/vesal/tags/vaihe7.3/), tai suoraan zip-pakettina. Voit verrata automaattisesti generoitua kaaviota kerho-ohjelman aiemmasta C++ -kielisen version pohjalta käsin piirrettyyn "toteutusvaiheen" luokkakaavioon.
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/2012/kevat/oas/demot/demo3.html
© Miika Nurminen (minurmin@jyu.fi)
Julkaisujärjestelmä: © Antti Ekonoja, Tommi Lahtonen ja Jukka Mäntylä.
2012-04-18 10:48:06
Informaatioteknologia - Jyväskylän yliopiston IT-tiedekunta ja avoin yliopisto