10. Tuoterunkoarkkitehtuurit

Samankaltaiset tiedostot
7. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

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

11. Tuoterunkoarkkitehtuurit

11. 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

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

11. Kehysarkkitehtuurit

Kehyspohjainen ohjelmistokehitys

Ohjelmistoarkkitehtuurit

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

12. Kehysarkkitehtuurit

Muunneltavuuden hallinta (Variability management):

9. Muunneltavuuden hallinta

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Ohjelmistoarkkitehtuurit. Kevät

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

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

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Tuoterunko hajautetussa ympäristössä

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

10. Muunneltavuuden hallinta: variaatiopisteet

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistokehykset (software frameworks)

8. Kehysarkkitehtuurit

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Ohjelmistoarkkitehtuurit, syksy

6. Arkkitehtuurityylit

Uudelleenkäytön jako kahteen

2 Ohjelmistoarkkitehtuurien kuvaus

Moniulotteisten ohjelmistojen hallinta

11. Kehysarkkitehtuurit

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

13/20: Kierrätys kannattaa koodaamisessakin

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

Ohjelmistoarkkitehtuurit kevät

Ohjelmistokehykset (software frameworks)

Ohjelmistotekniikka - Luento 2

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

6. Arkkitehtuurityylit

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

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Harjoitustehtävät ja ratkaisut viikolle 48

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

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

3. Komponentit ja rajapinnat

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

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

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Suunnitteluvaihe prosessissa

Ohjelmistojen suunnittelu

Tietojärjestelmän osat

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

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

AVOIMEN TUOTTEEN HALLINTAMALLIT. Kunnassa toteutettujen tietojärjestelmien uudelleenkäyttö. Yhteentoimivuutta avoimesti

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

HSMT J2EE & EJB & SOAP &...

T Projektikatselmus

Onnistunut ohjelmistoprojekti

Avoimen lähdekoodin ohjelmistot julkisessa hallinnossa

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

Viestinvälitysarkkitehtuurit

Vaikuttavia tekoja yhteentoimivuus. Kommenttipuheenvuoro YTI-hanke päätösseminaari Taina Nurmela ja Teija Soini Helsingin kaupunki

Takki. Lisää ot sik k o osoit t am alla. Nyt se sopii, tai sitten ei. Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

UCOT-Sovellusprojekti. Testausraportti

Rajapintapalvelujen INSPIRE-yhteensopivuus

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

HOJ J2EE & EJB & SOAP &...

Ohjelmistojen mallintaminen, mallintaminen ja UML

WEBINAARI CLOUD SOFTWARE SRA- esi;ely

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

Ohjelmistotuotteen hallinnasta

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Johdatusta ohjelmistotekniikkaan

Ontologiat merkitysten mallintamisessa: OWL. Eeva Ahonen

Ohjelmistoarkkitehtuuri

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit kevät

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

Test-Driven Development

Kuntien yhteentoimivuusseminaari. Tietomallien laatiminen Taina Nurmela projektipäällikkö, Helsingin kaupunki

JulkICTLab Eteneminen Mikael Vakkari, VM

CQRS, -ES, PACS, DICOM, WTF?

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Test-Driven Development

Transkriptio:

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