Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Samankaltaiset tiedostot
Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Tietorakennepohjaiset menetelmät

UML-kielen formalisointi Object-Z:lla

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

UML - unified modeling language

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Ohjelmistojen mallintaminen

2 Ohjelmistoarkkitehtuurien kuvaus

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

Malliperustainen ohjelmistokehitys (Model-Driven Engineering, MDE)

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistojen mallintaminen olioiden elinkaaret - tilakaavio Harri Laine 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistotekniikan menetelmät, UML

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Tiedonsiirto- ja rajapintastandardit

Palvelusuuntautunut ohjelmistotuotanto Luento 6: Malliperustaisen ohjelmistotuotannon perusteet; palvelutuotannon mallit Toni Ruokolainen, 5.2.

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Ohjelmistojen mallintaminen, kesä 2010

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Kurssin aihepiiri: ohjelmistotuotannon alkeita

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

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

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

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

UML- mallinnus: Tilakaavio

5. Järjestelmämallit. Mallinnus

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

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistojen mallintaminen, sekvenssikaaviot

Ohjelmistotekniikka - Luento 2

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

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

Malliperustainen ohjelmistokehitys (Model-Driven Engineering, MDE)

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

Ohjelmistojen suunnittelu

Digitaalisen median tekniikat. JSP ja XML

Ohjelmiston toteutussuunnitelma

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

2 Ohjelmistoarkkitehtuurien kuvaus

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

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Malliperustainen ohjelmistokehitys ja malliperustainen arkkitehtuuri

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

Revit Architecture 2013 parametriset. komponentit. opetusmateriaali

Kertaus: yleistys-erikoistus ja perintä

Ohjelmistojen mallintaminen Olioperustainen ohjelmistomalli Harri Laine 1

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Ohjelmistojen mallintaminen. Matti Luukkainen

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

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

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

Johdatus sovellussuunnitteluun, s2000, osa3 Helsingin yliopisto;/tktl. Harri Laine 1. Järjestelmän palvelujen määrittely

Ohjelmistotekniikan menetelmät, luokkamallin laatiminen

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

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

Integrointi. Ohjelmistotekniikka kevät 2003

Johdatus sovellussuunnitteluun, s99, osa1 Helsingin yliopisto;/tktl Harri Laine 1

Järjestelmäarkkitehtuuri (TK081702)

Sovellusarkkitehtuurit

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

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

Test-Driven Development

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Visual Basic -sovelluskehitin Juha Vitikka

Hirviö. Design Patterns

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Ohjelmistotekniikan menetelmät, kevät 2008

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmistojen mallintaminen, kesä 2009

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

XML / DTD / FOP -opas Internal

Johdatus sovellussuunnitteluun, s99, osa1 Helsingin yliopisto;/tktl Harri Laine 1. Johdatus sovellussuunnitteluun

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

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot

Suunnitteluvaihe prosessissa

Taulukot. Jukka Harju, Jukka Juslin

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

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

Action Request System

Ohjelmistojen mallintaminen. Luento 10, 3.12.

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Käyttötapausanalyysi ja testaus tsoft

Ohjelmistojen mallintaminen, kertausta

Ohjelmiston vaatimusmäärittely. tietoteknisen järjestelmän osat

Suorituskyky ja ohjelmistokehitys Suorituskykymallit

Transkriptio:

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) - toteuttavat ohjelmiston (käyttö)liittymän - kommunikointi käyttäjien tai oheislaitteiden kanssa kontrolliolioiksi (control objects) - ohjaavat ajoaikaista toimintaa sisältöolioiksi (entity objects) - edustavat tallennettua tietosisältöä ja vastaavat käyttöliittymästä ja kontrollista riippumattomista palveluista 2.12.2008 Harri Laine 2

Olioiden jaottelu tyyppeihin auttaa suunnittelijaa jäsentämään kokonaisuutta ja sijoittamaan palveluja olioille. Esimerkiksi tietosisältöön liittyvää loogisuustarkistusta ei ole syytä sijoittaa liittymäolion palveluiksi, vaan tarkistus sopii paremmin tietosisällöstä vastaavan sisältö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 sisältöolion vastuulle. Olioiden jaottelu kategorioihin on eräänlainen karkean tason ratkaisumalli. 2.12.2008 Harri Laine 3

Oliopohjaisessa kehittämisessä määrittelyn ja suunnittelun raja on epäselvä - useita iteraatioita eri tarkkuustasoilla määrittelyn yhteydessä on laadittu käyttötapausmalli mahdollisesti aktiviteettikaavioita tarkentamaan toiminnan kuvausta luokkamalli (palvelujen määrittely hyvin karkeaa, jos mukana) mahdollisesti elinkaarimalleja hahmoteltu käyttöliittymää (ei käsitelty tällä kurssilla) kuvattu riippuvuuksia (käyttötapaus- käyttöliittymä, käyttötapaus - sisältö) 2.12.2008 Harri Laine 4

Siirryttäessä suunnitteluun Tehdään alustava päätös arkkitehtuurimallista ja sen myötä osajärjestelmiin jaosta Luokkamallia tarkennetaan arkkitehtuuriratkaisun roolit huomioiden 2.12.2008 Harri Laine 5

Suunnittelun eteneminen käyttötapauskohtaisesti Kullekin käyttötapaukselle (tai jos käyttötapauksia on yhdistetty niiden pakkaukselle) vähintään yksi liittymäluokka Kullekin käyttötapaukselle määritellään vähintään yksi kontrolliluokka, jolle annetaan päävastuu käyttötapauksen läpiviennistä Otetaan mukaan apuluokkia sitä mukaa kuin niille ilmaantuu tarve 2.12.2008 Harri Laine 6

Mallin täydennyksessä edetään palvelujen määrittelyn kautta proseduraalinen kontrolli lähdetään liikkeelle käyttötapauksen aktiviteettimallista ja sijoitetaan aktiviteetteja vastaavat palvelut luokille tapahtumapohjainen kontrolli lähdetään liikkeelle käyttötapauksen elinkaarimallista ja määritellään siirtymiä vastaavat tapahtumakäsittelijät palveluiksi 2.12.2008 Harri Laine 7

Tarkastellaan esimerkkinä sukututkimusaineiston raportointisovellusta tutkija descendant_report selected_persons compare_files Aineistot ovat gedcom-standardi muodossa olevina tiedostoina. Aineistojen muodostus ja muokkaus hoidetaan eri sovelluksella 2.12.2008 Harri Laine 8

sisältömalli + kapseloivat liittymämetodit 2.12.2008 Harri Laine 9

Arkkitehtuuriratkaisu käyttötapaukset ovat kaikki raportteja, näiden muodostus voidaan jakaa vaiheisiin sisällön muodostus ulkoasun muotoilu jos sisältö annetaan XML-muodossa on tarjolla valmiita työkaluja muotoilun määrittelyyn - käytetään niitä ratkaisuksi sopisi siis putket ja suodattimet. XMLtyökalut saattavat edellyttää, että koko aineisto on valmis - tyydytään tähän 2.12.2008 Harri Laine 10

Käyttöliittymä voitaisiin toteuttaa ikkunana, jossa voi valita raportin tyypin, määritellä syöttötiedostot ja nimetä tulosaineiston. Ensimmäisessä prototyypissä annetaan syöttötiedot komentoriviargumentteina. 2.12.2008 Harri Laine 11

otettu mukaan liittymä- ja kontrolliolioita 2.12.2008 Harri Laine 12

Rakenteen luontimetodit 2.12.2008 lisätty Harri Laine 13

Luonnin idea: Raportointia kontrolloiva olio luo GEDCOMFile olion ja välittää sen argumenttina Lineage-konstruktorille. Konstruktori käy silmukassa läpi tiedoston ja luo elementin vaihtuessa Person tai Family olioita (huom. Person data on aineistossa ennen Family dataa). Person ja Family data muodostuu useasta rivistä. Lineage päättelee kuuluuko rivi vielä samaan kohteeseen jota ollaan tekemässä ja jos kuuluu antaa rivin kohteen käsiteltäväksi. Onko tämä hyvä malli? 2.12.2008 Harri Laine 14

Iteraation tuloksena uusi versio: Raportointia kontrolloiva olio luo Lineage-olion ja välittää konstruktorille tiedostonimen. Konstruktori luo tiedoston ja käy silmukassa läpi tiedoston ja luo elementin vaihtuessa Person tai Family olioita (huom. Person data on aineistossa ennen Family dataa). Person ja Family data muodostuu useasta rivistä. Lineage päättelee kuuluuko rivi vielä samaan kohteeseen, jota ollaan tekemässä, ja jos kuuluu antaa rivin luotavan kohteen käsiteltäväksi. 2.12.2008 Harri Laine 15

2.12.2008 Harri Laine 16

Paritukseen tarvittavia metodeja ja niiden apurakenteita lisätty 2.12.2008 Harri Laine 17

Esimerkin tapauksessa Family ja Person luokilla on samankaltaisia operaatioita. Lineage olion kannalta voisi luontivaiheessa olla yksinkertaisempaa, jos Family ja Person näkyisivät samankaltaisina. Kannattaisi siis harkita yleistysluokan lisäämistä malliin ja osan attribuuteista ja operaatioista siirtämistä sinne. Suunnittelun edetessä pitäisi vielä ratkaista kokoelmien toteutustapa, määritellä XML-rakenne ja laatia metodit xml:n tuottamiselle Onko paritusoperaatioiden oikea paikka sittenkään kontrollioliossa? 2.12.2008 Harri Laine 18

Compare_files Lineage1 Lineage2 Person1 Person2 LastName matchperson Person.byID(id1) Person.byID(id2) likeness getlastname getlastname compare 2.12.2008 Harri Laine 19

a teettää b c tekee Kuinka? Law of Demeter Parempi a:lle ei tarpeetonta tietoa a teettää b getc c tekee a teettää b välitää c tekee a b c getc a b c välittää 2.12.2008 Harri Laine 20

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); } 2.12.2008 Harri Laine 21

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); } 2.12.2008 Harri Laine 22

Mallikeskeinen ohjelmistokehitys Mallikeskeisen ohjelmistokehityksen perusajatuksena on kuvata ohjelmisto sarjana abstraktiotasoltaan tarkentuvia malleja Käytettävät mallit ja niiden käsitteistö ovat kohdealuekohtaista (e-kaupan malli, tietoliikkennesovellusmalli, pelimalli, ) Kehittäminen tapahtuu mallimuunnosten kautta esim. pelimallista komponenttimalliin Mallimuunnokset pyritään automatisoimaan, lopullinen tulos suoritettava ohjelma 2.12.2008 Harri Laine 23

Mallikeskeinen ohjelmistokehitys /MDA Model driven architecture (MDA) on Object management group:n (OMG) esittelemä kehittämismalli, jossa käytettään OMG:n standardoimia malleja MOF-metamallilla kuvattavissa olevia malleja, UML ja sen profiilit OCL object constraint language täsmälliseen määrittelyyn 2.12.2008 Harri Laine 24

Mallikeskeinen ohjelmistokehitys /MDA Vapaamuotoisia Erityiskielellä esitetty korkean abstraktiotason malli Alemman abstraktiotason toteutusalustariippuva malli ohjelmakoodi 2.12.2008 Harri Laine 25

Mallikeskeinen ohjelmistokehitys /MDA Platform independent model (PIM, alustariippumaton malli): malli ei (joltain kannalta katsottuna) ota kantaa toteutustekniikkaan Platform specific model (PSM, alustariippuva malli): toteutusalusta kiinnitetty (alustan monitasoisuus) PIM PSM / PIM PSM Kerroksia Toisen PIM on toisen PSM 2.12.2008 Harri Laine 26

Mallikeskeinen ohjelmistokehitys /MDA Alusta voisi olla esimerkiksi käyttöjärjestelmätason ratkaisu, komponenttitekninen perusratkaisu (esim. CORBA/EJB), yleinen arkkitehtuurimalli Mallit kohdealuekohtaisia ja kohdealuekohtaiseen käsitteistöön (metamalliin) perustuvia (esim. UML profiilit) Mallien täytyy olla hyvin määriteltyjä ja täsmällisiä 2.12.2008 Harri Laine 27

Mallikeskeinen ohjelmistokehitys /MDA Mallien väliset muunnokset pyritään automatisoimaan Muunnoskuvaukset määrittelevät mallien välisen muunnoksen Tarvitaan kieli muunnosten kuvaamiseen 4g kielet soveltuvat kohteiksi 3g kieliä paremmin, samoin kootut komponentit (asennuskuvausten generointia) 2.12.2008 Harri Laine 28