11. Tuoterunkoarkkitehtuurit

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit. Kevät

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

10. Tuoterunkoarkkitehtuurit

11. Tuoterunkoarkkitehtuurit

7. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät 2014

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

Ohjelmistoarkkitehtuurit Tuoterungot. Kevät 2016

Ohjelmistoarkkitehtuurit, syksy

Esimerkki: Auton toiminnan monitorointijärjestelmä

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Kevät Johannes Koskinen Esimerkki: Auton toiminnan monitorointijärjestelmä

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

9. Ohjelmistoarkkitehtuurien arviointi

11. Kehysarkkitehtuurit

Kehyspohjainen ohjelmistokehitys

Ohjelmistoarkkitehtuurit

12. Kehysarkkitehtuurit

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Ohjelmistoarkkitehtuurit. Syksy 2010

7. Ohjelmistoarkkitehtuurien arviointi

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Viestinvälitysarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Tuoterunko hajautetussa ympäristössä

9. Evaluation of software architectures

Muunneltavuuden hallinta (Variability management):

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

9. Muunneltavuuden hallinta

1.3 Katsaus ohjelmistotuotannon kehittymiseen

3. Komponentit ja rajapinnat

6. Architectural styles

6. Arkkitehtuurityylit

7. Product-line architectures

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistokehykset (software frameworks)

Ohjelmistoarkkitehtuurit kevät

2 Ohjelmistoarkkitehtuurien kuvaus

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

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

Ohjelmistoarkkitehtuurit. Syksy 2008

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Viestinvälitysarkkitehtuurit Lähtökohta:

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Ohjelmistoarkkitehtuurit kevät

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

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

6. Arkkitehtuurityylit

Ohjelmistokehykset (software frameworks)

Ohjelmistoarkkitehtuurit. Syksy 2007

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Ohjelmistotekniikka - Luento 2

Ohjelmistoarkkitehtuurit

Moniulotteisten ohjelmistojen hallinta

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

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

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

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

8. Kehysarkkitehtuurit

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuuri

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

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

Onnistunut ohjelmistoprojekti

Ohjelmistoarkkitehtuurit Muunneltavuuden hallintaa, Ylläpidosta kevyesti, Vähän rääppeitä aiemmilta kerroilta

Uudelleenkäytön jako kahteen

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

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

13/20: Kierrätys kannattaa koodaamisessakin

$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä

Software product lines

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Avointen ohjelmistojen käyttö ohjelmistokehityksessä

11. Kehysarkkitehtuurit

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Harjoitustehtävät ja ratkaisut viikolle 48

TÄYTTÖAUTOMAATIT TÄYTTÖAUTOMAATIT COMPUTER INFLATORS

Ohjelmistoarkkitehtuurit kevät

Ohjelmistojen suunnittelu

Ohjelmistotuotteen hallinnasta

7.4 Variability management

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

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

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

ITK130 Ohjelmistoprosessi

T Projektikatselmus


Transkriptio:

11. Tuoterunkoarkkitehtuurit Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen: liiketoiminta, organisaatio, prosessi, tekninen Tuoterunkojen etuja ja ongelmia Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

Uudelleenkä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 johtaa matalan tason uudelleenkäyttöön Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 3

Tuoterunko = yhteiseen arkkitehtuuriin ja alustaan perustuva ohjelmistojen uudelleenkä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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 4

Tuoterunkoihin pohjautuva ohjelmistokehitys Keskeiset tavoitteet: merkittävä uudelleenkäyttö, lyhyempi kehitysaika, parempi laatu vähemmillä resursseilla, yhdenmukainen ja rationalisoitu kehitysprosessi, yhdenmukaiset tuotteet Edellytykset: halutaan tuoteperhe, jolla on riittävästi yhteisiä ominaisuuksia ja hyvin ymmärretty variaatio: vaatimusten on määriteltävä soveltamisala, yhteiset vaatimukset ja variaatiopisteet Tuoterunkotyyppisiin tilanteisiin joudutaan joskus myös ilman selvää tuoteperhekonseptia: Tuntemattomat vaatimukset johtavat usein variaatiopisteisiin Avoin lähdekoodi on usein tulkittavissa tuoterunkona Tuotteista halutaan räätälöitäviä Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 5

Tuoterunkoihin pohjautuvan ohjelmistokehityksen näkö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 ja teknologioita käytetään tuoterungoille? Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 6

Liiketoimintanäkökulma 4C 3C takaisinmaksu perinteinen tuoterunko 2C 1C alustan rakentaminen 0 1 2 3 4 Sovellusten lukumäärä Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 7

Liiketoimintanäkökulma Perustuu työmääräarviomenetelmiin In H.P. et al.: A quality-based cost estimation model for the product-line life-cycle. CACM 49 (2006), 85-88. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 8

Esimerkki ( oikea ) Sovellusalue: videopelit Perinteinen Santelices R.A., Nussbaum M.: A framework for the development of videogames. Software Practice & Experience 31 (2001), 1091-1107. 1. peli 2. peli 3. peli työtuntia 0 100 200 300 400 500 600 700 800 900 Kehykseen perustuva Kehyksen rakentaminen + koulutus Suorituskyky: aika +70% tila +200% Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 9

Uudelleenkäytön kypsyystasot Konfiguroitava tuoterunko (automaattinen tuki tuotteen rakentamiselle) Kypsyystaso Yhteinen arkkitehtuuri, variaatiopisteet (tuoterunko) Yhteinen alusta, yhteistä toiminnallisuutta Standardisoitu infrastruktuuri (yhteinen OS, DB, GUI jne.) Riippumattomat tuotteet Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 10

Hierarkkinen tuoterunko Jan Bosch Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 11

Ohjelmistoekosysteemit A Software Ecosystem consists of the set of software solutions that enable, support and automate the activities and transactions by the actors in the associated social or business ecosystem and the organizations that provide these solutions (Bosch J.: From Software Product Lines to Software Ecosystems. SPLC 2009.) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 12

Organisaation kypsyys suhteessa arkkitehtuuriin Arkkitehtuuri selittää järjestelmää Arkkitehtuuri ohjaa järjestelmän rakentamista Arkkitehtuuri mahdollistaa erilaisten järjestelmien rakentamisen (tuoterunko) organisaation kypsyys Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 13

Eri tapoja lähteä tuoterunkopohjaiseen ohjelmistokehitykseen Muunnetaan olemassaolevia komponentteja yleisemmiksi Korvataan olemassaolevat komponentit tuotealustalla Kehitetään uusi tuotealusta asteittain kasvavalle tuoteperheelle (ei olemassaolevaa ohjelmistoa) Kehitetään uusi tuotealusta heti koko suunnitellulle tuoteperheelle (ei olemassaolevaa ohjelmistoa) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 14

Tuoterunkoprosessi sisältyy Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Alustan suunnittelu Alustakehitysprosessi Vaatimusmäärittely Muunneltavuusvaatimukset Tuoterunkoarkkitehtuuri Tuoterunkorajapinta Arviointi Alustan toteutus Alusta Variaationhallinta Vaatimusmäärittely Tuotevaatimukset Tuoteen toteutus Tuotekohtainen koodi Tuotekehitysprosessi Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 15

Tuoterunko-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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 16

Tuoterunkoja tukevia teknologioita Komponenttiteknologiat Olioteknologiat, kehykset Mallintamisteknologiat, UML Sovellussuuntautuneet kielet, XML Tekstuaalisten ja visuaalisten kielten rakentamisympäristöt Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 17

Tuoterunkoarkkitehtuurit vs. DSL Vaatimukset Kääntäjä Ajettava sovellus Koodi Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 18

Tuoterunkoarkkitehtuurit vs. DSL Vaatimukset Kääntäjä Ajettava sovellus DSL = Domain- Specific Language DSL koodi DSL kehitin Koodi Koodi Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 19

Tuoterunkoarkkitehtuurit vs. DSL Vaatimukset Kääntäjä Ajettava sovellus Yhteinen arkkitehtuuri ja sovellusalueen tuki DSL = Domain- Specific Language DSL koodi DSL kehitin Koodi Koodi Koodi Alusta tuoterunkorajapinta Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 20

Tuoterunkoarkkitehtuurit vs. DSL Vaatimukset Kääntäjä Ajettava sovellus Yhteinen arkkitehtuuri ja sovellusalueen tuki DSL = Domain- Specific Language DSL koodi DSL kehitin Koodi Koodi Koodi Alusta tuoterunkorajapinta Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 21

Sovellus Sovellus Sovellus Sovellus Sovellus Sovellus Sovellus Sovellus Kerrostyyli tuoterunkoarkkitehtuureille Sovellusalusta Arkkitehtuurialusta Resurssialusta Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 22

Esimerkki: EJB-pohjainen tuoterunko Tuote Talletustilien hallintajärjestelmä Sovellusalusta Arkkitehtuurialusta Resurssialusta Pankkisovellustuki EJB: hajautettu asiakas-palvelintuki Tietokantapalvelut, tietoliikennepalvelut, KJ vrt. yleinen liiketoimintajärjestelmien kerrosarkkitehtuuri Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 23

Harjoitus Oletetaan, että aikaisemmin esimerkkinä ollut auton monitorointijärjestelmä halutaan muuntaa tuoterungoksi, jonka avulla voidaan luoda monitorointijärjestelmiä erilaisille ajoneuvoille. Anna tällaiselle tuoterungolle kerrosarkkitehtuuri nelikerrosarkkitehtuurimallin mukaisesti. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 24

CANBus CANFilter MessageDispatcherIF XMLMsg Message Dispatcher Msg type(): MsgType Component receive(msg) send(msg) register(msgtype,component) BrakeViewIF update() Brake- View BrakeModelIF BrakeController BrakeState recordusage checkcondition register(view) getstate() setstate() GSMComp sendreport DBAccess handleevent(event) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 25

Harjoitus Sovellus Sovellusalusta Arkkitehtuurialusta Resurssialusta Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 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 Huom: joku kerroksista voi myös puuttua tai olla hyvin ohut Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 27

Kerrosarkkitehtuuri auttaa hallitsemaan tuoterunkoa Mihin osiin vaikuttavat tietokantamuutokset? Miten varmistutaan, että ei muuteta tuoterungon perusarkkitehtuuria? Miten varmistutaan, että ei tuoda yksittäiseen tuotteeseen 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? Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 28

Esimerkkejä tuoterungoista Kännykkäalustat (esim. S40, S60) Vakuutusjärjestelmäalustat Pankkijärjestelmäalustat Tietokone- ja kännykkäpelialustat Koneenohjausjärjestelmäalustat Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 29

S60 Product Platform Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 30

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 31

Potentiaalisia ongelmia Henkilökunnan vaihtuvuus: motivointi, asiantuntemus, gurukeskeisyys Jäykistää kehitystä 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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 32