10. Tuoterunkoarkkitehtuurit Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen: liiketoiminta, organisaatio, prosessi, tekninen Tuoterunkojen etuja ja ongelmia 1
Uudelleenkäytt yttö opportunistinen: hyödynnetään aikaisempaa koodia, joka sattumalta sopii uuteen sovellukseen. suunniteltu: organisaatio käyttää resursseja yleisesti uudelleenkäytettävien ohjelmistojen kehittämiseen, jotka tarjoavat yrityksen alaan sopivat abstraktiot ja variaatiopisteet. oppotunistinen tapa ei toimi hyvin käytännössä alhaalta-ylös: potentiaalisesti uudelleenkäytettävät komponentit lisätään yleisesti käytössä olevaan komponenttikirjastoon, josta haetaan valmiita komponentteja uuteen sovellukseen. ylhäältä-alas: uudelleenkäytettävät ohjelmistot tehdään johonkin laajempaan kokonaisuuteen sopiviksi (esim. rajapinnat, arkkitehtuurit, kehykset) alhaalta-ylös tapa ei toimi hyvin käytännössä 2
Määritelmiä Tuoteperhe: joukko koordinoidusti kehitettyjä ohjelmistotuotteita, joilla on samankaltainen rakenne ja toiminta. Tuotelinja: kaikki artifaktit, välineet ja prosessit, jotka tukevat tuoteperheen jäsenten kehittämistä ja ylläpitoa. Tuoterunko, tuotealusta: tuoteperheen yhteinen ohjelmistoalusta Tuoterunkoarkkitehtuuri, tuoteperhearkkitehtuuri: tuoteperheen yhteinen arkkitehtuuri, tuoterungon arkkitehtuuri 3
Tuoterunko = yhteiseen arkkitehtuuriin ja alustaan perustuva ohjelmistojen uudelleenkäytt yttö - suunniteltu - ylhäältä-alas Tuoterunkoarkkitehtuurit (Product-line Architectures): http://www.sei.cmu.edu/plp/product_line_overview.html http://www.sei.cmu.edu/architecture/essays.html#jazayeri 4
Tuoterunkoihin pohjautuva ohjelmistokehitys Keskeiset tavoitteet: merkittävä uudelleenkäyttö, lyhyempi kehitysaika, parempi laatu vähemmillä resursseilla, rationalisoitu kehitysprosessi Edellytys: oletetaan tuoteperhe, jolla on riittävästi yhteisiä ominaisuuksia ja hyvin ymmärretty variaatio Vaatimusten on määriteltävä soveltamisala (esim. domain-malli, piirremalli), yhteiset vaatimukset ja variaatiopisteet (myös variaation laajuus ja sitomisaika) Joskus (osittain) tuntemattomat vaatimukset johtavat tuoterunkoon Avoin lähdekoodi on usein tulkittavissa tuoterunkona 5
Esimerkkejä tuoteperheistä Series 40, Series 60 kännykät 6
Tuoterunkoihin pohjautuvan ohjelmistokehityksen näkökulmatn kulmat Liiketoimintanäkökulma Milloin tuoterunkolähestymistapa kannattaa taloudellisesti? Millaisten taloudellisten mallien pohjalta voidaan tehdä päätöksiä? Organisaationäkökulma Miten organisaatio voi omaksua tuoterunkoajattelun ja tukea tuoterunkoon pohjautuvaa kehittämistä? Prosessinäkökulma Millainen kehitysprosessi sopii tuoteperheille? Tekninen näkökulma Millaisia arkkitehtuurimalleja käytetään? Miten tuetaan haluttua variaatiota? 7
Kumulatiivinen kustannus Liiketoimintanäkökulma kulma 4C 3C takaisinmaksu perinteinen tuoterunko 2C 1C alustan rakentaminen 0 1 2 3 4 Sovellusten lukumäärä 8
Liiketoimintanäkökulma kulma Perustuu työmääräarviomenetelmiin 9
Esimerkki ( oikea( oikea ) Sovellusalue: videopelit Perinteinen 1. peli 2. peli 3. peli työtuntia 0 100 200 300 400 500 600 700 800 900 Kehykseen perustuva Kehyksen rakentaminen + koulutus 1. peli 2. peli 3. peli Suorituskyky: aika +70% tila +200% 10
Uudelleenkäyt ytön n kypsyystasot Konfiguroitava tuoterunko (automaattinen tuki tuoteen rakentamiselle, hierarkkinen tuoterunko) Kypsyystaso Yhteinen arkkitehtuuri, variaatiopisteet (tuoterunko) Yhteinen alusta, yhteistä toiminnallisuutta Standardisoitu infrastruktuuri (yhteinen OS, DB, GUI jne.) Riippumattomat tuotteet 11
Hierarkkinen tuoterunko Jan Bosch 12
Organisaation vs. sovellusalueen kypsyys TR = tuoterunko KTR = konfiguroitava tuoterunko RT = riippumattomat tuotteet SI = standardisoitu infrastruktuuri Jan Bosch sovellusalueen kypsyys (stabiilisuus) korkea matala matala korkea KTR SI TR RT organisaation kypsyys 13
Organisaation vs. arkkitehtuurin roolin kypsyys Arkkitehtuuri selittää järjestelmää Arkkitehtuuri ohjaa järjestelmän rakentamista Arkkitehtuuri mahdollistaa erilaisten järjestelmien rakentamisen organisaation kypsyys 14
Eri tapoja lähtel hteä tuorunkopohjaiseen ohjelmistokehitykseen Muunnetaan olemassaolevia komponentteja yleisemmiksi Korvataan olemassaolevat komponentit tuotealustalla Kehitetään uusi tuotealusta asteittain kasvavalle tuoteperheelle Kehitetään uusi tuotealusta heti koko suunnitellulle tuoteperheelle 15
Tuoterunko-organisaatio organisaatio Tuoterungon mahdollisuudet Tuoterungon mahdollisuudet Sovellusalueen ymmärrys Arkkitehtuuriosaaminen Abstrahointikyky Teknologiatuntemus Kommunikaatiokyvyt Markkinointi Asiakkaan tarpeet Tuoterungon ymmärtäminen, sitoutuminen, puolustaminen ( Champion ) Johto Vaatimukset Tuotteen ominaisuudet Asiakas Tuotteen ymmärrys Asiakkaan tarpeiden ymmärrys Komponenttipohjainen kehitys Räätälöintikyky Toteutustekniikoiden tuntemus Tuoterunko ryhmä Komponentit Päivitykset Vaatimukset Mahdollisuudet Tuoteryhmät Tuotteet Palaute 16
Tuoterunkoprosessi Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Alustan suunnittelu Vaatimusmäärittely Muunneltavuusvaatimukset Tuoterunkoarkkitehtuuri Tuoterunkorajapinta Alustakehitysprosessi Arviointi Alustan toteutus Alusta Variaationhallinta Tuote Vaatimusmäärittely Tuotevaatimukset Tuoteen toteutus Tuotekohtainen koodi Tuotekehitysprosessi 17
Tuoterunkoja tukevia teknologioita Komponenttiteknologiat Olioteknologiat, suunnittelumallit Mallintamisteknologiat, UML Sovellussuuntautuneet kielet, XML Tekstuaalisten ja visuaalisten kielten rakentamisympäristöt Kehykset 18
Tuoterunkoarkkitehtuurit vs. DSL Perinteinen Vaatimukset Kääntäjä Ajettava sovellus Koodi 19
Tuoterunkoarkkitehtuurit vs. DSL Vaatimukset Kääntäjä Ajettava sovellus Perinteinen DSL = Domain- Specific Language Koodi DSL DSL koodi DSL kehitin Koodi 20
Tuoterunkoarkkitehtuurit vs. DSL Vaatimukset Yhteinen arkkitehtuuri ja Kääntäjä Ajettava sovellusalueen tuki sovellus Perinteinen DSL = Domain- Specific Language Koodi DSL DSL koodi DSL kehitin Koodi Tuoterunko Koodi Alusta tuoterunkorajapinta 21
Tuoterunkoarkkitehtuurit vs. DSL Vaatimukset Yhteinen arkkitehtuuri ja Kääntäjä Ajettava sovellusalueen tuki sovellus Perinteinen DSL = Domain- Specific Language Koodi DSL DSL koodi DSL kehitin Koodi Tuoterunko Koodi Alusta tuoterunkorajapinta 22
Kerrostyyli tuoterunkoarkkitehtuureille Tuote Tuote Tuote Tuote Tuote Tuote Tuote Tuote Sovellusalusta Arkkitehtuurialusta Resurssialusta 23
Esimerkki: EJB-pohjainen tuoterunko Tuote Talletustilien hallintajärjestelmä Sovellusalusta Arkkitehtuurialusta Resurssialusta Pankkisovelluslogiikka EJB: hajautettu asiakas-palvelin Tietokantapalvelut, tietoliikennepalvelut, KJ vrt. yleinen liiketoimintajärjestelmien kerrosarkkitehtuuri 24
Harjoitus Oletetaan, että harjoitustyön järjestelmä halutaan muuntaa tuoterungoksi, jonka avulla voidaan luoda erilaisia tuotantoprosessin simulointijärjestelmiä erilaisille prosesseille. Anna tällaiselle tuoterungolle kerrosarkkitehtuuri nelikerrosarkkitehtuurimallin mukaisesti. 25
Esimerkki: Tuotantoprosessin simulointialusta Tuote Sovellusalusta Arkkitehtuurialusta Resurssialusta 26
Kerrostyyliin perustuvan tuoterungon suunnittelu Päätä yleiset tukipalvelut ja suunnittele niiden abstrahointi Päätä perusarkkitehtuurityyli ja suunnittele sen tarvitsema infrastruktuuri (esim. viestinvälitys, asiakas-palvelin) Suunnittele tuoteperheen yhteiset komponentit ja variaatiopisteiden toteutus Suunnittele tuotekohtaisten vaatimusten toteutus 27
Kerrosarkkitehtuuri auttaa hallitsemaan tuoterunkoa Mihin osiin vaikuttavat tietokantamuutokset? Miten varmistutaan, että ei muuteta tuoterungon perusarkkitehtuuria? Miten varmistutaan, että ei tuoda tuotteeseen tai sovellusalueeseen liittyviä asioita perusarkkitehtuuriin? Miten varmistutaan, että ei sotketa tuotekohtaisia asioita sovellusaluekohtaisiin asioihin? Mitkä osat vaikuttavat eniten laatuominaisuuksiin? Mitä osia on (todennäköisesti) muutettava, jos laatuvaatimukset muuttuvat? 28
Esimerkkejä tuoterungoista Kännykkäalustat (esim. S40, S60) Vakuutusjärjestelmäalustat Pankkijärjestelmäalustat Tietokone- ja kännykkäpelialustat Koneenohjausjärjestelmäalustat 29
Tuoterunkojen etuja ja ongelmia Etuja: Pitkälle viety koodin, osaamisen uudelleenkäyttö Nopeutunut tuotesykli Tuottavuuden kasvu pitkällä tähtäyksellä Tuotteiden standardointi Kehitysprosessien ja työkalujen standardointi Laadun paraneminen Tukee nopeaa protoilua 30
Potentiaalisia ongelmia Henkilökunnan vaihtuvuus: motivointi, asiantuntemus, gurukeskeisyys Konfliktit alusta vastaan tuotteet (kattavuus, aikataulut, resurssit ym.) Konfliktit tuotteiden haluttujen ominaisuuksien välillä Tuotantoviive: ensimmäinen tuote kestää kauan Testaus: miten testataan tuoterunko? Tuoterungon fokuksen katoaminen Kvartaaliekonomia 31