UML用例图 – UML Use Case Diagram
1 前言
在建筑行业中,不管是高达百层的摩天大楼,还是仅有两层的乡间小屋,在施工之前都得进行设计。像地基要挖多深、采用什么样的主体框架、能承受多大的重量、客厅和卧室怎么连通、厨房的排烟管要安置在什么位置等等。建筑行业先设计再施工已然成为了标准模式,哪怕是搭建一个公园的厕所,要是没有设计图纸,那简直难以想象,工人们也会不知道该从何处着手。
反观软件行业,和传统的建筑设计相比,差距可不是一星半点。就拿我自身的从业经历来说,在二十多年里,从十几人的创业公司到上万人的上市公司,真正把软件设计规划做好的情况少之又少。主要的原因在于管理决策者们很难提前意识到软件架构设计的重要性,而且在中国,一部分开发人员好不容易积累了项目经验刚具备设计能力,可35岁的年龄门槛就到了,被迫转去了其他岗位……
建筑设计有着上千年的历史,而软件诞生至今不过几十年,虽然软件设计的思想、方法和工具无法与建筑领域历经千年沉淀的相比,但在软件设计里,UML无疑是最为璀璨的存在。
我们知道图形的表达能力远胜于文字,在软件设计中,UML是图形表达的唯一通用标准,这意味着像Python与C++开发者这样使用不同技术的人之间,以及产品与开发、开发与测试等不同软件岗位的人之间,UML都是大家通用的沟通语言,并且是以图形化的方式传递信息。
用例图是UML中比较简单且使用频率很高的图之一,它通常用来阐释“这个软件具体实现了哪些功能”。用例图的表达十分简洁易懂,不管是研发人员、产品人员、测试人员,还是完全不懂软件的外行,基本都能看懂用例图。
2 UML用例图中的元素
2.1 用例
用例呈椭圆形,能够用来表示功能、动作、行为、过程等内容。
2.2 参与者
参与者为人形图形,代表参与交互的角色,这些角色可以是人员、事物、外部系统等。
2.3 系统
系统也被称作系统边界,其中汇聚了一系列相关的功能,有助于明确系统的功能范围。
2.4 子系统
子系统用于在系统内划分出具有更细粒度功能的集合。
3 UML用例图中的关系
3.1 关联关系
关联表示两个元素之间会发生信息交互或者协作,关联具有方向性。
3.2 包含关系
包含体现的是整体与部分的关系,使用从整体指向部分的虚线来表示。
3.3 扩展关系
扩展意味着一个用例对另一个用例的行为进行增强。需要注意箭头方向是从扩展用例指向基用例,这也表明扩展用例处于主导地位,什么时候扩展以及如何扩展都由扩展用例决定。
3.4 泛化关系
泛化可看作是面向对象编程中的继承或实现关系,通常用于表示抽象与具体的关系。
3.5 依赖关系
依赖就是使用关系,是单方向的虚线。
<全文完>