Ohjelmistoarkkitehtuurit Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 1
Tulevaa luentosettiä Vierailuluentokausi seuraavan periodin alkupuolella, Veli-Pekka Eloranta, Vincit, From the trenches 9.3. Timo Lehtonen, Solita, : Infrastructure as Code 16.3. Tapio Rautonen, Gofore, Software for the Cloud, 30.3. 2
Viikkoharjoituksia Viikkoharkat jatkuvat 7.3. alkavalla viikolla Arkkitehtuurien arviointia, DCAR & ATAM Pelin toteuttaminen, peliframeworkin käyttö 3
Muunneltavuuden hallinta: variaatiopisteet Muunneltavuuden hallinta (Variability management): Tekniikat ja työtavat, jotka auttavat kuvaamaan, toteuttamaan ja hyödyntämään ohjelmistotuotteiden variaatiota. 4
Konfiguraatioiden hallintaa Minkälaisia konfiguraatioita (ohjelmistot, kirjastot, komponentit) missäkin on, miten vaihtaa ja hallita niitä? Konfiguraatiot, mikä versio tuotteesta, mitä muuta on mukana Jotain tuotteita moiseen liittyen: https://www.chef.io/ http://www.ansible.com/configuration-management https://puppetlabs.com/solutions/configuration-management https://cfengine.com/product/ Variaation hallintaa: http://gsd.uwaterloo.ca/sites/default/files/ist14- berger-ecosystems.pdf 5
Konfiguraation hallintaa http://www.sei.cmu.edu/productlines/frame_report/config.man.htm 6
evoluutio, ylläpito Ohjelmistot muuntuvat kahdessa dimensiossa aika... Tässä tarkasteltu dimensio tuoteperheen jäsenet uudelleenkäyttö 7
Tuotevariaatio Tuote 2 Yhteinen osa Kaikille tuotteille yhteinen toiminnallisuus Tuote 1 Tuote 3 Muunneltava osa Loogisesti sama toiminnallisuus, jossa on tuotekohtaisia eroja Toiminnallisuus, joka on useissa tuotteissa mutta ei kaikissa Tuotekohtainen toiminnallisuus 8
Tuotevariaatio ja piirretyypit Yhteinen osa Pakolliset piirteet Kaikille tuotteille yhteinen toiminnallisuus Muunneltava osa Vaihtoehtoiset piirteet Valinnaiset piirteet Loogisesti sama toiminnaliisuus, jossa on pieniä tuotekohtaisia eroja Toiminnallisuus, joka on useissa tuotteissa mutta ei kaikissa Tuotekohtainen toiminnallisuus 9
Variaatiopisteet Variaatiopiste: järjestelmän kohta, jossa voi esiintyä variaatiota - viivästetty suunnittelupäätös Variaatiopiste voi esiintyä eri abstraktiotasoilla/vaiheissa: - vaatimusmäärittely ja analyysi - arkkitehtuurisuunnittelu - yksityiskohtainen suunnittelu - toteutus - linkittäminen - järjestelmän alustus - järjestelmän käyttö 10
Variaatiopisteet Variaatiopisteet voivat olla: suljettuja (mahdolliset variantit on tiedossa ja annettuja) avoimia (uusia, esim. tuotekohtaisia variantteja voi antaa) sidottuja (variantti on kiinnitetty) sitomattomia (varianttia ei ole kiinnitetty) Kiinnittäminen voi tapahtua myös toisessa kehitysprojektissa (tuotealusta tuote) 11
Variaation kuvaaminen vaatimusmäärittelyssä: piirremallit Käytetään UML-profiilia (ei standardi) <<context>> Handheld Device SDK variability <<mandatory>> Network channels { BindingTime = runtime } <<mandatory>> Display orientation { BindingTime = runtime } <<mandatory>> Control method { BindingTime = development } <<optional>> GPS support { BindingTime = development } {xor} {xor} <<alternative>> WLAN <<alternative>> 4G <<mandatory>> Command buttons Yhdistelysääntöjen määritys: OCL <<alternative>> Horizontal <<alternative>> Keyboard Voidaan käyttää myös lukumääräsuhteita <<alternative>> 2G <<alternative>> Vertical <<alternative>> Touch Screen 12
Variaation kuvaaminen vaatimusmäärittelyssä: piirremallit FODA-mallina (Feature-Oriented Domain Analysis ) (Kang et al: Feature-Oriented Domain Analysis. Technical report CMU/SEI-90-TR -21, Nov 1990) 13
Mustattu sektori: mikä hyvänsä kombinaatio mahdollinen Väritön sektori: vain yksi vaihtoehdoista mahdollinen Musta pallo: pakollinen piirre Valkoinen pallo: valinnainen piirre http://www.woggie.net/2012/07/16/drawing-feature-models-in-pgf-tikz/ 14
Kysyttävää?
Variaatiopisteet arkkitehtuuritasolla arkkitehtuurityylin osa korkean tason suunnittelumallin osa rajapinnat (komponentin toteutus) Konfiguraatiokuvaukset Käyttäjän profilointi 16
Muunneltavuus arkkitehtuurityyleissä Tyyli Tuotteissa vaihtuvat Tuotteiden yhteiset osat Kerros Kerrokset Kerrosrajapinnat, alemmat kerrokset Tietovuo Prosessointiyksiköt Tietoformaatti, perusyksiköt Asiakas-palvelin Viestinvälitys MVC Tulkki Asiakkaat, palvelimen toteutus Kommunikoivat komponentit, viestit Näkymä- ja ohjainkomponentit Suoritusalusta, kielen osat Asiakkaiden transaktiorajapinta Viestinvälitysinfra, viestiformaatti Malli Kielen kääntäjä ja tulkki 17
Muunneltavuus kerrosarkkitehtuurissa http://developer.android.com/reference/android/hardware/package-summary.html https://source.android.com/devices/halref/index.html 18
Muunneltavuus tietovuoarkkitehtuurissa Tietoformaatti X Tilauksen käsittely Tietoformaatti Y Tilauksen tarkistus Laskutus Tilauksen käsittely Yritys A Tilauksen käsittely Yritys B 19
Muunneltavuus ja palvelut Erikoistaminen asiakkaalle, käyttöliittymätaso + ominaisuudet, jota tarjotaan käyttöön, käyttöliittymätoteutuksessa ja asiakaspään erikoistuksessa voidaan valita mitä näytetään ja tarjotaan Palvelinpää, yhteinen perustason palvelinpään toteutus Sama pohja, voidaan helposti laajentaa palvelutasoa, tarjota uusia ominaisuuksia, jo olemassa Erikoispyynnöt ja uudet ominaisuudet voidaan toteuttaa ensin yhdelle asiakkaalle: jos toimii & tilausta muualla, mukaan peruspakettiin Yleinen asiakaspään sovelluksen toteutus Palvelinpää ja palvelupyyntöjen ohjaus erikoitetuille versioille, mikropalvelut Erikoistettu asiakasosa Geneerinen yhteinen asiakapään osa Yhteiset palvelinpään ratkaisut Erikoistettu palvelu 20
Korkean tason suunnittelumallin osa CharacterObserver GameCharacter MyCharacterDisplay CharacterModel 21
Rajapinta-variaatiopiste CommManager 1 1..* <<variation point>> CommChannel Binding time = Runtime <<variant>> GSMChannel Muunneltavuus-profiili: Stereotyypit variation point, variant jne. 22
Variaatiopiste voi olla hajautunut arkkitehtuuriin Service MyService-komponentti rekisteröidään räätälöidyssä alustuksessa Registry MyService MyInitialization Initialization 23
Muunneltavat komponenttikonfiguraatiot pakollinen valinnainen Yhteinen alusta vaihtoehtoinen tuotekohtainen Yhteinen alusta Komponentit Tuote Tuotelinja 24
Käyttäjäkohtainen profilointi, esimerkki http://www.ibm.com/developerworks/library/wa-uihealth/ 25
Muunneltavuus, käyttäjän määriteltävissä oleva/ajoaikaisuus Plugin-arkkitehtuurit Konfiguraatiot Palvelinten/pilven käyttö sovellusten osien valintaan tai lataamiseen Tietosisällön valinta profiilien perusteella 26
Adaptiivisuus ja käyttöliittymät Mihin perustuen adaptaatioita voi tehdä: Aikaisemmat käyttökerrat, käyttökokemus Yleisimmin käytetyt komennot, toiminnot Yleinen tilanne, yleiset ilmiöt, ajankohtaisuudet Päätelaitteet, ruudut, syöttölaitteet mittausdata 27
Muunneltavuuden hallinta ja ajoaikaisuus Weppimaailma ja käyttöliittymän erikoistaminen Mitä mainoksia näytetään, mitä oletuskomentoja on tarjolla, jne. Käyttöliittymäpuoli ja adaptiivisuus 28
Muunneltavuus, tuoteversiot Versiohallinta jne. Päähaara, yhteinen tuoterunko Uusien ominaisuuksien teko, feature-haarat Tuotekohtaiset haarat, vain erikoistettu osa Jos tuotetasolla tulee yhteisesti kiinnostava ominaisuus, siirretään tuoterunkotasolle Konfiguraation hallintaa esimerkiksi kirjastotasolla, build- ja CI-työkalut, joilla esimerkiksi eri alustoille/kohdejärjestelmille/asiakkaille kääntäminen 29
Kysyttävää?