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)
- Esitä arkkitehtuuri UML-paketteina (package, StarUML:ssä mm.
luokkakaavion mallinnuselementeissä), joiden yleiset
riippuvuussuhteet on kuvattu dependency-nuolilla. Käytä
tarvittaessa myös alipaketteja.
- Pakettien sisälle ei tarvitse lisätä yksittäisiä
luokkasymboleja, mutta tiettyyn pakettiin kuuluvat luokat tulee
merkitä esim. listaamalla luokat UML-kommenteilla
(Annotation->Note).
- Perustele ja arvioi suunnittelemaasi arkkitehtuuria
lyhyesti.
- 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:
- Luento
7
- Learn Python (vain
"Learn the Basics"-osio)
- Jonnen Python-sivut
- Python-kielen oma tutorial
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.
