11. Muunneltavuuden hallinta Muunneltavuuden hallinta (Variability management): Tekniikat ja työtavat, jotka auttavat kuvaamaan, toteuttamaan ja hyödyntämään ohjelmistotuotteiden variaatiota. Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
Ohjelmistot muuntuvat kahdessa dimensiossa evoluutio, ylläpito aika... Tässä tarkasteltu dimensio tuoteperheen jäsenet uudelleenkäyttö Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 2
Tuotevariaatio Tuote 2 Yhteinen osa Kaikille tuotteille yhteinen toiminnallisuus Tuote 1 Tuote 3 Muunneltava osa Loogisesti sama toiminnallisuus, jossa on pieniä tuotekohtaisia eroja Toiminnallisuus, joka on useissa tuotteissa mutta ei kaikissa Tuotekohtainen toiminnallisuus Ohjelmistoarkkitehtuurit Syksy 2009 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 2009 TTY Ohjelmistotekniikka 4
Variaatiopisteet Variaatiopiste: viivästetyn suunnittelupäätöksen kuvaus 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 2009 TTY Ohjelmistotekniikka 5
Variaatiopisteet: Määrittely ja sitominen Määrittelyvaihe Sitomisvaihe [Michel Jaring 2005] Ohjelmistoarkkitehtuurit Syksy 2009 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 <<alternative>> GPRS <<alternative>> Vertical <<alternative>> Horizontal <<alternative>> Keyboard <<alternative>> Pen Yhdistelysääntöjen määritys: OCL Ohjelmistoarkkitehtuurit Syksy 2009 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 2009 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 Valkoinen sektori: vain yksi vaihtoehdoista mahdollinen Musta pallo: pakollinen piirre Valkoinen pallo: valinnainen piirre Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 9
Harjoitustyön pisteytyksestä: Suunnitelman pisteytys 0-4p, lopullinen pisteytys tehdään vasta arvioinnin jälkeen revisoidun suunnitelman perusteella. (Revisoinnilla voi nostaa alkuperäisen pisteytyksen max 2:lla pisteellä) Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 10
Variaatiopisteet arkkitehtuuritasolla arkkitehtuurityylin osa palvelu (SOA) korkean tason suunnittelumallin osa rajapinnat (komponentin toteutus) konfiguraatiokuvaukset Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 11
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 Malli Kielen kääntäjä Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 12
Muunneltavuus kerrosarkkitehtuurissa Tietokannan abstrahointikerros Oracle Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 13
Muunneltavuus tietovuoarkkitehtuurissa Tietoformaatti X Tilauksen käsittely Tietoformaatti Y Tilauksen tarkistus Laskutus Tilauksen käsittely Yritys A Tilauksen käsittely Yritys B Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 14
Muunneltavuus palveluarkkitehtuurissa CountriesList Käyttäjä valitsee maan Sequence variation 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 Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 15
Korkean tason suunnittelumallin osa GameCharacter CharacterObserver MyCharacterDisplay CharacterModel Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 16
Rajapinta-variaatiopiste CommManager 1 1..* <<variation point>> CommChannel Binding time = Runtime <<variant>> GSMChannel Muunneltavuus-profiili: Stereotyypit variation point, variant jne. Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 17
Variaatiopiste voi olla hajautunut arkkitehtuuriin Service MyService-komponentti rekisteröidään räätälöidyssä alustuksessa Registry MyService MyInitialization Initialization Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 18
Muunneltavat komponenttikonfiguraatiot pakollinen valinnainen Yhteinen alusta vaihtoehtoinen tuotekohtainen Yhteinen alusta Komponentit Tuote Tuotelinja Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 19
Variaatiopisteet yksityiskohtaisen suunnittelun tasolla Alemman tason suunnittelumallit (esim. Template Method, Strategy) Periyttäminen Rajapinnat (luokan toteutus) Takaisinkutsut Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 20
Variaatiopisteet toteutustasolla Parametrit Geneeriset rakenteet (esim. template) Kääntäjän direktiivit (esim. ehdollinen kääntäminen) Build-skriptit Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 21
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 2009 TTY Ohjelmistotekniikka 22