Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 10. Muunneltavuuden hallinta: variaatiopisteet Muunneltavuuden hallinta (Variability management): Tekniikat ja työtavat, jotka auttavat kuvaamaan, toteuttamaan ja hyödyntämään ohjelmistotuotteiden variaatiota. 2 Ohjelmistot muuntuvat kahdessa dimensiossa evoluutio, ylläpito aika... Tässä tarkasteltu dimensio uudelleenkäyttö tuoteperheen jäsenet 3 1
Tuotevariaatio Tuote 2 Yhteinen osa Kaikille tuotteille yhteinen toiminnallisuus Muunneltava osa Loogisesti sama toiminnallisuus, jossa on tuotekohtaisia eroja Tuote 1 Tuote 3 Toiminnallisuus, joka on useissa tuotteissa mutta ei kaikissa Tuotekohtainen toiminnallisuus 4 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 5 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ö 6 2
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) 7 Variaatiopisteet: Määrittely ja sitominen Määrittelyvaihe Sitomisvaihe [Michel Jaring 2005] 8 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 WLAN GSM Data <<mandatory>> Command buttons Yhdistelysääntöjen määritys: OCL Horizontal Pen Voidaan käyttää myös lukumääräsuhteita GPRS Vertical Keyboard 9 3
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) 10 Mobile System Composition Rule: Web requires Internet Display Keypad Camera Operating System Messaging Web Connectivity Screen shape Screen Color Keypad size capacity 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 11 Kysyttävää? 12 4
Variaatiopisteet arkkitehtuuritasolla arkkitehtuurityylin osa korkean tason suunnittelumallin osa rajapinnat (komponentin toteutus) konfiguraatiokuvaukset 13 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 14 Muunneltavuus kerrosarkkitehtuurissa Tietokannan abstrahointikerros Oracle 15 5
Muunneltavuus tietovuoarkkitehtuurissa Tietoformaatti X Tilauksen käsittely Tietoformaatti Y Tilauksen tarkistus Tilauksen käsittely Yritys A Tilauksen käsittely Yritys B Laskutus 16 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 Optional service Location Heterogeneous Database Statistics services [Error] Google Map (OR) Nokia Map [Success] 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 17 Korkean tason suunnittelumallin osa GameCharacter CharacterObserver MyCharacterDisplay CharacterModel 18 6
Rajapinta-variaatiopiste CommManager 1 1..* <<variation point>> CommChannel Binding time = Runtime <<variant>> GSMChannel Muunneltavuus-profiili: Stereotyypit variation point, variant jne. 19 Variaatiopiste voi olla hajautunut arkkitehtuuriin Service MyService-komponentti rekisteröidään räätälöidyssä alustuksessa Registry MyService MyInitialization Initialization 20 Muunneltavat komponenttikonfiguraatiot pakollinen valinnainen Yhteinen alusta vaihtoehtoinen tuotekohtainen Yhteinen alusta Komponentit Tuote Tuotelinja 21 7
Kysyttävää? 22 Variaatiopisteet yksityiskohtaisen suunnittelun tasolla Alemman tason suunnittelumallit (esim. Template Method, Strategy) Periyttäminen Takaisinkutsut 23 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 24 8
Variaatiopisteen kuvaus erikoistamismallina Variation point: Creature behavior Structure DefaultCreature move show getx gety interact die growold NewCreature move show getx gety interact die growold Explanations DefaultCreature: Default implementation for creatures NewCreature: Application dependent creature type move: Single movement behavior show: Displays creature on screen interact: Interaction between two creatures die: dying of a creature growold: aging of a creature Constraints move: must call "show" NewCreature: constructor must call super die: must remove the creature from the world growold: must increase age Example class NewCreature extends DefaultCreature { int energy; public NewCreature(int x, int y, int e) { super(x, y); energy = e; public void move() { xcoord = (xcoord+1)%myworld.getsize(); show(); public void show() {... public void interact(abstractcreature c) { if (c!= this && c instanceof NewCreature) { if (((NewCreature)c).energy < energy) { c.die(); 25 Kysyttävää? 26 9