개체 제약 조건 언어
Object Constraint Language이 문서는 갱신할 필요가 있습니다.하여 이 . (2018년 4월) |
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개의 부분으로 구성됩니다.
- 그 진술이 유효한 제한된 상황을 정의하는 상황
- 콘텍스트의 몇 가지 특성을 나타내는 속성(예를 들어 콘텍스트가 클래스일 경우 속성이 속성일 수 있음)
- 속성을 조작하거나 한정하는 연산(예를 들어 산술, 세트 지향) 및
- 조건식을 지정하기 위해 사용되는 키워드(예를 들어, 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) |
「 」를 참조해 주세요.
- 컴퓨터 모델
- 데이터 매핑
- 도메인 고유 언어(DSL)
- 도메인 고유 모델링(DSM)
- 이클립스 GMT 프로젝트
- 젤로 표현 언어
- 통합 모델링 언어 용어집
- 의도적 프로그래밍(IP)
- UML 도구 목록
- 메타모델링
- 메타모델링 기술
- Meta-Object Facility(MOF)
- 메타데이터
- 모델 베이스 테스트(MBT)
- 모델 주도 아키텍처(MDA)
- 모델 주도형 엔지니어링(MDE)
- 모델 변환 언어(MTL)
- 모델링 언어
- 모델링 시점
- MOFM2T
- 객체 지향 분석 및 설계(OOAD)
- MOF 쿼리/뷰/변환(QVT)
- 의미 번역
- 변환 언어(TL)
- UML 툴
- 어휘 기반 변환
- XMI
- XML 변환 언어(XTL)
레퍼런스
- ^ 객체 관리 그룹(OMG); 객체 제약 언어 사양, OMG 통합 모델링 언어 사양 7장, 버전 1.3, 2000년 3월 (초판)
- ^ 오브젝트 관리 그룹(OMG); 오브젝트 제약 언어 OMG 이용 가능한 사양 버전 2.0, 2006년 5월
- ^ 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=(도움말)
외부 링크
- OMG OCL 사양
- OCL 포털 - OCL 관련 정보 센터
- CSUSB의 Computer Science Deput.의 OCL 페이지(간단한 OCL 2.0 구문)
- Octopus: 정밀 UML 사양용 OCL 도구(OCL 검사기)
- Dresden OCL Toolkit (OCL Toolkit, 각종 OCL 관련 자료)
- HOL-OCL(OCL을 위한 인터랙티브 정리 증명 환경, 다양한 OCL 관련 출판물)
- 팔레즈에 대한 Java 튜토리얼용 OCLUML
- 자바 코드에서의 EMF OCL 사용에 관한 기사
- cetus-links.org의 UML 링크 페이지
- USE (UML 기반 사양 환경) (모델 검증을 위한 OCL 도구, 다양한 OCL 관련 자료)
- OCL 튜토리얼
- NL2OCL(NL에서 불변 생성용 OCL 도구)