Ohjelmistoarkkitehtuurit Kevät 2016, luento 3 Arkkitehtuurin kuvaus (mallinnus) Samuel Lahtinen http://www.cs.tut.fi/~ohar/
Ajankohtaisuuksia Perjantaina ensimmäinen vierailuluento, Janne Viitala, Sandvik Tulevia, Veli-Pekka Eloranta, lääketieteellisen ohjelmiston erikoisvaatimuksia Ensi viikon viikkoharjoitukset keskittyvät mallintamiseen, piirtelyyn Oma läppäri mukaan, jos haluaa tehdä paikanpäällä TTY, UTU, Oulussa tietokoneluokassa Muistakaa ilmoittautua harjoitustyöhön 2
Piirtely/mallinnusohjemia TTY:llä Magic Draw: http://www.cs.tut.fi/software/win32/magicdraw/ https://www.cs.tut.fi/~otupk/harjoitukset/magicdrawohjeopiskelijoille.p df TC217 salissa & virtuaalikoneen kautta ohjsuun.cs.tut.fi Microsoft Visio Office 365-paketissa mukana Luokissa pitäis olla asennettuna ainakin TTY:llä Dia http://sourceforge.net/projects/dia-installer/ ArgoUML: http://argouml.tigris.org/ WhiteStarUML: http://sourceforge.net/projects/whitestaruml/ Online-piirtelyä: Drawi.io : https://www.draw.io/ 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 kuvaamisesta Wanha vitsi(?) Mies lentää kuumailmapallolla ja huomaa, että on eksyksissä. Hän pudottaa korkeutta ja huomaa alapuolellaan olevalla pellolla miehen ja huutaa: "Anteeksi, voisitteko auttaa? Lupasin eräälle ystävälleni, että tapaisin hänet tunti sitten, mutta en tiedä missä olen." Mies alapuolella vastaa: "Tottakai voin, olet kuumailmapallossa, leijuen noin 10m tämän pellon yläpuolella. Sijaintisi on 40 ja 41:n asteen välillä pohjoista pituutta, 59 ja 60:n asteen välillä itäistä pituutta." "Sinun täytyy olla insinööri", sanoo kuumailmapalloilija. "Niin olen" vastaa mies "mutta mistä tiesit?" "No, kaikki mitä kerroit, on kyllä teknisesti totta. Mutta minulla ei ole aavistustakaan mitä tehdä informaatiollasi ja totuus on, että olen edelleen eksyksissä." Mies alapuolella vastaa: "Sinun täytyy olla johtaja." "Niin olen", palloilija vastaa, "mutta mistä tiesit?" "No, et tiedä missä olet ja minne olet menossa. Olet tehnyt lupauksen josta sinulla ei ole minkäänlaista käsitystä miten sen voisit pitää ja odotat että minä ratkaisen ongelmasi. Totuus on, että olet täsmälleen samassa tilanteessa kuin ennen tapaamistamme, mutta nyt se on jostain syystä minun vikani." 6
Oikea abstraktiotaso, tyyli, oikeellisuus Eri näkökulmat, turisti, suunnistaja, keskustelu, paikantaminen (vs. koodari, pomoporras, järjestelmän ylläpitäjä, alijärjestelmän suunnittelija) Missä on Amarante? ~Portugalissa tai 60km Portosta itään tai Cepelosista 2 km pohjoiseen Lufrein lähistöllä Entä Oravanpolku Tampereella? Kalevassa, Sorsapuiston kentän vieressä vs.nyyrikintiestä seuraava samansuuntainen tie Miten pääsen täältä Tamppi Areenalle? 7
Ajo-ohje Tamppi Areenalle viime vuonna (ongelmat väärä abstraktio kevyen liikenteen väylä & autotievanhentunutta tietoa, epätarkkuus) 8
Tämän vuotinen versio (edelleen virheellinen sijainti) 9
Eri abstraktiot samaan asiaan Kuvan lähde: http://www.interrailnet.com/interrail-railway-great-britain
Eri abstraktiot samaan asiaan http://www.tfl.gov.uk/gettingaround/14091.aspx
Eri abstraktiot samaan asiaan 12
Eri abstraktiot samaan asiaan 13
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 14
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 15
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 Esim. MVC:n eri osat, weppikäyttöliittymäpuoli/ palvelimen toteutus, hyttiyksikkö harvesterissa 16
Arkkitehtuuridokumentit (jatkuu) Rajapintadokumentti (dokumentit) järjestelmän rajapinnan kuvaus, tyypillisesti API täydentää muita arkkitehtuuridokumentteja käytetään komponenttien suunnittelun ja toteutuksen perustana Toinen vaihtoehto, kuvataan muille miten oman järjestelmän kanssa kommunikointi onnistuu tai miten omaa järjestelmää voidaan laajentaa/käyttää osana muissa projekteissa Esimerkki: https://docs.mopidy.com/en/latest/api/ 17
Arkkitehtuuridokumentit (jatkuu) Tuoterunkoarkkitehtuuridokumentti alustan arkkitehtuuri + säännöt, joiden mukaan sovelluksia rakennetaan käytetään alustan yksityiskohtaiseen suunnitteluun ja ohjaamaan tuotekehitystä konkreettinen + meta-arkkitehtuuri 18
Arkkitehtuuridokumentit (jatkuu) Tuotearkkitehtuuridokumentti alustan käyttö + tuotekohtaiset arkkitehtuuriratkaisut käytetään tuotteen yksityiskohtaiseen suunnitteluun, testaukseen ja ylläpitoon konkreettinen arkkitehtuuri 19
Arkkitehtuuridokumentit (jatkuu) Referenssiarkkitehtuurit Miten meidän järjestelmällä kannattaa lähteä tekemään asioita? Mitä pitää huomioida, jos teet jotain vastaavaa? http://www.microsoft.com/en-us/sqlserver/solutions-technologies/data-warehousing/reference-architecture.aspx 20
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 21
Tarjolla tänään: Ohjelmistoarkkitehtuurien kuvaaminen Arkkitehtuurin kuvaukseen liittyvät käsitteet Arkkitehtuurikuvaukset eri tasoilla Arkkitehtuurinäkökulmat ja kuvaustyypit UML arkkitehtuurien kuvauskielenä Arkkitehtuuridokumentit Yhteenvetoa 22
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) 23
Arkkitehtuurin kuvaukseen liittyvät käsitteet (IEEE 1471-2000) Mission Architecture has an Rationale fulfills 1..* Environment System identifies 1 described by Architectural description provides selects has 1..* Stakeholder 1..* 1..* 1..* organized by View 1..* has 1..* Concern is addressed to conforms to Viewpoint 1..* 24
Lisäys (ISO/IEC 42010) 25
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) 26
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ä 27
Arkkitehtuurikuvaukset eri tasoilla perustuu yleistys Konkreettinen arkkitehtuuri Tuotearkkitehtuuri Yksityiskohtainen suunnittelu Tuoterunkoarkkitehtuuri Referenssiarkkitehtuuri Metaarkkitehtuuri Lähdekoodi 28
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 29
Kysyttävää? 30
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 31
Arkkitehtuurikuvauksen tyypit Rakenne - Käyttäytyminen Staattinen - Dynaaminen Esimerkki Määrittelevä Toisistaan riippuvia! 32
UML Mitä hyvää? Mitä huonoa? Mikä on tuttua? 33
kaaviokysely Kysymys 1: Kysymys 6: Kysymys 2: Kysymys 7: Kysymys 3: Kysymys 4: Kysymys 5: 34
35
UML arkkitehtuurien kuvauskielenä Kaaviotyypit 36
Esimerkki: Autonvuokrausjärjestelmä 37
Skenaarionäkymä: käyttötapauskaavio CarRentalSystem Reserve vehicle Deliver vehicle Client Return vehicle Clerk <<include>> Service Service 38
Aktiviteettikaavio, elementtityypit 39
Tarkennettu skenaarionäkymä: aktiviteettikaavio Client Car request Clerk Make reservation :Bill [open] Make bill :Bill [paid] Pay Prepare car Take car Registrate renting 40
Syntaksista 41
RentableItem Car RentableStorage regnumber RentManager +reserve(car,client) +release(car) +engage(car) +return(car) +update() +return() +reserve() +setactive() +setid() PrivateClient id name address creditcard Transaction +kind +info TransactionManager +handletransaction() * 1 1 1 creates uses * manages * 1 rents +return() 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 42
Suhteellista 43
Metamalli ja luokkakaaviomääritelmä 44
Looginen näkymä (käyttäytyminen): sekvenssikaavio luontiviesti asynkroninen 45
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: return acar: Car UI 1: return(acar) : RentManager 1.3: update() 1.2: store(acar) : Garage 46
Piirrä tilakaavio opiskelijaruokalassa asioinnista (jonotus, ruuan valinta & annostelu, maksaminen, mahdollinen ruuan myrkyttäminen chilikastikkeella, syöminen, jne.) 47
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 48
Fyysinen näkymä: sijoittelukaavio SiteWorkStation: Client : GUI : Rent Manager : Item Manager <<Corba>> VehicleServer: Server : Transaction Manager : Database 49
Communication path 50
Kehitysnäkymä: pakkauskaavio (package diagram) (ajoaikainen composite structure diag) 51
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 http://www.uml-diagrams.org/package-diagrams.html http://www.uml-diagrams.org/package-diagrams-overview.html +julkinen näkyvyys -privaatti 52
Java Servlet 2.5 API Tärkeimmät rajapinnat ja luokat http://www.uml-diagrams.org/examples/java-servlet-25-api-package-diagram-example.html?context=pkgexamples 53
Luokkakaavio & collaborationelementti 54
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);... 55
Harjoitus: UML ja kuvaustyypit Rakenne Käyttäytyminen Staattinen Dynaaminen Esimerkki Määrittelevä Sekvenssikaavio Luokkakaavio Tilakaavio 56
UML-kaavioilla kuvataan osittain päällekkäisiä asioita Luokkakaaviot Aktiviteettikaaviot Tilakaaviot Sekvenssikaaviot 60
Kysyttävää? 62
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.) 63
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ä 64
Stereotyypit
Esimerkki: CORBA profiili (OMG) Stereotyyppimäärittelyjä: 66
Esimerkki: CORBA profiili (OMG) Rajoitteiden määrittelyjä: Rajoitteiden kuvauskieli: OCL (Object Constraint Language) 67
Yhteenveto 68
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. 69
Kysyttävää? 70