2/2001 Tietojärjestelmät ja Systeemisuunnittelu Luennoitsija: Tapio Lammi
Oliomenetelmät - johdanto
Oliomenetelmä Oliopohjainen suunnittelu koostuu kahdesta osatekijästä: –Kuvaustekniikka –Menetelmä Kuvaustekniikka tarjoaa työkalut järjestelmän rakenteen ja toiminnallisuuden kuvaamiselle Menetelmä sisältää ohjeistuksen siitä miten työkaluja käytetään yhtenäisen ja ymmärrettävän lopputuloksen aikaansaamiseksi
Oliomenetelmiä Ivaar Jacobsson - OOSE James Rumbaugh - OMT Grady Booch - Booch Method => Unified Modeling Language + Rational Unified Process
Peruskäsitteet - Olio 1 / 4 Ympäristöstä erottuva kokonaisuus Oliolla on seuraavat keskeiset ominaisuudet: –operaatiot (engl. methods) –attribuutit –identifioiva viite –suojaukset
Peruskäsitteet - Olio 2 / 4 Teknisessä mielessä ohjelman strukturoinnin perusyksikkö, joka ei ole puhtaasti toiminnallinen (esim. aliohjelma) tai puhtaasti tietoa sisältävä (esim. tietue), vaan sisältää molempia ominaisuuksia Ohjelma on täydellisesti olioperustainen jos kaikki sen toiminnallisuus on kuvattu olioiden operaatioissa ja tieto attribuuteissa
Peruskäsitteet - Olio 3 / 4 olion sisäiset operaatiot pääsevät käyttämään käyttämään olion omia attribuutteja ja muita operaatioita muiden olioiden piirteitä päästään käyttämään vain olion suojauksen mukaisesti operaatiot ovat joko olion tilaa muuttavia, tilaa tutkivia tai olion osille jotain tiettyjä toimenpiteitä tekeviä
Peruskäsitteet - Olio 4 / 4 Olion elinkaari: –olio on olemassa luontinsa jälkeen kunnes se poistetaan –Jos olio jää olemaan ohjelman suorituksen jälkeen, sitä kutsutaan pysyväksi olioksi (persistent object), esim. oliotietokantaan kuuluvat oliot
Peruskäsitteet - Luokka 1 / 3 Luokka on kuvaus joka kokoaa yhteen olioiden ominaisuudet Luokka ei ole olio (Luokalla ei ole identiteettiä) Luokat voi tunnistaa: –Tunnistamalla järjestelmään liittyvät roolit –Etsimällä tunnistetuista kokonaisuuksista samoja piirteitä –Soveltamalla valmiita suunnittelumalleja ongelmaan
Peruskäsitteet - Luokka 2 / 3 Luokan kuvaus koostuu kolmesta tekijästä –Nimi –Ominaisuudet eli attribuutit –Operaatiot eli metodit
Peruskäsitteet - Luokka 3 / 3 Eri luokat voivat liittyä toisiinsa kolmella tavalla: –Periytyminen (Inheritance) - luokka perii osan ominaisuuksistaan toiselta luokalta –Koostuminen (Aggregation) - luokka koostuu yhdestä tai useammasta luokasta –Assosiaatio - Luokka liittyy jollain tavoin yhteen tai useampaan muuhun luokkaan
Luokkien väliset suhteet 1 / 2 Esimerkkejä luokkien välisistä suhteista: –Ihminen perii ominaisuuksiaan: Eliöltä Maa-eläimiltä Nisäkkäältä –Ihminen koostuu: Kädet jalat pää
Luokkien väliset suhteet 2 / 2 –Ihmiseen voi liittyä Ihminen (roolina mies, vaimo, äiti, isä, lapsi) Asunto (roolina asuinpaikka) Työnantaja
Luokkien väliset suhteet - esimerkki Taksinkuljettaja KuljettajaRahastaja ajokortti myontovuosi virheita tilitys- numero alue
Prosessimalli
Prosessimallin tavoitteet Maksimoida uudelleenkäytettävyys Minimoida päällekkäinen työ Luoda käytäntö jossa kullakin järjestelmän osalla on roolinsa järjestelmässä Minimoida muutosten jälkeen tarvittava testaustyö Mahdollistaa komponenttipohjainen konfiguraationhallinta
Object Modeling Technique
Object Modelling Technique Kehittäjä James Rumbaugh Koostuu sekä kuvaustavasta että soveltamisemenetelmästä Sisältää työkalut erityisesti suuria datamääriä sisältävien laajojen tietojärjestelmien mallintamiseen
OMT - kuvaustyökalut Luokkakaaviot - joilla voidaan kuvata järjestelmän osat ja niiden väliset suhteet Sekvenssikaaviot - joilla kuvataan kontrollin eteneminen järjestelmän osien välillä Tilasiirtymäkaaviot - joilla kuvataan mahdolliset tilat sekä tilasiirtymät järjestelmässä.
OMT - Menetelmä Kehitysprosessi jossa saman työvaiheen eri malleja kehitetään samanaikaisesti iteroiden Koostuu kahdesta osasta –Analyysi Oliomalli Dynaaminen malli Toiminnallinen malli –Järjestelmäsuunnittelu (System design) Järjestelmämalli Tekninen oliomalli
Oliomallin rakennus Tunnistetaan oliot ja luokat Kootaan käsiteluettelo jotka sisältävät kuvauksen luokista, niiden attribuuteista ja sidoksista muihin luokkiin Lisätään sidokset luokkien välille Rakennetaan mahdolliset perimishierarkiat luokkien välille Varmistetaan rakenteen toimivuus sekvenssikaavion avulla Järjestetään luokat loogisiksi moduuleiksi Oliomalli = oliokaavio + käsiteluettelo
Dynaamisen mallin rakennus Luodaan käyttötapaukset eri järjestelmän käyttäjille Tunnistetaan käyttötapaukseen liittyvät luokat sekä rakennetaan sekvenssikaaviot niille Rakennetaan tilakaaviot kullekin tilalliselle luokalle Tarkistetaan suunnitelman eheys oliomalliin verraten, sekä käymällä läpi tilakaaviot Dynaaminen malli = tilakaaviot + sekvenssikaavio
Toiminnallinen malli Tunnista syötteet ja tulosteet kullekin operaatiolle Lisää tarvittavat parametrit sekvenssikaavioihin Kuvaa luokkien kunkin funktion toiminta Kuvaa kuhunkin funktioon liittyvät reunaehdot Määrittele mahdolliset optimointikriteerit Funktionaalinen malli = sekvenssikaaviot + reunaehdot
Analyysivaiheen yhteenveto Käydään läpi sekvenssikaaviot ja täydennetään oliokaavion operaatiokuvaukset Käydään läpi käsitekaavio, luokkakaavio ja sekvenssidiagrammi ja varmistetaan niiden eheys keskenään Tarkennetaan sekvenssikaaviot sisältämään mm. Virhetilanteiden käsittely Käydään läpi yllä kuvatut vaiheet kunnes riittävä tarkkuustaso on saavutettu Analyysidokumentaatio = Ongelmakuvaus + oliomalli + dynaaminen malli + toiminnallinen malli + käsiteluettelo
Järjestelmämalli Jaetaan järjestelmä alijärjestelmiin Ratkotaan samanaikaisuuteen liittyvät ongelmat Jaetaan järjestelmä fyysisiin komponentteihin Jaetaan datan talletus tiedostoihin / tietokantoihin ja luodaan säilytysrakenteet Rakennetaan mekanismit datan käsittelyyn Suunnitellaan ohjelman kontrollirakenteet Käydään läpi analyysivaiheen toiminnallisen kuvauksen reunaehdot
Tekninen oliomalli Kerätään analyysivaiheessa dokumentoidut luokkien operaatiot Suunnitellaan algoritmit operaatioille Optimoidaan funktioiden sisäinen toiminta Muokataan luokkarakenne tukemaan perintää Suunnitellaan luokkien välisten riippuvuuksien toteutus Luodaan tekninen rakenne olioille Paketoidaan luokat moduuleihin
OMT - Yhteenveto Analyysivaiheessa –Suunnitellaan järjestelmä käsitteellisellä tasolla –Ei oteta kantaa toteutusvälineisiin ja tekniikoihin –Kuvataan järjestelmä siten, että läpikäynti voidaan suorittaa asiakkaan kanssa Järjestelmäsuunnitteluvaiheessa –Sovitetaan analyysin tulos käytetyille työkaluille –Tehdään tarvittavat tarkennukset jotta toteutus voidaan suorittaa –Kuvaukset eivät ole välttämättä muiden kuin toteuttajien ymmärrettävissä
OMT - Mitä puuttuu ? Työkalut Käyttötapausten kuvaamiselle –Ivaar Jacobssonin OOSE (Object Oriented Software Engineering) menetelmä esittelee käyttötapauskaaviot Asynkronisten tapahtumaketjujen kuvaustyökalut Kaaviot pakettirakenteiden kuvaamiseksi Nämä korjattu UML:ssä