개체 제약 조건 언어

Object Constraint Language

Object Constraint Language(OCL; 객체 제약 언어)는 IBM에서 개발한 Unified Modeling Language(UML; 통합 모델링 언어) 모델에 적용되는 규칙을 기술하는 선언적 언어이며 현재 UML 표준의 일부가 되었습니다.UML.[1]OCL 처음에는 OCL은 단지 형식 명세 언어 확장이 지금 어떤 Meta-Object 시설(계기용 변압 변류기)ObjectManagementGroup(OMG)메타 모델과, UML.[2]는 계기용 변압 변류기 모델이나 메타 모델은 엄두에 제약 조건 및 객체 조회 표현을 제공하는 객체 제약 언어는 정확한 텍스트 언어를 포함 사용할 수 있다.otherwise는 도표기법으로 표현된다.OCL은 모델 변환에 대한 새로운 OMG 표준 권장 사항인 QVT(Query/Views/Transformations) 사양의 핵심 구성 요소입니다.

묘사

OCL은 2세대 객체 지향 분석 및 설계 방법인 Syntropy의 후손입니다.OCL 1.4 정의는 제약 언어를 지정했습니다.OCL 2.0에서는 일반적인 객체 쿼리 언어 정의를 포함하도록 정의가 확장되었습니다.

OCL 문은 다음 4개의 부분으로 구성됩니다.

  1. 그 진술이 유효한 제한된 상황을 정의하는 상황
  2. 콘텍스트의 몇 가지 특성을 나타내는 속성(예를 들어 콘텍스트가 클래스일 경우 속성이 속성일 수 있음)
  3. 속성을 조작하거나 한정하는 연산(예를 들어 산술, 세트 지향) 및
  4. 조건식을 지정하기 위해 사용되는 키워드(예를 들어, else, or, or, or not amplicits)를 지정합니다.

관계.

OCL 및 UML

OCL은 자연어의 모호함이나 복잡한 수학 사용의 본질적인 어려움이 없는 식을 제공함으로써 UML을 보완합니다.OCL은 그래프 기반 모델의 내비게이션 언어이기도 합니다.

OCL 및 MOF

OCL은 어설션을 메타 요소와 연관시킴으로써 메타 객체 퍼실리티 모델을 보다 정밀하게 만듭니다.

OCL 및 QVT

모델 중심 엔지니어링(MDE) 또는 모델 중심 아키텍처에서 특히 중요한 것은 모델 변환의 개념입니다.OMG는 MOF/QVT 또는 짧은 QVT라고 하는 모델 변환의 특정 표준을 정의했습니다.현재 GREAT, VIATRA, Tefkat 등의 모델 변환 언어를 사용할 수 있으며 QVT 표준에 대한 준수 수준이 다릅니다.이러한 언어의 대부분은 QVT 준거의 주요 부분인 OCL 위에 구축되어 있습니다.

대체 수단

규칙 기반 검증 언어이므로 Schematron은 OCL의 대안으로 간주될 수 있습니다.그러나 Schematron은 XML(Extensible Markup Language) 트리에서 작동하며 OCL은 MOF 기반 모델과 메타 모델(XMI(XML 메타데이터 교환) 트리)을 탐색할 수 있습니다.즉, OCL은 Schematron과 XML과의 관계와 마찬가지로 UML 또는 MOF와 관련되어 있습니다(Schematron은 XPath를 사용하여 XML 트리 내부를 탐색합니다).
설계자가 모델 또는 메타 모델을 부작용 없는 주석으로 장식할 수 있는 모델 사양 언어로서 OCL은 알로이 같은 언어로 대체될 수 있습니다.OCL 자동 생성은 원칙적으로 [3]자연어에서 가능합니다.

제약 OCL 동등품
사람의 나이는 부정적이지 않다. 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
한 사람은 최대 2명의 부모가 있다. 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)


「 」를 참조해 주세요.

레퍼런스

  1. ^ 객체 관리 그룹(OMG); 객체 제약 언어 사양, OMG 통합 모델링 언어 사양 7장, 버전 1.3, 2000년 3월 (초판)
  2. ^ 오브젝트 관리 그룹(OMG); 오브젝트 제약 언어 OMG 이용 가능한 사양 버전 2.0, 2006년 5월
  3. ^ Imran Sarwar Bajwa (October 2010). "OCL Constraints Generation from Natural Language Specification, 2010". IEEE. doi:10.1109/EDOC.2010.33. S2CID 7495256. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)

외부 링크