Ohjelmistoarkkitehtuurit

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit kevät


5. Suunnittelumallit. TTY Ohjelmistotekniikka

5. Suunnittelumallit. TTY Ohjelmistotekniikka

Ohjelmistoarkkitehtuurit Kevät 2016 Suunnittelumallit

Tarjolla tänään: Sanastoa Koneenohjausjärjestelmien suunnittelumallit. Pattern Architecture Style. GoF. Design pattern

Koneenohjausjärjestelmien arkkitehtuurit. Sulautettu ohjelmointi Veli-Pekka Eloranta

Ohjelmistoarkkitehtuurit Kevät 2014

7. Koneenohjausjärjestelmien suunnittelumallit. OhAr Veli-Pekka Eloranta

5. Design patterns. TTY Ohjelmistotekniikka

Ohjelmistoarkkitehtuurit Kevät 2014

Ohjelmistoarkkitehtuurit Koneenohjausmaailmaa. Kevät 2016

TIE Ohjelmistojen suunnittelu

Ohjelmistoarkkitehtuurit. Kevät

Suunnittelumallit (design patterns)

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

TIE Ohjelmistojen suunnittelu

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Ohjelmistoarkkitehtuurit. Syksy 2010

Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia?

7 Sulautettujen järjestelmien suunnittelumallit. OhAr Marko Leppänen

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Oliosuunnittelu. Oliosuunnittelu

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

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VI Johdanto suunnittelumalleihin

Ohjelmistotekniikan menetelmät, suunnittelumalleja

12. Kehysarkkitehtuurit

Ohjelmistoarkkitehtuurit. Syksy 2008

T SEPA - päiväkirja: Design Patterns. ETL työkalu

Ratkaisumallien historia

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Hirviö. Design Patterns

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

7.4 Variability management

1.3 Katsaus ohjelmistotuotannon kehittymiseen

T SEPA - päiväkirja: Design Patterns. ETL työkalu

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Ohjelmistotuotanto, kurssikoe , H. Laine Arvostelu

Ohjelmistojen mallintaminen

812341A Olio-ohjelmointi, I Johdanto

7. Product-line architectures

Salasanan vaihto uuteen / How to change password

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmistojen mallintaminen, kesä 2009

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

NC-koneet ja niiden ohjelmointi

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

SEPA - Design Patterns

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Viestinvälitysarkkitehtuurit

Tietorakenteet ja algoritmit

Ohjelmistoarkkitehtuurit. Syksy 2007

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

UML:n yleiskatsaus. UML:n osat:

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

WP3 Decision Support Technologies

Ohjelmistoarkkitehtuurin suunnittelu

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

Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja)

Ratkaisumallien hyväksikäyttö ohjelmistotyökaluissa

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistotuotanto, s

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

LANSEERAUS LÄHESTYY AIKATAULU OMINAISUUDET. Sähköinen jäsenkortti. Yksinkertainen tapa lähettää viestejä jäsenille

Viestinvälitysarkkitehtuurit Lähtökohta:

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Choose Finland-Helsinki Valitse Finland-Helsinki

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

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

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

OSI ja Protokollapino

Digitaalinen haavoittuvuus MATINE Tampere

Graafisen käyttöliittymän ohjelmointi Syksy 2013

National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007

Ohjelmistotekniikan menetelmät, kesä 2008

Takki. Lisää ot sik k o osoit t am alla. Nyt se sopii, tai sitten ei. Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi

WAMS 2010,Ylivieska Monitoring service of energy efficiency in housing Jan Nyman,

Hieman lisää malleista ja niiden hyödyntämisestä

Ohjelmistotekniikan menetelmät, UML

Hirviö. Design Patterns

Venttiilit ja Automaatio

Ohjelmistojen mallintaminen, sekvenssikaaviot

Smart access control.

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

Veto-visualisointityökalu

2 Ohjelmistoarkkitehtuurien kuvaus

Esimerkki: Auton toiminnan monitorointijärjestelmä

Tapahtumat. Johdanto Ikkunointi Ikkunatapahtumat Päätapahtumasilmukka Tapahtumien käsittely Olioiden välinen kommunikointi.

812336A C++ -kielen perusteet,

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

2. Olio-ohjelmoinnin perusteita 2.1

ATLAS-kartan esittely - Peli palveluiden yhteiskehittämisen menetelmistä Päivi Pöyry-Lassila, Aalto-yliopisto

COTOOL dokumentaatio SEPA: Refaktorointi

Transkriptio:

Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 1

5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki: Rekursiokooste Antisuunnittelumallit Suunnittelumallit ja UML Mallikielet Suunnittelumallit eivät ole... Yhteenveto http://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/ Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 2

Suunnittelumallin käsite: tausta Cristopher Alexander et al.: A Pattern Language, 1977 Cristopher Alexander: The Timeless Way of Building, 1979 Maailma koostuu toistuvista tiettyjen mallien ilmentymistä Esimerkki: Jokainen maanviljelijä osaa rakentaa ladon - miksi? Malli (pattern) on yleistä suunnitteluosaamista, joka olisi saatettava kaikkien tarvitsijoiden ulottuville Alexander: mallien käyttö johtaa hyvään laatuun Paljon käytetty eri muodoissa insinöörialoilla Erityisen hyödyllinen ajatus ohjelmistotekniikassa Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 3

Esimerkki: Ikkunat ja ovet hirsitalossa hirret painuvat kasaan Ongelma: ikkunat ja ovet ovat kiinteitä, vaikka hirsiseinä liikkuu ja painuu kasaan. Ratkaisu: ikkunoiden ja ovien karmeja ei kiinnitetä suoraan seinään, vaan "karaan", joka liikkuu vapaasti hirsiin tehdyssä urassa. Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 4

Tukikaari (Flying buttress) Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 5

Mikä on suunnittelumalli? Suunnittelumalli Yleinen ratkaisu usein esiintyvään ohjelmistojen arkkitehtuuri- tai suunnitteluongelmaan tietyssä yhteydessä. Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 6

Selitystä Yleinen ratkaisu... ei liity tiettyyn kieleen tai teknologiaan, kuvataan yleisellä tavalla... usein esiintyvään... täytyy olla käytännön validoima (esim. GoF: 3 esimerkkiä)... arkkitehtuuri- tai suunnitteluongelmaan... sovelletaan ohjelmistotekniikassa arkkitehtuurin ja yksityiskohtaisen suunnittelun tasolla... tietyssä yhteydessä. ongelma esiintyy yhteydessä, josta seuraa erilaisia vaatimuksia ja voimia Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 7

Suunnittelumallien hyötyjä Suunnittelumallit... tuovat piilossa olevaa suunnittelutietämystä kaikkien saataville; auttavat järjestelmän dokumentoinnissa; antavat uuden korkeamman tason toteutusvälineen; toimivat arkkitehtuurin rakennuspalikoina; antavat suunnittelijoille yhteisen sanaston. Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 8

Suunnittelumallin kuvaus Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 9

GoF:in kuvausformaatti "Gang of Four kirja, GoF: Gamma E., Helm R., Johnson R., Vlissides J.: Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley 1995. Name (and category) Intent Also known as Motivation Applicability Structure Participants Collaborations Consequences Implementation Sample code Known uses Related patterns Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 10

Esimerkki suunnittelumallista: Rekursiokooste Ongelma: Olioita käyttävä komponentti tee joku operaatio lehtiolioille Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 11

Rekursiokooste (Composite) suunnittelumalli Nimi: Rekursiokooste Konteksti: Hierarkkinen oliokokoelma, jonka (lehti)olioille halutaan tehdä jokin operaatio. Ongelma: Kuinka hallita hierarkkisesti järjestettyä oliokokoelmaa niin, että kokoelman käyttäjän ei tarvitse tuntea rakenteen organisointitapaa? * Ratkaisu: children Käyttäjä" Item operation() Leaf operation() Composite operation() For all children c: c.operation() Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 12

Rekursiokooste (jatkuu) Seuraukset: Hierarkiarakenne ei näy käyttäjän koodissa Käyttäjän koodi yksinkertaistuu Rakenteeseen on helppo lisätä uusia kooste- ja lehtiluokkia (ei näy käyttäjälle) Pieni tehokkuusrasite kutsun siirtämisen takia Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 13

Esimerkki soveltamisesta SourceManager <<interface>> Source delete() print() * children File delete() print() Folder delete() print() add(source) For all children c: c.delete(); Delete folder Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 14

Kysyttävää? Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 15

Antisuunnittelumallit Ongelma Suunnittelumalli Hyvä ratkaisu Seuraukset Antisuunnittelumalli Huono ratkaisu Oireet Muokkaus Antisuunnittelumalli = huono ratkaisu + hyvä ratkaisu Suunnittelumalli = ongelma + ratkaisu Brown W.J. et al.: Antipatterns - Refactoring Software, Architectures, and Projects in Crisis. Wiley 1998. Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 16

Dokumentoituja antisuunnittelumalleja The Blob Lava flow Golden Hammer Spaghetti Code Cut-and-Paste Programming http://www.antipatterns.com/ http://en.wikipedia.org/wiki/anti-pattern Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 17

Antisuunnittelumallien oireita Huono ylläpidettävyys Huono uudelleenkäytettävyys Huono laajennettavuus Vaikeasti ymmärrettävä Tehottomuus Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 18

Mitä huonoja ratkaisutapoja olet tunnistanut oliojärjestelmissä? Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 19

Suunnittelumallit ja UML: Kollaboraatiosymboli Item Composite SourceManager Source delete() print() Leaf * children Composite File delete() print() Folder delete() print() add(source) For all children c: c.delete(); Delete folder Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 20

Esimerkki EventSource register(statemachine) * * informs StateMachine run(state) handle(event) 1 Singleton State Observer 1 Event source(): Object current.exit(); current = current.transit(e); current.entry(); uses 0..1 current State transit(event): State entry() exit() Event1 source(): Object Event2 source(): Object StateA transit(event): State entry() exit() StateB transit(event): State entry() exit() Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 21

Suunnittelumallit ja UML: Stereotyypit SourceManager <<Composite_Item>> Source delete() print() * children <<Composite_Leaf>> File delete() print() <<Composite_Composite>> Folder delete() print() add(source) For all children c: c.delete(); Delete folder Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 22

Kysyttävää? Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 23

Mallikielet Suunnittelumallikieli: Systemaattisesti organisoitu kokoelma suunnittelumalleja, jotka kattavat jonkin ongelma-alueen keskeiset ratkaisut. Systemaattisesti organisoitu: mallit liittyvät toisiinsa joillakin suhteilla (esim. hierarkkinen, verkko), jotka auttavat valitsemaan sopivat mallit sopivassa järjestyksessä. => Kieltä voidaan soveltaa kokonaisuutena, ideaalisti se generoi järjestelmän arkkitehtuurin Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 24

Esimerkki: Mallikieli koneenohjausjärjestelmille Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 25

sama nykyään Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 26

Esimerkki: Organisaatiopatternit Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 27

Pilveä http://cloudcomputingpatterns.org Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 28

Pilveä Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 29

Mallikielen organisointitapoja Hierarkkinen rakenne: Malli A Käytä ensin mallia A, sen jälkeen mallia B tai C osaongelmien ratkaisuun, jos käytät B:tä, käytä sen jälkeen mallia D tai E jne. Mallit koskevat ko. kohteen pienempiä ja Malli D pienempiä osia. Malli B Malli E Malli C Alexanderin mallikieli Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 30

Mallikielen organisointitapoja Verkkorakenne: Malli A Malli E Jos olet käyttänyt mallia C, on mahdollista, että mallit A ja D ja E saattaisivat auttaa jonkin C:stä seuraavan ongelman ratkaisussa. Mallin C soveltaminen luo kontekstin Malleille A, D ja E. Malli B Malli D Malli C Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 31

Mallikielen organisointitapoja Yleistysrakenne: Malli A on abstrakti kuvaus ratkaisusta, joka voidaan tarkemmin toteuttaa tavalla B tai tavalla C. Malli A Malli B Malli C Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 32

Mallikielen organisointitapoja Implisiittinen rakenne: Malli A pre post Kullekin mallille annetaan esija jälkikonteksti: missä tilanteessa mallia voidaan soveltaa, ja mihin tilanteeseen malli jättää arkkitehtuurin. Jos mallin A jälkikonteksti vastaa mallin B esikontekstia, voi B:tä soveltaa A:n jälkeen = pre Malli B post Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 33

Mallikielen organisointitapoja Sovellusalueen mukainen rakenne, esimerkiksi domain-malliin perustuen Helpottaa kysymystä: mitä mallia voisi tietyssä tilanteessa soveltaa? Antaa viitteitä puuttuvista malleista Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 34

Esimerkki suunnittelumallien käytöstä KONEENOHJAUSJÄRJESTELMÄ Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 35

Mallikieli koneenohjausjärjestelmille Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 36

Suunnittelun aloitus Valitaan kielen juuri -suunnittelumalli (Isolate functionalities) ja sovelletaan sitä Ratkaisee ongelman: What is a reasonable way to create an embedded control system for a large machine? Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 37

Isolate Functionalities Puomin ohjaus Moottorin ohjaus Vaihteiston ohjaus Väylä, esim. CAN Poran ohjaus Runkon ohjaus HMI Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 38

Havaitaan ongelma Entä jos väylä halutaan vaihtaa? Jokaisen solmun sovellus on riippuvainen valitusta väyläteknologiasta Syitä muutokseen Tuki loppuu pitkän elinkaaren aikana Valmistaja menee konkurssiin Suunnittelun aikana havaitaan, ettei valitun teknologian kapasiteetti riitä Ratkaisu: Bus abstraction How to change the selected bus technology or protocol so that the application code does not need to be changed? Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 39

Bus Abstraction Puomin ohjaus Send( node3, data, repeat=no) Poran ohjaus Callback( node1, data) Bus abstraction Send in bus-specific way Bus abstraction Receive in bus-specific way Väylä, esim. CAN Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 40

Entä jos väylä katkeaa tai solmu hajoaa? Tilanne pitäisi havaita jotenkin, jotta asialle voidaan tehdä jotain Heartbeat patternin ongelman kuvaus vastaa meidän ongelmaamme: How to make sure that a node or a bus will not fail undetected? Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 41

Heartbeat Supervisor Node I am alive Tietty ennaltasovittu aikaväli I am alive Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 42

Toinen ratkaisu: Watchdog Node A Watchdog Node B Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 43

Tai Watchdog perinteisemmin Node Reset watchdog Tietyin aikavälein Watchdog If( watchdog not reseted){ Reset node } Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 44

Arkkitehtuuri tähän mennessä Watchdog Puomin ohjaus Moottorin ohjaus HB Vaihteiston ohjaus HB Bus abstraction Bus abstraction Bus abstraction Väylä, esim. CAN Bus abstraction Bus abstraction Bus abstraction Poran ohjaus Runkon ohjaus HB HMI Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 45

Entäpä jos viestejä tulee väylältä enemmän kuin ehditään käsitellä? Kaikki viestit tulisi käsitellä, yhtäkään viestiä ei saisi jättää huomiotta. Lähetettävien (tai vastaanotettavien) viestien määrää ei voida ennakoida kehitysaikana Viestit tulisi käsitellä siinä järjestyksessä kuin ne vastaanotetaan. Kaikki viestit tulisi käsitellä mahdollisimman nopeasti. Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 46

Ratkaisu: Message Queue Node 1 Node 2 Send queue Send queue Receive queue Receive queue Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 47

Watchdog Puomin ohjaus Moottorin ohjaus HB Vaihteiston ohjaus HB SQ RQ SQ RQ SQ RQ Bus Abstraction Bus Abstraction Bus Abstraction Väylä, esim. CAN Bus Abstraction Bus Abstraction Bus Abstraction SQ RQ SQ RQ SQ RQ Poran ohjaus Runkon ohjaus HB HMI Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 48

Halutaan tarjota korkean tason palveluja Korkeantasonpalvelut eivät ole reaaliaikaisia. Korkeantason palvelut eivät saa häiritä reaaliaikatoimintoja, koska se voisi johtaa järjestelmän virheelliseen toimintaan. Testattavuus: Reaaliaikatoimintojen testaaminen erillään korkeantasonpalveluista pitäisi olla mahdollista. Korkeantason ohjelmistojen kehittäminen on helpompaa kun ei tarvitse välittää reaaliaikavaatimuksista. Reaaliaikatoimintojen tulee toimia tietyissä rajoissa, esim. Jarrujen ja muiden ohjausten vasteaika tulee olla riittävä. Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 49

Ratkaisu: Separate Real-time Communicates only over bus Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 50

Watchdog HB HB Puomin Moottorin Vaihteiston ohjaus ohjaus ohjaus Bus SQ RQ Bus SQ RQ Bus SQ RQ Abstraction Abstraction Abstraction Bus Bus Bus Abstraction SQ RQ Abstraction SQ RQ Abstraction SQ RQ Väylä, esim. CAN Bus SQ RQ Bus SQ RQ Bus SQ RQ Bus Abstraction Abstraction Abstraction Abstraction Bus Bus Bus abstraction SQ RQ abstraction SQ RQ abstraction SQ RQ SQ RQ Poran Runkon ohjaus ohjaus HMI HB 22.1.2013 PC Ohjelmistoarkkitehtuurit 2012-2013 51

Suunnittelumallit eivät ole yleinen lääke ohjelmiston laadun parantamiseen; ongelmattomia: arkkitehtuurin monimutkaistuminen mahdollinen ongelman yliratkaisu tehokkuushäviö: runsaasti dynaamista sidontaa ja kutsun siirtämistä olion identiteetti hämärtyy: olioskitsofrenia tarvitsevat hyvän dokumentoinnin järjestelmässä Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 52

Yhteenvetoa Suunnittelumallit antavat hyväksi havaittuja ratkaisuja yleisiin suunnitteluongelmiin Käytä suunnittelumallia vasta kun ongelma on selvästi ymmärretty Suunnittelumallit ovat kokemusperäistä tietoa, eivät innovaatioita Antisuunnittelumallit auttavat tunnistamaan ongelmakohtia Suunnittelumallit organisoidaan mallikieleksi käytön helpottamiseksi Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 53

Tehtävä Tietokoneita myyvä yritys TietoMyyrä on laajentamassa toimintaansa verkkoon. Uuden toimintamallin mukaan asiakkaat voivat tilata TietoMyyrältä valmiita konepaketteja ja noutaa valmiit koneet TietoMyyrän toimistolta. Olette voittaneet tarjouspyynnön ja saaneet tilauksen TietoMyyrän verkkokauppasovelluksesta. Olette suunnittelemassa järjestelmänne arkkitehtuuria. Mitä suunnittelumalleja käyttäisitte? Miksi? Olisiko niiden käytöstä jotain haittaa? Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 54

Kysyttävää? Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 55