Tietorakennepohjaiset menetelmät

Samankaltaiset tiedostot
Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmiston suunnittelu. Olioperustaiset menetelmät

Ohjelmistojen suunnittelu

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

UML - unified modeling language

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Palveluperustaiset arkkitehtuurityylit

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen kertausta Harri Laine 1

1. Tarkastellaan seuraavaa kaaviota

UML- mallinnus: Tilakaavio

Johdatus sovellussuunnitteluun, s 2001, osa 4b Helsingin yliopisto / TKTL Harri Laine / Inkeri Verkamo 1. Luokkakaavion tarkoitus

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Suunnitteluvaihe prosessissa

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Ohjelmistojen mallintaminen, kesä 2010

HELIA 1 (20) Outi Virkki Tiedonhallinta

Johdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus

Lähestymistavat - toiminnallinen

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

UML:n yleiskatsaus. UML:n osat:

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 ER-mallin peruskäsitteet.

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Nimi: Henkilötunnus: {id} {+id}

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Johdatus sovellussuunnitteluun

Olioiden yhteistyön mallintaminen

Harjoitustehtävät ja ratkaisut viikolle 48

CQRS, -ES, PACS, DICOM, WTF?

Hirviö. Design Patterns

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

5. Järjestelmämallit. Mallinnus

Mallinnus. 5. Järjestelmämallit. Abstraktiot. Mallinnuksen etuja. Arkkitehtuurimalli. Yhteysmallit. Ohjelmistotuotanto, järjestelmämallit Kevät 2005

OSAII: Käytännön rutiinit. Ohjelmiston suunnittelu

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

9 Edistynyt PHP-ohjelmointi

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

Analyysi on tulkkaamista

Yhteistoimintakaavio (Esimerkki)

Oliosuunnittelu. Oliosuunnittelu

Ohjelmiston toteutussuunnitelma

Johdatus sovellussuunnitteluun

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

1. Olio-ohjelmointi 1.1

Käyttötapausanalyysi ja testaus tsoft

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Testaaminen ohjelmiston kehitysprosessin aikana

Uudelleenkäytön jako kahteen

Luento 3 Tietokannan tietosisällön suunnittelu

Integrointi. Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan menetelmät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Ohjelmistotekniikan menetelmät

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Ohjelmistotekniikan menetelmät, UML

Ohjelmistojen mallintaminen, sekvenssikaaviot

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustaisuus (object oriented)

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Tietokantojen suunnittelu, relaatiokantojen perusteita

Johdatus sovellussuunnitteluun, s99, osa2 Helsingin yliopisto;/tktl Harri Laine 1. Olioperustainen ohjelmistokehitys

Ohjelmistojen mallintaminen, kertausta

Viestinvälitysarkkitehtuurit

TOIMINNALLINEN MÄÄRITTELY MS

UML-kielen formalisointi Object-Z:lla

Luokka- ja oliokaaviot

Johdatus sovellussuunnitteluun, s2001, osa 3 Helsingin yliopisto / TKTL. Harri Laine / Inkeri Verkamo 1. Järjestelmän palvelujen määrittely

Tuotemallipohjaisen toimintaprosessin mallintaminen

Ohjelmistojen mallintaminen

Graafinen käyttöliittymä, osa 1

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.


Piirilevyohjelma ARES

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

Luku 8. Aluekyselyt. 8.1 Summataulukko

ohjelman arkkitehtuurista.

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Tilakaaviot, sekvenssikaaviot (Haikala, Märijärvi ss , )

Siltatiedon tarkkuustason määrittäminen Taitorakennerekisterissä. Maria Vinter

Transkriptio:

Tietorakennepohjaiset menetelmät Käsiteltävän tiedon rakenne määrää ohjelmiston rakenteen: peräkkäisyys, ehdollisuus, toisto hierarkkisuus Lähtökohtana tulosteiden, syötteiden, tietokannan, kyselyn, tapahtuman rakenne (esim. Jacksonin JSP, Warnier & Orr) Osatehtävät: tietorakenteiden kuvaaminen perusprimitiivien avulla: peräkkäisyys, vaihtoehtoisuus, toisto tietorakenteen muuntaminen kontrollihierarkiaksi ohjelmistohierarkian tarkentaminen ohjelmiston toiminnallinen kuvaus Tietorakennepohjaiset menetelmät Tyypillisiä sovellusalueita: kaupallis-hallinnolliset sovellukset tietokoneavusteinen suunnittelu ja valmistus (CAD, CAM, CAE) sovellukset, joiden käsittelemällä tiedolla on hyvin määritelty ja hierarkkinen rakenne Esim.: JSP - Jackson Structured Programming (-75) Tietorakenteesta kuvattavissa peräkkäisyys, vaihtoehtoisuus ja toisto Tietorakenteet kuvataan hierakisena kaaviona, joka voidaan esittää myös tekstimuodossa. Harri Laine 1/20

JSP-rakennekaavio Tuloslista kurssitiedot opiskelija * yhteenveto tunnus nimi arvosana hetu o o JSP-periaate Muodostetaan palveluun liittyviä peräkkäisrakenteita vastaavat tietorakenteet (1 tai useampia) esim. raportin rakennekuvaus, syottötiedostojen rakennekuvaukset. Jos rakenteita on useampia määrätään eri rakennekuvausten rakenneosien vastaavuus kytkemällä vastinosat yhteen. Kutsutaan vastionosien yhteenliittymää osapariksi (yhteenliittymässä voi olla yli 2 osaa) raportin rakenneosa & tietokannan rakenneosa Harri Laine 2/20

JSP-periaate JSP-periaate Aikaansaatu kytketty tietorakennekaavio muunnetaan ohjelmarakennekaavioksi: moduuli jokaista osaparia kohden moduuli jokaista paritonta kohden Rakenteiden yhteensovittamisessa voi syntyä rakenneristiriitoja (esim raportti eri järjestyksessä kuin syöttöaineisto) Menetelmä tarjoaa standardiratkaisuja näiden hoitamiseen. Harri Laine 3/20

JSP-periaate raportti tietokanta tulos Oliopohjaiset menetelmät - Object oriented design Sekä analyysissä että suunnittelussa on sama peruskäsitteistö oliot ja luokat yhteyksien kohdalla tarkastellaan kuitenkin miten yhteydet toteutetaan linkkeinä, indekseinä, viiteavaimina Joissain suunnittelutason malleissa oliot on jaettu useampaan kategoriaan, esimerkiksi /Jacobsson/ liittymäolioihin (interface objects), pääasiallisena tehtävänä on kommunikointi järjestelmän ulkopuolisten tahojen, esimerkiksi käyttäjien tai oheislaitteiden kanssa. raportit, kyselyt ja graafisen käyttö-liittymän ikkunat ja näiden osat Harri Laine 4/20

Oliopohjaiset menetelmät - Object oriented design tieto-olioihin (entity objects) Tieto-olioiden vastuulla on järjestelmän tieto-sisältö Tieto-oliolla voi olla useita olomuotoja, aktiivinen ohjelmassa toimiva muoto, talletusmuoto esim. tietokannassa, yksi tai useampia esitysmuotoja käyttöliittymässä ohjausolioihin (control objects) Ohjaus-oliot vastaavat toimintalogiikasta. ohjaavat ja tarkkailevat työnkulkua Eri kategorioihin kuuluville olioille annetaan yleensä myös erilainen graafinen esitystapa kaavoissa. UML-käyttää erotteluun lajimäärettä (stereotype) Oliopohjaiset menetelmät Olioiden jaottelu kategorioihin auttaa suunnittelijaa jäsentämään kokonaisuutta ja sijoittamaan palveluja olioille. Esimerkiksi tietosisältöön liittyvää loogisuus-tarkistusta ei ole syytä sijoittaa liittymäolion palveluiksi, vaan tarkistus sopii paremmin tietosisällöstä vastaavan tieto-olion palveluksi. Käyttötapaukseen liittyvän monimutkaisen työnkulun valvonta olisi parempi antaa erillisen ohjausolion tehtäväksi kuin yrittää upottaa sitä väkisin käyttöliittymäikkunan tai sitä vastaavan tieto-olion vastuulle. Olioiden jaottelu kategorioihin on siis eräänlainen karkean tason ratkaisumalli. Harri Laine 5/20

Oliopohjaiset menetelmät Määrittelyn ja suunnittelun raja on epäselvä. Suunnitteluakin tapahtuu eri tarkuustasoilla Suunnittelussa määrittelyn tuottamaa oliorakennetta täydennetään Järjestelmän kehittelyn lähtökohtana tehtäväalueelle ominaiset tietotyypit ja abstraktiot Suunnittelu pohjautuu voimakkaasti tiedon kätkemisen periaatteelle: järjestelmä nähdään joukkona (itsenäisiä) olioita, jotka ovat vuorovaikutuksessa keskenään kullakin oliolla on tila, johon voidaan koskea ainoastaan sovituilla operaatioilla olioiden välinen kommunikointi perustuu sanomiin Olioiden kuvaaminen Erotetaan kaksi erillistä osaa: protokollan kuvaus = olion käyttöliittymä: sanomat ja niihin liittyvät operaatiot toteutuksen kuvaus = olion sisäinen rakenne: sisäinen tietorakenne operaatioiden toteutuksen yksityiskohdat Käyttäjä tarvitsee ainoastaan protokollan kuvauksen Toteuttaja tarvitsee toteutuksen kuvauksen Kaksitasoinen kuvaaminen tukee suunnittelun ja toteutuksen riippumattomuutta modulaarisuutta komponenttien uuskäyttöä Harri Laine 6/20

Oliosuunnittelu Oliopohjaista suunnittelua ja toteutusta suositellaan käytettäväksi oliopohjaisen analyysin jatkona: analyysin yhteydessä laadittu oliomalli muodostaa suunnittelun oliomallin ytimen, jota täydennetään ja muutetaan: ottamalla huomioon toteutusympäristö laitteet, käyttäjät, tietoliikenne toteutusvälineet käytettävät kirjastot suorituskykyvaatimukset suunnittelumallit arkkitehtuurimalli seurauksena uusia olioluokkia ja palveluita esim.printer, FileManager,käyttöliittymäoliot kuten ikkunat,napit, yms. Oliosuunnittelu ottamalla mukaan työtiedot ja apupalvelut ratkaisemalla yhteyksien toteutustapa, esim. Määrittelyssä kirja 1..* luku Harri Laine 7/20

Oliosuunnittelu collection item[ ] * object kirjat item[ ] kirja luvut suunnittelussa toteutus kirjastoluokkien avulla luvut luku item[ ] Arkkitehtuurin hyödyntäminen Liittymäoliot muodostavat yhteyden käyttöliittymän ja muun koneensisäisen oliomaailman välille. Käyttöliittymän komponentteja vastaa jokin liittymäolio. Liittymäluokkien tietosisältöön ja toimintoihin vaikuttavat päätökset siitä, missä määrin ja miten käyttöliittymä pyritään eristämään järjestelmän muista osista. Eristämisnen voidaan toteuttaa esim. MVC (Model-View- Controller) -arkkitehtuurin avulla (Krasner, G., Pope S:: Cookbook for using the Model- View-Controller User Interface Paradigm in Smalltalk-80, JOOP August/Sept.1988) Harri Laine 8/20

MVC-arkkitehtuuri MVC:ssä eristetään tietosisältö (model) sen esittämisestä (view) ja siihen kohdistuvan käsittelyn hallinnasta (controller). Sisältöoliot pitävät sisällään kaikki esitettävät tiedot ja niiden muuttamiseen tarvittavat operaatiot. Ne eivät tiedä mitään käyttöliittymästä, tietojen esittämismuodosta eivätkä tiedoille käyttöliittymässä tehtävistä operaatioista. Sisältöoliot tarjoavat käyttöliittymästä riippumattomat operaatiot tietojen hakuun ja muokkaukseen. Esim. sisältöolio kello: ylläpitää sisäisesti kellonaikaa tarjoaa operaation ajan kysymiseksi tarjoaa operaatiot ajan asettamiseksi MVC-arkkitehtuuri Näkymäoliot (view) esittävät niihin liitetyn sisältöolion tilaa. Ne käyttävät hyväkseen sisältöolion kyselypalvelua saadakseen tilan selville. Esim. Kellon voisi liittyä kaksi näkymäoliota: analogianäyttö ja digitaalinäyttö. Harri Laine 9/20

MVC-arkkitehtuuri Ohjausolio (controller) hallitsee sitä, miten käyttäjä voi vaikuttaa sisältöolioiden tietoihin. Se esimerkiksi ottaa vastaa hiiren näpäyksiä, näppäimen painamisia jne. ja muuntaa nämä sisältöolioiden tilaan vaikuttaviksi operaatioiksi. Esim. Kellon analogianäyttöön voisi liittyä säädin, jossa on eteen ja taakse napit. Näiden painaminen siirtäisi viisareita eteen tai taaksepäin. Painamisen kesto määräisi siirtymän suuruuden. Kun painaminen loppuu säätönuppi välittää tiedon muuttuneesta ajasta kellooliolle sen ajanasetus operaation avulla MVC-arkkitehtuuri Yllä ohjausolio toimii aluksi vaikuttamalla suoraan näkymään. Kun tieto on välitetty sisältöoliolle se välittää tiedon kaikille siihen liittyville näkymille. Kelloesimerkissä digitaalinäyttö näyttäisi siis eri aikaa niin kauan kuin säätimen nappia painetaan, mutta kun nappi irroitetaan se muuttuisi samaan aikaan analogiakellon kanssa. Joissain tapauksissa olio voi toimia sekä näkymäettä ohjausoiliona. Sisältöolioon voi liittyä monta (näkymä, ohjausolio) -paria. Harri Laine 10/20

MVC-arkkitehtuuri sisältö <-- muuta tilaa ohjain muuta_tilaa tiedota lisää_näkymä poista_näkymä päivitä ulkoasu --> 0..* ulkoasu näkymä päivitä_ulkoasu (reagoi-ohjaukseen) <-- reagoi ohjaukseen MVC-arkkitehtuuri Sisältöolio rekisteröi näkymän lisää-näkymä operaatiolla ja vastaavasti voi kytkeytyä siitä irti. Ohjain voi vaikuttaa suoraan näkymän tilaan tai epäsuorasti muuttamalla sisällön tilaa. Kun sisällön tila muuttuu sisältöolio tiedottaa asiasta kaikille olion tilasta kiinnostuneiksi rekisteröityneille näkymille. Harri Laine 11/20

Suunnittelun eteneminen Oliopohjaisessakin suunnittelussa voidaan nähdä tieto- tai toimintokeskeisiä painotuksia tietokeskeisen oliosuunnittelun lähtökohtana on tiedon piilottaminen: olioluokkia pyritään löytämään tietoabstraktioiden kautta toimintokeskeistä painotusta edustaa ns. vastuuseen perustuva oliosuunnittelu, jossa olioiden määrittelyperustana on olion vastuu jostakin (yleensä toiminnallisesta) kokonaisuudesta ja olion tietosisältö määräytyy vastuun mukaisesti Valittu lähestymistapa johtaa erilaiseen olio- ja luokkarakenteeseen Suunnitteluohjeita Oliorakennetta suunniteltaessa pitäisi pyrkiä minimoimaan olioiden välisiä yhteyksiä olio 'tuntee' mahdollisimman vähän muita olioita ja näiden luokkia olio käyttää mahdollisimman vähän muiden olioiden palveluja palvelujen käyttöön liittyvät sanomat ovat mahdollisimman yksinkertaisia (vrt. Kytkentä) Harri Laine 12/20

Suunnitteluohjeita postinkantaja kuljetaposti (posti, paikka) opettaja posti paikka omavahtimestari lähetä (posti, Paikka) vahtimestari postimies getpostimies( ) postinkantaja getpostimies () { return postimies; } lähetä(posti,paikka) { postinkantaja kantaja; kantaja = omavahtimestari.getpostimies; kantaja.kuljetaposti(posti,paikka); } Suunnitteluohjeita postinkantaja kuljetaposti (posti, paikka) opettaja posti paikka omavahtimestari lähetä (posti, paikka) postimies vahtimestari toimitaposti (posti, paikka) toimitaposti () { postimies.kuljetaposti(posti,paikka); } lähetä(posti,paikka) { omavahtimestari.toimitaposti(posti,paikka); } Tämä on parempi! Harri Laine 13/20

Suunnitteluohjeita opettaja vahtimestari postinkantaja vaihtoehto 1 getpostimies kuljetaposti vaihtoehto 2 toimitaposti kuljetaposti Suunnitteluohjeita Järjestelmän keskeisiä olioita ovat jo määrittelytasolta periytyvät oliot joiden tietoa järjestelmässä on tarkoitus säilyttää ja ylläpitää. (siis yleensä tietoolioit). Näille luokille voidaan perusoperaatioina määritellä yksinkertaiset operaatiot attribuuttien kysymiseksi ja attribuuttien arvojen asettamiseksi (getattribute, setattribute). Jos luokan oliolla on monia olomuotoja (tietokanta, keskusmuisti) näiden väliset muunnokset ovat välttämättömiä operaatioita. Jos näyttää siltä, että usein tarvitaan perusattribuuteista johdettua tietoa, tarjotaan nämä operaationa tai johdettuna attribuuttina. Harri Laine 14/20

Käyttötapauslähtöinen suunnittelu (Laine: Olioiden maihinnousu, luku 6.4, Suomen Atk-kustannus, 1997) Käyttötapauslähtöisessä suunnittelussa suunnittelu etenee käyttötapaus kerrallaan. Suunnittele kokonaisvaltaisesti käyttöliittymän perusratkaisu ikkunat, painikkeet, valikot, yms. Ratkaise eristetäänkö käyttöliittymä ja tietosisältöja tee tästä päätöksestä johtuvat perusratkaisut, esim. MVC Käyttötapauslähtöinen suunnittelu Käy läpi järjestelmän käyttötapaukset laadi käyttötapauskohtainen näkemys järjestelmän oliorakenteesta (vain ne luokat, jotka osallistuvat toimintaan) Käyttötapauskohtaisessa näkymässä kuvataan vain ne osat oliomallista, jotka ovat välttämättömiä käyttötapauksen kannalta. hahmottele käyttötapauksen läpivientiin liittyvä olioyhteistyö Koosta näkemyksistä kokonaisvaltainen järjestelmän oliorakenne (tätä voidaan tehdä sitä mukaa kun näkemyksiä valmistuu) Harri Laine 15/20

Käyttötapauslähtöinen suunnittelu Parantele oliorakennetta yleistä, erota yhteiset osat, yhtenäistä, sovella suunnittelumalleja Mukauta nakemykset ja olioyhteistyö parannettuun malliin Käyttötapaus esittää toiminnallisen vaatimuksen ts. tavoitteen : tehtävänä on miettiä miten toiminta saadaan aikaan olioiden avulla Käyttötapauksen läpivientimallit Mitä on tehtävä = tehtävä skenaariossa (tilannekuvauksessa) Miten käyttäjä toimii Miten järjestelmä reagoi karkealla tasolla täsmallisesti olioyhteistyönä Harri Laine 16/20

Käyttötapauksen läpivientimallit käyttötapauksen läpivientimalli taulukkona suoritustapa kuvaus tavasta, jolla tehtävä tehdään järjestelmän toiminta karkeahko kuvaus siitä, miten järjestelmä reagoi käyttäjän toimiin Käyttötapauksen läpivientimallit käyttäjätehtävä tehtävä asia Käyttäjätehtävä Valitse luokka (a) Suoritustapa 1. Vie kaavioikkunassa hiirikursori luokkasymbolin päälle 2. Näpäytä hiiren vasenta näppäintä Järjestelmän toiminta Järjestelmä tutkii oliko näpätyssä kohdassa luokkasymboli. Jos oli, niin vanha valintajoukko tyhjennetään ja valittua symbolia vastaava luokka lisätään valintajoukkoon. Valintajoukkoon kuuluvat näytetään ruudulla valittuina Harri Laine 17/20

Suunnittelun eteneminen Suunnittelussa järjestelmän toiminnan kuvausta tarkennetaan, pyrkimyksenä löytää olioiden yhteistyöketju toiminnan hoitamiseksi: Liikkeelle lähdetään käyttäjän toiminnan vastaanottavista olioista ja niiden luokista. Jacobssonin jaottelussa nämä ovat liittymäolioita, MVC:ssä näkymä- tai ohjainolioita. Liittymäoliolle määritellään käyttäjäoperaation vastaanottava(t) palvelu(t). Toiminta tarkennetaan toimenpiteiksi ja ehdoiksi, joiden vallitessa toimenpide suoritetaan. Suunnittelun eteneminen Kullekin toimenpiteelle valitaan suorittaja Tämä voi olla liittymäolio, siihen liitetty tieto-olio tai jokin ohjaus- tai apuolio. Oliot suorittavat toimenpiteitä omien vastuidensa mukaisesti. Jos suorittajalla ei vielä ole toimenpidettä vastaavaa palvelua (operaatiota), sille määritellään sellainen. kenelle palvelu pitäisi määritellä:» ensisijaisesti kohteelle = se, jonka tila muuttuu, jos kohteita on useita, onko joku näistä pääkohde, jakautuuko palvelu osiin suorittajaa valittaessa voidaan joutua määrittelemään uusi luokka, koska nykymallissa ei ole sopivaa. Harri Laine 18/20

Suunnittelun eteneminen Esim: hevosen satulointi hevonen.satuloi(satula)» jos ensisijaisesti hevosen tila muuttuu satula.kiinnity(hevonen)» jos ollaan ensijaisesti kiinnostuneita satuloiden tiloista (vapaana, käytössä) ratsastaja.satuloi(hevonen,satula)» ohjausolio hoitelee homman Suorittajia valittaessa sovelletaan hyviksi havaittuja suunittelumalleja (design pattern) Suunnittelun eteneminen Suorittajalla on oltava riittävästi tietoa palvelun suorittamiseksi. Lisätään tarvittaessa luokalle uusia ominaisuuksia tai palvelulle parametreja. Jos palvelulle lisättiin parametreja, varmistetaan, että palvelua käyttävät oliot ja palvelut kykenevät ne toimit-tamaan. Elleivät kykene, on suunnitelmaa iteroitava. Luokkaan voidaan myös liittää avustajia, joille voidaan delegoida osa toiminnasta. Olio voi käyttää vain tuntemiensa olioiden palveluja. Täten, jos toiminnon suorittamiseen tarvitaan avustajia, on määriteltävä, miten alkuperäinen olio tuntee nämä. Harri Laine 19/20

Suunnittelun eteneminen Tunteminen voi perustua: siihen, että avustava olio on yleisesti tunnettu (globaali), siihen, että avustaja ilmoitetaan avustuksen tarvitsijalle palvelua pyydettäessä (parametri) oliosta on tietorakenteiden avulla luotu yhteys avustavaan olioon. Avustusta määriteltäessä voidaan joutua määrittelemään olemassaoleville olioluokille uusia ominaisuuksia ja palveluja tai jopa uusia olioluokkia ja niille ominaisuuksia sekä palveluja. Myös uusien yhteyksien määrittely voi olla tarpeen. Oliorakenteet ja yhteistyö suunnitellaan samanaikaisesti Harri Laine 20/20