Ohjelmistoarkkitehtuurit, syksy

Samankaltaiset tiedostot
2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistojen suunnittelu

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Hieman lisää malleista ja niiden hyödyntämisestä

Ohjelmistojen mallintaminen, mallintaminen ja UML

2 Ohjelmistoarkkitehtuurien kuvaaminen

UML:n yleiskatsaus. UML:n osat:

Ohjelmistoarkkitehtuurit. Kevät

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät

Tietojärjestelmän osat

2 Description of Software Architectures

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistojen mallintaminen kertausta Harri Laine 1

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistoarkkitehtuurit. Syksy 2010

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Johdantoluento. Ohjelmien ylläpito

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistotekniikka - Luento 2

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

OHJELMISTOARKKITEHTUURIT

Suunnitteluvaihe prosessissa

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Luokka- ja oliokaaviot

Ohjelmistoarkkitehtuurit. Kevät 2016, luento 3 Arkkitehtuurin kuvaus (mallinnus)

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmistojen mallintaminen Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistoarkkitehtuurit, syksy

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

9. Muunneltavuuden hallinta

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot

Ohjelmistoarkkitehtuuri

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

Koodimalli Code Model

JHS 179 ICT-palvelujen kehittäminen: Kokonaisarkkitehtuurin kehittäminen Liite 2 Arkkitehtuurikehyksen kuvaus

Ohjelmistoarkkitehtuurit. Kevät 2014, luento 3 Arkkitehtuurin kuvaus (mallinnus)

Standardi IEC Ohjelmisto

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Arkkitehtuurin dokumentointi O A

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

3. Komponentit ja rajapinnat

Ylläpito. Ylläpidon lajeja

Ohjelmistotuotanto, s

6 Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

Viestinvälitysarkkitehtuurit

Käyttötapausanalyysi ja testaus tsoft

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Ohjelmistojen mallintaminen

Ohjelmistoarkkitehtuurit kevät

OA:n kanoninen malli III

Ohjelmistoarkkitehtuurin suunnittelu

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit. Syksy 2007

Ohjelmistotekniikan menetelmät, UML

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Oppimistavoitteet. Ohjelmistoarkkitehtuurit. Ohjelmistojen merkityksestä. Ohjelmistoarkkitehtuurit S2015 Antti-Pekka Tuovinen / HY 1.9.

Ohjelmistoarkkitehtuurit

Oleelliset vaikeudet OT:ssa 1/2

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Ohjelmistojen mallintaminen, kesä 2009

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Ohjelmistotekniikan menetelmät, kevät 2008

Oppijan palvelukokonaisuus. Tietomallinnuksen laaja katselmointi

Ohjelmistojen mallintaminen, kesä 2010

1 Johdanto. Pieni motivointikalvo. 1.1 Mikä on ohjelmistoarkkitehtuuri?

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

Tietokannan suunnittelu

Ohjelmistoarkkitehtuurit

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta.

Lähestymistavat - toiminnallinen

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Arkkitehtuurin mallintaminen

Oppimistavoitteet. Koodimalli Code Model. Näkymätyypit. Näkymätyypit Yksi arkkitehtuuri monta näkymää NÄKYMÄTYYPIT

TOIMINNALLINEN MÄÄRITTELY MS

Transkriptio:

Ohjelmistoarkkitehtuurit Ohjelmistoarkkitehtuurin kuvaaminen on arkkitehtuuritason suunnitteluratkaisujen kuvaamista Arkkitehtuuritasoisuus Aihe, ongelma tai ohjelmistoelementti on arkkitehtuuritasolla, jos sillä on merkittävä vaikutus ohjelmiston rakenteeseen tai ohjelmiston laatuominaisuuksiin kuten suorituskykyyn, skaalautuvuuteen, tietoturvaan, luotettavuuteen, muutettavuuteen, jne. Osittain myös sopimusasia riippuu järjestelmästä ja sovellus/teknologia-alueesta, mitä konkreettisia asioita (esim. ohjelmistorakenteita) kuvaukseen otetaan mukaan 20.9.2012 1 20.9.2012 2 Kuvaamisen tavoitteita Kokonaisnäkemys järjestelmästä Käsitteistö Perustelut (engl. rationale) Ohjelmistotekniikan pitkän tähtäimen suuntauksena on ohjelmistojen kuvauksen abstraktiotason nostaminen ja toimivien järjestelmien tuottamien yhä korkeamman tason kuvauksista Todennäköisesti mahdollista vain hyvin spesifeillä sovellusaluekohtaisilla kuvaustekniikoilla, sillä kuvausten on oltava kattavia ja riittävän yksityiskohtaisia IEEE 1471 standardi arkkitehtuurien kuvaamiseen http://www.pithecanthropus.com/~awg/public_html/introducingp1471.pdf (sivut 14-23) Päivitetty versio standardista on ISO/IEC/IEEE 42010 : http://www.iso-architecture.org/ieee-1471 Yhteenveto http://www.iso-architecture.org/ieee-1471/ads Standardi saatavissa IEEE Xplore:sta (HY:n tunnukset) Standardi määrittelee arkkitehtuurin kuvaamiseen liittyviä abstrakteja käsitteitä ei esittele yhtäkään standardinäkymää, joka vaadittaisiin kaikissa kuvauksissa Näkymät ja eri näkymissä käytettävät kuvaustekniikat, -kielet ja analyysimenetelmät hyvin sovellusaluekohtaisia 1471-2000 toimii kuitenkin eräänlaisena käsitteellisenä kehyksenä konkreettisen kuvausstandardin laatimiselle Lähtökohtana arkkitehtuurin käyttäjien tarpeet ja niiden huomioon ottaminen eri näkymissä 20.9.2012 3 20.9.2012 4 IEEE standardin käsitteitä: Environment Organization * Mission System Stakeholder Concern Architecture Architectural description View Viewpoint 20.9.2012 5 1 Rationale IEEE standardin käsitteitä: Jokainen järjestelmä (system) täyttää yhden tai useampia tehtäviä (missions) toimintaympäristössään (environment) Järjestelmällä on sidosryhmiä(stakeholders), joilla on konkreettinen panos (vested interest) pelissä ja tiettyjä kiinnostuksen kohteita (concerns) Jos järjestelmällä on arkkitehtuuri (architecture), sillä on myös yksi arkkitehtuurikuvaus (architectural description) Arkkitehtuurikuvaus muodostuu näkymistä (). Näkymä perustuu näkökulmaan (point) Näkökulma: tietty esitysmuoto ja tavoite kuvaukselle. Näkymä: yksittäiselle järjestelmälle annettu osittainen arkkitehtuurikuvaus, joka noudattaa näkökulman esitysmuotoa. Toisaalta arkkitehtuurikuvaus koostuu malleista (esim. UML-kaaviot), joita näkymät hyödyntävät (eivät näy kuvassa). Näkymässä voi olla useita malleja ja sama malli voi olla useassa eri näkymässä. 20.9.2012 6 Harri Laine 1

Arkkitehtuurin elementtejä yleisellä Komponentit Konnektorit (connector) Konfiguraatiot Liittymät (interface) Perustelut Perustuuko kuvaus näihin käsitteisiin vai joihinkin muihin spesifimpiin käsitteisiin? Onko selvää miten näitä käsitteitä pitäisi soveltaa? Onko näihin perustuva malli liian alhaisella abstraktiotasolla? Onko tarjolla näihin perustuvia riittävän ilmaisuvoimaisia kuvauskieliä? Tyylit ja ratkaisumallit olisi saatava mukaan korkeamman tason rakenteina Pitäisi mallintaa tyyli tai ratkaisumalli yksityiskohtaisesti kuitenkin kirjallisuudesta löytyy enimmäkseen vain vapaamuotoisia, luonnollisella kielellä laadittuja kuvauksia osoittaako tämä mallien vajavaisuutta? Näkökulma (point): yleinen, järjestelmästä riippumaton tapa kuvata tiettyä arkkitehtuurin kannalta merkityksellistä ohjelmistojen ominaisuutta Näkymä (): varsinainen järjestelmästä riippuva kuvaus, joka noudattaa jotakin näkökulmaa Perusta eri näkymille: monimutkaisen järjestelmän kuvaaminen ei ole mahdollista yhdellä kaikenkattavalla kuvauksella, joka olisi ymmärrettävä ja hyödyllinen kaikille sidosryhmille. 20.9.2012 7 20.9.2012 8 Järjestelmän arkkitehtoninen malli: kokoelma (arkkitehtuuri-)näkymiä Järjestelmä 20.9.2012 9 Näkymien tavoitteita Asiakokonaisuuksien erillään pitäminen Kommunikointi sidosryhmien kanssa helpottuu Monimutkaisuuden hallinta Keskittyminen olennaiseen Näkymien ongelmia Ristiriitaiset kuvaukset Suorat ristiriidat Tarkennusristiriidat Staattisten ja dynaamisten aspektien yhteensopimattomuus Näkymäjoukon valinta Kattavuusongelmat, mallien huono soveltuvuus Pirstoutuminen 20.9.2012 10 Mitä näkökulmia? Useita malleja Esikuvana Kruhtenin 4+1 malli: Kruchten P.: The 4+1 View Model of Architecture, IEEE Software, Nov 1995, pp 42-50. Kruhtenin 4+1 malli: Käyttäjät: toiminnallisuus Logical Sidosryhmä kiinnostuksen aihe Development Ohjelmoijat koodin hallinta Ohjelmiston integroija: suorituskyky skaalautuvuus Process Scenarios syöte Physical Systeemisuunnittelija laitetopologia toimitus asennus tietoliikenne 20.9.2012 11 20.9.2012 12 Harri Laine 2

4+1 4+1 Skenaarionäkymä (scenario ) Nitoo yhteen 4 muuta näkymää ( +1 ) Järjestelmän vuorovaikutus käyttäjien ja muiden järjestelmien kanssa tietyssä käyttöskenaariossa Kuvaa järjestelmän rajapinnat ympäristöönsä Sovellettavissa useimpien järjestelmien kuvaamisessa Looginen näkymä (logical ) Toiminnallisuuden jakautuminen eri rakenneosien kesken Komponenttien velvollisuudet Koskee sekä staattisia rakenteita (esimerkiksi luokkia) että dynaamisia rakenteita (esimerkiksi olioita) Tärkeä näkymä kaikissa järjestelmissä Prosessinäkymä (process ) Järjestelmän toiminnan jako loogisiin prosesseihin Prosessien kommunikointi - kontrollin kulku Rakenteet ja instanssit - samasta prosessirakenteesta voi olla useita instansseja Tärkeä rinnakkaisuutta sisältävien järjestelmien kuvauksessa Järjestelmän suorituskyvyn ja skaalautuvuuden arviointi Kehitysnäkymä (development ) Kuvaa järjestelmän jakoa kehitysyksiköihin pakkaukset, ohjelmistotekninen rakenne Erityisesti laajojen järjestelmien kuvauksessa 20.9.2012 13 20.9.2012 14 4+1 4+1 Fyysinen näkymä (physical ) Järjestelmän prosessointiyksiköt ja niiden yhteydet Prosessointiyksiköiden sisältämät fyysiset ohjelmistoartefaktit (komponentit, resurssitiedostot, tietokannat, ) Tärkeä hajautetuissa järjestelmissä 4+1 ei ole täydellinen Monesti tarvitaan täydentäviä näkökulmia; esimerkiksi muuntelunäkymä (Koskimies & Mikkonen 2005) Millaista muuntelua järjestelmä tukee Variaatiopisteet ja muunnelmille esitettävät vaatimukset järjestelmän laajennosrajapinta (tai erikoistamisrajapinta tai uudelleenkäyttörajapinta) Erityisesti tuoterunkojen yhteydessä Järjestelmän uudelleenkäytettävyyden arviointi Eri näkökulmia käytetään tarpeen mukaan Esimerkiksi UML tarjoaa kuvaustekniikoita em. näkymien esittämiseksi 20.9.2012 15 20.9.2012 16 - näkökulmia - näkökulmia Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives, by Nick Rozanski and Eoin Woods, published by Addison Wesley (2005): Functional Toiminnalliset elementit, niiden vastuut, liittymät ja vuorovaikutus Information Tiedon säilytys, käsittely, hajautus Concurrency Toiminnallisten elementtien jako rinnakkain toimiviin yksiköihin ja rinnakkaisuuden hallinta Development Järjestelmäkehittäjien rakenteellinen näkymä Deployment Miten asennetaan, laitteistovaatimukset Operational Käyttö, asennus ja näiden hallinta 20.9.2012 17 20.9.2012 18 Harri Laine 3

- näkökulmia - näkökulmia ASA Views (kirjasta Hofmeister & al.: Applied Software Architecture ) Conceptual, Module, Execution, Code Conceptual Toiminnallisuus kuvataan käsitteellisinä komponentteina (conceptual components) Yhteistyö ja tietojenvaihto konnektoreina (connector) Kuvaus on vahvasti sidoksissa kohdealueeseen Kuvaus suhteellisen riippumaton ohjelmisto- ja laitteistoteknologioista Huomion kohteina: vaatimusten täyttäminen valmiskomponenttien integrointi kohdealuespesifien SW- ja HW-komponenttien mukaan ottaminen uudelleenkäyttö, tuotelinja-asiat, tuotejulkaisut ja niiden toiminnallisuus vaatimusten ja kohdealueen muutosvaikutusten minimointi Module Käsitteelliset komponentit ja liittymät sidotaan alijärjestelmiin ja moduuleihin Miten käsitteellinen ratkaisu toteutetaan nykyaikaisessa laite- ja ohjelmistoympäristössä Huomion kohteena ohjelmistoalustakytkennät tarvittavat tukipalvelut testausjärjestelyt moduulien välisten riippuvuuksien minimointi uudelleenkäytön maksimointi tuotteen suojaus komponenttien ja alustan muutoksia vastaan 20.9.2012 19 20.9.2012 20 - näkökulmia - näkökulmia Execution Moduulien toteutus suoritusalustalla Suoritusaikaiset kohteet ja niiden ominaisuudet (prosessit, muistinkäyttö, ) Suoritusaikaisen kontrollin kulku Huomion kohteina suorituskykyvaatimusten täyttyminen, elpyminen, konfiguraatiomuutokset resurssien kuormitus samanaikaisuus ja hajautusratkaisut ajonaikaisen ympäristön muutosten vaikutusten minimointi Code Ajoaikaisten komponenttien jakelukokoonpano (deployment components, executables) lähdekoodin rakenne jakelukoonpanon tuottaminen lähdekoodista Huomion kohteena Päivitysten työmäärän hallinta versioiden ja kokoonpanojen hallinta käännösten hallinta kehitystyökalujen tarve testauksen ja integroinnin tuki 20.9.2012 21 20.9.2012 22 - näkökulmia Eri näkymät keskittyvät eri kehittämisnäkökohtiin voimakkaasti toisiinsa kytketyt suunnittelupäätökset omissa näkymissään suunnittelupäätösten priorisointi helpompaa vaihtoehtoisten ratkaisujen evaluointi (trade-off analysis) helpompaa Näkymien (viitteellinen) laatimisjärjestys 1. conceptual 2. module & execution 3. code Näkökulmasta riippumatta kuvauksen painotus voi vaihdella, esimerkiksi: Rakenteen vs. käyttäytymisen kuvaus Staattisten vs. dynaamisten piirteiden kuvaus Yleinen esitys vs. esimerkki Seuraavat kuvaustyypit periaatteessa riippumattomia näkymistä (tietty tyyppi kuitenkin luonteva tietyn näkymän kanssa) Kuvaustyypit eivät ole riippuvaisia kuvattavan järjestelmän tyypistä 20.9.2012 23 20.9.2012 24 Harri Laine 4

Rakennekuvaus (structural ) Järjestelmän rakenteelliset suhteet (viittaussuhteet, sisältyvyyssuhteet, periytymissuhteet) Ei havainnollista aikaa; voi kuitenkin koskea sekä staattisia että dynaamisia rakenteita Käyttäytymiskuvaus (behavioral ) Ohjelmistoyksiköiden (esim. komponenttien) käyttäytyminen vuorovaikutuksissa Ajalla tärkeä merkitys Yhteys rakennekuvaukseen: esimerkiksi käyttäytymiskuvauksen palvelupyyntö edellyttää rakenteellista yhteyttä palvelun pyytäjän ja palvelun tarjoajan välillä Staattinen kuvaus (static ) Järjestelmän staattista esitystä (esimerkiksi lähdekoodia) koskeva kuvaus Dynaaminen kuvaus (dynamic ) Järjestelmän suoritusaikana esiintyvän ominaisuuden kuvaus Esimerkiksi olioiden väliset suhteet Määrittelykuvaus Kiinnostuksen kohteena kohde kokonaisuudessaan (esimerkiksi täydellinen tietyn luokan olioiden käyttäytymisen kuvaus) Esimerkkikuvaus Järjestelmän tietyn ilmiön ilmentymän kuvaus (esimerkiksi tietty oliokonfiguraatio tietyssä tilanteessa) 20.9.2012 25 20.9.2012 26 Arkkitehtuuridokumentit Kuvaustyypin valintaan vaikuttavat Tarkoituksenmukaisuus Ymmärrettävyys (kyseisessä kuvauksessa) Kuvauksen tekemisen vaatima työmäärä Esimerkin antaminen useimmiten helpompaa kuin täydellisen määritelmän Tärkeät erikoistapaukset voivat kuitenkin jäädä huomiotta Usein vältetään samassa kuvauksessa vastakkaisia kuvaustyyppejä Ei samaan kuvaukseen esimerkiksi dynaamisia ja staattisia piirteitä tai esimerkkiä ja määritelmää Arkkitehtuuridokumentin muotoon ja sisältöön vaikuttaa: Kuvattava järjestelmä Kuvauksen tekijän (organisaation) omat käytännöt Organisaation koko Järjestelmän/projektin koko Arkkitehtuurikuvaus oltava kuitenkin selkeä osa dokumentointia Arkkitehtuuridokumentti viittaa vaatimusdokumentteihin perustellessaan tehtyjä arkkitehtuuriratkaisuja Toisaalta yksityiskohtaiset suunnitteludokumentit ja testausdokumentit viittaavat arkkitehtuuridokumenttiin 20.9.2012 27 20.9.2012 28 Arkkitehtuuridokumenttityyppejä Alustava arkkitehtuuridokumentti Tärkeimmät arkkitehtuuriratkaisut ja niiden perustelut Vaihtoehtoisten ratkaisujen analyysi Konkreettisen arkkitehtuurin kuvaus + viitteet referenssiarkkitehtuureihin Järjestelmäarkkitehtuuridokumentti Arkkitehtuurin ylin taso: sidokset ympäristöön, alijärjestelmien rajapinnat ja keskinäinen vuorovaikutus Pohja alijärjestelmien arkkitehtuurisuunnittelulle, arkkitehtuurien arvioinnille, tarkennetuille työmääräarvioille, projektisuunnittelulle ja järjestelmätestauksen suunnittelulle Konkreettinen arkkitehtuuri (+ alijärjestelmien meta-arkkitehtuurit) Arkkitehtuuridokumenttityyppejä Alijärjestelmäarkkitehtuuridokumentti Erityisesti suurissa järjestelmissä, joissa alijärjestelmätkin voivat sisältää tärkeitä arkkitehtonisia ratkaisuja Tuoterunkoarkkitehtuuridokumentti Erityisesti: Miten rungon tarjoamaa varianssia käytetään sovellusten rakentamisessa? Esimerkkitapaukset, rajoitteet Tuotearkkitehtuuridokumentti Miten tuoterunkoarkkitehtuuria on sovellettu? Mitä tuoterungosta riippumattomia ratkaisuja on tehty? Rajapintadokumentti Tarjotun ohjelmointirajapinnan (API) dokumentaatio Määrittelyssä voidaan hyödyntää esimerkiksi tulo- ja jättöehtoja 20.9.2012 29 20.9.2012 30 Harri Laine 5