Malliperustainen ohjelmistokehitys (Model-Driven Engineering, MDE)

Samankaltaiset tiedostot
Malliperustainen ohjelmistokehitys (Model-Driven Engineering, MDE)

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

arvostelija OSDA ja UDDI palveluhakemistoina.

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

Palvelusuuntautunut ohjelmistotuotanto Luento 6: Malliperustaisen ohjelmistotuotannon perusteet; palvelutuotannon mallit Toni Ruokolainen, 5.2.

Selainpelien pelimoottorit

Malliperustainen ohjelmistokehitys ja malliperustainen arkkitehtuuri

Ohjelmistojen mallintaminen, mallintaminen ja UML

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Ohjelmistojen mallintaminen

Arkkitehtuurinen reflektio

MALLIPOHJAINEN KEHITYS OHJELMISTOTUO- TANNON AUTOMATISOINNISSA

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages

Oppimateriaalin kokoaminen ja paketointi

UML-kielen formalisointi Object-Z:lla

Aika/Datum Month and year Kesäkuu 2012

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg

OpenUP ohjelmistokehitysprosessi

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa

MALLIPERUSTAISTA ARKKITEHTUURIA TUKEVIEN CASE-VÄLINEIDEN ARVIOINTI- JA VALINTAMENETELMÄ

! #! %! & #!!!!! ()) +

Luonnontieteiden popularisointi ja sen ideologia

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan

MDA malliperustainen arkkitehtuuri

2 Description of Software Architectures

Enterprise Architecture TJTSE Yrityksen kokonaisarkkitehtuuri

7. Product-line architectures

Opetusteknologian standardoinnin tilanne. Antti Auer

Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin

2 Ohjelmistoarkkitehtuurien kuvaus

Mallien ja järjestelmien oikeellisuuden toteaminen

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Tutkittua tietoa. Tutkittua tietoa 1

10 Kohti ketterää ohjelmistokehitystä

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

MetaEdit+:n käyttö kehitysmenetelmän mallintamisessa

7. Tuoterunkoarkkitehtuurit

Paikkatietotuotteen määrittely

Ohjelmointi 1 / syksy /20: IDE

13/20: Kierrätys kannattaa koodaamisessakin

MetaEdit+ -ohjelmiston soveltuvuuden arviointi

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Hallintomallit Suomen valtionhallinnon tietohallintostrategioissa

Menetelmäraportti - Konfiguraationhallinta

.NET ajoympäristö. Juha Järvensivu 2007

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

11/20: Konepelti auki

VHDL/Verilog/SystemC. Jukka Jokelainen

Tietojenkäsittelytieteiden koulutusohjelma. Tietojenkäsittelytieteiden laitos Department of Information Processing Science

Sisällys. Valtion tietotekniikan rajapintasuosituksia. XML:n rooleja sähköisen asioinnin tavoitearkkitehtuurissa. dbroker - asiointialusta

Malliperustainen ohjelmistokehitys webympäristössä

SOVELLUSALUEMALLINNUS OHJELMISTOTUOTANNON TUKENA

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Visual Basic -sovelluskehitin Juha Vitikka

Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

Laskennallinen yhteiskuntatiede

Ohjelmistojen mallintaminen, kesä 2009

Uudelleenkäytön jako kahteen

UML metamallina. Seminaariesitelmä Minna Majuri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

ADM Arkkitehtuuritason automaatio #tdarc

Johtamisen haaste kokonaisarkkitehtuuri menestyksen mahdollistajako?

.NET 2006 ja sen jälkeen

Collaborative & Co-Creative Design in the Semogen -projects

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

Domain spesifinen mallinnus ja generointi käytännössä. Petri Savolainen

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Ohjelmistotekniikan menetelmät, UML

Takki. Lisää ot sik k o osoit t am alla. Nyt se sopii, tai sitten ei. Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi

Hajautettujen järjestelmien rakentaminen - Jini. Ohjelmistotuotantovälineet-seminaarin esitelmä

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

Kasvua ja kilpailukykyä standardeilla. Riskit hallintaan SFS-ISO 31000

A Service-Oriented Architecture (SOA) View of IHE Profiles

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

Ohjelmistoarkkitehtuurit. Kevät

Hajautettujen työvoiden hallinta

Loppuraportti. Virtuaali-Frami, CAVE-ohjelmisto. Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu. Versio

Paikkatietotuotteet ja niiden määrittely

T Ohjelmistotekniikan seminaari

Ohjelmistoprosessit ja ohjelmistojen laatu Kevät Ohjelmistoprosessit ja ohjelmistojen laatu. Projektinhallinnan laadunvarmistus

Kurssin sisältö. Kurssin sisältö. Luentoaikataulu karkeasti. Esseiden aikataulu. Aihe-ehdotuksia esseille. Aihe-ehdotuksia esseille

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Turvakriittisen projektin menetelmät ja työkalut

Metatiedon siirto (XMI) Martti Söderlund

Standardi IEC Ohjelmisto

Palvelusuuntautunut ohjelmistotuotanto Laskuharjoitus 1: Ryhmätöiden alustaminen Toni Ruokolainen,

TSSH-HEnet : Kansainvälistyvä opetussuunnitelma. CASE4: International Master s Degree Programme in Information Technology

Tietojärjestelmäarkkitehtuurit

Software product lines

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Transkriptio:

Malliperustainen ohjelmistokehitys (Model-Driven Engineering, MDE) Pasi Lehtimäki Helsinki 18.9.2007 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Matemaattilsuonnontieteellinen tiedekunta Tietojenkäsittelytieteen laitos Tekijä Författare Author Pasi Lehtimäki Työn nimi Arbetets titel Title Malliperustainen ohjelmistokehitys(model-driven Engineering, MDE) Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Seminaari 18.9.2007 15 pages Tiivistelmä Referat Abstract Ohjelmistosuunnittelussa abstraktiotason nostaminen mahdollistaa keskittymisen varsinaisen toiminnallisuuden suunnitteluun pienien yksityiskohtien sijaan. Malliperustainen ohjelmistokehitys (Model-Driven Engineering, MDE) tarjoaa seuraavan askeleen kohti tehokkaampaa ohjelmistojen suunnittelua ja kehitystä. Kantavana ideana on mallintaa sovellusten toiminnallisuus abstrakteilla toimialakohtaisilla malleilla. Näistä tomialakohtaisista malleista siirrytään automaattisten tai osittain automaattisten mallimuunnosten avulla kohti yksityiskohtaisempia malleja ja lopulta varsinaiseen ohjelmakoodiin. MDE:n toimintamallien kehitys ja siirtäminen käytäntöön on vielä alkuvaiheissa, mutta työkaluja MDE:n toteuttamiseen on jo tarjolla ja tieteellinen yhteisö pursuaa MDE-aiheisia artikkeleita. ACM Computing Classification System (CCS): D.2 [Software Engineering] Avainsanat Nyckelord Keywords MDE MDA Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information

Sisältö ii 1 Johdanto 1 2 Termit ja käsitteet 2 2.1 Lyhenteitä................................. 2 2.2 Malli.................................... 3 3 Motivaatio MDE:n kehittämiseen 3 4 Mitä on MDE? 4 4.1 MDA.................................... 4 4.1.1 MDA:n mallit........................... 5 4.1.2 Mallimuunnokset......................... 6 4.2 Muut lähestymistavat........................... 6 5 MDE työkaluja 8 5.1 Eclipse modeling project......................... 8 5.2 MetaEdit+................................ 9 6 Ongelmia 11 7 Lisää tietoa 12 Lähteet 13

1 Johdanto 1 Järjestelmien suunnittelu- ja toteutusvaiheessa korkeampi abstraktiotaso mahdollistaa keskittymisen varsinaisten toiminnallisuuden suunnitteluun ja toteuttamiseen. Kolmannen sukupolven ohjelmointikielet, kuten Java ja C++, piilottavat ohjelmoijalta varsin suuren osan pinnan alla tapahtuvista toiminnoista. Näitä kieliä käytettäessä suunnitteluvaiheessa voidaan keskittyä olioiden välisten suhteiden määrittellyyn eikä ohjelmointivaiheessakaan ohjelmoijan tarvitse olla tietoinen esimerkiksi prosessorin rekistereistä tai muistipaikkojen osoitteista. Olio-ohjelmointikielet ovat myös mahdollistaneet helposti uudelleenkäytettävien ohjelmakomponenttikirjastojen rakentamisen. Nykyaikaisten järjestelmien kompleksisuus on kuitenkin nousemassa jo niin suureksi, että edellä mainituilla tekniikoilla kokonaisuuksien hallinta on muodostunut erittäin työlääksi. Järjestelmien kehittäjät joutuvat painimaan pienien yksityiskohtien parissa sen sijaan, että keskittyisivät tärkeisiin arkkitehtuurisiin rakaisuihin [Sch06]. Luonnollinen seuraava kehitysaskel olisi abstraktiotason nostaminen edelleen. Mallipohjainen ohjelmistokehitys pyrkii vastaamaan tähän haasteeseen. Varsinkin liiketomintavaatimuksiltaan joustamattomat toimialat sopivat erittäin hyvin mallipohjaiseen ohjelmistokehitykseen. MDE onkin lyömässä itseään läpi varsinkin finanssi- ja matkailusektoreilla.

2 Termit ja käsitteet 2 Malliperustaiseen ohjelmistokehitykseen liittyvä kirjallisuus sisältää valtavan määrän eri akronyymejä. Tässä luvussa tehdään välttämätön katsaus MDE -aihepiirissä käytettäviin lyhenteisiin sekä mallin määritelmään. Tämän luvun tarkoitus on helpottaa alan julkaisuiden ymmärtämistä. Useissa julkaisuissa termistö käydään läpi varsin pintapuolisesti tai ei ollenkaan. 2.1 Lyhenteitä MDD, MDE, MDSD Model-Driven Development, Model-Driven Engineering, Model- Driven Software Development. Nämä lähes samaa tarkoittavat lyhenteet esiintyvät kirjallisuudessa viitaten malliperustaiseen ohjelmistokehitykseen [Wikf]. MDA Model-Driven Architecture. MDA on OMG:n (Object Management Group, www.omg.org) standardi [OMG03] [Wike] [OMGa]. UML, UML Profiles Unified Modeling Language. UML on OMG:n standardi järjestelmien kuvauskieli, joka sisältää sekä abstraktin syntaksin, että graaffisen syntaksin. UML Profiles on standardoitu UML -laajennos, jolla UML:n voi räätälöidä tiettyyn käyttötarkoitukseen [OMGc] [Wikl]. MOF Meta-Object Facility. OMG:n standardi metatiedon hallintaan [OMGb] [Wikd]. XMI XML Metadata Interchange OMG:n standardi metatiedon välittämiseen käyttäen XML:ää [OMG03] [Wikm]. OCL Object Constraint Language [Wikh] CIM Computation-Independent Model. MDA:n korkein mallitaso. [Sim04] PIM Platform-independent model. Alustariippumaton malli MDA standardissa [Wiki]. PSM Platform-specific model. Tietyn sovellusalustalle tehty järjestelmän malli MDA:ssa [Wikj]. PDM Platform Description Model. DSM Domain-Specific Modeling. [Wika] DSL, DSML Domain Specific (Modeling) Language. Tietyn sovellusalueen mallintamista tukeva mallinnuskieli [Wikb].

3 MTL Model Transformation Language [Wikg] M2M Model-to-model. Mallimuunnos kahden mallin välillä. M2T Model-to-text. Mallimuunnos mallista tekstiksi tai ohjelmakoodiksi. 2.2 Malli Malliperustaisen ohjelmistokehityksen keskeisin käsite on malli. Onkin hyödyllistä ensin havainnoida, että mallilla on hyvin erilaisia merkityksiä eri lähteissä. Joissain lähteissä malli määritellään väljästi, jolloin mallin sanotaan olevan systeemin yksinkertaistus [BG01]. Joissain lähteissä taas mallille asetetaan tiukempia vaatimuksia ja se rajataan tarkemmin: Malli on systeemin (tai sen osan) kuvaus kirjoitettuna tarkasti määritellyllä kielellä. Tarkasti määritelty kieli on kieli, jolla on tarkasti määritetty muoto (syntaksi) ja merkitys (semantiikka), ja joka soveltuu automaattisesti tulkittavaksi tietokonneella [KWB03]. 3 Motivaatio MDE:n kehittämiseen Perinteisillä rakennusaloilla, kuten talojen, siltojen ja autojen rakentamisessa, aina ennen varsinaisen valmistamisen aloittamista tehdään malli, jonka avulla lopputulosta voidaan arvioida ennen, kuin valmistamiseen on käytetty valtava määrä resursseja. Rakennettavan asian malli pakottaa suunnittelijat ajattelemaan isompia kokonaisuuksia sekä rakennettavien kokonaisuuksien välisiä vuorovaikutuksia. Oman kokemukseni perusteella IT-allalla hyödyllisiä malleja rakennetaan vain harvoin. Malleja kyllä käytetään, mutta ne ovat valitettavan harvoin koodista generoituja luokkakaavioita, joilla projektin dokumentaatio koitetaan saada näyttämään uskottavammalta tuomatta kuitenkaan siihen mitään todellista lisäarvoa. Projektisuunnitelman yhteydessä luodut mallit ovat usein jo vanhentuneita siinä vaiheessa, kun ohjelmoijan pitäisi niihin tutustua ja projekteissa turvaudutaankin muihin kommunikoinnin välineisiin halutun lopputuloksen saavuttamiseksi. Mallien tehokas käyttö ohjelmistokehityksessä vaatii malleista saatavan hyödyn parempaa realisoitumista. Malleista saatava hyöty on oltava isompi, kuin mallintamiseen käytettävät resurssit. MDE pyrkii tähän tavoitteeseen automatisoimalla osan kehitysprosessia ja liittämällä mallinnuksen kiinteäksi osaksi ohjelmistokehitystä. [WUG03].

4 Kun malleista tuotetaan automaattisten tai osittain automaattisten välivaiheiden avulla lopullista suoritettavaa ohjelmakoodia, muodostuu mallinnuksesta kaikille sidosryhmille houkuttelevampi työkalu. Sovellusalueen asiantuntijat voivat osallistua ylemmän tason mallien kehittämiseen ja liiketoimintaratkaisuiden mallintamiseen ilman syvällisiä teknisiä taitoja ja sovellusalueen tuntemus siirtyy mallien mukana myös aluetta vähemmän tunteville sidosryhmille. 4 Mitä on MDE? Malliperustainen ohjelmistokehitys on käsitteenä varsin laaja ja useat tahot lähestyvätkin sitä eri suunnista. Kaikilla on kuitenkin yhteinen tavoite: ohjelmistokehityksen nopeuttaminen ja laadun parantaminen käyttäen formaaleja malleja kehitystyön lähtökohtana. Malliperustaisessa ohjelmistokehityksessä on kaksi selvästi erottuvaa kokonaisuutta. Ensimmäinen on mallintaminen ja mallien kehitys. Toinen osa on mallimuunnosten kehittäminen ja automatisointi. Joissain MDE -tekniikoissa myös mallimuunnokset luokitellaan malleiksi, jolloin nämä rajat saattavat hämärtyä. 4.1 MDA Object Management Group (OMG) on nimennyt oman MDE standardinsa MDA:ksi (Model-Driven Architecture). Koska MDA on hyvin määritelty, käytän sitä tässä työssä yleisenä esimerkkinä. On kuitenkin syytä pitää mielessä, että MDA on herättänyt kritiikkiä liian yleisestä lähestymistavastaan. Käyn jäljempänä läpi lyhyesti ja pintapuolisesti muutaman muunkin lähestymistavan. MDA ja siihen liittyvät standardit muodostavat valtavan kokonaisuuden. Tämän kokonaisuden käsittely syvällisesti tämän työn piirissä ei ole mahdollista. Tässä luvussa pyrin esittelemään MDA:n tärkeimmät komponentit sekä niihin liittyvä muut OMG:n standardit, pureutumatta kuitenkaan yksityiskohtiin. Muita lähestymistapoja pyrin arvioimaan lähinnä eroavaisuuksina MDA:han. MDA määrittelee eri tasoisia malleja, mallien välisiä liitoksia ja mallimuunnoksia. MDA -mallin mukainen ohjelmistokehitys alkaa abstraktin mallin kehityksestä ja siirtyy asteittain kohti suoritettavaa ohjelmakoodia. MDA:han liittyy kiinteästi seuraavat OMG:n standardit: Unified Modeling Language (UML), Meta-Object Facility (MOF), XML Metadata Interchange (XMI), Common Warehouse Metamodel

5 (CWM) ja MOF Query / Views / Transformations (MOF QVT) [Poo01]. 4.1.1 MDA:n mallit MOF eli Meta-Object Facility on OMG:n standardoima metamallien ja metatiedon hallinta järjestelmä [OMG04]. MOF määrittelee monitasoisen tavan määritellä malleja. MOF:n tasot on nimetty M1, M2 ja M3 -kerroksiksi. M3 -kerros määrittelee metametamallin M2 -kerroksen metamallien määrittelyyn. Yksi tunnetuimmista M2 -tason MOF metamallista on UML:n määrittelevä metamalli. MOF muodostaa täsmällisesti määritellyn suljetun metamallinnus arkkitehtuurin. Kaikkien kerroksien mallien elementit vastaavat täsmällisesti ylemmän kerroksen metamallin määritystä. Ylimmän M3 -kerroksen malli määrittelee itse itsensä. Periaatteessa ohjelmointikoodia voidaan pitää M0 -tason mallina [Wikd]. Kuva 1 kiteyttää MOF mallien tasot. Tämän täsmällisesti määritellyn mallihierarkian ansiosta malleja voidaan tulkita automaattisilla työkaluilla. Kuva 1: MOF malllitasot [Béz05]. Computation-Independent Model (CIM) on ylimmän tason malli, jossa mallinnettaan järjestelmän vaatimuksia. CIM:ssä ei yleensä esitetä järjestelmän toteutukseen

6 liittyviä asioita. CIM on siis myös alustariippumaton [OMG03]. CIM:n kaltainen yleinen malli auttaa järjestelmän sovellusaluetta huonosti tuntevia sidosryhmiä ymmärtämään järjestelmän liiketoimintavaatimuksia, sekä luo sidosryhmille yhteisen sanaston[sim04]. Platform-independent model (PIM) kuvaa toteutettavan järjestelmän toteutusalustasta riippumattomalla tasolla. PIM mallit saattavat olla esimerkiksi UML malleja [Poo01]. Platform-specific model (PSM) on PIM:stä mallimuutoksilla tuotettu malli, joka kuvaa saman järjestelmän toteutuksen tietylle alustalle. Alusta voi olla esimerkiksi J2EE tai CORBA. Kuva 2 kuvaa MDA:n mallit ja niiden suhteet toisiinsa. Ylemmän tason PIM - malleista kootaan mallimuunnosten avulla kohdealustalle sopiva PSM -malli. PSM -malleista generoidaan ajettavaa ohjelmakoodia. 4.1.2 Mallimuunnokset Projektin kehityskaaren aikana lähestytään lopullista ohjelmakoodia ylemmän tason malleista alemman tason malleihin siirtyen. OMG on määritellyt näihinkin vaiheisiin oman standardin: MOF Query/Views/Transformations (QVT) määrittelee MOF metamalleihin perustuvan mallimuutos arkkitehtuurin [OMG05]. MDA mallimuutoksia määriteltäessä malleihin liitetään tietoa muunnosta varten. Malliin lisätään metatietoa, jotta mallimuunnos voidaan tehdä ainakin osittain automaattisesti. Kuva 3 kuvaa MDA:n mallimuunnoksen eri osien suhteita toisiinsa. 4.2 Muut lähestymistavat Locheed Martin Advanced Technology Laboratories on kehittäny oman versionsa MDE:stä. He ovat nimenneet sen Model-Centric Software Development (MCSD). Positiivisia tuloksia on saatu poikkeamalla MDA:n toimintamalleista. MCSD rakentaa vahvasti DSML:ien varaan yhden yhtenäisen mallinnuskielen sijaan. Tarjolla on työkaluja mallien validointiin ja verifiointiin esimerkiksi prototypoinnin muodossa. Malleista generoidaan automaattisesti ohjelmarunkoja ja toimminnallisia komponentteja. Nämä komponentit yhdistyvät takaisin mallinnuksen avulla jo olemassa oleviin järjestelmiin [apl06]. Myös Microsoft omassa lähestymisessään MDE:hen on hylännyt MDA:n tarjoamat

7 Kuva 2: MDA mallit ja niiden suhteet. Kuva FAMILIES Project hieman muokattuna [FAM].

8 Kuva 3: MDA mallimuunnos [OMG03] standardit. Microsoftin MDE arkkitehtuurimalli on nimeltään EFx Factory [Wikc]. Tämä arkkitehtuuriratkaisu perustuu Software Factory arkkitehtuuriin [Wikk]. 5 MDE työkaluja Työkaluja malliperustaiseen ohjelmistokehitykeen on jo nyt saatavilla. Tässä luvussa esittelen hyvin pintapuolisesti kaksi työkalua tai työkaluryhmää. Varskinkin Eclipsen mallinnusprojektin aliprojektit muodostavat niin valtavan kokonaisuuden, että sen perusteellinen läpikäynti ei tässä yhteydessä ole järkevää. 5.1 Eclipse modeling project Eclipse modeling project (http://www.eclipse.org/modeling/) pitää sisällään useita käyttökelpoisia komponentteja. Aliprojekteja on kymmeniä, joiden joukosta löyttyy työkaluja muunmuassa graaffisten mallieditoreiden tekemiseen, UML mallinnukseen sekä mallimuunnoksiin. Ehkäpä tärkeimmän osakokonaisuuden muodostaa Eclipse

9 Modeling Framework (EMF), joka pyrkii tarjoamaan työkaluja mallien kehittämiseen ja koodin generointiin. Kuvassa 4 EMF:n mallieditori. Kuva 4: EMF mallieditori Paljon huomiota kerännyt osaprojekti on openarchitectureware (oaw), jonka tavoitteena on tukea malliperustaista ohjelmistokehitystä. Kuva 5 kuvaa oaw:n arkkitehtuurin yleisellä tasolla. oaw on työkalu MDE työkalujen kehitykseen. Sinäänsä kovin sekavasta kuvasta on helppo ymmärtää, että kuinka monen asian sekamelskasta on kyse. Toisaalta kuvasta selviää myös hyvin malliperustaisen ohjemistokehityksen perusidea. Keskimmäinen laatikko ylhäällä on EMF:n metametamallinnuskieli Ecore. Ecorea käyttäen muodostetaan metamalli ja tämän metamallin määrittelemää mallinnuskieltä käyttäen taas järjestelmän malli, josta voidaan generoida ajettavaa ohjelmakoodia. Prosessin lopputuloksena generoidusta ohjelelmakoodista käsin muokattu lopullinen ohjelmakoodi, laatikko oikealla alhaalla. 5.2 MetaEdit+ Suomalaisen MetaCase -yhtiön (http://www.metacase.com/) MetaEdit+ tarjoaa työkalut käyttäjilleen omien mallinnuskielien kehittämiseen. Tarkoituksena on hylätä yksi yleinen mallinnuskieli ja kehittää kullekkin sovellusalueelle parhaiten sopiva

Kuva 5: oaw arkkitehtuurin yleiskuvaus [oaw] 10

11 mallinnuskieli. Yhtiön omien julkaisuiden mukaan sovellusalakohtaisen kielen käyttö nopeuttaa kehitystyötä moninkertaisesti UML:ään verrattuna. On kuitenkin syytä muistaa, että myös UML:ään on kehitetty tapoja toimialakohtaisten mallien määrittelyyn UML Profiles -tekniikalla. Kuvassa 6 MetaEditin toimintaperiaate. Vasemmanpuoleisissa näyttökuvissa MetaEditillä luodaan sovellusalueeseen sopiva mallinnuskieli ja oikeanpuoleisessa näyttökuvassa tätä luotua mallinnuskieltä käytetään sovelluksen mallintamiseen. Kuva 6: MetaEdit (http://www.metacase.com/) 6 Ongelmia Malliperustainen ohjelmistokehitys on selvästikkin askel oikeaan suuntaan ohjelmistokehityksen edistämisessä. Matkassa on kuitenkin mutkia. Luottamus OMG:hen standardoinnin veturina on saanut kolauksen menneissä epäonnisumisissa. Esimerkiksi CORBA ei ole ollut sellainen menestys, jota siitä toivottiin. OMG:tä onkin kritisoitu liian aikaisessa vaiheessa standardien kehittämisessä ja referenssitoteutuksien puuttumisesta [Fav04].

12 Kuten tästäkin paperista on jo käynyt ilmi, on MDE toimintatavoiltaan varsin vieras perinteiseen ohjelmointiin tottuneelle. Teollisuudessa hyppy tuntemattomaan voikin olla liian suuri ja riskit vaikeasti kartoitettavissa. 7 Lisää tietoa Kuten yllä mainittu, on MDE valtava kokonaisuus erilaisia standardeja, ohjelmistoja ja ideoita. Tässä paperissa on vain raapaistu pintaa kaikesta mitä MDE pitää sisällään. Wikipedian artikkelit ovat osoittautuneet varsin hyviksi ja helpostiymmärrettäviksi lähteiksi aivan perusasioihin tutustumisessa. OMG:n akronyymiviidakkoon hukkumista sen sijaan kannattanee välttää, mikäli asiat eivät ole jo ennestään tuttuja. Eclipsen modeling projektissa on paljon luettavaa dokumentaatiota (http://www.eclipse.org/modeling/emf/docs/), joihin tutustumalla käytännön työn alkuun pääsee suhteellisen helposti. oaw -projekti on liittänyt sivustolle myös videoita oaw työkalun käytön esittelemiseksi. Software Engineering Radion podcast sarjan osat viisi, kuusi ja 67 ovat mallipohjaiselle ohjelmistokehitykselle omistettuja jaksoja. Nämä jaksot kuuntelemalla saa jo varsin kattavan käsityksen MDE:hen liittyvistä käytännön haasteista.

Lähteet 13 apl06 BG01 BGK + 06 BGMR03 Béz05 Ecl FAM Fav04 FGDTS06 FS04 KWB03 Mal04 adn Patrick Lardieri, D. W., Model-centric software development. Computer. Bezivin, J. ja Gerbe, O., Towards a precise definition of the omg/mda framework. ASE 01, November 2001. Balasubramanian, K., Gokhale, A., Karsai, G., Sztipanovits, J. ja Neema, S., Developing applications using model-driven design environments. Computer. Bezivin, J., Gerard, S., Muller, P.-A. ja Rioux, L., Mda components: Challenges and opportunities. Metamodelling for MDA. Bézivin, J., On the unification power of models. Journal Software and Systems Modeling. Eclipse, Eclipse modeling framework project (emf), http://www. eclipse.org/modeling/emf/ (viitattu 16.9.2005). FAMILIES, Families project, http://www.esi.es/families/ (viitattu 17.9.2005). Favre, J.-M., Towards a basic theory to model model driven engineering. 3rd Workshop in Software Model Engineering (WISME @ UML 2004), 2004. France, R., Ghosh, S., Dinh-Trong, T. ja Solberg, A., Model-driven development using uml 2.0: promises and pitfalls. Computer. Fondement, F. ja Silaghi, R., Model driven engineering processes. 3rd Workshop in Software Model Engineering (WISME @ UML 2004), 2004. Kleppe, A., Warmer, S. ja Bast, W., MDA Explained. The Model Driven Architecture: Practice and Promise. Addison-Wesley, April 2003. Mallia, T., Enterprise change methodology with mda. Second European Workshop on Model Driven Architecture (MDA) with an emphasis on Methodologies and Transformations, Kent CT2 7NF, UK, 2004, Computing Laboratory, University of Kent, Canterbury.

14 oaw OMGa OMGb oaw, openarchitectureware, http://www.openarchitectureware. org/ (viitattu 18.9.2005). OMG, Omg model driven architecture, http://www.omg.org/mda/ (viitattu 8.9.2005). OMG, Omg s metaobject facility, http://www.omg.org/mof/ (viitattu 8.9.2005). OMGc OMG, Uml R resource page, http://www.uml.org/ (viitattu 8.9.2005). OMG03 OMG04 OMG, MDA Guide Version 1.0.1. OMG, ensimmäinen painos, June 2003. OMG, Meta Object Facility (MOF) 2.0 Core Specification. OMG, October 2004. OMG05 OMG, MOF QVT Final Adopted Specification. OMG, November 2005. Poo01 Sch06 Sim04 Wika Wikb Wikc Wikd Poole, J. D., Model-driven architecture: Vision, standards and emerging technologies. Workshop on Metamodeling and Adaptive Object Models, April 2001. Schmidt, D., Model-driven engineering. Computer. Sims, O., Enterprise mda R or how enterprise systems will be built. Second European Workshop on Model Driven Architecture (MDA) with an emphasis on Methodologies and Transformations, Kent CT2 7NF, UK, 2004, Computing Laboratory, University of Kent, Canterbury. Wikipedia, Domain-specific modeling, http://en.wikipedia.org/ wiki/domain-specific_modeling (viitattu 8.9.2005). Wikipedia, Domain-specific programming language, http://en. wikipedia.org/wiki/domain-specific_programming_language (viitattu 8.9.2005). Wikipedia, The efx architectural-guidance software factory, http:// en.wikipedia.org/wiki/software_factory (viitattu 18.9.2005) (viitattu 18.9.2005). Wikipedia, Meta-object facility, http://en.wikipedia.org/wiki/ Meta-Object_Facility (viitattu 8.9.2005).

15 Wike Wikf Wikg Wikh Wiki Wikipedia, Model-driven architecture, http://en.wikipedia.org/ wiki/model-driven_architecture (viitattu 8.9.2005). Wikipedia, Model-driven engineering, http://en.wikipedia.org/ wiki/model-driven_engineering (viitattu 8.9.2005). Wikipedia, Model transformation language, http://en.wikipedia. org/wiki/model_transformation_language (viitattu 8.9.2005). Wikipedia, Object constraint language, http://en.wikipedia.org/ wiki/object_constraint_language (viitattu 16.9.2005). Wikipedia, Platform-independent model, http://en.wikipedia.org/ wiki/platform-independent_model (viitattu 8.9.2005). Wikj Wikipedia, Platform-specific model, http://en.wikipedia.org/ wiki/platform-specific_model (viitattu 8.9.2005). Wikk Wikipedia, Software factory, http://en.wikipedia.org/wiki/ Software_factory (viitattu 18.9.2005). Wikl Wikm Wikipedia, Unified modeling language, http://en.wikipedia.org/ wiki/unified_modeling_language (viitattu 8.9.2005). Wikipedia, Xml metadata interchange, http://en.wikipedia.org/ wiki/xmi (viitattu 8.9.2005). WUG03 Weis, T., Ulbrich, A. ja Geihs, K., Model metamorphosis. IEEE SSoftware.