Metatiedon siirto (XMI) Martti Söderlund 12.11.2000 Seminaarialustus, Ohjelmistotuotantovälineet Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO
Sisältö 1. Johdanto...1 2. Kuvauskielet...2 2.1 XML... 2 2.2 UML ja MOF... 3 2.3 XMI... 4 3. Sovelluksia...6 3.1 Arvioita käytettävyydestä... 6 4. Päätelmiä...7
1 1. Johdanto Ohjelmistotuotannon käytännön tehtävät ovat usein prosessin vaiheisiin tai osiin liittyvien työkalujen tai -ympäristöjen käyttöön. Työvälineet ovat useimmiten tarkoitettu tietyn osaalueen tehtävien avustamiseen. Toiminnon laajuus vaihtelee kunkin välineen käyttötavan mukaan, jolloin yksittäisen välineen toiminnan ulkopuolelle jäävien tehtävien toteuttaminen on ratkaistava käyttämällä yhteisiä tietovarastoja tai hallittava ilman automaatiota. Työympäristöt voivat toteuttaa ohjelmistotuotannon eri osa-alueista (kuten projektin hallinta, laadunvalvonta, eri mittauskohteet, konfiguraation hallinta) laajan osajoukon, jolloin tuotteeseen liittyvästä informaatiosta hallitaan suurin osa automaattisesti. On kuitenkin todennäköistä, että laajentuvat vaatimukset (teknologiset ja/tai poliittiset) muuttavat kerran valittua ratkaisua. Eri välineiden yhdistäminen tavalla voi tarjota ratkaisun, koko tuotantovälineistön uudistamisen sijaan. Yleinen kuvauskieli UML (Unified modeling language, [UML00]) on laajassa käytössä ohjelmistotuotannon määrittely-, suunnittelu- ja toteutusvaiheissa. Olioperustaiset kuvaukset muodostavat keskeisen osan tuotteen kehittäjille tarkoitetusta dokumentaatiosta, ja ovat arvokas osa järjestelmää. UML-kaavioiden automaattinen käsittely sovellusten välillä voisi olla järkevä tapa jakaa ohjelmistotuotannon tehtävien käsittelyä eri välineistöille ja helpottaa suppeiden työvälineiden yhdistämisen ongelmaa. Tämä seminaarialustus käsittelee UML-kielen kuvausta yleiseen, sovellusten kesken jaettavissa olevaan muotoon joka perustuu XML-kieleen (Extensible markup language, [XML98]). Kielten käytettyjen peruspiirteiden esittelyn jälkeen kuvataan lyhyesti XMI (Extensible markup language interchange, [XMI00]), joka on valittu siirtoformaatiksi Object Management Group -organisaation standardointiprosessissa. XMI selitetään lyhyesti esimerkkien avulla. Esimerkit XMI-dokumenteista, XMI-kielen standardointia tukevien yritysten ohjelmistoista ja niiden käyttömallista ohjelmistotuotantoprosessissa
2 havainnollistavat siirron toteutusta. Seminaariesityksessä on lisäksi mahdollisesti demonstraatio saatavilla olevista toteutuksista (Rational Rose, Argo UML). 2. Kuvauskielet Vaatimukset siirtoformaatille julkaistiin työnimellä 'Stream-based interchange format' (SMIF RFP) vuonna 1997. Ehdotusten on määrä ratkaista nimenomaan tavuvirta (stream) - tyyppinen rajapinta käytettäväksi esimerkiksi tallennettujen mallien siirtoon ja siirtoon eri metatietovarastojen välillä. Motivaationa tekstipohjaiselle siirrolle on myös jo olemassaoleva ohjelmointirajapinta (CORBA) metamallinnusjärjestelmään. Olemassaolevia metatiedon määritettelykeinoja ovat mm. CDIF (CASE data interchange format) ja RDF (Resource description framework). UML-dokumenttien siirtoon on myös määritelty formaatti (UML exchange format, UXF) joka esittää tyyppi ja oliotason kaavioita, kuten on tarkoitus myös tulevalle UML tekstiformaatille (human-usable textual notation, HUTN). Juuri XML-pohjaisen ratkaisun valintaperusteeksi mainitaan [XMI98] kieleen kohdistuvat odotukset yleisenä verkkomediana. XML on puumuotoisena myös sopiva tietorakenteen talletustavaksi, eikä liity mihinkään aikaisempaan metamallinnus-järjestelmään tai kieleen. 2.1 XML XML on osajoukko dokumenttien sisällönkuvauskielestä SGML (Standard generalized markup language). Kielen mukainen teksti, XML-dokumentti, on rakenteinen lauseke tekstimuodossa olevia vapaasisältöisiä kenttiä, joiden tulkinta ja riippuvuudet ilmaistaan tyyppikuvauksella. Tyyppikuvaukset ovat erillinen laji XML-kieltä, jotka muistuttavat esimerkiksi useiden tekstinkäsittelyjärjestelmien malleja (templates). Esimerkki dokumentin muotoilusta:
3 <!Element Jakso (Jakso Kappale)+> <!ATTLIST Jakso nimi CDATA #IMPLIED> <!Element Kappale> <!ATTLIST Kappale kirjasintyyppi CDATA #IMPLIED> <Jakso nimi="johdanto"> Ittram Dnulredös <Kappale kirjasintyyppi="times"> tyhjä merkkijono </Kappale> </Jakso> Esimerkki 1. Osa XML-dokumenttia XML-kielen erikoispiirre on dokumenttityyppien (DTD, document type definition) käyttö osoittamaan kenttien ja niiden riippuvuuksien käyttöä erillisten ohjelmien, XMLprosessorien, syötteenä. Tyyppitietoa jakamalla saadaan esimerkiksi WEB-selaukseen monimuotoisempia piirteitä kuin HTML-kielellä. Kieleen ollaankin lisäämässä myös mekanismeja hyperlinkkien ja osoitteiden esittämiseen (XLink, XPointer). Laajennukset vaikuttanevat myös XMI-standardiin. 2.2 UML ja MOF UML on kolmen olio-ohjelmoinnin suunnittelumenetelmän käyttämistä notaatioista ja käsitteistä yhdistetty mallinnuskieli ohjelmistoprosessin määrittely-, suunnittelu- ja toteutusvaiheisiin. Kielellä on mahdollista kuvata ohjelmiston elementtien tyyppi-olio - suhteita, olioiden vuorovaikutuksia ja riippuvuuksia, sekä mallinnetun järjestelmän tilaa erilaisia kaavioita käyttäen. Tässä esityksessä keskitytään luokkakaavioihin, jotka esittävät olioiden tyyppien ominaisuuksia, sekä suhteita staattisella tavalla. Kappale kirjasin: String teksti: String 0..n Jakso Kuva 1. Yksinkertainen UML-kaavio Kieli on määritelty kerroksittain, erottamalla kaaviotyypit järjestelmiä kuvaavista käyttäjän UML-kaavioista (vrt. XML ja dokumenttityypit). Näin varsinainen kielen ydin (Metaobject
4 facility, MOF) on kaavioita tehdessä näkymätön, mutta kuitenkin muunneltavissa välineitä erikoistettaessa. Ydin perustuu muutamaan perusalkioon ja kategoriaan, joilla rakennetaan malleja käyttäen olio-ohjelmoinnissa tunnettuja mekanismeja kuten käsitteitä luokka, tyyppi ja olio, periytyminen, viite sekä polymorfismi. Luokka 1 meta-olio 0..n tyyppi instanssi Olio Esimerkki 3. metamallikaavio Eri dokumenttien erottaminen mahdollistaa erilaisten 'murteiden' kehittämisen, sekä ohjelmistotuotantovälineiden erikoistamisen tietylle sovellusalueelle. Murteita on kehitetty esimerkiksi tietoliikennejärjestelmien kuvaamiseen. Sovellusalue UML-kuvattujen metatietovarastojen siirtoon voisi olettaa kattavan hyvin laajan osan ohjelmistotuotantovälineiden toiminnasta. Itse ohjelmistotuotannon prosessin käsitteet olisi kuitenkin mallinnettava. 2.3 XMI XMI määrittelee UML-rakenteiden vastineet XML-kielessä, tuottosäännöt joilla dokumenttityypit kuvataan UML-rakenteista, UML-kaavioiden elementtien kuvaus XMLdokumenteiksi, sekä XML-dokumenttien tuottosäännöt. Yhdessä näillä säännöillä voidaan kuvata UML-metakuvaus niin, että esimerkiksi laajennettua mallinnusta käyttävät kaaviot voidaan koodata. XMI sisältää oman laajennusmekanisminsa, jota käytetään metakielen rakenteiden välittämiseen ja välinekohtaisen informaation esittämiseen. XMI-malliin kuuluu myös oletusarvoinen UML-kielen perusmurteen koodaustapa, joka on esitetty dokumenttityyppimääritelminä (standardin liitteenä). Määritelmä mahdollistaa myös sellaisten työkalujen käytön, jotka eivät toteuta metamalleja, vaan toimivat vain UML-perusversiolla.
UML-kielen taso MOF-termi Esimerkki XMI dokumentti M3 metametamalli UML MOF-kieli MOF DTD M2 metamalli tai UML-kielen UML DTD, MOF XML metametadata määritelmä dokumentti M1 malli tai metadata UML-mallit UML XML dokumentti M0 data UML-mallin instansseja 5 Taulukko 1. UML- ja XML-kielten suhde [DHT00, s.100, XMI98] Kuvauskielen mallin (UML-terminologiassa metametamalli) muunnos on määritelty siten, että laajennusten siirto on tuntumaton työkalussa mikäli se ei toteuta kielten mallien siirtoa tai mikäli kielen mallia ei ole saatavilla. Tällöin välineessä voidaan esittää vain UMLkielen perusversion mukaisia kaavioita ja suhteita. 2.3.1 XMI elementit Kielen osa (luokka) esitetään samannimisellä XML-dokumenttityypin elementillä, jonka määritelmään kuuluvat luokan sisältämät attribuutit, viittaukset luokkaan liittyviin relaatioihin, sekä luokkaan sisältyvät muut luokat. Suhteista muodostetaan oma elementtinsä, johon kuuluu luokan olioiden rooli, lukumäärärajoite sekä suhteen vastinpäätä kuvaava elementti. Metamallien dokumenttityyppikuvauksissa käyttäjän mallien luokat on siis kuvattu Luokka-käsitettä vastaavilla XML-elementeillä, ja instanssikuvaukset Olio-käsitettä vastaavilla. XMI-dokumentti tunnistetaan otsakkeesta (XML-versio), XMI- ja MOF-mallien versiot huomioonottaen. Merkkijärjestelmä tunnistetaan XML-kielessä. Siirrettävien mallien tyyppi kuvataan siis XML-dokumenttityypiksi niin, että UML-kielen metaolioita vastaa XML-elementtikuvaus. Myös kielten mallien osia voidaan siirtää, mikä mahdollistaa kuvauksen osittaisen päivittämisen. Standardi [XMI00] ei vielä määrittele viittausta mallin osaan, mutta tulevaisuudessa linkkimekanismia voidaan käyttää tähän.
6 XMI-formaatin olennainen hyöty on, että mallinnustyökalun toteuttaessa UML-metamallit siirrettävä tieto on välineestä riippumaton. Koodaus siis säilyttää käyttäjän mallintaman informaation sellaisenaan, ja kuvausta voidaan periaatteesa muuttaa eri välineissä. 3. Sovelluksia XMI on käytössä prototyyppiasteella, muuntimia on saatavissa ja ainakin jotkin mallinnustyökalut toteuttavat koodauksen. XML-jäsentäjien saatavuus on hyvä, mutta MOF-toteutus ei välttämättä ole itsestäänselvyys välinevalmistajalle. Tämä saattaa olla syynä dokumenttityyppien liittämiseen XMI-standardiin. Prototyyppejä ovat metatietovarastototeutuksissa tehneet [XMI98] mm. Unisys, IBM, Oracle, ja Platinum. Rational Rose, Select Enterprise ja Unisys UREP -työkalujen ja tietovarastojen välillä on tehty siirtokokeilu, joka säilyttää työkalukohtaisen informaation. IBM on integroinut IBM integroinut TeamConnection-tietovarastototeutuksen ja VisualAge for Java -työvälineet. Projekteissa on käytetty IBM- ja Microsoft -XML-jäsentäjiä. XMI-määritelmän rajoituksia on muun muassa metamallin siirto, joka ei voi säilyttää kaikkia MOF-kielen rakenteita, koska XML-dokumenttityypeillä ei voida kuvata niitä. Esimerkiksi attribuuttien ja relaatioiden ominaisuuksien ilmaisemiseen täytyy käyttää laajennuselementtejä [XMI98]. Kaavioiden graafisen esitysmuodon kuvausta ei ole standardoitu, joten laajennuselementtejä voidaan käyttää tähän tarkoitukseen [DHT00], tai tallentaa asettelu eri tiedostona (PGML). Laajennusten talletus on järjestettävä niin, että usean työvälineen (round-trip engineering) käsittelemä tieto säilyy. 3.1 Arvioita käytettävyydestä Standardin tukijoihin kuuluvat suurimmat välinevalmistajat, jotka myös ovat mukana muussa OMG-standardoinnissa. SMIF RFP määritteli koodaustavalle tiiviin vaihtoehdon,
7 jota XMI ei toteuta. Kysymys tallennustilan käytöstä ja siirtotien kapasiteetintarpeesta on avoin. 3.1.1 Käyttömahdollisuuksia Miksi käyttää siirtoformaattia, jos on voidaan integroida ohjelmistoja? Ohjelmointirajapintojen käyttö järjestelmien yhdistämiseen ei ole välttämättä aina mahdollista erityyppisten kutsumallien ja alustojen takia. Lisäksi tallennus tai tavuvirran siirto voi olla käyttötapojen mukaista joissain tilanteissa. Mallintamalla heterogeenisen järjestelmän kieliä saattaisi olla mahdollista tuottaa informaatiota joka voisi olla prosessikohtaista tai liittyä suoraan tuotteeseen. Vertailukohtana voi pitää integroitua ympäristöä, joka sisältää esimerkiksi versionhallinnan, komponenttikuvauksia, prosessinhallinnan avustusjärjestelmän ja erilaisia raportointityökaluja. Mikäli järjestelmän eri osat ovat muunneltavia, XMI-dokumentti voisi kuvata osia ohjelmistotuotantoprosessista. 4. Päätelmiä XMI on suunniteltu UML-mallien ja erikoistettujen versioiden siirtoon tavuvirtamuotoisena koodauksena. Avoimen siirtomuodon voidaan olettaa kattavan tarpeita erilaisten työkalujen yhdistämiselle, hajautettujen työympäristöjen vaihtoformaatiksi, sekä välittämään itse mallinnustapojen kuvauksia rajoitetulla tavalla. Koodausta voidaan käyttää ilman OMGmetatietovaraston toteutusta. XMI on määritelty käyttäen UML MOF-kieltä, jolla myös UML perusversio on määritelty, joten mallinnustapojen siirto on mahdollista. Ratkaisu on periaatteessa laajennettava, joskin esitysmuotoja koskeva informaatio on vielä standardoimatta UML-kielessä. Käytettävyys mallien siirtoon riippuu mallinnustyökalujen tavasta toteuttaa UML, ja niiden UML- ja MOF-versioista sekä itse XMI-versiosta. Riippuen mallinnuskielten ja XML-kielen kehityksestä standardi voi odottaa muuttuvan.
8 Kuvaus on ymmärrettävällä tavalla muotoiltu, joskin hieman raskaslukuinen ja rajoitettu XML-dokumenttityyppien määrittelytavan takia. Tällä hetkellä XML kaavojen (schema) käyttöä ei ole huomioitu. Esitysmuotoja ja välinekohtaista informaatiota voidaan välittää XML-elementeissä, jotka tulkitaan vain sisällön tulkinnan tuntevissa työkaluissa mikä mahdollistaa monen erilaisen järjestelmän käytön mallinnusprosessissa. Metatietovarastojen toteutus on tulevaisuudessa välttämätön välineessä mallinnuskielten siirron mahdollistamiseksi. Jotkin mallinnusympäristöt toteuttavat jo yksinkertaisemman XMI-siirron, ja laaja kannatus sekä XML-teknologian yleisyys lisännee saatavuutta. Yleinen ohjelmistotuotannollinen hyöty saattaisi olla tallennusmuodon käyttö prosessin eri vaiheiden ja näkökulmien informaation ymmärrettävyydessä ja hallittavuudessa. Toistaiseksi (löydetyt) sovellukset keskittyvät oliomallien kuvausten siirtoon, mutta mallintamalla tuotantoa voitaisiin saada yleisempää hyötyä metatiedon muodossa. Lähteet [XML98] [UML00] [XMI00] [RR00] [DHT00] [SSK00] Extensible Markup Language (XML) 1.0. Worldwide Web Consortium Recommendation, 1998. OMG Unified Modeling Language Specification. 00-03-01, Object Management Group, 2000. OMG XML Metadata Interchange (XMI) Specification. 00-06-01, Object Management Group, 2000. Robbins, J., Redmiles, D., Cognitive support, UML adherence, and XMI interchange in Argo/UML. Information and Software Technology, 42, 2, Elsevier, 2000, s. 79-89. Damm, C., Hansen, K., Thomsen, M., Tyrsted, M.,Tool integration: experiences and issues in using XMI and component technology. Proceedings of the 33rd International Conference on Technology of Object-Oriented Languages and Systems TOOLS 33, IEEE, s. 94-107. St-Denis, G., Schauer, R., Keller, R., Selecting a model interchange format: the SPOOL case study. Proceedings of the 33rd Annual Hawaii International Conference on Systems Sciences, IEEE, 2000, http://www.iro.umontreal.ca/~labgelo/publications/papers/hicss-2000.pdf.