统一的建模语言
统一建模语言( UML )是一种通用的视觉建模语言,旨在提供一种可视化系统设计的标准方法。
UML为许多类型的图表提供了标准符号,可以将其大致分为三个主要组:行为图,互动图和结构图。
UML的创建最初是出于标准化不同符号系统和软件设计方法的愿望而激发的。它是在1994年至1995年在理性软件上开发的,直到1996年,它们的进一步发展。
1997年,UML被对像管理小组(OMG)采用,此后一直由该组织管理。 2005年,国际标准化组织(ISO)和国际电子技术委员会(IEC)也出版了UML作为ISO/IEC 19501标准。从那时起,该标准进行了定期修订,以涵盖UML的最新修订。
在软件工程中,大多数从业人员不使用UML,而是制作非正式的手绘图。但是,这些图通常包括UML的元素。
历史
在UML 1.0之前
自1990年代下半叶以来,UML一直在发展,并源于1980年代末和1990年代初开发的面向对象的编程方法。时间轴(参见图像)显示了面向对象的建模方法和符号的历史记录的亮点。
它最初基于Booch方法的符号,对像模型技术(OMT)和面向对象的软件工程(OOSE),并将其集成到单个语言中。
理性软件公司于1994年从通用电气公司雇用了詹姆斯·伦波(James Rumbaugh) ,此后,该公司成为了当天最受欢迎的两种最受欢迎的面向对象建模方法的来源:Rumbaugh的对像模型技术(OMT)和Grady Booch的方法。伊瓦尔·雅各布森(Ivar Jacobson)很快得到了他们的努力,这是面向对象的软件工程(OOSE)方法的创建者,他于1995年在Rational中加入了他们。
UML 1.x
在这三个(Rumbaugh,Jacobson和Booch)的技术领导下,一个名为UML Partners的财团成立了1996年,以完成统一的建模语言(UML)规范,并将其提交给对像管理小组(OMG )进行标准化。该合作伙伴关系还包含其他有关方面(例如HP , DEC , IBM和Microsoft )。联盟于1997年1月向OMG提出了UML Partners的UML 1.0草案。在同月,UML合作伙伴组成了一个小组,旨在定义由Cris Kobryn主持并由Ed Eykholt管理的语言构造的确切含义,以最终确定规范并将其与其他标准化工作集成在一起。这项工作的结果是UML 1.1,于1997年8月提交了OMG,并于1997年11月由OMG通过。
首次发行后,成立了一个工作组来改善语言,该语言发布了几个次要修订,即1.3、1.4和1.5。
它产生的标准(以及原始标准)被认为是模棱两可和不一致的。
基数符号
与数据库Chen,Bachman和ISO ER图一样,类模型也被指定用于使用“ look-across”红衣主教,即使有几位作者( Merise ,Elmasri&Navathe等)更喜欢相同的角色或“寻找角色”以及最低和最大红衣主教。最近的研究人员(Feinerer,Dulleea等人)表明,当将UML和ER图所使用的“外观”技术严格大于2时应用于n -arry关系时,效率较低,相干性较低。
费纳雷说:“如果我们在UML协会使用的Look-across语义下运作,就会出现问题。Hartmann研究了这种情况,并显示了如何以及为什么不同的转换失败。”和:“正如我们将在接下来的几页中看到的那样,外观解释引入了几个困难,这些困难阻止了简单机制从二进制的关联扩展。”
UML 2
UML 2.0主要修订替换了2005年的1.5版,该版本是通过扩大财团开发的,以进一步改善语言,以反映其功能使用的新体验。
尽管UML 2.1从未作为正式规范发布,但版本2.1.1和2.1.2于2007年出现,其次是2009年2月2.2日。UML2.3于2010年5月正式发布。UML2.4.1于2011年8月正式发布。 UML 2.5于2012年10月作为“进度”版本发布,并于2015年6月正式发布。正式版本2.5.1于2017年12月采用。
UML 2.x规格有四个部分:
- 定义图表符号和语义的上层结构及其模型元素
- 定义上层结构所基于的核心元模型的基础架构
- 定义模型元素规则的对象约束语言(OCL)
- UML图互换定义了如何交换UML 2图布局
在UML 2.4.1之前,这些标准的最新版本是:
- UML上层建筑2.4.1版本
- UML基础架构版本2.4.1
- OCL版本2.3.1
- UML图Interchange版本1.0。
自2.5版以来,已简化了UML规范(没有上层建筑和基础架构),现在这些标准的最新版本是:
- UML规范2.5.1
- OCL版本2.4
修订工作组将继续更新和改进,他们解决了该语言的任何问题。
设计
UML提供了一种在图中可视化系统架构蓝图的方法,包括:
尽管最初用于面向对象的设计文档,但UML已扩展到较大的设计文档集(如上所述),并在许多情况下被发现。
软件开发方法
UML本身不是开发方法。但是,它旨在与当时面向对象的软件开发方法兼容,例如OMT , BOOCH方法,对象,尤其是RUP ,最初打算在合理软件开始工作时使用它。
造型
区分系统模型和系统图集很重要。图是系统模型的部分图形表示。一组图不需要完全覆盖模型并删除图不会改变模型。该模型还可能包含驱动模型元素和图表的文档(例如书面用例)。
UML图代表系统模型的两个不同视图:
- 静态(或结构)视图:使用对象,属性,操作和关系强调系统的静态结构。它包括类图和复合结构图。
- 动态(或行为)视图:通过显示对象之间的协作以及对象内部状态的更改来强调系统的动态行为。此视图包括序列图,活动图和状态机图。
可以通过使用XML元数据交换(XMI)格式在UML工具之间交换UML模型。
在UML中,行为建模的关键工具之一是由OOSE引起的用例模型。用例是指定系统所需用法的一种方式。通常,它们用于捕获系统的要求,即系统应该做什么。
图
UML 2具有多种类型的图表,分为两类。某些类型代表结构信息,其余类型代表了一般的行为类型,包括一些代表相互作用不同方面的行为。这些图可以在层次上分类,如以下类图所示:
这些图可能包含注释或注释,以说明用法,约束或意图。
结构图
结构图代表系统的静态方面。它强调了要建模的系统中必须存在的事物。由于结构图代表结构,因此它们广泛用于记录软件系统的软件体系结构。例如,组件图描述了如何将软件系统分为组件,并显示这些组件之间的依赖项。
行为图
行为图代表系统的动态方面。它强调了正在建模的系统中必须发生的事情。由于行为图说明了系统的行为,因此广泛使用它们来描述软件系统的功能。例如,活动图描述了系统中组件的业务和运营分步活动。
互动图
互动图(行为图的一个子集)强调了要建模的系统中事物之间的控制和数据流。例如,序列图显示了对像如何相互交流有关消息序列。
元模型
对像管理组(OMG)开发了一个元模型体系结构来定义UML,称为Meta-Object设施。 MOF被设计为四层架构,如右图所示。它在顶部提供了一个称为M3层的元模型。该M3模型是Meta-Object设施用于构建元模型的语言,称为M2模型。
第2层元对象设施模型的最突出的例子是UML元模型,它描述了UML本身。这些M2模型描述了M1层的元素,因此描述了M1模型。例如,这些是用UML编写的模型。最后一层是M0层或数据层。它用于描述系统的运行时实例。
可以使用称为刻板印象的机制扩展元模型。布莱恩·亨德森·塞勒斯(Brian Henderson-Sellers)和塞萨尔·冈萨雷斯·佩雷斯(Cesar Gonzalez-Perez)在“ UML 1.x和2.0中的刻板印像机制”中批评这是不足/站不住的。
采用
早在2013年,UML就在许多情况下被OMG销售,但主要针对的是成功开发的软件开发。
它有时被视为设计银弹的设计,这导致了问题。 UML滥用包括过度使用(使用该系统的每个部分设计,这是不必要的),并假设新手可以使用它来设计。
它被认为是一种大型语言,具有许多结构。有些人(包括雅各布森)认为UML的规模阻碍了学习(并因此使用)。
由于缺乏使用,Visual Studio女士在2016年对UML的支持下降。
根据Google趋势,UML自2004年以来一直在稳步下降。