Ohjelmistoarkkitehtuurit, syksy

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

7. Tuoterunkoarkkitehtuurit

10. Tuoterunkoarkkitehtuurit

11. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

11. Tuoterunkoarkkitehtuurit

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

Ohjelmistoarkkitehtuurit. Kevät 2014

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

Ohjelmistoarkkitehtuurit Tuoterungot. Kevät 2016

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Ohjelmistoarkkitehtuurit. Syksy 2010

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Ohjelmistojen suunnittelu

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Kehyspohjainen ohjelmistokehitys

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmistokehykset (software frameworks)

Uudelleenkäytön jako kahteen

11. Kehysarkkitehtuurit

9. Muunneltavuuden hallinta

Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto

Software engineering

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Software product lines

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

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

Ohjelmistokehykset (software frameworks)

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistojen mallintaminen, mallintaminen ja UML

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

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

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

2 Ohjelmistoarkkitehtuurien kuvaus

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

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit, syksy

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Tietojärjestelmän osat

Tuoterunko hajautetussa ympäristössä

13/20: Kierrätys kannattaa koodaamisessakin

Onnistunut Vaatimuspohjainen Testaus

9. Luento: Ohjelmistotyö. Tommi Mikkonen,

Ohjelmistojen mallintaminen. Luento 11, 7.12.

8. Kehysarkkitehtuurit

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

Oliosuunnittelu. Oliosuunnittelu

Oleelliset vaikeudet OT:ssa 1/2

Harjoitustehtävät ja ratkaisut viikolle 48

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

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

ADM Arkkitehtuuritason automaatio #tdarc

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

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

12. Kehysarkkitehtuurit

Onnistunut ohjelmistoprojekti

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

TIETOTEKNIIKAN KOULUTUSOHJELMA

10. Muunneltavuuden hallinta: variaatiopisteet

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

Tekninen suunnitelma - StatbeatMOBILE

10. Muunneltavuuden hallinta: variaatiopisteet

2. Ohjelmistotuotantoprosessi

Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4

Avoimen ja yhteisen rajapinnan hallintamalli

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

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

ELM GROUP 04. Teemu Laakso Henrik Talarmo

6 Ohjelmistoarkkitehtuurit

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Muunneltavuuden hallinta (Variability management):

Tapahtuipa Testaajalle...

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

OHJELMISTOARKKITEHTUURIT

Johdantoluento. Ohjelmien ylläpito

Ohjelmistotekniikan menetelmät, kesä 2008

Ohjelmistotekniikan menetelmät, kevät 2008

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

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

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

Tekninen suunnitelma - StatbeatMOBILE

Test-Driven Development

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit. Syksy 2007

Onnistunut ohjelmistoprojekti

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Tik Ohjelmistotuoteliiketoiminta

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Kurssin aihepiiri: ohjelmistotuotannon alkeita

Transkriptio:

Ohjelmistoarkkitehtuurit Tuoteperheet Tuoterunkoarkkitehtuurit Perinteisessä ohjelmistotuotannossa on keskitytty uusien ohjelmistojen laadukkaaseen tuottamiseen Erikoistuneista ainutlaatuisista vaatimuksista erikoistuneeseen ainutkertaiseen ohjelmistoon Aina ei kuitenkaan ole perusteltua lähteä liikkeelle tyhjästä Aiemmat sovellukset ovat tuoneet mukanaan tietämystä siitä, miten tietyt ongelmat voisi ratkaista Samankaltaiset ongelmat toistuvat eri sovelluksissa, joten samoja ratkaisutyyppejäkin voisi soveltaa Saman asian uudelleen keksimisen sijasta voisi keskittyä ratkomaan eri ohjelmien eroavaisuuksiin liittyviä ongelmia Ohjelmistoratkaisujen (suunnittelu, koodi) uudelleenkäytön oletetaan vähentävän kehitys- kustannuksia 8.10.2015 1 8.10.2015 2 Ohjelmistot ovat kovin erilaisia Esimerkiksi sähköisen kaupankäynnin järjestelmät eroavat merkittävästi vaikkapa puhelimen ohjausjärjestelmistä, jotka puolestaan eroavat merkittävästi lentokoneen lennonhallintajärjestelmästä Yleisellä tasolla erityisen ongelman ratkaisuvaihtoehtojen määrä on suuri Ongelmien hahmottaminen samankaltaisiksi voi myös olla vaikeaa Sovellusaluekohtaisesti samankaltaiset ongelmat ovat helpommin tunnistettavissa, jolloin niiden ratkaisuun voi soveltaa valmiita malleja Ratkaisuvaihtoehtojen määrä vähenee Sovellusaluekohtaiset ratkaisut ja työkalut Domain Rajattu ongelma-alue Osaaminen infra Technology Yleiset ratkaisut ja työkalut Business Sovellusaluesuuntautunut ohjelmistotuotanto (domain specific software engineering) Tuotelinjat (product lines) 8.10.2015 3 4 8.10.2015 4 Sovellualuesuuntautuneessa ohjelmistotuotannossa Vaatimukset jaettavissa sovellusaluetta koskeviin tai sovelluskohtaisiin Sovellusaluekohtaisille vaatimuksille valmiita ratkaisumalleja Toteutus, testaus ja ylläpito yksinkertaistuvat uudelleenkäytettävyyttä Sovellusaluekohtaisia työkaluja, tekniikoita ja palveluja Kommunikointi sidosryhmien kanssa helpottuu Sovellusalueen terminologia 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 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 8.10.2015 5 8.10.2015 6 Harri Laine 1

Tuoterunkoarkkitehtuurin toteutuksen komponentteja voidaan hyödyntää kaikissa eri tuotteissa 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 Tuotteiden toteutus tuoterungon pohjalta voi perustua yleiskielisiin kehyksiin ja kirjastoihin Toteutusympäristön kehitystä on kuitenkin voitu jatkaa sovellussuuntautuneeksi kieleksi (domain-specific language, DSL) 8.10.2015 7 8.10.2015 8 Esimerkkejä Yleiskäyttöiseen ohjelmointikieleen, DOL:ään (eli DSL:ään) ja tuoterunkoon/ohjelmistoalustaan perustuva ohjelmistokehitys Tuoterunko: 8.10.2015 9 Sovellusaluesuuntautuneita (yleis-)kieliä: sed (merkkijonojen käsittely) SQL (tietokannan käsittely) XSLT (XML muunnokset) Excel:n kaavat YACC (kääntäjien laatimiseen) Erlang (alunperin telekommunikaatio-ohjelmistot) CFML (ColdFusionin tagikieli webbisovelluksiin) UnrealScript (pelit) Jne. Erikoistuneemmissa (sovellus-) DSL-kielissä on oma oppimiskynnyksensä ja rajoitteensa Tuoterunkoarkkitehtuuriin perustuvat ratkaisut ovat avoimempia 8.10.2015 10 Kustannukset ja tuotot: Perinteinen ohjelmistotuotanto Kustannukset ja tuotot: Perinteinen ohjelmistotuotanto 8.10.2015 11 8.10.2015 12 Harri Laine 2

Kehityskustannukset Kustannukset ja tuotot: Tuoterunkoarkkitehtuuriin perustuva ohjelmistotuotanto Tuoterunko on usein vielä raakile ensimmäisiä tuotteita toteutettaessa 8.10.2015 13 8.10.2015 14 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 8.10.2015 15 8.10.2015 16 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 vaatimukset: mitkä ominaisuudet voivat vaihdella, missä rajoissa, milloin muunnelma kiinnitetään (staattisesti koodausaikana, linkkausaikana, alustusaikana, tuotteen käytön aikana) 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! eri tuotteiden välillä ei välttämättä tarkoita ulkoiselta toiminnaltaan toisistaan poikkeavia tuotteita (muunnettavuus esim. siirrettävyyden takia) 8.10.2015 17 8.10.2015 18 Harri Laine 3

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 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. 8.10.2015 19 8.10.2015 20 Keskeinen ongelma tuoterungossa: muunneltavuuden hallinta Tuoterungon toteuttavassa ohjelmistoalustassa on tyypillisesti mukana pakollisia, valinnaisia ja vaihtoehtoisia komponentteja Tuotteessa on mukana myös tuotekohtaisia uusia komponentteja valinnainen valinnainen 8.10.2015 21 pakollinen vaihtoehtoinen vaihtoehtoinen, valittava Vaihtoehtoinen, joku näistä mahdollisesti tuotekohtainen eli voidaan korvata uudella uusi yhden tuotteen komponentti 8.10.2015 22 Tuoterunkoarkkitehtuurin kerrosmalli tuote tuote Sovellusalusta Arkkitehtuurialusta Arkkitehtuurialusta Resurssialusta 8.10.2015 23 8.10.2015 24 Harri Laine 4

Tuoterunkoarkkitehtuurin kerrosmalli Software Product Line Hall of Fame 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 Software Product Line Conference (SPLC) kokoussarja jakaa tunnustuksia ohjelmistotuoteperheille Monet näistä ohjelmistoista ovat sulautettuja (embedded), eli integraalisena osana jotain laitetta (esim. kuluttajatuotteita) Tarkastelemalla näitä tuoteperheitä saa hyvän kuvan, mistä käytännössä on kysymys Hall of fame: http://splc.net/fame.html (Mieti, miksi esimerkiksi Applen iphone ei ole listalla?) 8.10.2015 25 8.10.2015 26 Tuoterunkojen ongelmia Tuoterunkojen ongelmia Tyypillisimmät ongelmat eivät ole teknisiä: Suuri henkilöstön vaihtuvuus tuoterunkolähestymistapa ei ole välttämättä motivoiva 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 8.10.2015 27 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 vs. uusi ominaisuus 8.10.2015 28 Harri Laine 5