Ohjelmistoarkkitehtuurit



Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit, syksy

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

7. Tuoterunkoarkkitehtuurit

Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen: liiketoiminta, organisaatio, prosessi, tekninen Tuoterunkojen etuja ja ongelmia

10. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

11. Tuoterunkoarkkitehtuurit

11. Tuoterunkoarkkitehtuurit

Tuoterunkoarkkitehtuurit. Ohjelmistoarkkitehtuurit kevät Uudelleenkäyttö. Johannes Koskinen.

Ohjelmistoarkkitehtuurit. Kevät 2014

Ohjelmistoarkkitehtuurit Tuoterungot. Kevät 2016

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

9. Muunneltavuuden hallinta

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Kehyspohjainen ohjelmistokehitys

Ohjelmistoarkkitehtuurit. Kevät

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Muunneltavuuden hallinta (Variability management):

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

11. Kehysarkkitehtuurit

Ohjelmistoarkkitehtuurit. Syksy 2010

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Arkkitehtuuriperustainen. Tuoterunkoihin perustuva ohjelmistotuotanto. Tuoterunkoarkkitehtuurien hyödyntäminen uudistamisessa

Ohjelmistokehykset (software frameworks)

Työkalujen yleinen arkkitehtuuri. Ylläpitoon liittyvät työkalut. Ylläpitotehtävien mukaiset työkalut. Työkalujen jaotteluperusteita

Ohjelmistojen suunnittelu

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

2 Ohjelmistoarkkitehtuurien kuvaus

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c.

Tuoterunko hajautetussa ympäristössä

Ohjelmistoarkkitehtuurit. Syksy 2007

12. Kehysarkkitehtuurit

Ohjelmistokehykset (software frameworks)

10. Muunneltavuuden hallinta: variaatiopisteet

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

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistoarkkitehtuurit, syksy

7. Product-line architectures

Ohjelmistoarkkitehtuurit

Harjoitustehtävät ja ratkaisut viikolle 48

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

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

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

9. Luento: Ohjelmistotyö. Tommi Mikkonen,

8. Kehysarkkitehtuurit

Oliosuunnittelu. Oliosuunnittelu

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

Uudelleenkäytön jako kahteen

Software product lines

Ohjelmistojen mallintaminen, mallintaminen ja UML

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Strategia, johtaminen ja KA. Virpi Einola-Pekkinen

OHJELMISTOARKKITEHTUURIT

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

MUUTOS 14! - Sosiaaliset kriteerit julkisissa hankinnoissa!

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Yleisiä asioita. Harkat alkavat ensi viikolla Vierailuluentoa. Slackin #luennot-kanava taas käytössä. Ensi viikon perjantaina, Janne Viitala, Sandvik

Ohjelmistojen mallintaminen, kesä 2010

Avoindata.fi. Palvelu julkishallinnon avoimen datan ja yhteentoimivuutta edistävien ohjeiden jakamiseen

Luotettavuuden mittaamisesta. Ilkka Norros ja Urho Pulkkinen

Tietojärjestelmän osat

Ohjelmistoarkkitehtuurit kevät Muunneltavuuden hallinta: variaatiopisteet. Ohjelmistot muuntuvat kahdessa dimensiossa

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

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

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Viestinvälitysarkkitehtuurit

Software engineering

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

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Moniulotteisten ohjelmistojen hallinta

HTML5 - Vieläkö. Antti Pirinen

Ohjelmiston testaus ja laatu. Testaus käytettävyys

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

Nuorten tieto- ja neuvontatyön osaamiskartta Pirjo Kovalainen

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

Käsitteellinen mallintaminen

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Lehtori, DI Yrjö Muilu, Centria AMK Ydinosaajat Suurhankkeiden osaamisverkosto Pohjois-Suomessa S20136

EUREFin vaikutukset organisaatioiden tietojärjestelmiin

Ohjelemistotuotanto, syksy 1998 /Prosessi Prosessimallit

Ohjelmiston toteutussuunnitelma

Ohjelmistoarkkitehtuurit. Syksy 2008

11. Kehysarkkitehtuurit

Ohjelmistotekniikan menetelmät, kevät 2008

Ohjelmistotekniikan menetelmät, kesä 2008

6 Ohjelmistoarkkitehtuurit

2. Ohjelmistotuotantoprosessi

Tekninen suunnitelma - StatbeatMOBILE

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Mittarilistoista strategian jalkauttamiseen

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Uudistuva RISKINARVIO-ohje

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

JUHA-PEKKA ARIMAA TUOTANNONSUUNNITTELUJÄRJESTELMÄN POHJAINEN KEHITTÄMINEN. Diplomityö

Projektin suunnittelu

Transkriptio:

Ohjelmistoarkkitehtuurit Tuoteperheet Tuoterunkoarkkitehtuurit 10.10.2013 1 Perinteisessä ohjelmistotuotannossa on keskitytty uusien ohjelmistojen laadukkaaseen tuottamiseen Erikoistuneista ainutlaatuisista vaatimuksista erikoistuneeseen ainutkertaiseen ohjelmistoon Aina ei kuitenkaan ole perusteltua lähteä liikkeelle tyhjästä Aiemmat sovellukset ovat tuoneet mukanaan tietämystä siitä, miten tietyt ongelmat voisi ratkaista Samankaltaiset ongelmat toistuvat eri sovelluksissa, joten samoja ratkaisutyyppejäkin voisi soveltaa Saman asian uudelleen keksimisen sijasta voisi keskittyä ratkomaan eri ohjelmien eroavaisuuksiin liittyviä ongelmia Ohjelmistoratkaisujen (suunnittelu, koodi) uudelleenkäytön oletetaan vähentävän kehitys- kustannuksia 10.10.2013 2 Harri Laine 1

Ohjelmistot ovat kovin erilaisia Esimerkiksi sähköisen kaupankäynnin järjestelmät eroavat merkittävästi vaikkapa puhelimen ohjausjärjestelmistä, jotka puolestaan eroavat merkittävästi lentokoneen lennonhallintajärjestelmästä Yleisellä tasolla erityisen ongelman ratkaisuvaihtoehtojen määrä on suuri Ongelmien hahmottaminen samankaltaisiksi voi myös olla vaikeaa Sovellusaluekohtaisesti samankaltaiset ongelmat ovat helpommin tunnistettavissa, jolloin niiden ratkaisuun voi soveltaa valmiita malleja Ratkaisuvaihtoehtojen määrä vähenee 10.10.2013 3 Domain Rajattu ongelma-alue Osaaminen Business Sovellusaluekohtaiset ratkaisut ja työkalut infra Technology Yleiset ratkaisut ja työkalut Sovellusaluesuuntautunut ohjelmistotuotanto (domain specific software engineering) Tuotelinjat (product lines) 4 10.10.2013 4 Harri Laine 2

Sovellualuesuuntautuneessa ohjelmistotuotannossa Vaatimukset jaettavissa sovellusaluetta koskeviin tai sovelluskohtaisiin Sovellusaluekohtaisille vaatimuksille valmiita ratkaisumalleja Toteutus, testaus ja ylläpito yksinkertaistuvat uudelleenkäytettävyyttä Sovellusaluekohtaisia työkaluja, tekniikoita ja palveluja Kommunikointi sidosryhmien kanssa helpottuu Sovellusalueen terminologia 10.10.2013 5 Määritelmiä: Tuoteperhe (product family, product line): toiminnaltaan ja rakenteeltaan samankaltaisten, tietylle sovellusalueelle toteutettujen ohjelmistotuotteiden muodostama joukko Tuoterunko (tai tuotealusta, product platform): ohjelmisto, joka toteuttaa tuoteperheen yhteisen rakenteen ja toiminnallisuuden Tuoterunkoarkkitehtuuri (product-line architecture, PLA): tuoterungon ja siihen liittyvän tuoteperheen arkkitehtuuri Tuoterunkoarkkitehtuuriin katsotaan joskus kuuluvan mukaan myös ohjelmistot ja työkalut, joita käytetään apuna tuotteiden tekemisessä tuoterungosta 10.10.2013 6 Harri Laine 3

Tuoterunkoarkkitehtuurin toteutuksen komponentteja voidaan hyödyntää kaikissa eri tuotteissa Parantaa laatua Koodi testattu useassa aiemmassa konfiguraatiossa Nopeuttaa ohjelmistokehitystä Valmiita komponentteja tarjolla Helpottaa projektin hallintaa Samankaltaiset tuotteet -> samankaltaiset projektit -> sama prosessi Standardoi tuotteita Runko antaa puitteet Tehostaa toimintaa, sillä perusarkkitehtuuri on suunniteltu ja toteutettu jo tuoterungossa 10.10.2013 7 Tuotteiden toteutus tuoterungon pohjalta voi perustua yleiskielisiin kehyksiin ja kirjastoihin Toteutusympäristön kehitystä on kuitenkin voitu jatkaa sovellussuuntautuneeksi kieleksi (domain-specific language, DSL) 10.10.2013 8 Harri Laine 4

Yleiskäyttöiseen ohjelmointikieleen, DOL:ään (eli DSL:ään) ja tuoterunkoon/ohjelmistoalustaan perustuva ohjelmistokehitys Tuoterunko: 10.10.2013 9 Esimerkkejä Sovellusaluesuuntautuneita (yleis-)kieliä: sed (merkkijonojen käsittely) SQL (tietokannan käsittely) XSLT (XML muunnokset) Excel:n kaavat YACC (kääntäjien laatimiseen) Erlang (alunperin telekommunikaatio-ohjelmistot) CFML (ColdFusionin tagikieli webbisovelluksiin) UnrealScript (pelit) Jne. Erikoistuneemmissa (sovellus-) DSL-kielissä on oma oppimiskynnyksensä ja rajoitteensa Tuoterunkoarkkitehtuuriin perustuvat ratkaisut ovat avoimempia 10.10.2013 10 Harri Laine 5

- liiketoiminnallinen näkökulma Kustannukset ja tuotot: Perinteinen ohjelmistotuotanto 10.10.2013 11 - liiketoiminnallinen näkökulma Kustannukset ja tuotot: Perinteinen ohjelmistotuotanto 10.10.2013 12 Harri Laine 6

- liiketoiminnallinen näkökulma Kustannukset ja tuotot: Tuoterunkoarkkitehtuuriin perustuva ohjelmistotuotanto 10.10.2013 13 - liiketoiminnallinen näkökulma Kehityskustannukset Tuoterunko on usein vielä raakile ensimmäisiä tuotteita toteutettaessa 10.10.2013 14 Harri Laine 7

Tuoterungon suunnittelu Luodaan tuoterungon perusta olemassa olevan toteutuksen komponenteista Rakennetaan tuoterunko inkrementaalisesti: ensin vähän ominaisuuksia myöhemmin kattava tuoterunko Jos tuoteperheen tuotteet ovat kaikki uusia, voidaan rakentaa suoraan kattava tuoterunko Edellytyksenä kuitenkin sovellusalueen ja sen vaatimusten perusteellinen tuntemus (onko mahdollista ennen ensimmäisenkään tuotteen toteuttamista?) Otetaan ensimmäinen (uudentyyppinen) tuote tuoterungon perustaksi lisätään muunneltavuutta tarpeen mukaan 10.10.2013 15 Tuoterunkopohjainen ohjelmistokehitys 10.10.2013 16 Harri Laine 8

Tuoterunkopohjainen ohjelmistokehitys Tuoterunkopohjainen ohjelmistokehitys jakautuu kahteen eri osaan: alustakehitysprosessiin (domain engineering) tuotekehitysprosessiin (application engineering) Näitä edeltää esitutkimusvaihe Arvioidaan tuoteperheen kannattavuutta (vaikuttavana tekijänä erityisesti oletettava tuoteperheen tuotteiden lukumäärä), vrt. aiemmin esitetty laskennallinen malli Kannattaako rakentaa tuoteperhe vai toteuttaa perheeseen tulevat tuotteet erillisesti Vaatimusmäärittely (domain analysis) sovellusalueen käsitemalli (domain model), muunneltavuusvaatimukset, yhteiset vaatimukset Käsitemalli: kommunikointi, sanasto, ymmärtäminen Muunneltavuusvaatimukset: mitkä ominaisuudet voivat vaihdella, missä rajoissa, milloin muunnelma kiinnitetään (staattisesti koodausaikana, linkkausaikana, alustusaikana, tuotteen käytön aikana) 10.10.2013 17 Tuoterunkopohjainen ohjelmistokehitys Tuoterunkoarkkitehtuurin suunnittelu (PLA design) Pohjana esimerkiksi esitutkimusvaiheessa kartoitetut arkkitehtuurityylit tai perinteisen oliosuunnittelun mukaan sovellusalueen käsitemalli. Iteratiivinen prosessi, jossa muunneltavuus keskeisessä asemassa Noudatetaan esimerkiksi aiemmin esitettyä arkkitehtuuripainotteista prosessia, jossa laatuvaatimuksia (tässä muunneltavuus) tarkastellaan yksi kerrallaan ja tarvittaessa muokataan arkkitehtuuria. HUOM! on varmistettava, ettei jo tehtyjä muunneltavuutta edistäviä ratkaisuja tuhota muiden vaatimusten mukaisten muutosten yhteydessä. Huom! Muunneltavuus eri tuotteiden välillä ei välttämättä tarkoita ulkoiselta toiminnaltaan toisistaan poikkeavia tuotteita (muunnettavuus esim. siirrettävyyden takia) 10.10.2013 18 Harri Laine 9

Tuoterunkopohjainen ohjelmistokehitys Konkreettisen toteutusympäristön suunnittelu (application engineering environment) Toteutusvälineistö (pelkkä tuoterunkoarkkitehtuurin kuvaus ja sen toteuttava alusta eivät yleensä riitä) Yksinkertaisin ratkaisu: tarjotaan hyvin määritelty API, joka piilottaa tuoterunkoarkkitehtuurin ja ohjelmistoalustan toteutuksen tuotteiden kehittäjiltä Usein tarpeen paljastaa osa tuoterunkoarkkitehtuurista kehittäjille (vrt. esim. white-box-tyyppinen uudelleenkäyttö sovelluskehyksissä) Ongelma: miten tuotteen vaatimukset mäpätään tuoterunkoarkkitehtuurin tarjoamiin ominaisuuksiin? dokumentointi, työkalutuki 10.10.2013 19 Tuoterunkopohjainen ohjelmistokehitys Tuotekehitysprosessi Normaaliin tapaan ensin tuotteen vaatimusten kerääminen ja vaatimusanalyysi (haastattelut, etc.) välitetään asiakkaille tieto tuoterungon mahdollisuuksista Varsinaisen kehitystyön laatu riippuu hyvin paljon tuoterungon laadusta. 10.10.2013 20 Harri Laine 10

Muunneltavuus Keskeinen ongelma tuoterungossa: muunneltavuuden hallinta Tuoterungon toteuttavassa ohjelmistoalustassa on tyypillisesti mukana pakollisia, valinnaisia ja vaihtoehtoisia komponentteja Tuotteessa on mukana myös tuotekohtaisia uusia komponentteja 10.10.2013 21 Muunneltavuus valinnainen valinnainen pakollinen vaihtoehtoinen vaihtoehtoinen, valittava Vaihtoehtoinen, joku näistä mahdollisesti tuotekohtainen eli voidaan korvata uudella uusi yhden tuotteen komponentti 10.10.2013 22 Harri Laine 11

Muunneltavuus 10.10.2013 23 Yhteisten osien ja eroavaisuuksien esittäminen piirremallilla Feature models 10.10.2013 24 Harri Laine 12

Muunneltavuus suunnittelussa ja toteutuksessa Piirrekartoituksen jälkeen on päätettävä tapa, jolla muunneltavuus mahdollistetaan Muunneltavan piirteen eristäminen mahdollistaa poistamisen tai vaihtamisen Suoritusaikainen muunneltavuus edellyttää omia mekanismeja (dynaaminen sidonta, DLLs, ) Jotkut muunneltavuuteen liittyvät seikat otetaan huomioon vasta toteutuksessa Esimerkiksi yksittäisen operaation toteutuksen vaihtamiseen voidaan varautua toteutustasolla (ei osa kokonaisarkkitehtuuria) 10.10.2013 25 Muunneltavuus suunnittelussa ja toteutuksessa Yksityiskohtaisen suunnittelun tasolla muunneltavuutta tukevia ratkaisuja: Ohjelmointikielen geneerisien ominaisuuksien (esim. templatepiirteiden) hyödyntäminen Suunnittelumallit Olennaista käytettyjen muunneltavuutta tukevien ratkaisujen kytkeminen muunneltavuusvaatimuksiin Variaatiopiste (variation point): muunneltavuusvaatimuksen ja sitä tukevan suunnitteluratkaisun muodostama kokonaisuus 10.10.2013 26 Harri Laine 13

Tuoterunkoarkkitehtuurin kerrosmalli tuote tuote Sovellusalusta Arkkitehtuurialusta Arkkitehtuurialusta Resurssialusta 10.10.2013 27 Tuoterunkoarkkitehtuurin kerrosmalli Resurssialusta Yleisiä resursseihin (kommunikaatio, tietojen säilytys, prosessien hallinta, grafiikka) liittyviä peruspalveluja Arkkitehtuurialusta Yleisiä arkkitehtuurityyliin liittyviä palveluja Sovellusalusta Runko, sovelluskehys, Sovellusalueen erityispiirteet, varianssipisteet Tuotekerros Tuotekohtaiset piirteet 10.10.2013 28 Harri Laine 14

Tuoterunkojen ongelmia Tyypillisimmät ongelmat eivät ole teknisiä: Suuri henkilöstön vaihtuvuus tuoterunkolähestymistapa ei ole välttämättä motivoiva Tuoterungon kehittäjillä liian kriittinen merkitys organisaatiossa Johto, markkinointi vs. tuoterungon kehittäminen Pitkän tähtäimen kehitystyöhön voi olla vaikeaa saada rahoitusta Tuoterungon tasapäistävä vaikutus: toisaalta liian monimutkainen toisaalta liian yksinkertainen 10.10.2013 29 Tuoterunkojen ongelmia Tuoterunkojen testaus on usein hankalaa Eivät itsenäisesti testattavissa (?) Usein jokainen toteutettava sovellus testataan erikseen Tuoterungon testaamiseen voidaan käyttää referenssisovelluksia, jotka käyttävät tuoterungon piirteitä kattavasti Testattavuuden helpottamiseksi saatetaan joutua rajoittamaan variaatiomahdollisuuksia Tuotteiden hallinta voi myös monimutkaistua: muutos alustaan kaikki eri tuotteet testattava (regressio) Ylipäänsä erilaisien riippuvuuksien dokumentointi tärkeämpää kuin täysin itsenäisissä sovelluksissa Jos tuotteet perustuvat alustan eri versioihin, halutaanko muutos kaikkiin alustaversioihin ja tuotteisiin vai ei? Bugikorjaus vs. uusi ominaisuus 10.10.2013 30 Harri Laine 15