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? Arkkitehtuurikuvaus antaa järjestelmästä tietoa, jota ei ole muualla. Arkkitehtuurikuvaus on järjestelmän keskeinen artifakti, verrattavissa lähdekoodiin. Jos järjestelmän toteutus ja arkkitehtuurikuvaus ovat ristiriidassa, järjestelmä on väärin toteutettu. Käytännöllinen ajattelutapa: arkkitehtuuri realisoituu arkkitehtuurikuvauksessa, ei järjestelmässä 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ä 6
Harjoitus: UML ja kuvaustyypit Rakenne Käyttäytyminen Staattinen Dynaaminen Esimerkki Määrittelevä Sekvenssi kaavio Luokka kaavio Tila kaavio 7
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... 8
Arkkitehtuuriviipale abstraktina käsitteenk sitteenä Viipale rooli Ohjelmistoyksikkö rooliin sidottu osa 9
Arkkitehtuuriviipaleiden kuvausmuoto (esim.) Nimi (esim. "Copy and paste") Laji (esim. piirre, suunnittelumalli ) Tarkoitus Sidosryhmät (esim. ylläpitäjä, sovellusohjelmoija ) Roolit ja niiden suhteet Sidonnat Vrt. suunnittelumallit 10
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 11
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 12
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 13
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 14
2.7 UML arkkitehtuurien kuvauskielenä 15
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.) 16
Meta-metamalli (MOF) UML:n nelikerrosmalli Class Association UML:n metamalli <<stereotype>> bean Operation is instance of Class Association Järjestelmän malli <<bean>> Account holder(): Person has Person mycar(): Car is instance of owns Car owner(): Person Järjestelmä Kai is instance of Opel SEG-399 17
Esimerkki: CORBA profiili (OMG) Stereotyyppimäärittelyjä: 18
Rajoitteiden määrittelyjä: Esimerkki: CORBA profiili (OMG) 19
Profiilin määm äärittely (TTY) <<metaclass>> Class <<metaclass>> Interface <<stereotype>> Sensor <<stereotype>> Actor <<stereotype>> ControlUnit <<stereotype>> FieldUnit Rajoitteet: <<FieldUnit>> afieldunit <<ControlUnit>> acontrolunit 1 <<Sensor>> asensor * <<Actor>> anactor * 20
Profiilin mukainen malli <<FieldUnit>> DeviceInterface <<ControlUnit>> UnitManager <<Sensor>> ThermDetector <<Sensor>> FaultDetector <<Actor>> AdjustingUnit 21
Kokonaan uusi metamalli Jos profiili ei ole riittävän voimakas väline, voidaan mallintamiskieli määritellä antamalla uusi MOF-pohjainen metamalli. Esimerkiksi: Alijärjestelmähierarkian kuvauskieli Metamalli D E Architecture A B C * Subsystem * 22
Model-Driven Architecture (MDA) Bran Selic 23
MDA:n mallikerrokset CIM (Computation Independent Model) Mallitransformaatioita PIM (Platform Independent Model) PSM (Platform Specific Model) Koodin generointi Implementation 24
2.8 Yhteenvetoa Arkkitehtuurit ovat korkean tason malleja ohjelmistosta Arkkitehtuuria ei voi johtaa olemassa olevasta järjestelmästä Arkkitehtuuri on keskeinen osa järjestelmää Arkkitehtuurin merkitys korostuu nykyisissä ohjelmistotuotannon trendeissä Arkkitehtuuri on olemassa vain kuvauksensa kautta UML on de facto standardi esityskieli arkkitehtuurimalleille 25