7. Tuoterunkoarkkitehtuurit

Samankaltaiset tiedostot
10. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

11. Tuoterunkoarkkitehtuurit

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

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

Ohjelmistoarkkitehtuurit

11. Kehysarkkitehtuurit

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Kehyspohjainen ohjelmistokehitys

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

9. Muunneltavuuden hallinta

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Muunneltavuuden hallinta (Variability management):

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit. Kevät

Tuoterunko hajautetussa ympäristössä

12. Kehysarkkitehtuurit

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

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

10. Muunneltavuuden hallinta: variaatiopisteet

10. Muunneltavuuden hallinta: variaatiopisteet

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

Moniulotteisten ohjelmistojen hallinta

3. Komponentit ja rajapinnat

2 Ohjelmistoarkkitehtuurien kuvaus

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

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

Ohjelmistokehykset (software frameworks)

13/20: Kierrätys kannattaa koodaamisessakin

8. Kehysarkkitehtuurit

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Tietojärjestelmän osat

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Ohjelmistoarkkitehtuurit, syksy

Harjoitustehtävät ja ratkaisut viikolle 48

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Avoimen lähdekoodin ohjelmistot julkisessa hallinnossa

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistokehykset (software frameworks)

6. Arkkitehtuurityylit

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

11. Kehysarkkitehtuurit

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Ohjelmistotuotteen hallinnasta

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

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

WEBINAARI CLOUD SOFTWARE SRA- esi;ely

Software product lines

Ohjelmistoarkkitehtuurit kevät

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 6 Jouni Lappalainen

T Projektikatselmus

Ohjelmistoarkkitehtuurit. Syksy 2007

Ohjelmistoarkkitehtuurit kevät

Ohjelmistojen suunnittelu

Teollisuuden näkökulma avoimen lähdekoodin ohjelmistoihin

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

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

Rajapintapalvelujen INSPIRE-yhteensopivuus

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

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

UCOT-Sovellusprojekti. Testausraportti

Ohjelmistoarkkitehtuurit. Syksy 2008

Onnistunut ohjelmistoprojekti

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

2. Ohjelmistotuotantoprosessi

Suunnitteluvaihe prosessissa

Työn ositusmalleista. Luennon tavoitteista. Motivointia. Walker Royce, Software Project Management, A Unified Framework

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

Ohjelmistoarkkitehtuurit

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Test-Driven Development

Edtech kestää aikaa!

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Test-Driven Development

Uudelleenkäytön jako kahteen

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

Ohjelmistoarkkitehtuurit kevät

Komponentit ja rajapinnat

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

OHJELMISTOARKKITEHTUURIT

Tekninen suunnitelma - StatbeatMOBILE

Transkriptio:

7. Tuoterunkoarkkitehtuurit Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen Kerrostyyli tuoterunkoarkkitehtuureille 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, kehykset) alhaalta-ylös tapa ei toimi hyvin käytännössä 2

Tuoterunko = systemaattinen suunniteltu ohjelmistojen uudelleenkäytt yttö Tuoterunkoarkkitehtuurit (Product-line Architectures): http://www.sei.cmu.edu/plp/product_line_overview.html http://www.sei.cmu.edu/architecture/essays.html#jazayeri 3

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 4

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? 5

Kumulatiivinen kustannus Liiketoimintanäkökulma kulma 4C 3C takaisinmaksu perinteinen tuoterunko 2C 1C I 1 2 3 4 Sovellusten lukumäärä 6

Liiketoimintanäkökulma kulma Perustuu työmääräarviomenetelmiin 7

Organisaation kypsyys independent products standardized infrastructure yhteinen OS, DB, GUI etc. platform + yhteinen domaintoiminnallisuus product population software product line program of product lines + TRA, osittain yhteinen domain-toiminnallisuus, variaatiopisteet + automaattinen tuki tuotteen rakentamiselle configurable product base Jan Bosch 8

Hierarkkinen tuoterunko Jan Bosch 9

Organisaation vs. sovellusalueen kypsyys sovellusalueen kypsyys (stabiilisuus) PL = software product line CPB = configurable product base IP = independent products SI = standardized infrastructure Jan Bosch high low PL IP low CPB SI high organisaation kypsyys 10

Organisaation vs. arkkitehtuurin roolin kypsyys Arkkitehtuuri selittää järjestelmää Arkkitehtuuri ohjaa järjestelmän rakentamista Arkkitehtuuri mahdollistaa erilaisten järjestelmien rakentamisen organisaation kypsyys 11

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 suunnitellulle tuoteperheelle 12

Tuoterunko-organisaatio organisaatio Tuoterungon mahdollisuudet Tuoterungon mahdollisuudet Sovellusalueen ymmärrys Arkkitehtuuriosaaminen Abstrahointikyky Teknologiatuntemus Kommunikaatiokyvyt Markkinointi Asiakkaan tarpeet Johto Vaatimukset Tuotteen ominaisuudet Customer 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 13

Toteutettavuus kartoitus Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Tuoterunkoprosessi Alustan suunnittelu Vaatimusmäärittely Muunneltavuusvaatimukset Tuoterunkoarkkitehtuuri Tuoterunkorajapinta Alustakehitysprosessi Arviointi Alustan toteutus Alusta Variaationhallinta Tuote Vaatimusmäärittely Tuotevaatimukset Tuoteen toteutus Tuotekohtainen koodi Tuotekehitysprosessi 14

Milloin tuoterunkoihin pohjautuva ohjelmistokehitys on mahdollista? Keskeiset tavoitteet: 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 15

Tuoterunkoja tukevia teknologioita Komponenttiteknologiat Olioteknologiat (erikoistamismekanismit) Mallintamisteknologiat, UML Sovellussuuntautuneet kielet, XML Tekstuaalisten ja visuaalisten kielten rakentamisympäristöt Kehykset 16

Tuoterunkoarkkitehtuurit vs. DSL Perinteinen Vaatimukset Kääntäjä Ajettava sovellus Koodi 17

Tuoterunkoarkkitehtuurit vs. DSL Vaatimukset Kääntäjä Ajettava sovellus Perinteinen DSL = Domain- Specific Language Koodi DSL DSL koodi DSL kehitin Koodi 18

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 Tuorerunko Koodi Alusta alustan rajapinta 19

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 Tuorerunko Koodi Alusta alustan rajapinta 20

Kerrostyyli tuoterunkoarkkitehtuureille Tuote Tuote Tuote Tuote Tuote Tuote Tuote Tuote Sovellusalusta Sovellusalusta Sovellusalusta Sovellusalusta Arkkitehtuurialusta Arkkitehtuurialusta Resurssialusta 21

Esimerkki: EJB-pohjainen tuoterunko Tuote Talletustilien hallintajärjestelmä Pankkisovelluskehys EJB Sovellusalusta Arkkitehtuurialusta Resurssialusta Tietokantapalvelut, hajautuspalvelut 22

Harjoitus Anna älykotijärjestelmän kerrosarkkitehtuuri tuoterunkojen nelikerrosarkkitehtuurimallin mukaisesti. 23

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 24

Tuoteryhmät t kerrosarkkitehtuurin mukaan Tuotekulttuuri Tuoteheimo Jan Bosch: tuotepopulaatio Tuoteperhe Tuote Sovellusalusta Arkkitehtuurialusta Resurssialusta 25

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? 26

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 27

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 Lisääntynyt kommunikoinnin ja koordinoinnin tarve Testaus: miten testataan tuoterunko? Tuoterungon fokuksen katoaminen Kvartaaliekonomia 28