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

Samankaltaiset tiedostot
Ratkaisumallien historia


Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit kevät

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

Ohjelmistoarkkitehtuurit. Syksy 2008

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

Suunnittelumallit. OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Oliosuuntautunut analyysi ja -suunnittelu 27. joulukuuta 2003

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

5. Suunnittelumallit. TTY Ohjelmistotekniikka

TIE Ohjelmistojen suunnittelu

Suunnittelumallit (design patterns)

Ohjelmistoarkkitehtuurit. Syksy 2007

Harjoitustehtävät ja ratkaisut viikolle 48

Ohjelmistojen mallintaminen, mallintaminen ja UML

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

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

Ratkaisumallien hyväksikäyttö ohjelmistotyökaluissa

Software engineering

Kertaus: yleistys-erikoistus ja perintä

TYÖPOHJAT ALUSTAN VIESTINNÄN RAKENTAMISEKSI

Onnistunut ohjelmistoprojekti

TIE Ohjelmistojen suunnittelu

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

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

6. Suunnittelu. Suunnittelun tulos

Oleelliset vaikeudet OT:ssa 1/2

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

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

5. Suunnittelumallit. TTY Ohjelmistotekniikka

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Suunnittelun tulos. 6. Suunnittelu. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi. 6.1 Arkkitehtuurisuunnittelu.

9 Edistynyt PHP-ohjelmointi

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

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

UML-kielen formalisointi Object-Z:lla

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

3. Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit Kevät 2016 Suunnittelumallit

2 Ohjelmistoarkkitehtuurien kuvaus

Opetusteknologian standardoinnin tilanne. Antti Auer

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

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

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

T Henkilökohtainen harjoitus: FASTAXON

Johdantoluento. Ohjelmien ylläpito

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Hirviö. Design Patterns

Veto-visualisointityökalu

Ohjelmistotuotanto, s

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

3. Käsiteanalyysi ja käsitekaavio

Miten lokalisointityö kohtaa kielen normatiivisuuden?

HELIA 1 (1) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu :04

Oppilaan pikaopas. Project 2013 käyttöliittymä ja näkymät

2. Olio-ohjelmoinnin perusteita 2.1

JulkICT portaalin käyttöohje

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ruma merkitys. Tommi Nieminen. XLII Kielitieteen päivät. Kielitieteen epäilyttävin välttämätön käsite. Itä-Suomen yliopisto ...

Yhteiskuntafilosofia. - alueet ja päämäärät. Olli Loukola / käytännöllisen filosofian laitos / HY

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Innokylän verkkopalvelun konsepti

Eero Hyvönen. Semanttinen web. Linkitetyn avoimen datan käsikirja

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Ohjelmistoarkkitehtuurit

Oliosuunnittelu. Oliosuunnittelu

1.3 Katsaus ohjelmistotuotannon kehittymiseen

UML- mallinnus: Tilakaavio

SEPA päiväkirja. Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen

Koodimalli Code Model

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

VisualStudio Pikaopas, osa 1: WEB-sivujen suunnittelu

Maiju Mykkänen Susanna Sällinen

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

DEE Aurinkosähkön perusteet (Foundations of Solar Power) Sali SE211 Keskiviikkoisin ja perjantaisin klo

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

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

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

Bosch-malli. Kolme vaihetta. Termistöä. Ohjelm!toarkkitehtuu"n

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Yhteenveto. Menettelytavat

12. Kehysarkkitehtuurit

Ohjelmistojen suunnittelu

Roolipeliharjoitus. - Opiskelijoiden suunni=elemat neuvo=eluvideot ja niiden vertaisarvioinnit

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Tekemällä oppiminen tuumasta toimeen yhteisöllisin työkaluin

Suunnitteluvaihe prosessissa

Transkriptio:

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 Ratkaisumallien historia 2 / 29 Ratkaisumalli! Ratkaisumalli (Design Pattern) on hyväksi havaittu, dokumentoitu tapa ratkaista tietty ongelma Ratkaisumalli [2]! Ratkaisumalli koostuu:! Asiayhteydestä! Ongelmasta! Ratkaisusta! Ratkaisumallit ovat uudelleenkäyttöä suunnittelun tasolla 25.1.2001 Ratkaisumallien historia 3 / 29 25.1.2001 Ratkaisumallien historia 4 / 29 Esimerkki: Composite Esimerkki: Composite [2]! Asiayhteys: Hierarkioiden esittäminen! Ongelma: Miten hoitaa erilaisten olioiden käsittely elegantisti! Ratkaisu: Abstrakti yliluokka, josta sekä yksinkertainen että rakenteinen luokka periytyvät 25.1.2001 Ratkaisumallien historia 5 / 29 25.1.2001 Ratkaisumallien historia 6 / 29 1

Esimerkki: Composite [3]! Seuraukset:! [+] Yksinkertainen asiakas! [+] Uudenlaisten komponenttien lisääminen helppoa! [-] Liioitellun yksinkertainen rakenne Christopher Alexander! Arkkitehti! Syntyi Wienissä 1936, vietti lapsuutensa Englannissa! Valmistui Cambridgesta! Tohtoriksi Harvardista: Notes on the Synthesis of Form 25.1.2001 Ratkaisumallien historia 7 / 29 25.1.2001 Ratkaisumallien historia 8 / 29 Christopher Alexander [2] Arkkitehtuurin ongelmat! Alexander: 1900-luvun arkkitehtuuri syyllistynyt vakaviin virheisiin:! Epätasapaino! Tarkoituksen puuttuminen! Esteettisiä ja toiminnallisia epäonnistumisia! Ihmisten huomiotta jättäminen 25.1.2001 Ratkaisumallien historia 9 / 29 25.1.2001 Ratkaisumallien historia 10 / 29 Miten aikaisemmin?! Ongelmat eivät vaivanneet aikaisempaa arkkitehtuuria:! Rakennukset syntyivät ilman formaaleja malleja tai menetelmiä! Rakentamisen tukena sen sijaan kokoelma implisiittisiä sääntöjä! Usein evoluution tulos Malli (Pattern)! Kuvaa vaikuttavien voimien joukkoa ja niiden keskinäisiä suhteita! Ei mikään formaali käsite! Malleja kaikkialla, monella eri tasolla! A Pattern Language: kokoelma näitä malleja 25.1.2001 Ratkaisumallien historia 11 / 29 25.1.2001 Ratkaisumallien historia 12 / 29 2

Malli (Pattern) [2]! Määritellään viiden elementin avulla:! Nimi! Esimerkki! Asiayhteys! Ongelma! Ratkaisu Hyppy ohjelmistotuotantoon! Beck ja Cunningham 1987 Tektronixilla viimeistelemässä suunnitteluvaihetta! Ottivat käyttäjien edustajan mukaan (Alexanderin oppien mukaan)! Tuloksena viiden ratkaisumallin joukko 25.1.2001 Ratkaisumallien historia 13 / 29 25.1.2001 Ratkaisumallien historia 14 / 29 Beckin ja Cunninghamin mallit! Yksinkertaisia malleja:! Window Per Task: yksi ikkuna tehtävää kohti! Few Panes: tämä yksi ikkuna jaettu useaan pienempään osaan! Standard Panes: ikkunan osilla standardi ulkoasu! Nouns And Verbs: jaottelu asioihin (substantiiveja) ja tekoihin (verbejä)! Short Menus: Pop-up menun elementtien pitää olla lyhyitä ja selkeitä OOPSLA 87! Beck & Cunningham esittelivät tuloksiansa! Vastaanotto hyväksyvä! Ei konkreettisia edistysaskelia 25.1.2001 Ratkaisumallien historia 15 / 29 25.1.2001 Ratkaisumallien historia 16 / 29 Advanced C++! James Coplien työsti luetteloa C++spesifisistä malleista, julkaistiin 1992: Advanced C++ Programming Styles and Idioms! Esiversioita käytettiin C++-kursseilla AT&T:lla OOPSLA 92! Bruce Anderson puhui ohjelmistoarkkitehtuurista! Yhteenveto: Towards an Architecture Handbook 25.1.2001 Ratkaisumallien historia 17 / 29 25.1.2001 Ratkaisumallien historia 18 / 29 3

OOPSLA 92 [2]! Anderson käsitteli peruskysymyksiä:! Mitä on ohjelmistoarkkitehtuuri! Millainen käsikirja aiheesta tarvitaan! Ehdotus sisällöksi:! Komponentit ja rakenteet (sisältäen malleja!)! Periaatteet ja ominaisuudet! Kokoelma järjestelmän kuvauksia OOPSLA 92 [3]! Peter Coad & Mark Mayfield pitivät Workshopin ratkaisumalleista! Keskustelua ohjasi joukko kysymyksiä:! Mitä ratkaisumallit ovat?! Miten niitä löydetään/kuvataan?! Millaisia esimerkkejä on saatavilla? 25.1.2001 Ratkaisumallien historia 19 / 29 25.1.2001 Ratkaisumallien historia 20 / 29 Mallien tulevaisuudesta (1992)! Coad ja Mayfield olivat vakuuttuneita ratkaisumallien merkityksestä:! We explored the potential impact of patterns. We believe that the impact is HUGE. Hillside Group! Perustettiin elokuussa 1993! Päämääränä yhdistää Alexanderin mallikäsitykset ja olioparadigma! Erich Gamman (tutkimus)työ perustana 25.1.2001 Ratkaisumallien historia 21 / 29 25.1.2001 Ratkaisumallien historia 22 / 29 PLoP! Pattern Languages of Program Design: vuosittainen konferenssi! Hillside Group järjestävänä tahona! Konferenssijulkaisut Pattern Languages of Program Design 1, 2, 3 ja 4 Gang of Four! Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides! Ryhmä muodostui OOPSLA 91- ja 92- konferenssien yhteydessä! Design Patterns on alan perusteos 25.1.2001 Ratkaisumallien historia 23 / 29 25.1.2001 Ratkaisumallien historia 24 / 29 4

GoF-ratkaisumallit! Kaikkiaan 23 ratkaisumallia! Jaettu kolmeen ryhmään tarkoituksen perusteella:! Olioiden luominen,! rakenne ja! käyttäytyminen A System of Patterns! Frank Buschmann et al. 1996! Jaottelu! arkkitehtuurimalleihin,! ratkaisumalleihin ja! idiomeihin 25.1.2001 Ratkaisumallien historia 25 / 29 25.1.2001 Ratkaisumallien historia 26 / 29 Mallit yhteisenä kielenä! Ratkaisumallit ovat kehittäjien yhteistä sanastoa! Mutta mikä on tämän sanaston ydin, mitkä mallit jokaisen kehittäjän tulisi hallita?! Esim. Gamma vs. Buschmann? Ratkaisumallit tulevaisuudessa! Merkitys yhteisenä kielenä toivottavasti kasvaa! Työkalujen tuki tärkeässä roolissa! Samoin suhde UML:ään! Pahin hype toivottavasti jo ohi 25.1.2001 Ratkaisumallien historia 27 / 29 25.1.2001 Ratkaisumallien historia 28 / 29 Yhteenveto 1977: Christopher Alexander 1987: Beck & Cunningham 1992: Advanced C++ 1993: Hillside Group 1995: Design Patterns 25.1.2001 Ratkaisumallien historia 29 / 29 5