Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit, syksy

Ohjelmistokehykset (software frameworks)

Ohjelmistokehykset (software frameworks)

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Ohjelmistoarkkitehtuurit

11. Kehysarkkitehtuurit

7. Tuoterunkoarkkitehtuurit

12. Kehysarkkitehtuurit

8. Kehysarkkitehtuurit

10. Tuoterunkoarkkitehtuurit

Kehyspohjainen ohjelmistokehitys

Tuoterunko hajautetussa ympäristössä

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Ohjelmistoarkkitehtuurit. Kevät

11. Tuoterunkoarkkitehtuurit

Ohjelmistojen suunnittelu

11. Tuoterunkoarkkitehtuurit

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

Oliosuunnittelu. Oliosuunnittelu

Avoimet ohjelmistokehykset

Uudelleenkäytön jako kahteen

Ohjelmistoarkkitehtuurit. Kevät 2014

13/20: Kierrätys kannattaa koodaamisessakin

9. Muunneltavuuden hallinta

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Tuoterungot. Kevät 2016

Ohjelmistoarkkitehtuurit. Kevät

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Ohjelmistoarkkitehtuurit kehysarkkitehtuurit. Kevät 2014

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

11. Kehysarkkitehtuurit

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


812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistojen mallintaminen. Luento 11, 7.12.

1.3 Katsaus ohjelmistotuotannon kehittymiseen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Suunnitteluvaihe prosessissa

Tekninen suunnitelma - StatbeatMOBILE

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Ohjelmistojen mallintaminen, mallintaminen ja UML

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Johdanto Kehystyypit Kehysten arkkitehtuurilähestymistavat Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa

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

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

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

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

OHJELMISTOKEHYSTEN ERIKOISTAMISTUTORIAALIT FRED- YMPÄRISTÖSSÄ

Ylläpito. Ylläpidon lajeja

Ohjelmistotekniikan menetelmät, kesä 2008

6. Arkkitehtuurityylit

Koodimalli Code Model

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Ohjelmistotekniikan menetelmät, kevät 2008

Harjoitustehtävät ja ratkaisut viikolle 48

Tekninen suunnitelma - StatbeatMOBILE

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

10. Muunneltavuuden hallinta: variaatiopisteet

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

Palveluperustaiset arkkitehtuurityylit

10. Muunneltavuuden hallinta: variaatiopisteet

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

6 Ohjelmistoarkkitehtuurit

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Avoimen ja yhteisen rajapinnan hallintamalli

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Ohjelmistoarkkitehtuuri

2 Ohjelmistoarkkitehtuurien kuvaus

Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4

Muunneltavuuden hallinta (Variability management):

Test-Driven Development

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Oleelliset vaikeudet OT:ssa 1/2

Ohjelmoinnin peruskurssien laaja oppimäärä, kevät

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

ohjelman arkkitehtuurista.

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

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

OTM viikoilla 18 ja 19

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

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

9 Edistynyt PHP-ohjelmointi

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma

OHJELMISTOARKKITEHTUURIT

Transkriptio:

Ohjelmistoarkkitehtuurit Luento 8 Ohjelmistokehykset Tuoteperheet 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 1

OHJELMISTOKEHYKSET 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 2

Ohjelmistokehykset (software frameworks) Osittain abstraktiksi jätettyjä ohjelmistorunkoja, joita eri tavoin täydentämällä saadaan rakennettua kokonaisia uusia sovelluksia tai sovelluksen osia Tavoitteena laajamittainen ja systemaattinen ohjelmistojen (sekä koodin että yleisrakenteen eli arkkitehtuurin) uudelleenkäyttö Olioperustaisissa kehyksissä ohjelmistorunko = kokoelma luokkia, komponentteja ja rajapintoja Ohjelmistokehykset sisältävät ohjelmakoodia, joten ne ovat sidoksissa ohjelmointikieleen Kehys on usein osa laajempaa ohjelmistoalustaa (platform) ja kehykseen voi kuulua omia työkaluja ja apuvälineitä 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 3

Ohjelmistokehykset 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 4

Ohjelmistokehykset Kehykset eroavat (luokka-, funktio-) kirjastoista (library) 1 Inversion-of-control: kehyksen sisäänrakennettu koodi ja sen logiikka ohjaa sovelluksen suoritusta (kontrollinkulkua), ei sovelluskohtainen koodi kuten luokkakirjastoja käytettäessä Oletustoiminnallisuus: kehys tarjoaa käyttökelpoista oletustoiminnallisuutta, ei pelkästään tynkätoteutuksia (no-ops, stubs) Laajennettavuus: kehyksen käyttäjä voi valikoiden syrjäyttää, erikoistaa tai lisätä kehyksen tarjoamaa toiminnallisuutta oman sovelluksena tarpeisiin kehyksen tekijän etukäteen määräämillä tavoilla Kehyksen muuttumaton koodi: kehyksen koodia ei ole (yleensä) tarkoitettu käyttäjän muutettavaksi - paitsi laajentamalla sitä tietyillä tavoilla erikseen määrätyissä kohdissa (kts. edelllinen kohta) [1] http://en.wikipedia.org/wiki/software_framework 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 5

Ohjelmistokehykset Ohjelmoijan näkökulmasta usein: Kehys = API Teknisesti ajatellen kehys yleensä sisältää ja tarjoaa useita API:ja (rajapintoja) eri tarkoituksiin Rajanveto ei aina käytännössä ole kovin selvä, käytännössä monia kehyksiä kutsutaan yksinkertaisesti API:ksi Ensimmäinen laajalti käytetty ohjelmistokehys: Smalltalk- 80-ympäristön Model-View-Controller Alkuperäisen Model-View-Controller-kehyksen arkkitehtuurin pohjalta määritelty MVC-arkkitehtuurityyli Erityisesti käyttöliittymätoteutukseen on kehitetty useita kehyksiä työasemasovelluksiin, web-sovelluksiin, useille eri ohjelmointikielille, kaupallisia ei kaupallisia 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 6

Ohjelmistokehykset Kehys voi olla kokonaisvaltainen koko sovellusta hallitseva tai osittaisongelmaan tarkoitettu tukikehys esim. käyttöliittymäkehykset rajautuvat käyttöliittymän toteutukseen, Java Enterpise Edition tarjoaa puitteet ja tuen kokonaisten yritysjärjestelmien toteuttamiseen (JavaEE on oikeastaan alusta eli platform, joka tarjoaa useita kehyksiä eri tarkoituksiin) Ns. sovelluskehykset on tarkoitettu tietyntyyppisten sovellusten toteuttamiseen Androidissa Java-sovelluksen rakenteen määrää ohjelmistokehys, joka on osa laajempaa käyttöjärjestelmään sisään rakennettua sovellusarkkitehtuuria Ohjelmistokehys ei ole valmis ohjelmistototeutus, vaan toteutus saadaan aikaan kehystä täydentämällä tai mukauttamalla 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 7

Ohjelmistokehykset - termejä Ohjelmistokehyksen erikoistaminen (framework specialization, framework adaptation) = ohjelmiston (osan) toteuttaminen täydentämällä kehyksen tarjoamaa ohjelmarunkoa Abstraktien luokkien erikoistaminen, Toiminnallisuuden koostaminen kehyksen konkreettisista luokista Sovelluskehys (application framework) = kehys, josta voidaan erikoistaa kokonainen sovellus Komponenttikehys (framelet) = minikehys, jonka erikoistamisen tuloksena syntyy yksittäinen komponentti 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 8

Ohjelmistokehykset - termejä Laajennoskohta, variaatiopiste (hot spot, variation point) = kehyksen aukkokohta, jota täydentämällä voidaan sovelluksen puolella varioida ja/tai ottaa käyttöön tietty kehyksen toiminnallisuus/ominaisuus Erikoistamisrajapinta (specialization interface) = laajennoskohtien ja niihin liittyvien vaatimusten kokoelma Kehyksen erikoistamisrajapinta on tyypillisesti paljon monimutkaisempi kuin yksittäisen komponentin rajapinta Erikoistamisrajapinnan laajennoskohtien välillä on riippuvuuksia, joiden ymmärtäminen on edellytys kehyksen oikealle käytölle 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 9

Ohjelmistokehykset - toteutus Erikoistamiseen voidaan käyttää esim. rajapintojen toteutusta (vrt. Dependency Inversion) periytymistä ja syrjäyttämistä (jos kieli tarjoaa) Kehyksen määrittelemien olioiden luontia ja kompositiota (yhteen kytkeminen ja konfigurointi, vrt. Dependency Injection) geneerisiä rakenteita myöhäistä sidontaa ja sitä tukevia rakenteita Sovelluskehyksissä päälogiikasta vastaa kehys ja sovelluskohtaiset erityistoimet toteutetaan täydennyksinä 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 10

Ohjelmistokehykset - toteutus Sovelluskohtainen koodi täydennys täydennys täydennys Kontrolli- ja datavuo kutsu kutsu kutsu Staattinen riippuvuus (tässä periytyminen) Sovelluskehys Kutsuissa käytössä ns. käänteinen kutsurakenne = kehys kutsuu dynaamista sidontaa hyväksikäyttäen sovelluskohtaisia täydentäviä moduuleja (Hollywood-periaate: don t call us we call you) 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 11

Ohjelmistokehykset - toteutus Kehyksissä sovelletaan tyypillisesti suunnittelupatterneja (design patterns) joustavuuden ja laajennettavuuden ynnä muiden hyvien asioiden saavuttamiseksi Joidenkin mallien soveltaminen on välttämätöntä kehyksen erikoistamismahdollisuuksien kannalta Kehyksen koodi sisältää tyypillisesti useiden suunnittelumallien ilmentymiä Alkuperäiset suunnittelumallit on löydetty analysoimalla olemassa olevia kehyksiä (esimerkiksi Smalltalk, HotDraw) Suunnittelumallit sopivat usein kehysten dokumentointiin [Johnson, 1992] Suunnittelupatterneissa on tyypillisesti helposti nähtävissä luontevasti kehykseen kuuluva osa (esim. abstraktit luokat) ja tuotekohtainen osa (esim. vaihtuvat konkreettiset luokat) 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 12

Ohjelmistokehysten haasteita Tekninen vaativuus ja monimutkaisuus Arkkitehdin tunnettava hyvin sovellusalue ja joustavuuteen liittyvät oliotekniikat (esim. suunnittelumallit) Abstraktius voi tehdä kehyksestä erikoistajille hankalasti ymmärrettävän Kehysten yhdistely voi olla ongelma Mitä tehdään, jos halutaan käyttää useampaa kehystä, joista kukin määrittelee pääkontrollisilmukan? 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 13

Ohjelmistokehysten haasteita Monoliittisuus Kehys saattaa kasvaa suureksi ja hallitsemattomaksi Laadullinen varianssi Variaatiopisteet liittyvät useimmiten toiminnallisuuden muokkaamiseen Laatuominaisuuksia variointi sen sijaan yleensä hankalaa (esim. tietoturvan lisääminen, suorituskyvyn optimointi, ) Dokumentointi Olennaista on erikoistamisrajapinnan kuvaus Tälle ei kuitenkaan vakiintunutta kuvaustapaa 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 14

Ohjelmistokehysten haasteita Toteutuksen ongelmia Joustavien ratkaisujen toteuttaminen edellyttää asiantuntemusta (esim. suunnittelumallit auttavat) Joustavuus Ylläpito vaativaa monimutkaisuus, abstraktit käsitteet Testaus? (vrt. tuoterunkojen testaus) Käytön ongelmia Miten kehysten käyttö pitäisi dokumentoida? Keittokirjat (cookbooks) Suunnittelumallipohjainen dokumentointi Riittääkö tavanomainen dokumentaatio erikoistamisrajapinnan kuvaukseen? Työkalutuki sovellusten rakentamiseen JavaEE Spring Framework Spring Boot 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 15

TUOTEPERHEET JA NIIDEN ARKKITEHTUURIT 19.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 16

Tuoteperheet 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 tuotteille 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 19.10.2017 17

Tuoterunkoarkkitehtuuri Tuoterunkoarkkitehtuurin toteutuksen komponentteja voidaan hyödyntää kaikissa eri tuotteissa, mikä 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 19.10.2017 18

Eri tapoja toteuttaa ohjelmistotuote Yleiskäyttöiseen ohjelmointikieleen, DOL:ään (eli sovellusaluekohtaiseen kieleen) ja tuoterunkoon/ohjelmistoalustaan perustuva ohjelmistokehitys Tuoterunko: 19.10.2017 19

Sovellusaluesuuntautunut ohjelmistotuotanto 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 Ohjelmistokehykset ovat yksi tapa toteuttaa tuoterunkoja 19.10.2017 20

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 19.10.2017 21

Muunneltavuus valinnainen valinnainen pakollinen vaihtoehtoinen vaihtoehtoinen, valittava Vaihtoehtoinen, joku näistä mahdollisesti tuotekohtainen eli voidaan korvata uudella uusi yhden tuotteen komponentti 19.10.2017 22

Tuoterunkopohjainen ohjelmistokehitys 19.10.2017 23

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) 19.10.2017 24

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) 19.10.2017 25

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

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. 19.10.2017 27

Tuoterunkoarkkitehtuurin kerrosmalli tuotetuote Sovellusalusta Arkkitehtuurialusta Arkkitehtuurialusta Resurssialusta 19.10.2017 28

Tuoterunkoarkkitehtuurin kerrosmalli Resurssialusta Yleisiä resursseihin (kommunikaatio, tietojen säilytys, prosessien hallinta, grafiikka) liittyviä peruspalveluja Arkkitehtuurialusta Yleisiä arkkitehtuurityyliin liittyviä palveluja Sovellusalusta Runko, sovelluskehys, patternit Sovellusalueen erityispiirteet, varianssipisteet Tuotekerros Tuotekohtaiset piirteet Vrt. Bob Martinin Clean Architecture 19.10.2017 29

Tuoterunkojen haasteita Tyypillisimmät ongelmat eivät ole teknisiä: Suuri henkilöstön vaihtuvuus välttämättä motivoiva tuoterunkolähestymistapa ei ole 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 19.10.2017 30

Tuoterunkojen haasteita 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 (kaikkiin?) vs. uusi ominaisuus (vain uusiin tuotteisiin?) 19.10.2017 31