统一建模语言
统一建模语言(英语:Unified Modeling Language,缩写UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
这个语言由葛来迪·布区,伊瓦尔·雅各布森与詹姆士·兰宝于1994年至1995年间,在Rational Software公司中开发,于1996年又进一步发展。UML集成了Booch,对象建模技术和面向对象程序设计的概念,将这些方法融合为单一的,通用的,并且可以广泛使用的建模语言。UML打算成为可以对并发和分布式系统的标准建模语言。
1997年,UML被对象管理组织接纳为标准,并在此之后受该组织管理。2005年,UML被国际标准化组织接纳为一种标准[1],自此,该标准被定期修订以涵盖UML的最新版本[2]。然而,在软件工程中,大多数从业者不使用UML,而是产生非正式的手绘图;不过,这些图例中仍往往包括UML的元素[3]:536。
模型
在UML系统开发中有三个主要的模型:
- 功能模型:从用户的角度展示系统的功能,包括用例图。
- 对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对象图。
- 动态模型:展现系统的内部行为。包括序列图,活动图,状态图。
区分UML模型和UML图是非常重要的,UML图,包括用例图、协作图、活动图、序列图、部署图、构件图、类图、状态图,是模型中信息的图形表达方式,但是UML模型独立于UML图存在。UML的当前版本只提供了模型信息的交换,而没有提供图信息的交换。
UML使用一套与Java语言或其他面向对象语言等价物,同时也是本体论等价物的图形标记。
UML并不是一个方法学,也不要求使用一个方法学,但是UML对于Rational 统一过程来说是必不可少的。
图形
UML 2.2中一共定义了14种图示。为方便了解,可分类成右侧的结构。
结构性图形(Structure diagrams)强调的是系统式的建模:
行为式图形(Behavior diagrams)强调系统模型中触发的事件:
交互性图形(Interaction diagrams),属于行为图形的子集合,强调系统模型中的资料流程:
UML并不限定UML要素型别非得是某图形上的型别。一般来说,每个UML要素大约会出现在图的所有型别。这种弹性在UML 2.0部分被限定。
为了要保持工程图的传统,在您的UML图上加注用途、约束、或意图永远无伤大雅。
UML 2为了符合模型驱动架构(Model Driven Architecture)的需求做了大幅度的修改除在图形基础上扩充及变化了部份的展现方式外,也增加了一些图形标准元件,比前一版多出了由循序图与互动图所混合而成的互动概图(Interaction Overview Diagram)、强调时间点的时序图(Timing Diagram)与合成结构图(Composite Structure Diagram),此外,在UML2中,UML1合作图转变为通讯图(Communication Diagram),且在循序图中也添加了互动框(Interaction Frame)的概念,还有增加一些运算子(如sd、loop、alt等)。同时,UML2支援模型驱动架构(MDA)倡议,提供稳定的基础架构,容许软件开发程序增添自动化作业。此外,MDA把大型的系统分解成几个元件模型,并与其他模型保持连结,使得UML更加精确。
概念
UML从来源中使用相当多的概念。下面仅列代表性的概念。
对于结构而言
对于行为而言
对于关系而言
其他概念
-
类图(Class Diagram)
-
构件图(Component diagram)
-
复合结构图(Composite structure diagram)
-
部署图(Deployment diagram)
-
物件图(Object diagram)
-
套件图(Package diagram)
UML应用程序
开源/自由软件
- ArgoUML,UML设计工具(主页)
- Dia,可绘制流程图以及包含UML在内的多种图形(主页 (页面存档备份,存于互联网档案馆))
- Draw.io,在线流程图绘制工具,提供各种图形模板 (主页 (页面存档备份,存于互联网档案馆))
- GitMind,可线上绘制心智图及流程图包括UML,泳道图等各种图 (主页 (页面存档备份,存于互联网档案馆))
- Umbrello,强大而又界面友好的UML工具。是KDE的一部分。(主页 (页面存档备份,存于互联网档案馆))
- UMLet,用Java实现的UML简单绘图工具(主页 (页面存档备份,存于互联网档案馆))
- Unimodeler,Linux下支持9种UML图和向量打印的工具(homepage (页面存档备份,存于互联网档案馆))
- astah*,Java和UML开发者环境(主页 (页面存档备份,存于互联网档案馆))
- Jumli,用Java实现,支持C++/C#/Java以及解析/生成源代码(主页 (页面存档备份,存于互联网档案馆))
- omondo UML,Eclipse的UML插件,提供有限功能的免费版(需注册)和完整的商业版(主页 (页面存档备份,存于互联网档案馆))
- Poseidon for UML,专业UML工具,提供免费的社区版(Community Edition)。从开源项目ArgoUML而来。请参见(主页)。
- Violet是为学生、教师以及只需要快速创建简单UML的应用者而设计的工具。GPL授权(主页 (页面存档备份,存于互联网档案馆))
- SiSy, SimpleSystem
参见
参考文献
- ^ ISO/IEC 19501:2005 - Information technology - Open Distributed Processing - Unified Modeling Language (UML) Version 1.4.3. Iso.org. 2005-04-01 [2015-05-07]. (原始内容存档于2016-06-10).
- ^ ISO/IEC 19505-1:2012 - Information technology - Object Management Group Unified Modeling Language (OMG UML) - Part 1: Infrastructure. Iso.org. 2012-04-20 [2014-04-10]. (原始内容存档于2016-06-10).
- ^ Baltes, Sebastian; Diehl, Stephan. Sketches and diagrams in practice. Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering. FSE 2014 (Hong Kong, China: Association for Computing Machinery). 2014-11-11: 530–541. ISBN 978-1-4503-3056-5. S2CID 2436333. arXiv:1706.09172 . doi:10.1145/2635868.2635891.
外部链接
- 官方网站
- Unified Modeling Language at FOLDOC
- Message board for UML
- A free UML tutorial (页面存档备份,存于互联网档案馆)
- UML Jokes
- Article Precise Use Cases (页面存档备份,存于互联网档案馆) from Methods & Tools (页面存档备份,存于互联网档案馆)
- Article Database modeling in UML (页面存档备份,存于互联网档案馆) from Methods & Tools (页面存档备份,存于互联网档案馆)