Object Constraint Język - Object Constraint Language
Object Constraint Language ( OCL ) jest deklaratywny język opisujący zasady mające zastosowanie do Unified Modeling Language (UML) modeli opracowanych na IBM i jest teraz częścią standardu UML. Początkowo OCL było jedynie formalne rozszerzenie specyfikacji języka UML. OCL może teraz być używany z dowolnym obiekcie Meta-Object (MOF) Object Zarządu Grupy (OMG) meta-modelu , w tym UML. Przedmiot Ograniczenie Język jest precyzyjny język tekstu, który zapewnia przymusu i zapytań obiekt wyrażenia na każdym modelu MOF lub meta-modelu, który nie może inaczej być wyrażona przez notacji diagramu. OCL jest kluczowym elementem nowego OMG standardowym zaleceniem przekształcania modeli zapytań / views / Transformacje ( QVT ) specyfikacja.
Zawartość
Opis
OCL jest potomkiem Syntropy , drugiej generacji obiektowego analizy i projektowania metody. OCL 1.4 definicja określona język wiązania. W sieci trakcyjnej 2.0, definicja została poszerzona o definicje języka zapytań Ogólnym celem.
OCL oświadczenia są zbudowane z czterech części:
- kontekst, który definiuje ograniczoną sytuację, w której oświadczenie jest ważne
- właściwością, która przedstawia pewne charakterystyki związku (na przykład, jeżeli z kontekstu nie jest klasą, właściwość może być atrybutem)
- operacji (na przykład arytmetycznego zestaw zorientowany), który przetwarza i kwalifikuje właściwości i
- słowa kluczowe (np jeśli więc jeszcze, i, lub, nie implikuje), które są wykorzystywane do określenia wyrażeń warunkowych.
Relacja
OCL i UML
Suplementy OCL UML poprzez zapewnienie wyrażenia, które nie mają ani dwuznaczności języka naturalnego ani wrodzonej trudności przy użyciu skomplikowanych matematycznych. OCL jest również język nawigacji dla modeli opartych na wykres.
OCL i MOF
OCL sprawia obiektu metaobiektów modelu dokładniej przez połączenie z jego twierdzeń meta elementów.
OCL i QVT
Szczególne znaczenie dla modelu Driven Inżynieria (MDE) lub Model Driven Architecture jest pojęcie transformacji modelu . OMG zdefiniowało konkretne standardy dla transformacji modelu o nazwie MOF / QVT lub w krótkim QVT . Kilka języków transformacji modelu jak wielki , VIATRA lub Tefkat są obecnie dostępne z różnymi poziomami zgodności z normą QVT. Wiele z tych języków są wbudowane w górnej części sieci trakcyjnej, która jest główną częścią QVT zgodno.
alternatywy
Jako język sprawdzania poprawności opartego na regułach, Schematron może być uważany za alternatywę dla sieci trakcyjnej. Jednak Schematron pracuje dla Extensible Markup Language (XML) drzew podczas OCL umożliwia poruszanie MOF -na modeli i meta-modeli (tj XML Metadata Interchange ( XMI ) Drzewa). Innymi słowy, OCL dotyczy UML lub MOF podobnie do tego, jak Schematron dotyczy XML . (Zauważ, że Schematron używa XPath do poruszania się wewnątrz drzewa XML).
Jako język specyfikacja modelu pozwalając projektantom ozdobić modelu lub meta-model z efektem ubocznym wolne adnotacji, OCL można zastąpić języków takich jak stopu . Zautomatyzowane OCL pokolenie jest możliwe poprzez język naturalny jak NL2OCL .
Przykład
ograniczenia
- Wiek danej osoby nie jest negatywna.
- Osoba jest młodszy niż jego rodziców.
- Po urodzinach, osoba staje się o rok starszy.
- Osoba ma 2 rodziców przy max.
- Po ktoś ma dziecko, jego / jej dziecko-set nie jest pusta, i jest większe niż wcześniej.
- Tylko dla dorosłych może być właścicielem samochodu.
- Data pierwszej rejestracji samochodu nie może być zanim zostanie zbudowany.
- Każda osoba, która ma samochód posiada przynajmniej jeden samochód, który jest młodszy niż osoba.
- Nikt nie może być jego / jej własnym rodzicem.
- Istnieje co najmniej jedna osoba, która jest właścicielem samochodu.
OCL Ograniczenia
context Person inv: self.age >=0
context Person inv: self.parents->forAll(p|p.age>self.age)
context Person::hasBirthday() post: self.age=self.age@pre+1
context Person inv: self.parents->size()<=2
context Person::getsChild() post: self.childs->notEmpty() and self.childs->size() > self.childs@pre->size()
context Person inv: self.age<18 implies self.cars->isEmpty()
context Auto inv: self.registration>=self.constructionYear
context Person inv: self.cars->notEmpty() implies self.cars->exists( c | Calendar.YEAR - c.constructionYear < self.age)
context Person inv: self.parents->excludes(self)
context Person inv: Person.allInstances()->exists(p | p.cars->size() > 0)
Zobacz też
- Model komputerowy
- mapowanie danych
- Domain Specific Language (DSL)
- Modelowanie specyficzne dla domeny (DSM)
- Eclipse GMT projekt
- Gello Expression Language
- Słowniczek terminów Unified Modeling Language
- Umyślne Programming (IP)
- Lista narzędzi UML
- Meta-modelowanie
- technika meta-modelowanie
- Instrument metaobiektów (MF)
- metadane
- Testy oparte na modelu (MBT)
- Model napędzany architektura (MDA)
- Model Driven Inżynieria (MDE)
- Transformacja modelu Język (MTL)
- język modelowania
- perspektywy modelowania
- MOFM2T
- Analiza obiektowe wzór (OOAD)
- MOF Zapytania / views / Transformacje (QVT)
- Tłumaczenie semantyczny
- Język transformacja (TL)
- narzędzie UML
- Transformacja słownictwo oparte
- XMI
- Transformacja język XML (XTL)
Referencje
Linki zewnętrzne
- Szczegółowy OCL OMG
- OCL Portal - Centrum Informacji związanych OCL
- OCL strona Informatyki Departamentu CSUSB (krótki OCL składnia 2.0)
- Ośmiornica: OCL Narzędzie do dokładnych specyfikacji UML (OCL sprawdzania)
- Drezno OCL Toolkit (OCL Toolkit, różne publikacje związane OCL)
- HOL-OCL (Interaktywny twierdzenie dowód środowisko dla OCL, różne OCL związanych publikacje)
- OCL dla samouczka Java na ParlezUML
- Artykuł na temat korzystania EMF OCL w kodzie Java
- Odnośnik na stronie UML na cetus-links.org
- STOSOWANIE (oparte na UML Specyfikacja Środowisko) (OCL narzędzie do walidacji modelu, różne publikacje związane OCL)
- Tutorial OCL
- NL2OCL (OCL Narzędzie do niezmiennego generacji z NL)
Ten artykuł jest oparty na materiale pobranym z Free On-line Dictionary of Computing przed 1 listopada 2008 roku i zarejestrowana zgodnie z „relicencjonowanie” względem GFDL w wersji 1.3 lub nowszej.