2 Ohjelmistoarkkitehtuurien kuvaus 2.1 Arkkitehtuurikuvauksen merkityksestä 2.2 Arkkitehtuurin kuvaukseen liittyvät käsitteet 2.3 Arkkitehtuurikuvaukset eri tasoilla 2.4 Arkkitehtuurinäkymät ja kuvaustyypit 2.5 Arkkitehtuuriviipaleiden kuvaus 2.6 Arkkitehtuuridokumentit 2.7 UML arkkitehtuurien kuvauskielenä 2.8 Yhteenvetoa 1
2.1 Arkkitehtuurikuvauksen merkityksestä Oletetaan, että järjestelmän arkkitehtuurin kuvaus ja todellinen arkkitehtuuri eroavat. Mikä on järjestelmän arkkitehtuuri? Jos järjestelmän toteutus ja arkkitehtuurikuvaus ovat ristiriidassa, kyseessä on enemmän tai vähemmän vakava laiminlyönti (vrt. rakennus) Arkkitehtuurikuvaus antaa järjestelmästä tietoa, jota ei ole muualla (vrt. lakia ei voi päätellä yhteiskuntaa tarkkailemalla) Arkkitehtuurikuvaus on järjestelmän keskeinen artifakti, verrattavissa lähdekoodiin Käytännöllinen ajattelutapa: arkkitehtuuri realisoituu arkkitehtuurikuvauksessa Todellisuus usein: on olemassa kaksi (tai useampia) arkkitehtuureja: suunniteltu&dokumentoitu arkkitehtuuri ja todellinen arkkitehtuuri 2
2.2 Arkkitehtuurin kuvaukseen liittyvät t käsitteet k (IEEE) 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..* 3
2.3 Arkkitehtuurikuvaukset eri tasoilla perustuu yleistys Konkreettinen arkkitehtuuri Tuotearkkitehtuuri Yksityiskohtainen suunnittelu Tuoterunkoarkkitehtuuri Referenssiarkkitehtuuri Metaarkkitehtuuri Lähdekoodi 4
2.4 Arkkitehtuurinäkym kymät t ja kuvaustyypit Näkymät: Skenaarionäkymä Vuorovaikutus ulkomaailman kanssa Looginen näkymä Ohjelmistoyksiköiden vastuut Prosessinäkymä Prosessit ja niiden vuorovaikutus "4+1" (Kruchten) Kehitysnäkymä Järjestelmän jakaminen eri kehittäjille UML Fyysinen näkymä Ohjelmiston jako eri laiteyksiköille, verkko Muuntelunäkymä Ohjelmiston laajentaminen ja muuntelu 5
Arkkitehtuurikuvauksen tyypit Rakenne - Käyttäytyminen Staattinen - Dynaaminen Esimerkki Määrittelevä Toisistaan riippuvia! 6
Harjoitus: UML ja kuvaustyypit Rakenne Staattinen Käyttäytyminen Dynaaminen Esimerkki Määrittelevä Sekvenssi kaavio Luokka kaavio Tila kaavio 7
UML:n kaavioiden suhteet ACD SED SCD CLD 8
SCED: Sekvenssikaavio -> > tilakaavio - työkalu päättelee joukosta sekvenssikaavioita millainen on tietyn osallistujan tilakaavio 9
2.5 Arkkitehtuuriviipaleiden kuvaus Arkkitehtuuriviipale: jonkin (arkkitehtuuritason) kriteerin perusteella toisiinsa liittyvät osat, jotka eivät muodosta omaa ohjelmistoyksikköä (komponenttia) Esimerkkejä: Yksittäiset arkkitehtuuriratkaisut Suunnittelumallien ilmentymät Piirteet Globaalit huolenaiheet, intressit (aspect, concern) Laajennuskohdat... 10
Arkkitehtuuriviipaleiden kuvausmuoto (esim.) Nimi (esim. "Copy and paste") Laji (esim. piirre ) Tarkoitus Sidosryhmät (esim. ylläpitäjä, sovellusohjelmoija ) Roolit ja niiden suhteet Roolien sidonnat Vrt. suunnittelumallit 11
Inari: Viipaletyökalu concerns Feature A Security Extension point P class B { void checkid() { } } class C { } <DESCR> <SEC> strict </SEC> <PARA> 1000 </PARA> Team T navigation generation validation mining queries 12
2.6 Arkkitehtuuridokumentit Dokumenttityypit: 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 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 13
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 Rajapintadokumentti järjestelmän rajapinnan kuvaus, tyypillisesti API täydentää muita arkkitehtuuridokumentteja käytetään komponenttien suunnittelun ja toteutuksen perustana 14
Arkkitehtuuridokumentit (jatkuu) Tuoterunkoarkkitehtuuridokumentti alustan arkkitehtuuri + säännöt, joiden mukaan sovelluksia rakennetaan käytetään alustan yksityiskohtaiseen suunnitteluun ja ohjaamaan tuotekehitystä konkreettinen + meta-arkkitehtuuri Tuotearkkitehtuuridokumentti alustan käyttö + tuotekohtaiset arkkitehtuuriratkaisut käytetään tuotteen yksityiskohtaiseen suunnitteluun, testaukseen ja ylläpitoon konkreettinen arkkitehtuuri 15
Arkkitehtuuridokumentin sisält ltö Seuraavat asiat (soveltuvin osin) tulisi ilmetä dokumentista: Identifointi: mistä organisaatiosta, järjestelmästä ja dokumentista on kyse Konteksti: liiketoimintatavoitteet, sidosryhmät Vaatimukset: arkkitehtuurin kannalta merkittävät vaatimukset Ympäristö: tekninen toimintaympäristö Näkymät: ydin valittujen näkökulmien mukaiset näkymät, mallit Perustelut: miksi on päädytty näihin ratkaisuihin Arkkitehtuuriviipaleet: poikkirakenteiset näkymät Analyysi: arkkitehtuurin arvioinnin tulokset 16
2.7 UML arkkitehtuurien kuvauskielenä 17
Metakieleen perustuva kielten mää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ä 18
Meta-metamalli (MOF) UML:n kieliarkkitehtuuri Class Association UML:n metamalli <<stereotype>> bean Operation ilmentymä Class Association Järjestelmän malli <<bean>> Account holder(): Person has Person mycar(): Car ilmentymä owns Car owner(): Person Järjestelmä - ei semantiikkaa - vrt. BNF Kai ilmentymä Volkswagen AMY-336 19
MOF oikeasti (pieni otos) (tämä osa on yhteistä UML:n kanssa) 20
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 InheritanceClase ExtensionClause { InheritanceClause = inherit IdList InheritanceClause = class myclass inherits yourclass { Java-ohjelman suoritus ilmentymä ohjelman suorituspolku 21
Uuden kuvauskielen määm äärittely: Esimerkki Oletetaan, että halutaan kuvata hierarkkisia arkkitehtuurirakenteita graafisesti, esim.: D E A B C 22
Kielen määm äärittely noudattaa (ilmentymä) Architecture simplified MOF: Class Association 1 1 M in M * 2 MyArch: Architecture AssocEnd multiplicity kind noudattaa (ilmentymä) L in M P in L noudattaa (ilmentymä) * Subsystem * P:n ilmentymä noudattaa (ilmentymä) MySystem: Subsystem B: Subsystem A: Subsystem visualisointi A MySystem B 23
Yleinen Tyyppiolio (Type Object) suunnittelumalli Tunnetaan myös nimellä Meta Object tai Reflection pattern 24
Esimerkki 25
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.) 26
Esimerkki: CORBA profiili (OMG) Stereotyyppimäärittelyjä: 27
Rajoitteiden määrittelyjä: Esimerkki: CORBA profiili (OMG) 28
ART: Profiilipohjainen mallintarkistus Stereotyyppien määrittely: <<metaclass>> Class <<metaclass>> Interface <<stereotype>> Sensor <<stereotype>> Actor <<stereotype>> ControlUnit <<stereotype>> FieldUnit Rajoitteet graafisesti: <<FieldUnit>> afieldunit <<ControlUnit>> acontrolunit 1 <<Sensor>> asensor * <<Actor>> anactor * 29
Profiilin mukainen malli <<FieldUnit>> DeviceInterface <<ControlUnit>> UnitManager <<Sensor>> ThermDetector <<Sensor>> FaultDetector <<Actor>> AdjustingUnit Työkalu tarkistaa, noudattaako malli profiilissa annettuja arkkitehtuurisääntöjä 30
Model-Driven Architecture (MDA) Bran Selic 31
MDA:n mallikerrokset CIM (Computation Independent Model) Mallitransformaatioita PIM (Platform Independent Model) PSM (Platform Specific Model) Koodin generointi Implementation 32
2.8 Yhteenvetoa Arkkitehtuurikuvausta ei voi johtaa olemassa olevasta järjestelmästä Arkkitehtuurikuvaus on keskeinen järjestelmäartifakti Arkkitehtuurikuvaus jakaantuu näkymiin Arkkitehtuuriviipaleet poikkileikkaavia ohjelmisto-osia UML:ää voidaan käyttää laaja-alaisesti arkkitehtuurien kuvaukseen UML:ää voidaan tarvittaessa laajentaa stereotyypeillä MDA on OMG:n visio UML:n käytöstä mallipohjaisessa ohjelmistokehityksessä 33