UML(统一建模语言)是非专利的第三代建模和规约语言,是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

UML可用于计算机软件系统的分析和设计,在分析方面,主要提供了用例图;在设计方面,则提供了丰富的建模语言,如:活动图、时序图、状态图、类图。笔者认为,一般的信息管理系统(B/S)和应用软件(C/S)开发,只需要掌握这五种建模语言即可。当然,技不压身,如测试和运维阶段,还需要包图、组件图或部署图,掌握了只是锦上添花。

软件系统分析和设计是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件系统分析和设计会包括软件组件、组件之间的关系,组件特性以及组件间关系的特性。软件架构可以和建筑物的架构相比拟。软件系统分析和设计是构建计算机软件,开发系统以及计划进行的基础,可以列出开发团队需要完成的任务。

软件系统立项首先要进行可行性研究,只有通过了市场分析、技术分析、财务分析等,此篇文章才有意义。软件系统分析一般由产品经理和客户、用户进行沟通,只谈需求,不涉及技术上的问题。在产品的整个功能详情确定之后,UML用例图便派上用场,团队设计出用例图纸后,交由用户、客户确认后才生效。这个过程要进行反复的交涉、修改、再确认,只有最终敲定后,用例图才能传递给设计过程使用。

软件系统设计一般由项目经理牵头开展,通过用例图,项目经理和产品经理进行下一步规划。这时整个设计团队都需要讨论将用例图细化、精化、转化为活动图。活动图类似于面向过程的流程图,但其泳道却体现了面向对象设计的思想。

软件系统分析、设计与UML密切相关,且各建模语言有先后次序,先出炉用例图和活动图,然后依次为时序图(、状态图)和类图。时序图主要包括对象、消息和生命线,上面一排的矩形便是对象,消息一般为对象调用的方法,生命线代表对象存在的时间。因此,在对象存在时间里,每一次方法调用,都向另一个对象发送消息。返回结果由虚线反向指向表示。

状态图依据项目确定是否需要建模,每个场景只有一个开始状态,可有多个结束状态。事件触发状态的转移,在OA(办公自动化系统)的工作流模型中可使用状态图来清晰地表达设计思想。

类图是在后期确立的,有了上面几个图,可确立对象和对象的属性。有了时序图和状态图的调用和转移关系,可确立对象的方法和对象之间的关系

UML 详述

用例图

用例图是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。

参与者:角色,系统的用户;

系统边界:确定系统的范围,边界是一个方框,用例在边界内,参与者在边界外;

用例:系统提供的服务;

关联:参与者与用例间的关系。

用例描述

用例图没有描述系统行为的细节,所以需要以书面文档的形式对用例进行描述。至少包括:

名称:与用例图中的名称保持一致;

标识符:用例的代码或编号;

基本操作流程:描述各项工作都正常进行时用例的工作方式;

可选操作流程:很少使用、异常情况、发出错误的情况。

uml建模对于软件系统开发的作用(从UML统一建模语言)(1)

另外还能包括:用例概述、范围、参与者、前置条件、后置条件、子事件流、规则与约束等。

用例图中的各种关系

参与者与用例间的关联关系:参与者与用例之间的通信,也成为关联或通信关系。

用例与用例之间的关系:包含关系、扩展关系、泛化关系。

包含关系

包含关系描述的是一个用例需要某种功能,而该功能被另外一个用例定义,那么在用例的执行过程中,就可以调用已经定义好的用例。表示符号:<<include>>

uml建模对于软件系统开发的作用(从UML统一建模语言)(2)

uml建模对于软件系统开发的作用(从UML统一建模语言)(3)

扩展关系

用一个用例(可选)扩展另一个用例(基本例)的功能,将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。表示符号:<<extend>>。

uml建模对于软件系统开发的作用(从UML统一建模语言)(4)

泛化关系

子用例继承了父用例所有的结构、行为和关系,是父用例的一种特殊形式。

uml建模对于软件系统开发的作用(从UML统一建模语言)(5)

活动图

活动图是工作流的图形化表示。活动图主要由活动和动作构成,也可以支持分支选择、迭代、并行。在 UML 中,活动图主要用于为计算性和组织性过程(即工作流)建模,相关活动之间的数据流也在其覆盖范围之内。活动图主要是用来说明控制流,不过也可以显示数据在各数据储存之间的流动。

uml建模对于软件系统开发的作用(从UML统一建模语言)(6)

时序图

时序图,亦称为循序图、序列图,是一种UML行为图。描述对象在时间序列中的交叉作用。时序图会描绘在此情境下有关的对象,以及此对象和其他对象交换消息的顺序。时序图一般和待开发系统逻辑视图上,用例的实现有关。时序图有时也称为事件图或事件情境。

四大主要元素:

uml建模对于软件系统开发的作用(从UML统一建模语言)(7)

状态图

状态图有限状态自动机的图形表示。另一种可能的表示是状态转移表

uml建模对于软件系统开发的作用(从UML统一建模语言)(8)

uml建模对于软件系统开发的作用(从UML统一建模语言)(9)

类图

类图是软件工程的统一建模语言一种静态结构图,该图描述了系统的类集合,类的属性和类之间的关系。

uml建模对于软件系统开发的作用(从UML统一建模语言)(10)

Public

-Private

#Protection (对子类可见)

~Package (对包内其它成员可见)

类之间关系:

泛化、实现、依赖、关联、聚合、组合

很多软件开发团队都使用UML来进行产品、项目的分析和设计。当然,不同环境、不同条件使用的方法和模式不同。毋庸置疑的是,UML已成为软件行业的一个标准,很大程度上提升了软件团队的开发速度,规范了开发流程,也防范了软件危机。不论是开发什么软件系统,不论是使用哪种开发模型,UML都指引着团队循序渐进地向前推动,最终高效、高质量、安全可控地完成系统。

参考文献:

1. https://zh.wikipedia.org/zh/统一建模语言

2. https://zh.m.wikipedia.org/zh/软件架构

3. https://zh.m.wikipedia.org/zh-hans/用例图

4. https://www.jianshu.com/p/3cde67aed8e9

5. https://zh.m.wikipedia.org/zh-hans/活动图

6. https://zh.m.wikipedia.org/zh-hans/状态图

7. https://wiki.kfd.me/zh-cn/類別圖

8. https://blog.csdn.net/sinat_39809957/article/details/124856191

文章来源 | 微信公众号“计算机软件技术研究中心” 朱阿雄

,