- 用例图用于描述了系统提供的系列功能,而每个用例则代表系统的一个功能模块。用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的需求功能,用例图对系统的实现不做任何说明,仅仅是系统功能的描述。
- 用例图主要在需求分析阶段使用,用于与客户交流,保证系统需求的无二性,用例图表示系统外观,不要指望用例图和系统内部的各个类之间有任何联系。不要把用例做得过多,过多的用例将导致难以阅读,难以理解;尽可能多地使用文字说明。
- 用例图包括:用例(用一个椭圆表示,用例的名称放在椭圆的中心或椭圆下面)、角色(与系统交互的其它实体,以一个人形符号表示)、角色和用例的关系(以简单的线段表示)、以及系统内部的用例关系。
最常用的UML静态图
最常用的UML静态图包括:用例图,类图,组件图,部署图。
一 用例图
1 用例图介绍
2 用例图示例
3 用例图解释
该图是一个简单的BBS系统的部分用例示意图,用例图通常用于表达系统或系统范畴的高级功能。从图可以很容易的看出:这个系统允许注册用户登录,发帖和回复,其中发帖和回复需要依赖于登录;允许管理员删除其他人的帖子,删帖也需要依赖登录。
二 类图
1 类图介绍
类图是最古老、功能最丰富,使用最广泛的UML图,类图表示系统中应该包含哪些实体,各实体之间如何关联;换句话说,它显示了系统的静态结构,类图可用于表示逻辑类,逻辑类通常就是业务人员所谈及的事物种类。
类图除了可以表示实体的静态内部结构之外,还可以表示实体之间的相互关系,类之间有三种基本关系:
- 关联(包括聚合,组合)
- 泛化(与继承同一个概念)
- 依赖(是一种使用关系)
2 类图之关联关系示例
图中描述Teacher和Student之间的关联关系:它们是双向关联关系,而且使用了多重性来表示Teacher和Student之间是1:N的关系关系(1..*表示1个到多个的关系),即一个Teacher实体可以有1个或多个关联的Student实体;Student和BasketBallClub存在聚合关系,即1个或多个Student可以聚合成一个BasketBallClub实体,而Leg(腿)和Student之间存在组合关系,2个Arm实体组合成一个Student实体。
3 类图之泛化关系示例
泛化和继承都是同一概念,都是指子类都是一种特殊的父类,类与类之间的继承关系非常普遍,继承关系使用带空心三角形的实线表示,图中显示了Person类和Student类之间的继承关系。
4 类图之依赖关系示例
上图表示两个类A和B,他们之间具有《use》依赖。下列任何一张情况都产生这种依赖。
- 类A的操作需要类B的参数。
- 类A的操作返回类B的值。
- 类A的操作在实现中使用了类B的对象,但不是作为属性来使用。
三 组件图
1 组件图介绍
对于现代的大型应用程序而言,通常不只是单独一个类或单独一组类所能完成的,通常会由一个或多个可部署的组件组成。对Java程序而言,可复用的组件通常打包成一个JAR、WAR等文;对C/C++应用而言,可复用的组件通常是一个函数库,或者一个DLL(动态链接库)文件。
组件图提供系统的物理视图。它的用途是显示系统中的软件对其他软件组件(例如,库函数)的依赖关系。组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次上显示。
2 组件图示例
3 组件图解释
本系统绘制了电子购物平台的几个核心组件,其中Order组件提供OrderQuery接口,该接口允许Dispatch组件查询系统中的订单状态,Order组件又依赖于Customer组件的CustomerLookup接口,通过该接口查询系统中的顾客信息,Order组件也需要依赖于Inventory组件的ProductQuery接口,通过该接口查询系统中的产品信息。
四 部署图
1 部署图介绍
部署图用于描述软件系统如何部署到硬件环境中。它的用途是显示软件系统不同的组件将在何处物理地运行,以及它们将如何彼此通信。
因为部署图是对物理运行情况进行建模,所以系统的生产人员就可以很好地利用这种图来安装、部署软件系统。
2 部署图示例
3 部署图解释
整个应用分为5个组件:Student、Administrator、应用持久层、Student数据库和UI界面组件,部署图准确地表现了各组件之间的关系。除此之外,部署图的重点在物理节点上,上面的部署图需要部署在4个物理节点上,其中普通客户端无须部署任何组件,直接使用客户端浏览器即可:管理者客户机上需要部署UI界面;应用服务器上需要部署Student、Administrator和应用持久层三个组件;而数据库服务器上需要部署Student数据库。