2 Ohjelmistoarkkitehtuurien kuvaus 2.1 Arkkitehtuurin kuvaukseen liittyvät käsitteet 2.2 Arkkitehtuurikuvaukset eri tasoilla 2.3 Arkkitehtuurinäkökulmat ja kuvaustyypit 2.4 Arkkitehtuuriviipaleiden kuvaus 2.5 Arkkitehtuuridokumentit 2.6 UML arkkitehtuurien kuvauskielenä 2.7 Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
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, vain lähdekoodi. Mikä on järjestelmän arkkitehtuuri? Arkkitehtuurikuvaus on järjestelmän keskeinen artifakti, joka on verfioitavissa (vasten vaatimuksia) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 2
2.1 Arkkitehtuurin kuvaukseen liittyvät käsitteet (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..* Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 3
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ä Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 4
2.2 Arkkitehtuurikuvaukset eri tasoilla perustuu yleistys Konkreettinen arkkitehtuuri Tuotearkkitehtuuri Yksityiskohtainen suunnittelu Tuoterunkoarkkitehtuuri Referenssiarkkitehtuuri Metaarkkitehtuuri Lähdekoodi Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 5
2.3 Arkkitehtuurinäkökulmat ja kuvaustyypit Näkökulmat: Skenaarionäkymät Vuorovaikutus ulkomaailman kanssa 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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 6
Arkkitehtuurikuvauksen tyypit Rakenne - Käyttäytyminen Staattinen - Dynaaminen Esimerkki Määrittelevä Toisistaan riippuvia! Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 7
Harjoitus: UML ja kuvaustyypit Rakenne Käyttäytyminen Staattinen Dynaaminen Esimerkki Määrittelevä Sekvenssi kaavio Luokka kaavio Tila kaavio Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 8
UML:n kaavioiden suhteet ACD SED SCD CLD Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 9
SCED: Sekvenssikaavio -> tilakaavio - työkalu päättelee joukosta sekvenssikaavioita millainen on tietyn osallistujan tilakaavio Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 10
2.4 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... Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 11
Arkkitehtuuriviipaleiden kuvaus (esim.) Nimi (esim. "Copy and paste") Laji (esim. piirre ) Tarkoitus Sidosryhmät (esim. ylläpitäjä, sovellusohjelmoija ) Viipaleen osat ja niiden suhteet Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 12
Viipaleen sisäinen esitys Inari: Viipaletyökalu (TTY) concerns Feature A Security Extension point P viipaleen osia class B { void checkid() { } } class C { } <DESCR> <SEC> strict </SEC> <PARA> 1000 </PARA> Team T navigation generation validation mining queries Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 13
2.5 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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 14
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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 15
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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 16
Arkkitehtuuridokumentin sisältö Seuraavat asiat (soveltuvin osin) tulisi ilmetä dokumentista: Identifointi: 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: 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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 17
2.6 UML arkkitehtuurien kuvauskielenä Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 18
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ä Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 19
UML:n kieliarkkitehtuuri - oliot luokkina - olioiden visualisointi 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 Kai ilmentymä Volkswagen AMY-336 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 20
Ilmentymät Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 21
MOF oikeasti (pieni otos) (tämä osa on yhteistä UML:n kanssa) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 22
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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 23
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)? Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 24
Kielen määrittely noudattaa (ilmentymä) AML in MOF Architecture yksinkertaistettu MOF in MOF Class Association 1 1 M in M * 2 MyArch: Architecture AssocEnd multiplicity kind noudattaa (ilmentymä) MyArch in AML L in M P in L noudattaa (ilmentymä) * Subsystem P:n ilmentymä noudattaa (ilmentymä) * MySystem: Subsystem B: Subsystem A: Subsystem visualisointi MySystem A B Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 25
Yleinen Tyyppiolio (Type Object) suunnittelumalli Tunnetaan myös nimellä Meta Object tai Reflection pattern Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 26
Esimerkki Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 27
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.) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 28
Esimerkki: CORBA profiili (OMG) Stereotyyppimäärittelyjä: Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 29
Rajoitteiden määrittelyjä: Esimerkki: CORBA profiili (OMG) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 30
MDA (Model-Driven Architecture) CIM (Computation Independent Model) Mallitransformaatioita PIM (Platform Independent Model) PSM (Platform Specific Model) Koodin generointi Implementation Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 31
2.7 Yhteenvetoa Arkkitehtuurikuvaus jakaantuu näkymiin UML:ää voidaan käyttää laaja-alaisesti arkkitehtuurien kuvaukseen UML perustuu metamallintamiseen UML:ää voidaan tarvittaessa laajentaa stereotyypeillä MDA on OMG:n visio UML:n käytöstä mallipohjaisessa ohjelmistokehityksessä Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 32