Ohjelmistoarkkitehtuurit. Kevät 2014, luento 3 Arkkitehtuurin kuvaus (mallinnus)

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät

2 Ohjelmistoarkkitehtuurien kuvaaminen

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit. Kevät 2016, luento 3 Arkkitehtuurin kuvaus (mallinnus)

2 Ohjelmistoarkkitehtuurien kuvaus

2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Ohjelmistoarkkitehtuurit. Kevät Johannes Koskinen.

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

2 Description of Software Architectures

Ohjelmistotekniikan menetelmät, UML

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit. Kevät

UML-kielen formalisointi Object-Z:lla

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Ohjelmistoarkkitehtuurit. Syksy 2010

UML:n yleiskatsaus. UML:n osat:

Unified Modeling Language

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

käyttötapaukset mod. testaus

UML - unified modeling language

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmistojen suunnittelu

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot

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

Analyysi on tulkkaamista

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen kertausta Harri Laine 1

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

Ohjelmistoarkkitehtuurit. Syksy 2007

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

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

Harjoitustehtävät ja ratkaisut viikolle 48

UML metamallina. Seminaariesitelmä Minna Majuri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

UML- mallinnus: Tilakaavio

Kaaviotekniikoista (erityisesti UML) (ajan riittäessä pikkasen projekteista)

UML työvälineenä ja tutkimuskohteena

Olioperustaisuus (object oriented)

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

Ohjelmistojen mallintaminen

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Mallinnus UML-yleiskatsaus

TIE = JOTU. VH5 - MagicDraw

Viestinvälitysarkkitehtuurit Lähtökohta:

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

Ohjelmistojen mallintaminen, kesä 2010

9. Muunneltavuuden hallinta

Viestinvälitysarkkitehtuurit

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

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

3. Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit Komponentit Kevät 2014

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

Ohjelmistoarkkitehtuurit kevät

6 Ohjelmistoarkkitehtuurit

Moniulotteisten ohjelmistojen hallinta

Ohjelmistotekniikan menetelmät, kesä 2008

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistoarkkitehtuurit kevät

Decision-centric architecture review method (DCAR) Ohjelmistoarkkitehtuurit Veli-Pekka Eloranta (Samuel Lahtinen)

5. Järjestelmämallit. Mallinnus

Ohjelmistoarkkitehtuurit kevät


Kurssin aihepiiri: ohjelmistotuotannon alkeita

UML työvälineenä ja tutkimuskohteena

10. Tuoterunkoarkkitehtuurit

Harjoitustehtävät viikolle 42

Kertaus: yleistys-erikoistus ja perintä

Ohjelmiston toteutussuunnitelma

Suunnitteluvaihe prosessissa

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Ohjelmistoarkkitehtuurit. Kevät 2014

7. Tuoterunkoarkkitehtuurit

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

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

Ohjelmistoarkkitehtuurit kevät

Komponentit ja rajapinnat

Arkkitehtuurin mallintaminen

MetaEdit+:n käyttö kehitysmenetelmän mallintamisessa

Pikaohje QPR-käyttöön

Ohjelmistojen mallintaminen, kertausta

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

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

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Transkriptio:

Ohjelmistoarkkitehtuurit Kevät 2014, luento 3 Arkkitehtuurin kuvaus (mallinnus) (Samuel Lahtinen, Johannes Koskinen) http://www.cs.tut.fi/~ohar/

Ajankohtaisuuksia Huomenna ensimmäinen vierailuluento, Janne Viitala, Sandvik Ensi viikon viikkoharjoitukset keskittyvät mallintamiseen, piirtelyyn, tehdään tietokoneluokassa (TTY:llä TC217 tai Tc205) (infoa myöhemmin) Muistakaa ilmoittautua harjoitustyöhön, jos teillä ei ole ryhmää, luokaa uusi yksin. Me ryhmäytämme teidät dediksen jälkeen. 2

Ohjelmistoarkkitehtuurien kuvaaminen Arkkitehtuurin kuvaukseen liittyvät käsitteet Arkkitehtuurikuvaukset eri tasoilla Arkkitehtuurinäkökulmat ja kuvaustyypit UML arkkitehtuurien kuvauskielenä Arkkitehtuuridokumentit Yhteenvetoa 3

Arkkitehtuurien kuvaaminen 4

Arkkitehtuurikuvauksen merkityksestä Oletetaan, että järjestelmän arkkitehtuurin kuvaus ja järjestelmän toteutus ovat ristiriidassa. Mikä on järjestelmän arkkitehtuuri? Oletetaan, että järjestelmällä ei ole mitään arkkitehtuuri- tai suunnitteludokumentteja, eivätkä sen suunnittelijat ole saatavilla, vain lähdekoodi. Mikä on järjestelmän arkkitehtuuri? Arkkitehtuurikuvaus on järjestelmän keskeinen artifakti, joka on verifioitavissa (vasten vaatimuksia) 5

Arkkitehtuurin kuvaukseen liittyvät käsitteet (IEEE 1471-2000) Mission fulfills 1..* has an Architecture Rationale Environment System identifies 1 described by Architectural description provides selects has 1..* 1..* 1..* organized by Stakeholder 1..* View has 1..* 1..* is addressed to conforms to Concern Viewpoint 1..* 6

Lisäys (ISO/IEC 42010) 7

Arkkitehtuuripäätökset Arkkitehtuuri voidaan ymmärtää arkkitehtuuritason päätösten summana (esim. Bosch) Arkkitehtuuripäätöksille voidaan antaa puoliformaali esitystapa Arkkitehtuuripäätökset liittyvät yleensä johonkin vaatimukseen, huolenaiheeseen, rajoitteeseen ym. Arkkitehtuuripäätöksillä on aina jokin perustelu (rationale) Arkkitehtuuripäätökset tulisi kirjata arkkitehtuurin kuvaukseen Arkkitehtuuripäätösten kuvauksia tarvitaan myös arkkitehtuurin arvioinnissa (palataan myöhemmin) 8

Arkkitehtuurinäkymät Näkymä Näkymä Arkkitehtuurikuvaus Näkymä Näkymä kuvaa tietyn arkkitehtuuriin liittyvän asian tietyllä abstraktiotasolla Näkymien kuvaamat asiat ovat osittain päällekkäisiä järjestelmän kannalta Toimiva järjestelmä 9

Arkkitehtuurikuvaukset eri tasoilla Referenssiarkkitehtuuri Metaarkkitehtuuri perustuu yleistys Konkreettinen arkkitehtuuri Yksityiskohtainen suunnittelu Tuotearkkitehtuuri Tuoterunkoarkkitehtuuri Lähdekoodi 10

Arkkitehtuurikuvaukset eri tasoilla Meta-arkkitehtuuri: välineet arkkitehtuurien kuvaukseen Referenssiarkkitehtuuri: jonkin sovellusalueen malliarkkitehtuuri Konkreettinen arkkitehtuuri: yksittäisen järjestelmän arkkitehtuuri Tuoterunkoarkkitehtuuri: jonkin tuotealustan arkkitehtuuri Tuotearkkitehtuuri: tuotealustan päälle rakennetun ohjelmistotuotteen arkkitehtuuri 11

Kysyttävää? 12

Arkkitehtuurinäkökulmat ja kuvaustyypit Näkökulmat: Skenaarionäkymät Vuorovaikutus ulkomaailman kanssa (use case view) Loogiset näkymät Ohjelmistoyksiköiden vastuut Prosessinäkymät Prosessit ja niiden vuorovaikutus "4+1" (Kruchten) Kehitysnäkymät Järjestelmän jakaminen eri kehittäjille UML Fyysiset näkymät Ohjelmiston jako eri laiteyksiköille, verkko Muuntelunäkymät Ohjelmiston laajentaminen ja muuntelu 13

Arkkitehtuurikuvauksen tyypit Rakenne - Käyttäytyminen Staattinen - Dynaaminen Esimerkki Määrittelevä Toisistaan riippuvia! 14

UML Mitä hyvää? Mitä huonoa? Mikä on tuttua? 15

UML arkkitehtuurien kuvauskielenä Kaaviotyypit 16

Esimerkki: Autonvuokrausjärjestelmä 17

Skenaarionäkymä: käyttötapauskaavio CarRentalSystem Reserve vehicle Deliver vehicle Client Return vehicle Clerk <<include>> Service Service 18

Tarkennettu skenaarionäkymä: aktiviteettikaavio Client Car request Clerk Make reservation :Bill [open] Make bill :Bill [paid] Pay Prepare car Take car Registrate renting 19

Aktiviteettikaavio, elementtityypit 20

RentableItem Car RentableStorage regnumber RentManager reserve(car,client) release(car) engage(car) return(car) update() setreturned setreserved setactive setid PrivateClient id name address creditcard Transaction kind info setkind setinfo TransactionManager handletransaction * 1 1 1 creates uses * manages * 1 rents setreturned Database Feature code description * <<interface>> LocationControl getpos(car) ItemManager 1 0..1 setcar(car) start() stop() reserve() release() engage() return() lost() recover() * creates Garage GPSService controller Client Store service information Looginen näkymä (rakenne): luokkakaavio 21

Suhteellista 22

Metamalli ja luokkakaaviomääritelmä 23

Looginen näkymä (käyttäytyminen): sekvenssikaavio UI : RentManager acar: Car : Garage return(acar) setreturned store(acar) update 24

Looginen näkymä (käyttäytyminen): yhteistoimintakaavio/ Communications diagram, UML 2.0, yksinkertaistettu Collaboration diagram (UML 1.x) Oliokaaviota, sekvenssikaaviota yhdisteltynä, linkeille numerointia kertomassa kutsujärjestyksestä 1.1: setreturned acar: Car UI 1: return(acar) : RentManager 1.3: update() 1.2: store(acar) : Garage 25

Piirrä tilakaavio komentorivikäyttöliittymän käytöstä (esim. Unix-konsoli): ota mukaan sisäänkirjautuminen, ohjelmien käyttöä ja käytön lopettamisesta (uloskirjautuminen) 26

Prosessinäkymä: tilakaavio For a ItemManager object: Lost do/announcement after(1 day) Vulnerable do/warning recover Service do/makereport lost return / stoptiming recover [suspect location] Active after(1 hour) LocCheck do/check location release engage/starttiming Available Reserved reserve 27

Fyysinen näkymä: sijoittelukaavio SiteWorkStation: Client : GUI : Rent Manager : Item Manager <<Corba>> VehicleServer: Server : Transaction Manager : Database 28

29

Kehitysnäkymä: pakkauskaavio (package diagram) (ajoaikainen composite structure diag) Core Items +Car +Feature <<import>> +RentManager +CarManager +Rentable +RentableStorage +LocationControl +Client <<import>> Storage +Garage Clients +PrivateClient +Company <<import>> <<import>> DB +Transaction +TransactionManager +Database <<import>> GPS +GPSService 30

Luokkakaavio & collaborationelementti 31

Muunneltavuusnäkymä: luokkakaavio feature Adding new item feature palette FeaturePalette Feature code description seticon(featureicon) price(): Integer * 1 FeatureIcon draw iconinterface initializer initcode add(feature) NewFeature price(): Integer myfeature NewFeatureIcon draw myicon initialize() Main... f = new NewFeature(...); fi = new FeatureIcon(...); f.seticon(fi); featurepalette.add(f);... 32

Harjoitus: UML ja kuvaustyypit Rakenne Käyttäytyminen Staattinen Dynaaminen Esimerkki Määrittelevä Sekvenssi kaavio Luokka kaavio Tila kaavio 33

UML-kaavioilla kuvataan osittain päällekkäisiä asioita Aktiviteettikaaviot Sekvenssikaaviot Tilakaaviot Luokkakaaviot 37

Kysyttävää? 39

Metakieleen perustuva kielten määrittely noudattaa (ilmentymä) M in M M = Metakieli noudattaa (ilmentymä) L in M noudattaa (ilmentymä) L = Kieli P = jokin kuvaus kielellä (malli, ohjelma tms) P in L noudattaa (ilmentymä) P:n ilmentymä 40

Metamalli ja luokkakaavio 41

Vrt. tekstuaaliset kielet ja BNF BNF:n määrittely Javan määrittely Javan-ohjelman määrittely ilmentymä ilmentymä Produktio = Vasen = Oikea Vasen = Symboli Oikea = Symboli* Symboli = Class = class id InheritanceClause ExtensionClause { InheritanceClause = inherit IdList InheritanceClause = class myclass inherits yourclass { Java-ohjelman suoritus ilmentymä ohjelman suorituspolku 42

UML:n kieliarkkitehtuuri Meta-metamalli (MOF) Meta-Object Facility Yksinkertaistaen: Class Association UML:n metamalli <<stereotype>> bean Operation ClassUML AssociationUML Järjestelmän malli <<bean>> Account holder(): Person has Person mycar(): Car owns Car owner(): Person Järjestelmä - ei semantiikkaa - vrt. BNF 43

UML:n kieliarkkitehtuuri Meta-metamalli (MOF) Yksinkertaistaen: Class Association UML:n metamalli <<stereotype>> bean Operation ilmentymä ClassUML AssociationUML Järjestelmän malli <<bean>> Account holder(): Person has Person mycar(): Car ilmentymä owns Car owner(): Person Järjestelmä - ei semantiikkaa - vrt. BNF ilmentymä 44

(E)MOF oikeasti (pieni otos) (tämä osa on yhteistä UML:n metamallin kanssa) 45

Uuden kuvauskielen määrittely: Esimerkki Oletetaan, että halutaan kuvata hierarkkisia arkkitehtuurirakenteita graafisesti, esim.: D E A B C Miten määritellään tähän tarvittava kuvauskieli AML (Architecture Modeling Language)? 46

Kielen määrittely noudattaa (ilmentymä) AML in MOF Architecture yksinkertaistettu MOF in MOF Class 1 1 Association M in M * 2 MyArch: Architecture AssocEnd multiplicity kind noudattaa (ilmentymä) MyArch in AML L in M P in L noudattaa (ilmentymä) * Subsystem noudattaa (ilmentymä) * P:n ilmentymä MySystem: Subsystem B: Subsystem A: Subsystem visualisointi A MySystem B 47

Yksinkertainen konkreettinen tulkinta metamallille Kuvittele, että olet toteuttamassa jonkin graafisen esitystavan (laatikoita ja nuolia ym.) editoria. Millaisen sisäisen olioesityksen suunnittelisit tämän esitystavan mukaisille kuville? Metamalli = tämän olioesityksen luokkakaavio malli = yksittäinen kuva 48

Yleinen Tyyppiolio (Type Object) suunnittelumalli Tunnetaan myös nimellä Meta Object tai Reflection pattern 49

Esimerkki 50

Stereotyypit ja profiilit UML:ssä Stereotyyppi jonkin UML:n metamalliin kuuluvan luokan (metaluokan) laajennos Profiili joukko stereotyyppejä ja niihin liitettyjä rajoitteita räätälöity UML-pohjainen mallintamiskieli johonkin erityistarkoitukseen (esim. jollekin sovellusalueelle, arkkitehtuurityylille tms.) 51

Stereotyypit Meta-metamalli (MOF) Yksinkertaistaen: Class Association UML:n metamalli <<stereotype>> bean Operation ilmentymä ClassUML AssociationUML Järjestelmän malli <<bean>> Account holder(): Person has Person mycar(): Car ilmentymä owns Car owner(): Person Järjestelmä - ei semantiikkaa - vrt. BNF ilmentymä 52

Esimerkki: CORBA profiili (OMG) Stereotyyppimäärittelyjä: 53

Esimerkki: CORBA profiili (OMG) Rajoitteiden määrittelyjä: Rajoitteiden kuvauskieli: OCL (Object Constraint Language) 54

Missäs malli/metamallijuttua voisi käyttää? 55

Kysyttävää? 56

Arkkitehtuuridokumentit Alustava arkkitehtuuridokumentti korostaa kaikkein kriittisimpiä ratkaisuja, vaihtoehtoisia ratkaisuja ja niihin liittyviä etuja/haittoja käytetään alustaviin työmääräarvioihin, liiketoimintapäätöksiin lähtökohta järjestelmäarkkitehtuurin suunnittelulle konkreettinen (+ referenssi) arkkitehtuuri 57

Arkkitehtuuridokumentit Järjestelmäarkkitehtuuridokumentti järjestelmän ylimmän tason arkkitehtuuri käytetään projektisuunnitteluun, työmääräarviointiin, järjestelmätestauksen suunnitteluun, ylläpitoon lähtökohta alijärjestelmien arkkitehtuurien suunnittelulle konkreettinen (+ meta) arkkitehtuuri 58

Arkkitehtuuridokumentit (jatkuu) Alijärjestelmäarkkitehtuuridokumentti alijärjestelmän arkkitehtuuri käytetään tehtävien suunnitteluun, tarkennettuihin työmääräarvioihin, yksikkötestauksen suunnitteluun, ylläpitoon lähtökohta alijärjestelmien yksityiskohtaiselle suunnittelulle ja toteutukselle konkreettinen arkkitehtuuri 59

Arkkitehtuuridokumentit (jatkuu) Rajapintadokumentti järjestelmän rajapinnan kuvaus, tyypillisesti API täydentää muita arkkitehtuuridokumentteja käytetään komponenttien suunnittelun ja toteutuksen perustana 60

Arkkitehtuuridokumentit (jatkuu) Tuoterunkoarkkitehtuuridokumentti alustan arkkitehtuuri + säännöt, joiden mukaan sovelluksia rakennetaan käytetään alustan yksityiskohtaiseen suunnitteluun ja ohjaamaan tuotekehitystä konkreettinen + meta-arkkitehtuuri 61

Arkkitehtuuridokumentit (jatkuu) Tuotearkkitehtuuridokumentti alustan käyttö + tuotekohtaiset arkkitehtuuriratkaisut käytetään tuotteen yksityiskohtaiseen suunnitteluun, testaukseen ja ylläpitoon konkreettinen arkkitehtuuri 62

Arkkitehtuuridokumentin sisältö Seuraavat asiat (soveltuvin osin) tulisi ilmetä dokumentista: Identifiointi: mistä organisaatiosta, järjestelmästä ja dokumentista on kyse Konteksti: liiketoimintatavoitteet, sidosryhmät, kehitysympäristö Vaatimukset: arkkitehtuurin kannalta merkittävät vaatimukset Rajoitteet Toimintaympäristö Näkymät: kuvauksen ydin valittujen näkökulmien mukaiset näkymät, mallit Tärkeimmät arkkitehtuuriratkaisut ja niiden perustelut Analyysi: arkkitehtuurin arvioinnin tulokset 63

2.6 Yhteenvetoa Arkkitehtuurikuvaus jakaantuu näkymiin (4+1) UML:ää voidaan käyttää eri näkymien esittämiseen UML perustuu metamallintamiseen UML:ää voidaan tarvittaessa laajentaa stereotyypeillä Mallit, kaaviot: mahdollisuus tarkistaa koodia (vastaako toteutus suunniteltua?) Mutta mutta, aina arkkitehtuuridokumentaatiossa/kuvauksessa ei aina tarvita/käytetä UML-malleja, kaavioita jne. 64

Kysyttävää? 65