UML-kielen formalisointi Object-Z:lla

Samankaltaiset tiedostot
UML-kielen formalisointi Object-Z:lla

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

Ohjelmistotekniikan menetelmät, UML

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

UML - unified modeling language

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi on tulkkaamista

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

UML:n yleiskatsaus. UML:n osat:

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

Unified Modeling Language

UML- mallinnus: Tilakaavio

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

UML työvälineenä ja tutkimuskohteena

UML Luokkakaavio 14:41

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot

Sisällys. 19. Unified Modeling Language (UML) Johdanto. Johdanto. Johdanto. Luokkakaavio:

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

Metatiedon siirto (XMI) Martti Söderlund

Luokka- ja oliokaaviot

Ohjelmistotekniikan menetelmät, kevät 2008

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

UML-kuvauskielten käyttö ohjelmistojen vaatimusmäärittelyissä

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Ohjelmistojen mallintaminen

Dynaaminen analyysi II

Ohjelmistotekniikan menetelmät, kesä 2008

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

3a. Projektin hallinta (lisäys lukuun 3)

Kertausta 1. kurssikokeeseen

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Ohjelmistojen vaatimusmäärittely Helsingin yliopisto, TKTL, s2013. Harri Laine 1. Tietovuokaaviot (data flow diagrams)

Joskus yleistäminen voi tapahtua monen ominaisuuden pohjalta. Myös tällöin voi tulla moniperintätilanteita.

Tilakaaviot, sekvenssikaaviot (Haikala, Märijärvi ss , )

Ohjelmistojen mallintaminen, kesä 2009

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

UML työvälineenä ja tutkimuskohteena

UML-MALLINNUSKIELI JA SEN HYÖDYNTÄMINEN OHJELMISTOKEHITYKSESSÄ

Mallinnus UML-yleiskatsaus

käyttötapaukset mod. testaus

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Paikkatiedon mallinnus Dokumentoinnin ymmärtäminen. Lassi Lehto

2. Olio-ohjelmoinnin perusteita 2.1

8. Kieliopit ja kielet

TIE = JOTU. VH5 - MagicDraw

Esimerkki 1: Kahviautomaatti.

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Mitä on periytyminen?

2 Ohjelmistoarkkitehtuurien kuvaaminen

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit kevät

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

Ohjelmistoarkkitehtuurit kevät

Ohjelmistojen mallintaminen Luokkakaaviot Harri Laine 1

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

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

UML-mallinnus ja prosessien kuvaaminen Microsoft Visiolla (versio 2003 professional) Jouni Huotari

Kaaviotekniikoista (erityisesti UML) (ajan riittäessä pikkasen projekteista)

19. Unified Modeling Language (UML)

Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa Harri Laine 1

Olioiden yhteistyön mallintaminen

UML-kaaviot. Jouni Kylä-Nikkilä

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

Ohjelmistotuotanto, kuvaustekniikat Syksy Kuvaustekniikat. Miksi kuvaustekniikoita? Abstraktiotasot. Abstrahointi UML

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

Ohjelmistoarkkitehtuurit. Kevät 2014, luento 3 Arkkitehtuurin kuvaus (mallinnus)

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Hakemistojen sisällöt säilötään linkitetyille listalle.

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Abstraktit tietotyypit. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Ohjelmistojen suunnittelu

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Luokka (class) esitetään suorakulmion avulla, jonka sisälle kirjoitetaan luokan nimi (vahvennettuna).

Ohjelmistotekniikan menetelmät, mallintaminen ja UML

Automaatit. Muodolliset kielet

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

UML-MALLINNUS MICROSOFT VISIOLLA JOUNI HUOTARI

Yhteydelle voi antaa nimen kumpaankin suuntaan Sille ei tarvise antaa lainkaan nimeä Yhteysnimen asemasta tai lisäksi voidaan käyttää roolinimiä

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Ohjelmistoarkkitehtuurit, syksy

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

815338A Ohjelmointikielten periaatteet

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

1. Tarkastellaan seuraavaa kaaviota

Common Lisp Object System

Transkriptio:

UML-kielen formalisointi Object-Z:lla Kalvot ja seminaarityö WWW:ssä: http://users.jyu.fi/~minurmin/opiskelu/form/

UML UML == Unified Modelling Language. OMG:n standardoima kieli ohjelmistojärjestelmien, liiketoimintamallien ja muiden järjestelmien spesifiointiin, visualisointiin, muodostamiseen ja dokumentointiin. 8 kaaviota: käyttötapauskaavio, luokkakaavio, tilakaavio, aktiviteettikaavio, sekvenssikaavio, yhteistoimintakaavio, komponenttikaavio ja sijoituskaavio. Laajennusmekanismit: stereotyypit, rajoitteet ja kiinnitetyt arvot.

UML-kielen määrittely 4-kerroksinen metamalli (metametamalli, metamalli, malli ja käyttäjän oliot). Abstrakti syntaksi määritellään metamallissa luokkakaavioilla. Syntaktiset rajoitteet määritellään OCL-kielellä (Object Constraint language). Semantiikka kuvataan luonnollisella kielellä. > 3 eri näkymää kielen määrittelyyn. > Näkymien välillä ei ole täsmällistä kuvausta. > Määrittely sisältää moniselitteisyyksiä ja epäselvyyksiä.

Esimerkki: assosiaatio

Object-Z Oliopohjainen laajennus Z-kuvauskieleen. Uusi mallinnuselementti: luokkaskeema. Z:n tila- ja operaatioskeemat käytössä luokkaskeeman sisällä. -> luokkainvariantti, metodit. Tuettuja oliokäsitteitä: olion identiteetti, (moni)perintä, polymorfismi, tiedon suojaus, viitteet, koosteet. Ei metodien kuormitusta -> olion alkutila ilmaistaan yhdellä init-operaatiolla. Formaali kieli. UML:ää ilmaisuvoimaisempi, ei välttämättä selkeämpi.

Esimerkki: Pino

Esimerkki: Jono max, Init, Join ja Leave ovat luokan julkiset jäsenet (erityisesti Push ei ole jonon julkinen metodi). Pop-metodi nimetty uudelleen nimelle Leave. Uudelleennimeäminen mahdollistaa polymorfismin.

Object-Z:n semantiikasta Object-Z:n semantiikka on määritelty Z:lla (hankalaa). Vaihtoehtoinen ratkaisu: UML-kielen määrittelyn kaltainen metamalli. Metamalli yksinkertaistaisi muunnoksia muihin oliopohjaisiin kieliin. Esim. muunnos UML-kielestä Object-Z:aan: > Määritellään kielten metamallit Object-Z -luokkina. > Määritellään muunnos UML-metamallista Object-Z -metamalliin. > Sovelletaan muunnosta malliin. > Tarkennetaan Object-Z -spesifikaatiota niiden piirteiden osalta, joita ei voi kuvata UML:llä.

Object-Z -metamalli... Määritellään Object-Z:n luokan käsite metamallilla. allsuperclass palauttaa rekursiivisen sulkeuman kaikista luokan yliluokista.

Object-Z -metamalli... Luokalla on äärellinen määrä välittömiä yliluokkia. Luokka ei voi olla itsensä yliluokka. Luokka koostuu äärellisestä määrästä yksikäsitteisiä attribuutteja ja operaatioita.

UML-metamalli formaalisti Kaikkien UML-kaaviotyyppien abstrakti syntaksi määritellään metamallissa luokkakaavioilla. > UML-kielen formalisointi aloitettava luokkakaavioista. Kielen laajuudesta johtuen formalisointi on ositettava (esim. UML:n pakettirakenne: ydinelementit, käyttäytymiseen liittyvät, mallien hallintaan liittyvät). Käsitellään luokkakaavioiden formalisointia, esimerkkinä UML-luokan käsite. Muistakin kaavioista esitetty Object-Z -malleja (esim. käyttötapaus- yhteistoiminta- ja tilakaaviot).

UML-metamalli...

Muunnosesimerkki Määritellään funktio, joka kuvaa UML-metamallin luokan Object-Z-metamallin luokaksi. Funktio käyttää abstraktia funktiota convtype, joka vastaa yksittäisen UML-tyypin muuntamisesta Object-Z -tyypiksi. convtype on määriteltävä jokaiselle tyypille erikseen.

Muunnosesimerkki kaikille UML-luokan attribuuteille ja operaatioille on oltava vastaava Object-Z:n luokan attribuutti ja operaatio tyypinmuunnoksen jälkeen.

Muunnos Object-Z -> UML Object-Z -kuvausten rakennetta voi havainnollistaa esittämällä sen UML-luokkakaaviona. Yksinkertainen toteutus: määritellään XML-esitys Object-Z -kuvauksille, muunnetaan XSLT:llä. Muunnos HTML-muotoon mahdollistaa skeemojen katselun WWW:ssä. Muunnos XMI (XML Metadata Interchange)- formaattiin mahdollistaa mallin siirtämiseen nykyisiin CASE-ohjelmiin ja UML-kaavioiden generoinnin mallin pohjalta. > Edistää Object-Z:n käyttöä osana nykyisiä välineitä ja menetelmiä.

XML-esimerkki <objectznotation> <classdef> <name>stack</name> <!--... --> <state> <decl> <name>items</name> <dtype>&seq; <type>t</type></dtype> </decl> <st/> <predicate>#items &leq; max</predicate> </state> <init> <predicate>items = &emptyseq;</predicate> </init> <op> <name>push</name> <delta>items</delta> <decl> <name>item?</name> <dtype><type>t</type></dtype> </decl> <st/> <predicate>#items? < max</predicate> <predicate>items = &lseq; item? &rseq; &cat; items</predicate> </op> <!--... --> </classdef> </objectznotation>

Yhteenveto UML-kielen formalisointi poistaisi kielen epäselvyydet ja lisäisi formaalien menetelmien käyttöä ohjelmistokehityksessä. Muunnos UML:stä Object-Z:aan tukee prosessia, jossa karkea suunnittelu tehdään UML:llä ja tarkennukset formaalisti (jos on tarvetta). Muunnoksella Object-Z:sta UML:ään voisi havainnollistaa formaalia kuvausta (tosin kaikkia Object-Z:n piirteitä ei pysty esittämään UML:llä) ja hyödyntää kuvausta nykyisissä työkaluissa.