10. Muunneltavuuden hallinta: variaatiopisteet Muunneltavuuden hallinta (Variability management): Tekniikat ja työtavat, jotka auttavat kuvaamaan, toteuttamaan ja hyödyntämään ohjelmistotuotteiden variaatiota. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1
evoluutio, ylläpito Ohjelmistot muuntuvat kahdessa dimensiossa aika tuoteperheen jäsenet... Tässä tarkasteltu dimensio uudelleenkäyttö Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 2
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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 3
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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 4
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ö 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) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 5
Variaatiopisteet: Määrittely ja sitominen Määrittelyvaihe Sitomisvaihe [Michel Jaring 2005] Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 6
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 = development } <<mandatory>> Control method { BindingTime = development } <<optional>> GPS support { BindingTime = development } {xor} {xor} <<alternative>> WLAN <<alternative>> GSM Data <<mandatory>> Command buttons Yhdistelysääntöjen määritys: OCL <<alternative>> Horizontal <<alternative>> Pen Voidaan käyttää myös lukumääräsuhteita <<alternative>> GPRS <<alternative>> Vertical <<alternative>> Keyboard Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 7
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) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 8
Mobile System Composition Rule: Web requires Internet Display Keypad Camera Operating System Messaging Web Connectivity Screen shape Screen Color size capacity Keypad type Key press type Linux Symbian SMS Fax MMS Email Cable Infrared Internet Bluetooth Large Medium Small Rationale: Large for game applications Simultaneous Key press No Simultaneous Key press S60 S80 Mustattu sektori: mikä hyvänsä kombinaatio mahdollinen Väritön sektori: vain yksi vaihtoehdoista mahdollinen Musta pallo: pakollinen piirre Valkoinen pallo: valinnainen piirre Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 9
Variaatiopisteet arkkitehtuuritasolla arkkitehtuurityylin osa korkean tason suunnittelumallin osa rajapinnat (komponentin toteutus) konfiguraatiokuvaukset Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 10
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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 11
Muunneltavuus kerrosarkkitehtuurissa Tietokannan abstrahointikerros Oracle Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 12
Muunneltavuus tietovuoarkkitehtuurissa Tietoformaatti X Tilauksen käsittely Tietoformaatti Y Tilauksen tarkistus Laskutus Tilauksen käsittely Yritys A Tilauksen käsittely Yritys B Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 13
Muunneltavuus palveluarkkitehtuurissa Orkestraatio (UML akt. kaav.) CountriesList Sequence variation Käyttäjä valitsee maan CitiesList YellowPages (OR) YellowPages CitiesList Palvelujärjestystä koskeva variaatiopiste: käyttäjä joko valitsee kaupungin ja sieltä yrityksen, tai yrityksen ja sitten sen toimipisteen tietyssä kaupungissa [Error] Location Database Google Map [Success] Heterogeneous services (OR) Nokia Map Optional service Statistics Valinnaisuus: palveluun voidaan ottaa mukaan tilastointitoiminto Vaihtoehtoisuus: voidaan käyttää joko Googlen tai Nokian karttapalvelua Hadaytullah, Koskimies K., Systä T.: Using Model Customization for Variability Management in Service Compositions. Proc. ICWS, Los Angeles. IEEE CS Press 2009, 687-694 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 14
Korkean tason suunnittelumallin osa GameCharacter CharacterObserver MyCharacterDisplay CharacterModel Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 15
Rajapinta-variaatiopiste CommManager 1 1..* <<variation point>> CommChannel Binding time = Runtime <<variant>> GSMChannel Muunneltavuus-profiili: Stereotyypit variation point, variant jne. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 16
Variaatiopiste voi olla hajautunut arkkitehtuuriin Service MyService-komponentti rekisteröidään räätälöidyssä alustuksessa Registry MyService MyInitialization Initialization Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 17
Muunneltavat komponenttikonfiguraatiot pakollinen valinnainen Yhteinen alusta vaihtoehtoinen tuotekohtainen Yhteinen alusta Komponentit Tuote Tuotelinja Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 18
Variaatiopisteet yksityiskohtaisen suunnittelun tasolla Alemman tason suunnittelumallit (esim. Template Method, Strategy) Periyttäminen Takaisinkutsut Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 19
Variaatiopisteiden sitominen järjestelmän asennuksessa ja käytössä (määritellään suunnittelutasolla) Asennusparametrit Käyttäjän asetukset GUI räätälöinti Adaptoituvat käyttöliittymät Tulkattava skripti Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 20