对象约束语言简称OCL

对象约束语言简称OCL

ID:38763834

大小:659.18 KB

页数:12页

时间:2019-06-19

对象约束语言简称OCL_第1页
对象约束语言简称OCL_第2页
对象约束语言简称OCL_第3页
对象约束语言简称OCL_第4页
对象约束语言简称OCL_第5页
资源描述:

《对象约束语言简称OCL》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、对象约束语言简称OCL(ObjectConstraintLanguage),它是一种用于施加在指定的模型元素上约束的语言。OCL表达式以附加在模型元素上的条件和限制来表现对该对象的约束,其中包括附加在模型元素上的不变量或约束的表达式,附加在操作和方法上的前置条件和后置条件等。对象约束语言概述   对象约束语言是一种形式化语言,它主要用于表示UML模型中施加于模型上的约束。OCL具有如下特点:   1、OCL是一种精确的,无二义性的语言   2、OCL是一种规范说明性语言,所有有关实现的问题都不能用OCL来表达   3、OCL是一种纯表达式语言,它是具有没有任何副作用的申明性语言

2、。   4、OCL是一种类型化语言,即OCL中的每一个表达式都是具有类型的。   5、OCL不是一种程序设计语言,不能用OCL编写程序逻辑和控制流程。标准OCL类型   OCL预定义的标准类型定义了一组基本类型和集合类型。OCL的基本类型有"Boolean"、"Integer"、"Real"、"String"等。集合类型包括"Collection"、"Set"、"Bag"、"Sequence"等。这些标准型是OCL表达式的组成部分。   OCL标准型的层次结构如下:OCL表达式   OCL表达式对于一个OCL类型求值。OCL表达式有以下特点:   1、OCL表达式可以附加在模型

3、元素上,模型元素的所有实例都应该满足表达式的条件。   2、OCL表达式可以附加在操作上。   3、OCL表达式可以指定附加在模型元素上的监护条件。   4、OCL表达式的计算顺序是从左到右。   5、OCL表达式既可以使用基本类型又可以使用集合类型。用OCL表达对象性质约束   OCL表达式可以附加在模型元素或模型元素的属性和操作上表达一个约束条件。精确域模型的需求让我们拿系谱树形结构作为一个范例,从图1之中的图表开始。系谱树形视图的UML模型显示了一个Person是由名字和性别定义的,并且可以有或者没有小孩。而且,它显示了一个Person拥有两个小孩,小孩也是Person。

4、这意味着两个小孩可以有相同的性别,但是这在遗传上是不可能的。因此,该模型是不精确的。图1.系谱树形模型一个UML图,例如一个类图,通常不够精确来提供一个业务模型的所有相关元素。它可以通过多种政策来表达约束,但是其他的约束仍然不够清晰。如果我们需要为模型对象描述其他的约束,那么通常可以以一种自然语言来描述它们。该实践还显示了它导致了模糊性的产生。您可以开发一个规范语言来避免这些模糊性。传统规范语言的劣势在于,它们是由拥有稳固数学知识的人员使用的,使用它来建模系统很困难。您可以开发OCL(对象约束语言)来填补这个空白。这就是一种读起来和写起来都很轻松的规范语言。以OCL写成的表达式

5、可以得到理解,并且不会在不同角色的人员之间产生差异,这些人员例如分析员,开发员。为了创建一个精确且完整的模型,我们需要UML图表及OCL表达式。没有OCL表达式,那么模型就是严重未指定的。对于类和联系的代表来说,UML图表仍然是不可或缺的,但是OCL表达式会参考尚不存在的模型元素,因为在OCL中尚没有方法去指定类与联系。当我们合并图表和约束时,才能够完整地指定模型。至于如图1所示系谱树形视图中指定的模型,我们需要添加这些约束,来指定两个父类拥有不同的属性:{self.parents->asSequence()->at(1).sex<>self.parents->asSequen

6、ce()->at(2).sex}图2.带有OCL约束的系谱树形模型而且,模型的规模和数量会得到极大的增加,使得公司不能完整发挥MDA(模型驱动结构)的优势。系统由数以百计的模型组成,而模型又由数以千计的元素组成。使用MD技术能够获得较大的改进。但是,分析阶段确认模型仍然存在许多问题。有很多程序不能理解以OCL写成的约束。就算代码生成过程之中能够转化代码的约束,在编码开始之前仍然应该确认模型及其约束。因此,分析阶段最终的错误可以尽早地检查到,而不用对开发规划造成什么大的影响。模型确认的结果对分析阶段会产生一定的影响。约束并不适合:·如果约束太强,那么许多实例并不满足约束的条件。在

7、这些情况下,为方便大多数的实例可以放松约束。·如果约束太弱,会出现系统不想要出现的一些情况。在这种情况之下,约束并不具有较强的限制性。我们的目标是构建更好的域模型。模型不能适应选择的约束,在这种情况下应该编辑它。·一方面,它生成了特定模型的实例,并自动确认它们是否与已有的OCL约束兼容。·另一方面,可视化使得分析员能够更轻松地发现和校正域模型之中的模糊性或者不稳定性。让我们考虑一下如图3所示的系谱树形模型的一个实例。图3.系谱树形模型实例我们可以看到两个父类拥有相同的属性,这在条件下是不可能

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。