Yleisesti Arkkitehtuurin dokumentointi O A 2 0 0 6 Valitse näkymät Dokumentoi näkymät Dokumentoi näkymille yhteiset asiat Lähde: Bass ym. ja Clements ym. 1 2 Näkymä vs rakenne Näkymät Bass ym. : A view is a representation of a coherent set of architectural elements, as written by and read by system stakeholders. It consists of a representation of a set of elements and the relations among them. A structure is the set of elements itself, as they exist in software or hardware. For example, a module structure is the set of the system's modules and their organization. A module view is the representation of that structure, as documented by and used by some system stakeholders. These terms are often used interchangeably,... Moduulinäkymä kehityksenaikainen rakenne Komponentti ja kytkentä -näkymä ajonaikainen rakenne Varausnäkymä resurssirakenne 3 4
Moduulinäkymä Moduulinäkymä Mikä on moduulin ensisijainen toiminnallinen vastuu? elementtinä moduuli, eli toteutuksen yksikkö koodipohjainen, kehityksen aikainen Mitä muita ohjelmistoelementtejä moduuli saa käyttää? "toiminnallisen vastuun alueita" Mitä muita ohjelmistoja se käyttää? Mitkä ovat moduulien väliset yleistys- ja erikoistussuhteet? 5 6 Komponentti ja kytkentä -näkymä Komponentti ja kytkentä -näkymä ajonaikaiset komponentit (ensisijaiset laskennalliset yksiköt)... Mitkä ovat tärkeimmät jaetut tietovarastot? Mitkä järjestelmän osat on toisinnettu?... ja kytkennät (komponenttien välisetkommunikointivälineet) Mitkä ovat toiminnalliset pääkomponentit ja mikä on niiden välinen interaktio? Kuinka data kulkee järjestelmän läpi? Mitkä järjestelmän osat voivat toimia rinnan? Kuinka järjestelmän rakenne voi muuttua ajon aikana? 7 8
Varausnäkymä Varausnäkymä Ohjelmistoelementtien ja ulkopuolisen ympäristön, tai ympäristöjen, elementtien väliset suhteet. kehitysympäristö, ajoympäristö Millä prosessorilla kukin ohjelmistoelementti ajetaan? Missä tiedostossa, tai tiedostoissa, kukin elementti sijaitsee kehityksen, testauksen ja järjestelmän rakentamisen aikana? Kuinka elementit jaetaan kehitysryhmien kesken? 9 10 Moduulinäkymä Hajotusrakenne "...is a submodule of..." Hajotusrakenne (decomposition) Voivat olla annettuja standardeissa (jenkkilä) Käyttörakenne (uses) Kerrosrakenne (layered) Luokka-, yleistysrakenne (class, generalisation) Suunnittelun lähtöpisteitä: tarkennetaan, pilkotaan, kunnes ovat toteutuskelpoisia. Moduuleihin liittyy dokumentaatio, speksit, suunnitelmat, testit,... Auttavat kehitysprojektin organisoinnissa. (Mitä, ei miten.) 11 12
Käyttörakenne Kerrosrakenne "... uses..." Yksiköinä moduulit, tai tarvittaessa tarkemmin proseduurit Yksikön oikea toiminta vaatii toisen yksikön oikean version. Tähtäimessä järjestelmän laajennettavuus ja mahdollinen toiminnan alijoukkojen irrotettavuus. Kontrolloiduin käyttörakennemuoto. Kerros n käyttää vain kerroksen n-1 palveluita. Kerrokset abstraktioita (virtuaalikoneita), jotka piilottavat alemmat toteutuksen yksityiskohdat ylemmiltä kerroksilta. 13 14 Luokka-, yleistysraknne Komponentti ja kytkentä -näkymä "... inherits from...", "... is an instance of..." Samanlaisen käyttäytymisen tai vastuun ryhmittymät. Edellisten eroavaisuuksien parametrisointi. Rakenteet (Kommunikoivat) prosessit Samanaikaisuus (concurrenc[ye]) Jaettu data, tietovarasto (repository) Asiakas palvelin 15 16
Komponentti ja kytkentä -näkymä Prosessirakenne "... runs / may run concurrently with...", "... excludes...", "... precedes..." Ortogonaalisia moduulinäkymälle Kuinka komponentit ja kytkennät liitetään toisiinsa? Prosessit ja säikeet ja kuinka ne kytkeytyvät toisiinsa kommunikoinnin, synkronoinnin avulla. Suorituskyvyn ja saavutettavuuden arvioinnin apuväline. 17 18 Samanaikaisuusrakenne Jaetun datan rakenne Loogiset säikeet, eli toimintasekvenssit, jotka voidaan sijoittaa erillisiin (ohjelman, järjestelmän, kielen) säikeisiin kehityksen myöhemmässä vaiheessa. Mitkä elementit luo, mitkä käyttää, mitkä käsittelee ja mitkä ylläpitää dataa? Vertaa esim. tietovarasto-arkkitehtuurimalli. Rinnakkaisuuden ja resurssivarausten suunnitteluun. Datan integriteetin ja ohjelmiston suorituskyvyn arviointiin. 19 20
Asiakas palvelinrakenne Varausnäkymä "... communicates with...", "... depends on..." Elementtien roolit. Sijoitusrakenne (deployment) Kytkentöjen protokollat ja viestit. Toteutusrakenne Vastuunjaon, fyysisen hajautuksen ja kuormantasauksen arviointiin. Työnjako 21 22 Sijoitusrakenne Toteutusrakenne Kuinka ohjelmisto sijoittuu laskenta- ja viestintälaitteistoon. Elementtejä ohjelmiston osat(usein prosessinäkymästä), laitteiston osat (prosessorit) ja kommunikointiväylät. Kuinka ohjelmiston elementit (usein moduulit) sijoittuvat kehitys-, integrointi- ja konfiguraationhallinaympäristöjen (tiedosto) rakenteisiin "... allocated to...", "... migrates to..." datan eheys, suorituskyky, saatavuus, tietoturva Kehitystoiminnan ohjaus, ohjelmiston rakennusprosessi (build process). 23 24
Työnjako 4+1 Looginen moduulinäkymä Moduulien kehityksen ja integroinnin jako kehitysryhmille. Prosessi komponentti ja kytkentä -näkymä Kehitys varausnäkymä Fyysinen varausnäkymä 25 26 Näkymien dokumentointi Osalliset ja näkymien valinta Table 1: Stakeholders and the Architecture Documentation They Might Find Most Useful Module Views C&C Views Allocation Views Osalliset Näkymien valinta Näkymän dokumentointi Yhteiset asiat Decomposition Uses Class Stakeholder Project Manager s s s d Member of Development Team d d d d d s s Testers and Integrators d d s s s Maintainers d d d d d s s Product Line Application Builder d s o s s s Customer s o End User s s Analyst d d s d s s Infrastructure Support s s s s d New Stakeholder x x x x x x x Current and Future Architect d d d d d d s Key: d = detailed information, s = some details, o = overview information, x=anything Source: Adapted from Clements 2003, p. 301. Layer Various Deployment Implementation 27 28
Näkymän dokumentointi 2. Elementtiluettelo 1.Primääri kuvaus: UML, laatikot ja viivat,... 2.Elementtiluettelo Elementit ja niiden ominaisuudet 3.Kontekstidiagrammi 4.Mukauttamisopas 5.Arkkitehtuurin taustatiedot 6.Termistö Suhteet ja niiden ominaisuudet Elementtien rajapinnat Elementtien käytös 7.Muuta tarvittavaa tietoa 29 30 Elementtien rajapinnat Elementtien rajapinnat Rajapintojen identiteetit (eli nimeäminen) Tarjotut resurssit Mahdollisten poikkeuksien luettelo syntaksi, semantiikka, käyttörajoitukset Esittely ja määrittely muualla CORBA IDL, UML,.h Kehittäjien tekemien tietotyyppien määrittelyt Yleinen poikkeuskäsittely soveltuvasti tässä selitettynä määritelmä tai viittaus siihen, käyttö 31 32
Elementtien rajapinnat Elementtien rajapinnat Mukautuvuus ja konfiguroitavuus Laatuattribuuttien näkyvyys Muiden elementtien tarjoamien resurssien tarve Tarkoitus ja suunnittelun motivaatiot Käyttöopas syntaksi, semantiikka, käyttörajoitukset 33 34 5. Arkkitehtuurin taustatiedot Näkymille yhteiset asiat Miten dokumentaatio on järjestetty? näkymäluettelo, näkymämalli Miksi arkkitehtuuri tehty ja/tai valittu? Tulosten analysointi Oletukset Mikä arkkitehtuuri on? yleiskuva, tarkoitus, näkymien väliset suhteet, elementtilista ja -hakemisto, projektisanasto Miksi valittu arkkitehtuuri? Miksi ei? konteksti, ulkoiset rajoitteet, perustelu karkeapiirteisille korkean tason päätöksille 35 36