1. Käyttötapalähtöinen suunnittelu. Ohjelmistotuotanto. Käyttötapalähtöinen suunnittelu. Käyttötapalähtöinen suunnittelu
|
|
- Mika Hakala
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 Ohjelmistotuotanto Ohjelmistosuunnittelu 2 1. Käyttötapalähtöinen suunnittelu Lähtökohdat: käyttötapamalli (käyttötapaukset, use cases), määrittelytason luokkakaavio Tehtävät: 1. Käyttöliittymän periaatesuunnittelu Mitkä käyttötapaukset hoidetaan saman käyttöliittymän kautta? Ulkoasu, look and feel Periaateratkaisu käyttöliittymän ja sovelluslogiikan suhteista miten käyttöliittymä erotetaan sisältöluokista arkkitehtuuri (MVC / komennot /.) Käytettävä liittymäkirjasto Syntyy liittymäluokkia, jotka vastaanottavat syötteitä ja välittävät tuloksia 1 Harri Laine, Jukka Paakki 2 Käyttötapalähtöinen suunnittelu 2. Tietojen säilytykseen liittyvät periaateratkaisut tiedostot, tietokannat, ohjelman ja tietokannan kommunikointi -kerrostus, eristäminen kirjastot sisältöluokat määrittelytason luokkien pohjalta 3. Hajautukseen ja tietoliikenteeseen liittyvät periaateratkaisut sanomanvälitys, kirjastot Käyttötapalähtöinen suunnittelu 4. Käyttötapausten läpikäynti: 4.1. Ratkaise, miten käyttötapaus hoituu käyttäjän kannalta 4.2. Ratkaise käyttötapauksen kulku järjestelmän kannalta osallistuvat oliot, luokat, palvelut, attribuutit olioiden yhteistyö - mitä palveluja käytetään lisää tarvittaessa palveluita, luokkia ja attribuutteja, jotta saat yhteistyön sujumaan simuloi käyttötapausta luokkamallin suhteen Harri Laine, Jukka Paakki 3 Harri Laine, Jukka Paakki 4 Käyttötapalähtöinen suunnittelu Pitäisi saada aikaan tietty toiminto Minkä olion vastuulla toiminto on? luokka, olio; lisää tarvittaessa Onko luokalla jo tarvittava palvelu? lisää tarvittaessa Onko oliolla tarpeellinen tietosisältö palvelun hoitamiseksi? lisää tarvittaessa attribuutteja, yhteydet muihin olioihin Hoitaako olio palvelun yksinään vai tarvitaanko yhteistyötä? mahdollista yhteistyö; vain tunnettujen olioiden palveluita voi käyttää Käyttötapalähtöinen suunnittelu 4.3. Tehdyt muutokset voivat vaikuttaa aiemmin tehtyihin ratkaisuihin - iteroi 5. Täsmällinen kuvaus luokista, attribuuteista ja palveluista 6. Pakkausten, osajärjestelmien yms. määrittely Hyödynnä standardoituja ratkaisumalleja ja olemassa olevia kirjastoluokkia Harri Laine, Jukka Paakki 5 Harri Laine, Jukka Paakki 6 1
2 (UML): Sekvenssikaavio (yhteistyöpolut) (sequence diagram) Keskitytään erityisesti kuvaamaan operaatioiden tapahtumajärjestystä ja toimintaan liittyvien viestien kulkua. Sekvenssikaavion toinen ulottuvuus on aika. Yhteistyörakennekaavio (collaboration diagram) Keskitytään kuvaamaan sitä, miten yhteistyö hyödyntää olioiden välisiä kytkentöjä. Viestien ajallinen kulku merkittävä kaavioon erikseen. Sekvenssikaavio Kuvaa, miten kontrolli ajallisesti etenee oliolta toiselle jotain toimintoa (esim. käyttötapausta) suoritettaessa mitä olioita palvelun suoritukseen osallistuu ja mitä näiden palveluja käytetään missä järjestyksessä olioiden palveluita käytetään Harri Laine, Jukka Paakki 7 Harri Laine, Jukka Paakki 8 operaatio / palvelu palkin pituus kuvaa palvelun kestoa olio1:luokka [ehto] viesti (parametrit) olio2:luokka nimeää käytettävän palvelun aika Viestit ovat yleensä palvelujen kutsuja (palvelupyyntöjä) palvelun nimi (ja parametrit) käytännössä metodikutsu olio-ohjelmassa ehto ei ole välttämätön palveluun liittyvä paluunuoli jätetään yleensä piirtämättä, vaikka palaute saataisiinkin (kaavio tulee näin yksinkertaisemmaksi) Harri Laine, Jukka Paakki 9 Harri Laine, Jukka Paakki 10 class A { B oliob; C olioc; D oliod; public int doit() { oliob.assist1(); olioc.assist2(oliod); class D {. public serviced { class B { E olioe; public void assist1() { olioe.dosomething(); class C {. public void assist2(d od){ od.serviced() doit olioa:a oliob:b olioe:e olioc:c oliod:d assist1() dosomething assist2(oliod); serviced Harri Laine, Jukka Paakki 11 Harri Laine, Jukka Paakki 12 2
3 Luonti ja tuhoaminen SILMUKAT Palvelua pyydetään useilta olioilta use create :Apuluokka Saman palvelujonon toisto olio1 olio2 olio3 * palvelu delete * koottu Harri Laine, Jukka Paakki 13 Harri Laine, Jukka Paakki 14 Yhteistyöketjuja käytetään havainnollistamaan oliorakenteen toimintaa ei kannata laatia jokaiselle palvelulle / käyttötapaukselle, vaikka jokaisen kohdalla yhteistyö on mietittävä laaditaan keskeisille palveluille ja tilanteisiin, joissa kaavioiden käyttö edistää suunnitelman ymmärtämistä 3-4 viestiä pidemmät ketjutpikemminkin sotkevat kuin havainnollistavat 2. Hyvä oliorakenne Oliorakennetta suunniteltaessa pitäisi pyrkiä minimoimaan olioiden välisiä yhteyksiä (kytkentää) olio 'tuntee' mahdollisimman vähän muita olioita ja näiden luokkia olion tarvitsee käyttää mahdollisimman vähän muiden olioiden palveluja (kiinteys, cohesion) palvelujen käyttöön liittyvät sanomat ovat mahdollisimman yksinkertaisia Harri Laine, Jukka Paakki 15 Harri Laine, Jukka Paakki 16 Hyvä oliorakenne? Hyvä oliorakenne postinkantaja kuljetaposti (posti, paikka) opettaja posti paikka omavahtimestari postinkantaja kuljetaposti (posti, paikka) opettaja posti paikka omavahtimestari lähetä (posti, paikka) lähetä (posti, paikka) vahtimestari postimies vahtimestari postimies getpostimies( ) postinkantaja getpostimies () { return postimies; lähetä (posti,paikka) { postinkantaja kantaja; kantaja = omavahtimestari.getpostimies; kantaja.kuljetaposti(posti,paikka); toimitaposti (posti, paikka) toimitaposti () { postimies.kuljetaposti(posti,paikka); lähetä (posti,paikka) { omavahtimestari.toimitaposti(posti,paikka); Löyhä paikallinen kytkentä: tämä on parempi! Harri Laine, Jukka Paakki 17 Harri Laine, Jukka Paakki 18 3
4 Hyvä oliorakenne Hyvä oliorakenne vaihtoehto 1 opettaja vahtimestari postinkantaja getpostimies kuljetaposti Perinnän ja dynaamisen sidonnan hyödyntäminen Tarkastellaan ohjelmaa, jonka tehtävänä on tuottaa erilaisista kuvioista muodostuva kuvaesitys Ratkaisu 1: perinteinen malli - ei perintää laajentaminen edellyttää luokan Kuvio muuttamista vaihtoehto 2 toimitaposti kuljetaposti Kuvio Tyyppi Piirrä if Tyyppi= ympyrä then piirrä_ympyrä(.) else if Tyyppi= suorakaide then piirrä_suorakaide(.) else. Harri Laine, Jukka Paakki 19 Harri Laine, Jukka Paakki 20 Hyvä oliorakenne Perintää ja syrjäyttämistä hyödyntävä. Uusia muotoja voidaan lisätä helposti. Kuvion muoto määräytyy luonnin yhteydessä. Ympyrä Piirrä Kuvio Piirrä: abstract Suorakaide Piirrä Uusimuoto Piirrä Hyvä oliorakenne Erillinen algoritmi, jolle toiminta ohjataan: muotoa voidaan vaihtaa dynaamisesti lennossa Kuvio piirtotapa piirrä Piirtotapa piirtele ympyrä suorakaide piirrä_ympyrä piirrä_suorakaide uusitapa piirtotapa.piirtele() uusitapa Harri Laine, Jukka Paakki 21 Harri Laine, Jukka Paakki Ratkaisumallit Edellisellä kalvolla oli esimerkki suunnittelutason ratkaisumallista (Strategy), joka lisää joustavuutta ja muunneltavuutta järjestelmään. Esim. UML-kaavioiden laatimisohjelma, jossa käyttäjä saisi määritellä omat kuvasymbolinsa, voisi käyttää tätä ratkaisumallia (tai jotain vielä paremmin soveltuvaa). Ratkaisumallit Ratkaisumallit (patterns) ovat systemaattisia hyviksi havaittuja tapoja ratkaista tietty usein esiintyvä ongelma taitotiedon, kokemuksen dokumentti yleiskäyttöisiä ratkaisumalleja sovellusaluekohtaisia ratkaisumalleja Ratkaisumalleja voi liittyä kehittämisprosessiin (process pattern) määrittelyvaiheen ongelmiin (analysis pattern) suunnitteluvaiheen ongelmiin (design pattern) ohjelmointitason ongelmiin (idiom) Harri Laine, Jukka Paakki 23 Harri Laine, Jukka Paakki 24 4
5 Ratkaisumallit Analyysimallit (analysis patterns) Kuinka jäsentäisi ongelman, jotta saavutettaisiin joustavuutta/muunneltavuutta/.? Suunnittelumallit (design patterns) Kuinka ongelma olisi hyvä ratkaista teknisesti, jotta saavutettaisiin joustavuutta / muunneltavuutta / ylläpidettävyyttä / tilansäästöä / toimivuutta / siirrettävyyttä Idiomit (idioms) Kuinka asia pitäisi ratkaista esim. Javalla Ratkaisumallit Parantelumallit eli anti-mallit (anti-patterns) Normaalisti ratkaisumalleissa kuvataan ongelma ja esitetään siihen ratkaisutapa. Parantelumalleissa lähtötilanteena on se, että jotain on jo tehty tavalla, joka aiheuttaa ongelmia. Mallit esittävät ratkaisutavan, jolla päästään nykyistä parempaan ratkaisuun. Parantelumalli = huono ratkaisu usein esiintyvään ongelmaan + ohjeet huonon ratkaisun muuttamiseksi hyväksi (esim. ratkaisumallin mukaiseksi) Harri Laine, Jukka Paakki 25 Harri Laine, Jukka Paakki 26 Ratkaisumallit Tunnetuin lähde: E. Gamma, R. Helm, R. Johnson, J. Vlissides: Design Patterns - Elements of Reusable Object- Oriented Software, Addison-Wesley, 1995 esittelee 23 ohjelmista etsittyä olioperustaista suunnittelumallia Seuraavaksi käydään läpi muutama esimerkki yllä mainitun lähteen ratkaisumalleista Ratkaisumallit Kooste (Composite) Tarkoitus: Kokonaisuuden ja sen osien käsitteleminen samalla tavalla Esimerkki: piirto-ohjelmassa kuvio voi koostua hierarkkisesti pienemmistä osakuvioista, ja halutaan piirtää kaikki kuvioelementit samalla tavoin (ts. samannimisellä operaatiolla hyödyntäen olioohjelmoinnin monimuotoisuutta ja dynaamista sidontaa) Harri Laine, Jukka Paakki 27 Harri Laine, Jukka Paakki 28 Ratkaisumallit Kooste (Composite) Client Leaf Operation( ) foreachc in children c.operation Component Operation () : abstract Add (Component) Remove (Component) GetChild (int) * Composite children Operation () Add (Component) Remove (Component) GetChild (int) Harri Laine, Jukka Paakki 29 Ratkaisumallit Kooste (Composite) Määritellään abstrakti luokka, jonka konkreettisina aliluokkina(siis sellaisina, joilla on ilmentymiä) ovat alkeisluokat ja kokoelmat. Palvelut määritellään abstraktin luokan tasolla. Palvelut jakautuvat kokoelman hallintapalveluihin ja varsinaisiin palveluihin. Kokoelman varsinaiset palvelut suoritetaan välittämällä pyyntö kokoelman osille. Esimerkiksi abstrakti luokka voisi olla kuvio ja sen aliluokat olisivat alkeiskuvio ja koottu_kuvio. Varsinainen palvelu olisi piirrä. Kootun kuvion piirrä -palvelu toteutetaan kutsumalla kunkin sen osan piirrä -palvelua. Harri Laine, Jukka Paakki 30 5
6 Ratkaisumallit Kooste (Composite) Ratkaisumallit Kooste (Composite) Leaf1 Composite1 Composite2 Leaf2 Composite1.children Ratkaisun etunaon se, että asiakas pystyy käsittelemään myös koosteoliota missä tahansa yhteydessä, jossa se käsittelee alkeisoliota Haittana on se, että kaikki koosteoliot ovat rakenteeltaan samanlaisia (ei voi olla eri tavoin käsiteltäviä, täysin erilaatuisia osia) Leaf3 Leaf4 Leaf5 Composite2.children Harri Laine, Jukka Paakki 31 Harri Laine, Jukka Paakki 32 Ratkaisumallit Tarkkailija (Observer) Ratkaisumallit Tarkkailija (Observer) Tarkkailija (Observer) esittää tavan välittää olion tilan muuttuminen tästä riippuville olioille ilman, että olioiden välillä olisi kumpaankin suuntaan vahvaa kytkentää. Kaksi roolia, kohde ja tarkkailija. Tarkkailija (Observer) rekisteröityy tarkkailemaan kohdetta (Subject). Kohde tiedottaa muutoksesta kaikille rekisteröityneille tarkkailijoilleen. Saatuaan ilmoituksen tarkkailija selvittää kohteen tilan. Abstract Subject Observers[] Join() Detach() Notify() Concrete Subject State getstate() setstate() Heikko kytkentä forall Observers update() Observer update() Concrete Observer subject update() Harri Laine, Jukka Paakki 33 Vahva kytkentä subject.getstate Harri Laine, Jukka Paakki 34 Ratkaisumallit Tarkkailija (Observer) Rekisteröityminen Ratkaisumallit Tarkkailija (Observer) Observer Join() Subject Subject setstate Observer Notify * update getstate Harri Laine, Jukka Paakki 35 Vahva kytkentä Harri Laine, Jukka Paakki 36 6
7 Ratkaisumallit Tarkkailija (Observer) Ratkaisumallit Tarkkailija (Observer) Käyttötilanteita käyttöliittymän näkymä - kohde taulukon (taulukkolaskimen) johdettu alkio - perusalkio Laskentataulukko: viewa A B C=A+B cella Nuolet osoittavat tarkkailtavaan viewb cellb viewc cellc Harri Laine, Jukka Paakki 37 Harri Laine, Jukka Paakki 38 Ratkaisumallit Tarkkailija (Observer) Vaaroja: Tarkkailija saa useita ilmoituksia saman kohteen muutoksista - turhia päivityksiä esim. jos kohdeluokan erikoistamiseen ei ole varauduttu, voi malli aiheuttaa useita ilmoituksia kohde muutos uusikohde muutos do_it(); notify() super.muutos(); omat_hommat(); notify() Ilmoitetaan keskeneräisestä tilasta Ratkaisumalli Tehtaat (Factory-mallit) Olioiden luominen on oliomalleissa ongelmallinen tehtävä olion toiminnallisuus määräytyy sille luontihetkellä annetun konkreettisen luokan perusteella konkreettiset luokat eivät ole tiedossa kirjastoa laadittaessa - miten siis kirjaston pitäisi huomioida luonti? erityiset luontiluokat, joilla abstraktit luontipalvelut luontipalvelut konkretisoidaan luontiluokkien aliluokissa Harri Laine, Jukka Paakki 39 Harri Laine, Jukka Paakki 40 Ratkaisumalli Abstrakti tehdas (Abstract Factory) Abstract Factory: olioiden luontiin liittyvä olioiden välisiä suhteita hyödyntävä malli Tarkoitus: malli esittää tavan luoda tietyn luokan jälkeläisluokkien ilmentymiä tuntematta näitä luokkia Esimerkki: yleiskäyttöinen käyttöliittymäkirjasto Käyttöliittymäkontrolli Windowskontrolli Motifkontrolli. kontrollit erilaisia eri ympäristöissä; kirjaston pitäisi olla yleinen, mutta miten voidaan yleisellä tasolla luoda ilmentymiä ympäristökohtaisille luokille? Harri Laine, Jukka Paakki 41 Ratkaisumalli Abstrakti tehdas (Abstract Factory) Client ConcreteFactory1 CreateProductA( ) CreateProductB( ) AbstractFactory CreateProductA (...) : abstract CreateProductB (...) : abstract ConcreteProductA1 ConcreteFactory2 CreateProductA( ) CreateProductB( ) creates ConcreteProductB1 AbstractProductA ConcreteProductA2 AbstractProductB creates ConcreteProductB2 Harri Laine, Jukka Paakki 42 7
8 Ratkaisumalli Abstrakti tehdas (Abstract Factory) Ratkaisumalli Abstrakti tehdas (Abstract Factory) Client (siis hyödyntävä ohjelma) tuntee abstraktin tehtaan ja abstraktit tuotteet ja kutsuu näiden tarjoamia palveluja. Abstraktin tehtaan palvelukutsu ohjautuu konkreettisen tehtaan vastaavaan luontipalveluun, joka siis luo ilmentymän kyseisen tyyppiselle tuotteelle Esim. Windows-kontrollitehtaan LuoNappi-palvelu luo ilmentymän winnappi-luokkaan. Client KontrolliTehdas LuoNappi (...) : abstract LuoLiuku (...) : abstract winnappi creates winliuku Nappi motifnappi Liuku motifliuku KontrolliTehdasWin LuoNappi( ) LuoLiuku( ) KontrolliTehdasMotif LuoNappi( ) LuoLiuku( ) Harri Laine, Jukka Paakki 43 Harri Laine, Jukka Paakki 44 Ratkaisumalli Abstrakti tehdas (Abstract Factory) Mallilla eristetään konkreettiset tehtaat asiakkaasta Tuoteperhe voidaan helposti vaihtaa toiseksi Asiakkaan on tunnettava tuotetyypit, joten uusia tuotetyyppejä ei voida lisätä pelkästään aliluokkia lisäämällä, vaan tällöin on muutettava asiakkaan koodia ja abstraktin tehtaan koodia esim. kilistimen lisäys käyttöliittymäkontrolleihin Komento (Command) -suunnittelumalli soveltuu tilanteisiin, joissa operaation käynnistämiseen on erilaisia vaihtoehtoja, mutta lopputuloksen pitäisi kuitenkin olla sama järjestelmään pitäisi pystyä helposti liittämään uusia operaatioita puuttumatta järjestelmän perusrakenteisiin operaatioita pitäisi pystyä perumaan ja uudelleensuorittamaan Suunnittelumallissa varsinainen toiminta eristetään toimintapyynnöstä muodostamalla pyynnöstä erillinen komento -olio Kaikilla komennoilla on yhteinen rajapinta, joka pitää sisällään vähintään palvelun suorita (do, execute) Harri Laine, Jukka Paakki 45 Harri Laine, Jukka Paakki 46 Komennon rajapintaan voi lisäksi kuulua peruutus (undo) toimiakseen peruutus saattaa edellyttää edeltäneen tilan kirjaamista komennon tietorakenteisiin esim. kun teksti korvataan toisella, on peruutusta varten taltioitava korvattu teksti sen alkukohta ja korvaavan tekstin pituus uudelleensuoritus (redo) edellyttää myös tilatietojen tallennusta Komentojen suorituksen ohjausta voidaan hallita erityisen komentokäsittelijän (command processor) avulla komentokäsittelijä ei ole aina välttämätön, mutta se on tarpeen esimerkiksi peruutusten yhteydessä komentokäsittelijä ottaa vastaan komentoja (addcommand) ja tallentaa ne tyypillisesti komentojonoksi done previous next To do add Harri Laine, Jukka Paakki 47 Harri Laine, Jukka Paakki 48 8
9 Peruskuvio 1: Kun aiheuttaja (client, controller) haluaa saada aikaan toiminnon, se luo komennon ja joko aktivoi luomansa komennon suorituksen tai luovuttaa sen komentokäsittelijälle aktivoitavaksi Peruskuvio 2: Aiheuttaja reagoi käyttäjän toimenpiteeseen aktivoimalla siihen ennalta kytketyn komennon suorituksen Client (esim. pääohjelma) luo konkreettisen komennon (esim. OpenFile). Se kytketään jotenkin aiheuttajaan Invoker (esim. MenuVaihtoehto - mainmenu. additem( Open, new OpenFile()) Harri Laine, Jukka Paakki 49 Harri Laine, Jukka Paakki 50 controller command processor receiver create addcommand (d) execute() d: delete command getselection() deletetext undo() undo() appendtext( stored, position) Harri Laine, Jukka Paakki 51 Harri Laine, Jukka Paakki 52 Yleensä on järkevää mahdollistaa myös komennot, jotka kootaan alkeellisemmista komennoista tällöin koottu komento (makro) on syytä toteuttaa koosteen (Composite) mukaisesti: command execute() * part Komentoja on suhteellisen helppo lisätä määritellään uusi komentoluokka Sama toiminto on kytkettävissä eri käynnistystapoihin Suuren komentomäärän välttämiseksi komentoja kannattaa yleistää ja parametroida macrocommand execute() for each part {part.execute() Harri Laine, Jukka Paakki 53 Harri Laine, Jukka Paakki 54 9
10 Ratkaisumalli Vierailija (Visitor) Vierailija (Visitor) soveltuu käytettäväksi kun erilaiset liittymät ja rakenteet omaaville kohteille halutaan suorittaa toimenpiteitä, jotka riippuvat konkreettisista luokista yhteenliittyvää operaatiokokonaisuutta ei haluta sirotella luokkiin eri käyttötilanteisiin liittyvän tilannekohtaisen koodin mukanaolo luokissa ei edistä uuskäyttöä rakenne on staattinen mutta operaatiot dynaamisia Ratkaisumalli Vierailija (Visitor) Ratkaisumallissa kootaan luokkakohtaiset palvelut vierailijan metodeiksi. Vierailijalla on kutakin luokkaa kohti oma erityismetodinsa. Oliot rekisteröivät vierailijan ja suorittavat palvelunsa kutsumalla vierailijan luokkakohtaista metodia. Vierailijan vaihtaminen vaihtaa palvelun. Vierailijan abstraktissa määrittelyssä on otettava huomioon kaikki konkreettiset luokat, joissa vierailija voi käydä => rakenne on ylläpidon kannata hankala. Harri Laine, Jukka Paakki 55 Harri Laine, Jukka Paakki 56 Ratkaisumalli Vierailija (Visitor) client ObjectStructure AbstractElement accept(visitor) visita() visitb() Visitor1 AbstractVisitor visita() visitb() Visitor2 visita() visitb() Ratkaisumalli Vierailija (Visitor) objectstructure elementa elementb visitor1 accept(visitor1) visita(elementa) operationa accept(visitor1) visitb(elementb) operationb v.visita(this); ElementA ElementB v.visitb(this); accept(visitor v) accept(visitor v) Harri Laine, Jukka Paakki 57 Harri Laine, Jukka Paakki 58 Ratkaisumalli Vierailija (Visitor) Toiminnallisia kokonaisuuksia saa lisättyä laatimalla uuden konkreettisen vierailijan Elementeissä voidaan aina varautua vierailijoihin Vierailija erottaa toiminnan ja tietorakenteen Tiukka kytkentä vierailijasta vierailtavaan. Vierailtavan muutos aiheuttaa yleensä aina muutoksen myös vierailijaan Epäsuora suoritusaikainen kytkentä käynnistyvään toimintaan normaalisti (C++, Java) olion luokka ja palvelun nimi määräävät toiminnon, ratkaisumallia käytettessä mukaan tulee lisäksi vierailija Suunnittelumallit (Gamma) Luonti Abstract Factory : samankaltaisten olioiden abstrakti luonti Factory Method: virtuaalinen luontioperaatio Builder : olion rakenteen eristäminen sen luonnista Prototype: kloonattavissa olevan prototyyppi-olion luonti Singleton: yhden ainokaisen luokkailmentymän luonti Harri Laine, Jukka Paakki 59 Harri Laine, Jukka Paakki 60 10
11 Suunnittelumallit (Gamma) Rakenne Adapter : luokan rajapinnan muuntaminen Bridge: abstraktin luokan ja konkreettisen luokan eristäminen toisistaan Composite: hierarkkisen rakenteen yhdenmukainen käsittely Decorator: olion toiminnallisuuden laajentaminen dynaamisesti Facade: yhtenäisen rajapinnan luominen erityyppisille luokille Suunnittelumallit (Gamma) Rakenne Flyweight: yleiskäyttöiset, jaetut oliot Proxy: olion edustaminen erillisellä valvojalla Harri Laine, Jukka Paakki 61 Harri Laine, Jukka Paakki 62 Suunnittelumallit (Gamma) Toiminta Chain of Responsibility: palvelupyynnön delegointi olioketjua pitkin Command: komento oliona Interpreter : kielen kielioppipohjainen tulkki Iterator: rakenteen osissa vierailu Mediator: olioiden välisen vahvan kytkennän muuttaminen löyhäksi Memento: olion tilan tallentaminen Suunnittelumallit (Gamma) Toiminta Observer : olion tilamuutosten valvonta State: olion toiminnallisuuden muuttaminen tilamuutoksen yhteydessä Strategy: algoritmiperheen toteutus Template Method: algoritmin luuranko Visitor: rakenteen osien käsittely järjestyksessä Harri Laine, Jukka Paakki 63 Harri Laine, Jukka Paakki Arkkitehtuurimallit 4. Arkkitehtuurimallit Tasot (Layers ) F. Buschmann et al.: Pattern-Oriented Software Architecture A System of Patterns. John Wiley, 1996 arkkitehtuuritason ratkaisumalleja myös suunnittelumalleja ja idiomeja kuvaustapa vähemmän systemaattinen kuin Gamman kirjassa mallit eivät välttämättä olioperustaisia Client Layer N Layer N-1 Layer 1 Harri Laine, Jukka Paakki 65 Harri Laine, Jukka Paakki 66 11
12 Etsintä 5. Arkkitehtuurin mittaaminen Maisa Arkkitehtuurin mittaaminen Maisa CallPartsFactory CreateSignaling() CreateSubscriber() TerminalPartsFactory TrunkPartsFactory CreateSignaling() CreateSignaling() CreateSubscriber() CreateSubscriber() <<create>> Charging Start() TrunkSignaling Stop() Phase1() Status Phase2() SS7-ISUP Call A-Subscriber B-Subscriber Start() HangUp() <<>> Signaling Status LocalSubscriber DialNumber() Answer() Data Terminate() TerminalSignaling TerminalSignaling Status ISDN-BRI Q.931 Hyvä vai huono? Subscriber Data Signaling ExternSubscriber Data TrunkSignaling Maisa : Laitoksen tutkimusprojekti (Metrics for Analysis and Improvement of Software Architectures) Hypoteesi : (anti-)suunnittelumallit ilmentävät arkkitehtuurin laatua Hypoteesi : arkkitehtoniset mallit ennustavat ohjelmiston laatua Malleja voi löytää arkkitehtuurista automaattisesti Arkkitehtuuria voi mitata (lisäksi perinteisin ohjelmistomittarein) <<create>> Harri Laine, Jukka Paakki 67 Harri Laine, Jukka Paakki 68 Ulkoinen reverse engineering -työkalu Ohjelmakoodi Arkkitehtoninen löydös Abstract Factory Ohjelmisto - arkkitehtuuri Mallikirjasto Sisäinen esitysmuoto Ulkoinen CASE-työkalu Maisa Mittaus- ja etsintä - konfiguraatio Mittaus- ja etsintä - tulokset, ennusteet Visualisointi CallPartsFactory CreateSignaling() CreateSubscriber() TerminalPartsFactory TrunkPartsFactory CreateSignaling() CreateSignaling() CreateSubscriber() CreateSubscriber() <<create> > Charging Start() TrunkSignaling Stop() Phase1() Status Phase2() SS7-ISUP <<create>> Call A-Subscriber B-Subscriber Start() HangUp() <<>> Subscriber Data Signaling Signaling Status LocalSubscriber ExternSubscriber DialNumber() Answer() Data Data Terminate() TerminalSignaling TrunkSignaling TerminalSignaling Status ISDN-BRI Q.931 Harri Laine, Jukka Paakki 69 Harri Laine, Jukka Paakki 70 Maisa - Perinteisiä suunnittelumittareita Koko : 11 luokkaa, 8 attribuuttia, 13 operaatiota Mutkikkuus : syvyys 2, leveys 2, kytkentä 4, McCabe 5 Suoritusaika : best-case 500, worst-case 1000, average-case 725 Lasketaan UML:n luokka-, tila-, aktiviteetti- ja sekvenssikaavioista Malliesiintymät toistaiseksi vain luokkakaavioista Harri Laine, Jukka Paakki 71 12
Ohjelmistotuotanto, s
Ohjelmistotuotanto Suunnittelu 3 Kuvion piirtotavan erottaminen omaksi piirtoalgoritmin toteuttavaksi olioksi on esimerkki (strategy) suunnittelutason ratkaisumallista, joka lisää joustavuutta ja muunnettavuutta
LisätiedotOliosuunnittelu. Oliosuunnittelu
Oliosuunnittelu Perinnän ja dynaamisen sidonnan hyödyntäminen Tarkastellaan ohjelmaa, jonka tehtävänä on tuottaa erilaisista kuvioista muodostuva kuvaesitys Ratkaisu 1: perinteinen malli - ei perintää
LisätiedotOhjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1
Ohjelmistojen mallintaminen Olioiden yhteistyö 18.11.2008 Harri Laine 1 Olioiden yhteistyö Oliokeskeisen ohjelmistonäkemyksen mukaan ohjelmiston palvelut tuotetaan olioiden yhteistyön tuloksena. Ohjelmisto
LisätiedotOhjelmistojen mallintaminen, sekvenssikaaviot
582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot 1 Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden
LisätiedotOhjelmistotekniikan menetelmät, suunnittelumalleja
582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman
LisätiedotLuokkakaavion laatiminen
Luokkakaavion laatiminen Kartoita luokkaehdokkaita Karsi ehdokkaita Tunnista olioiden väliset yhteydet Täsmennä luokkakuvauksia määrittelemällä attribuutit Määrittele yhteyksiin liittyvät osallistumisrajoitteet.
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton
2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State
2015 syksy 2. vsk VIII Suunnittelumallit Observer ja State Sisältö 1. Johdanto käyttäytymismalleihin 2. Observer 3. State Suunnittelumallit Observer ja State 2 VIII.1 Johdanto käyttäytymismalleihin Päätarkoitus
LisätiedotJohdatus sovellussuunnitteluun, s2000, osa5 Helsingin yliopisto;/tktl. Harri Laine 1. Luokkakaavion tarkoitus. Luokkakaavion tarkoitus
Luokkakaavion tarkoitus Järjestelmän tietosisällön kuvaaminen tiedot ja niiden väliset kytkennät järjestelmän tiedot kuvaavat kohdealueiden ilmiöitä, joten luokkakaavion tulisi määrittellä kohdealueen
LisätiedotT SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
LisätiedotJohdatus sovellussuunnitteluun
Harri Laine Johdatus sovellussuunnitteluun Osa 3 Helsingin yliopisto Tietojenkäsittelytieteen laitos 2000 Sisältö: 5. OLIOIDEN YHTEISTYÖ JA PALVELUIDEN MÄÄRITTELY... 1 5.1 SEKVENSSIKAAVIO... 1 5.2 YHTEISTYÖRAKENNEKAAVIO...
LisätiedotJohdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta
Olioiden yhteistoiminta Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu
LisätiedotOhjelmistojen mallintaminen, suunnittelumalleja
582104 Ohjelmistojen mallintaminen, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman tiettyjen
LisätiedotOlio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja)
Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Tässä osassa tutustutaan yhteen rakennemalliin (Proxy) ja kolmeen luontimalliin (Factory Method, ) teoksen [Gam] pohjalta.
LisätiedotJohdatus sovellussuunnitteluun
Harri Laine Johdatus sovellussuunnitteluun Osa 3 Helsingin yliopisto Tietojenkäsittelytieteen laitos 2002 Sisältö: 5. OLIOIDEN YHTEISTYÖ JA PALVELUIDEN MÄÄRITTELY...1 5.1 SEKVENSSIKAAVIO...1 5.1 YHTEISTYÖRAKENNEKAAVIO...6
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite
2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto
LisätiedotJohdatus sovellussuunnitteluun, s99, osa5 Helsingin yliopisto;/tktl DO NOT PRINT THIS DOCUMENT. Harri Laine 1. Olioiden yhteistoiminta
Olioiden yhteistoiminta Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu
LisätiedotOhjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1
Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development 2.12.2008 Harri Laine 1 Jacobson jakaa ohjelmiston oliot kolmeen tyyppiin liittymäolioiksi (interface objects, boundary objects)
LisätiedotOlioiden yhteistoiminta
Olioiden yhteistoiminta Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu
LisätiedotSuunnittelumalleja, MVC. Juha Järvensivu 2008
Suunnittelumalleja, MVC Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tarkkailija Strategia Rekursiokooste Tehdas-metodi MVC Tarkkailija suunnittelumalli Tarkkailijamalli (Observer) Määrittelee olioiden
LisätiedotOliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
LisätiedotOlio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä
Olio-ohjelmointi Johdanto suunnittelumalleihin Hyvin toimivan olio-ohjelmointiparadigmaa noudattavan ohjelman suunnitteleminen ei ole helppo tehtävä. On löydettävä sopiva luokkarakenne kuvaamaan ratkaistavaa
LisätiedotT SEPA - päiväkirja: Design Patterns. ETL työkalu
T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty
LisätiedotOhjelmistotekniikan menetelmät, UML
582101 - Ohjelmistotekniikan menetelmät, UML 1 Sisältö DFD- ja sidosryhmäkaavioiden kertaus Oliomallinnus UML:än kaaviotyypit 2 Tietovuokaaviot Data flow diagrams, DFD Historiallisesti käytetyin kuvaustekniikka
LisätiedotOhjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1
Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri 2 28.11.2008 Harri Laine 1 Ohjelmistoarkkitehtuuri Rajapinta UML:ssä piirteiden (attribuuttien ja operaatioiden) kokoelma, josta ei voi suoraan luoda ilmentymiä
Lisätiedot5. Suunnittelumallit. TTY Ohjelmistotekniikka
5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Antisuunnittelumallit Esimerkki: Rekursiokooste Suunnittelumallit ja kehykset Suunnittelumallit ja
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotHirviö. Design Patterns
Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 8. helmikuuta 2005 1 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia 3 3.1 PP..........................................
LisätiedotOhjelmistojen mallintaminen Unified Modeling Language (UML)
582104 Ohjelmistojen mallintaminen Unified Modeling Language (UML) 1 Olioperustaisuus Olio toimii mallinnuksen perusyksikkönä eri abstraktiotasoilla Järjestelmän rajaus, suunnittelu, ohjelmointi, suoritus..
Lisätiedot5. Suunnittelumallit. TTY Ohjelmistotekniikka
5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Antisuunnittelumallit Esimerkki: Rekursiokooste Suunnittelumallit ja kehykset Suunnittelumallit ja
LisätiedotSisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.
Sisällys Ratkaisumallien historia Jaakko Vuolasto 25.1.2001! Ratkaisumalli! Christopher Alexander! Ohjelmistotuotannosta arkkitehtuuriin! Henkilöhistoriaa! Ensimmäisiä käyttökokemuksia! Yhteenveto 25.1.2001
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VI Johdanto suunnittelumalleihin
2015 syksy 2. vsk VI Johdanto suunnittelumalleihin Sisältö 1. Taustaa 2. Model View - Controller 3. Suunnittelumallin kuvaamisesta 4. Tavoitteita 5. Suunnitteluongelmien suhde malleihin 6. Suunnittelumallien
LisätiedotTietorakennepohjaiset menetelmät
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
LisätiedotOlioiden yhteistyön mallintaminen
Olioiden yhteistyön mallintaminen Luokkakaaviosta käy hyvin esille ohjelman rakenne minkälaisia luokkia on olemassa miten luokat liittyvät toisiinsa Entä ohjelman toiminta? Luokkakaaviossa voi olla metodien
LisätiedotMuusta kuin vesisioista
Muusta kuin vesisioista Janne Käki 8.12.2006 Metodin kuormittaminen (overloading) Samannimisestä metodista on määritelty samassa luokassa (tai samassa yli- ja aliluokkien jatkumossa) useita versioita,
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotSunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander
Sunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander Ohjelmointitehtävät koodataan pääsääntöisesti Javalla. Netistä löytyviä vapaasti käytettäviä ratkaisuja voi esittää, kunhan ne osaa selittää.
LisätiedotSEPA - Design Patterns
SEPA - Design Patterns Kimmo Karlsson, 51066R & Antti Pirinen, 51406N 15. maaliskuuta 2005 1 Sisältö 1. Sisältö 2. Johdanto 3. Käyttöönotto 4. Käyttökokemukset 2 Johdanto Valitsemamme ohjelmistonkehityskäytäntö
LisätiedotAnalyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio
Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia
LisätiedotT Henkilökohtainen harjoitus: FASTAXON
T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä
LisätiedotTenttikysymykset. + UML-kaavioiden mallintamistehtävät
Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä
LisätiedotAnalyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio
Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia
Lisätiedothttp://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/
5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki: Rekursiokooste Antisuunnittelumallit Suunnittelumallit ja UML Mallikielet Suunnittelumallit
LisätiedotOhjelmistoarkkitehtuurit kevät
Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki:
LisätiedotTenttikysymykset. + UML- kaavioiden mallintamistehtävät
Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä
LisätiedotSisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
Lisätiedot12. Kehysarkkitehtuurit
12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto
LisätiedotKertaus: yleistys-erikoistus ja perintä
Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan
LisätiedotOhjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
LisätiedotHelsingin yliopisto, Tietojenkäsittelytieteen laitos Ohjelmistotuotanto, kurssikoe , H. Laine Arvostelu
Helsingin yliopisto, Tietojenkäsittelytieteen laitos Ohjelmistotuotanto, kurssikoe 15.11.2002, H. Laine Arvostelu Arvostelu kannattaa tehdä siten että maksimipistemäärä on 6 pistettä. On sitä helpompaa
LisätiedotJoskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.
Moniperintä 2 Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita. Oliomallinnus TITE.2040 Hannu K. Niinimäki 1 Delegointi 1 Moniperinnän toteuttaminen
LisätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä
LisätiedotUML- mallinnus: Tilakaavio
UML- mallinnus: Tilakaavio Karkea kuvaus UML- kaavioiden käytöstä ohjelmistonkehityksen eri vaiheissa ja tehtävissä. Mallinnus tilakaavioilla Tilakaaviolla kuvataan yhden luokan olioiden tilan muuttumista
LisätiedotUML - unified modeling language
UML - unified modeling language Lähtökohtana: Booch, Rumbaugh, Jacobsson Tavoitteena Unified Method - syntyykö? Kehittäjänä: Rational Inc. Standardointi: Object Management Group (OMG) - vaiheessa Lähteet:
LisätiedotRajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.
11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen
LisätiedotYhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä
DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Olioiden väliset yhteydet Yhteyden nimi Nimen lukusuunta pankkitili 0..10 Omistaja-> 1..3 asiakas
LisätiedotViestinvälitysarkkitehtuurit
Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja Komponenttien palveluja ei tiedetä tarkasti etukäteen Komponentteja ja
LisätiedotT-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli
T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli Lasse Lindqvist Lasse Lopperi llindqvi@cc.hut.fi lmlopper@cc.hut.fi
LisätiedotOhjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja
582104 Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 1 Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuurin määritelmä & arkkitehtuurisuunnittelun lähtökohta ja tavoitteet Kerrosarkkitehtuuri
Lisätiedot812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä
2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa
LisätiedotOhjelmistotekniikan menetelmät, luokkamallin laatiminen
582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1 Lähestymistapoja Kokonaisvaltainen lähestymistapa (top-down) etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue
LisätiedotOhjelmistotuotanto. Luento 9 23.4.2012
Ohjelmistotuotanto Luento 9 23.4.2012 Lisää suunnittelumalleja Olion rikastaminen dekoraattorilla Joskus eteen tulee tarve lisätä olioon jotain ekstraominaisuuksia, pitäen kuitenkin olio sellaisena että
LisätiedotAnalyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio
Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:
LisätiedotUML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN
UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN SISÄLLYS 3. Luokkakaavio UML -mallinnuskielessä 3.1 Luokkakaavion luokan rakenteet 3.2 Luokan kuvauksesta C++ ohjelmakoodiksi 3.3 Luokkakaavion luokkien yhteystyypit
LisätiedotJohdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet
..999 DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Yhteyden nimi Nimen lukusuunta pankkitili asiakas 0..0 Omistaja->..3
LisätiedotGraafisen käyttöliittymän ohjelmointi Syksy 2013
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 8 Suunnittelumallit käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Yleistä Suunnittelumalli on
LisätiedotSisällys. 11. Rajapinnat. Johdanto. Johdanto
Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.
LisätiedotViestinvälitysarkkitehtuurit Lähtökohta:
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti
LisätiedotOhjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 7: Olio-ohjelmointia: UML ja suunnittelumallit Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 14. 3. 2012 Sisältö 1 UML-luokkakaaviot
LisätiedotAnalyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio
Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:
LisätiedotKehyspohjainen ohjelmistokehitys
Kehyspohjainen ohjelmistokehitys Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Kehyksen suunnittelu Suunnittelumallit Vaatimusmäärittely Muunneltavuusvaatimukset Kehysarkkitehtuuri Erikoistamisrajapinta
LisätiedotUML:n yleiskatsaus. UML:n osat:
UML:n yleiskatsaus - voidaan hyödyntää hyvin laajasti. - sopii liiketoimintamallinnukseen, ohjelmistomallinnukseen sen jokaiseen vaiheeseen tai minkä tahansa pysyviä ja muuttuvia ominaisuuksia sisältävän
LisätiedotJohdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet
DO NOT PRINT THIS DOCUMENT DO NOT PRINT THIS DOCUMENT Yhteyden nimi Nimen lukusuunta pankkitili 0..0 Omistaja->..3 asiakas
LisätiedotOhjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1
Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa 14.11.2008 Harri Laine 1 Oliot ohjelmiston mallinnuksessa käyttötapaus käyttää Käyttämämme oliokeskeinen perusmalli ohjelmistojen
LisätiedotOhjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.
6. Suunnittelu Suunnittelun tulos Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja.
LisätiedotOlio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter
Olio-ohjelmointi Suunnittelumallit Adapter ja Composite Rakennemalleissa päähuomio kohdistetaan siihen, miten luokkia ja olioita yhdistellään muodostamaan laajempia rakenteita. Rakenteelliset luokkamallit
Lisätiedot4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
LisätiedotHirviö. Design Patterns
Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 15. maaliskuuta 2005 1 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia 3 3.1 PP..........................................
Lisätiedot6. Suunnittelu. Suunnittelun tulos
6. Suunnittelu Vaatimusanalyysin jälkeen seuraava työvaihe on suunnittelu. Siinä vaatimusanalyysin korkean abstraktiotason malleja käyttämällä luodaan alempien abstraktiotasojen malleja. Tavoitteena on
Lisätiedot812341A Olio-ohjelmointi Peruskäsitteet jatkoa
812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää
LisätiedotOhjelmistoarkkitehtuurit. Syksy 2010
Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin
LisätiedotTällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia.
MagicDraw-pikaohje Tällä harjoituskerralla on tarkoituksena harjoitella käyttötapaus-, luokka- ja tapahtumasekvenssikaavioiden luontia. Alkuvalmistelut Windows (sali TC205) 1) Kirjaudu sisään TTY:n intra-tunnuksella.
LisätiedotOhjelmistojen mallintaminen, kesä 2009
582104 Ohjelmistojen mallintaminen, kesä 2009 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin
LisätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Seuraavaksi tarjolla: Otekn-asiaa vähän pintaa syvemmältä Virtuaalifunktiot ja erikoistaminen, olioiden kopiointi ja elinaika
LisätiedotOhjelmistojen suunnittelu
Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer
LisätiedotHakemistojen sisällöt säilötään linkitetyille listalle.
Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ
LisätiedotSisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2
6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma
LisätiedotOhjelmistojen mallintaminen Luokkakaaviot Harri Laine 1
Ohjelmistojen mallintaminen Luokkakaaviot 5.12.2008 Harri Laine 1 Olioiden palvelut Palvelun kuvauksessa annettavat tiedot näkyvyys (kuten attribuuttien kohdalla) nimi (ainoa välttämätön osa) parametrit
LisätiedotOhjelmistojen mallintaminen. Luento 3, 9.11.
Ohjelmistojen mallintaminen Luento 3, 9.11. Kertausta: Ohjelmistotuotantoprosessin vaiheet Vaatimusanalyysi- ja määrittely Mitä halutaan? Suunnittelu Miten tehdään? Toteutus Ohjelmointi Testaus Varmistetaan
LisätiedotOhjelmistoarkkitehtuurit. Kevät
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet
LisätiedotOSAII: Käytännön rutiinit. Ohjelmiston suunnittelu
OSAII: Käytännön rutiinit Projektin hallinta Ohjelmiston vaatimusten määrittely Ohjelmiston suunnittelu Ohjelmointi Testaus ja laadunvarmistus Ylläpito Ohjelmiston suunnittelu Ohjelmiston suunnittelun
LisätiedotOhjelmistotekniikan menetelmät, kesä 2008
582101 - Ohjelmistotekniikan menetelmät, kesä 2008 1 Ohjelmistotekniikan menetelmät Methods for Software Engineering Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön
LisätiedotOlio-ohjelmointi Suunnittelumallit Observer ja State. 1. Observer (Tarkkailija)
Olio-ohjelmointi Suunnittelumallit Observer ja State Käyttäytymismallien päätarkoitus on algoritmien toteuttaminen ja vastuiden jakaminen olioiden välillä. Näin ollen käyttäytymismallit kuvaavat luokkien
LisätiedotUML Luokkakaavio 14:41
UML Luokkakaavio UML Olio-ohjelman luokkien pääpiirteet voidaan kätevähkösti esittää ns. UML-luokkakaaviona. Näin usein tehdäänkin esim. suunniteltaessa, millaisia luokkia ohjelmaan on tarkoitus laatia,
LisätiedotOhjelmistotekniikan menetelmät
Ohjelmistotekniikan menetelmät Luokat ja oliot Luokka- ja oliokaavio 7.11.2008 Harri Laine 1 Luokat ja oliot käyttötapaus Käyttötapaus käyttää järjestelmän palveluja käyttää Käytettävät palvelut saadaan
LisätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
LisätiedotOhjelmistotekniikan menetelmät
Ohjelmistotekniikan menetelmät Luokat ja oliot Luokka- ja oliokaavio 7.11.2008 Harri Laine 1 Luokat ja oliot käyttötapaus Käyttötapaus käyttää järjestelmän palveluja käyttää Käytettävät palvelut saadaan
LisätiedotOhjelmistojen mallintaminen kertausta Harri Laine 1
kertausta 5.12.2008 Harri Laine 1 Ohjelmiston elinkaari, elinkaarimallit Yleinen puitemalli (reference model) - abstrakti kokonaiskuva ei etenemiskontrollia, ei yksityiskohtia Ohjelmistoprosessimallit
LisätiedotTenttikysymykset. + UML- kaavioiden mallintamistehtävät
Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä
Lisätiedot