申明:以下内容均来自网络,由于出处较多,不一一标注,在此一并感谢。
1、用例图:
用例图是需求分析的产物,描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图。
用例图的元素
用例图有四部分组成:用例(Use Case)、参与者(Actor)、系统边界、关联
参与者
在一个系统开发前,我们必定首先要确定系统的用户,系统的用户就是系统的参与者。系统的参与者可分为两类,一类是人,包括系统的使用者、维护者等,另外一类是其他系统。
用例
用例(Use Case)是参与者(Actor)可以感受到的系统服务或功能单元。
任何用例都不能在缺少参与者的情况下独立存在。同样,任何参与者也必须要有与之关联的用例,所以识别用例的最好方法就是从分析系统参与者开始,在这个过程中往往会发现新的参与者。
用例是有粒度的,用例的粒度指的是用例所包含的系统服务或功能单元的多少。用例的粒度越大,用例包含的功能越多,反之则包含的功能越少。
系统边界
所谓系统边界是指系统与系统之间的界限。把系统边界以外的同系统相关联的其他部分称之为系统环境。
关联
为了减少模型维护的工作量、保证用例模型的可维护性和一致性,可以在用例之间抽象出包含(Include)、扩展(Extend)和泛化(Generalization)这几种关系
包含关系: 是指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。
扩展关系: 是指在一定条件下,把新的行为加入到已有的用例中,获得的新用例称为扩展用例(Extension),原有的用例称为基础用例(Base)。
泛化关系: 是指一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。
示例
2、类图
类图(Class diagram)主要用于描述系统的结构化设计。用类图可以显示出类、接口以及它们之间的静态结构和关系。
类图的元素
在类图中一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)、依赖(Dependency)关系、泛化(Generalization)关系、关联(Association)关系、聚合关系(Aggregation)、组合关系(Composition)和实现(Realization)关系。
类(Class)
在面向对象(OO) 编程中,类是对现实世界中一组具有相同特征的物体的抽象。
接口(Interface)
接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在UML中,接口使用一个带有名称的小圆圈来进行表示。
依赖(Dependency)关系
依赖关系是指两个或多个类之间的依存关系,如植物类依赖于土壤类。 依赖关系还可以再细分为5种类型,分别是绑定(Binding)依赖、实现(Realization)依赖、使用(Usage)依赖、抽象(Abstraction)依赖和授权(Permission)依赖。
依赖关系用虚线箭头来表示,箭头指向为依赖的方向。
泛化(Generalization)关系
简单的讲就是类之间的继承关系。在UML中,泛化关系用空心三角形+实线来表示,箭头指向为父类。
聚合(Association)关系
聚合关系是类之间的一种较弱的耦合关系,如一个字符串数组和一个字符串就是一种聚合关系。在UML中类图中,聚合关系用空心的菱形+实线箭头来表示,箭头指向为被聚合的类。
组合(Aggregation)关系
组合关系是类之间一种整体与部分之间的关系,如一只青蛙有四条腿,青蛙类与青蛙腿类之间的关系就是组合关系。在UML类图中,组合关系用实心的菱形+实线箭头来表示,箭头指向为被组合的类。
关联(Composition)关系
关联关系是类之间一种相互影响的关系,影响的方向就是关联的方向。在UML类图中,组合关系用实线箭头来表示。
实现(Realization)关系
一般来讲实现关系是针对类与接口之间的关系而言的。在UML类图中,实现关系用空心三角形+虚线来表示。
示例
3、序列图(时序图、交互图、顺序图)
序列图是对对象之间传送消息的时间顺序的可视化表示。序列图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。
序列图的元素
序列图(Sequence Diagram)是由对象(Object)、生命线(Lifeline)、激活(Activation)、消息(Messages)、分支与从属流等元素构成的。
对象
对象就是指类的实例。我认为在序列图中对象有三种状态:激活、运行(存在)和销毁。
生命线
生命线(Lifeline)是一条垂直的虚线,用来表示序列图中的对象在一段时间内的存在。见上图。
激活
序列图可以描述对象的激活(Activation),激活是对象操作的执行,它表示一个对象直接或通过从属操作完成操作的过程。在UML图中通过一个窄长的矩形来表示,矩形的高度表示对象存在的过程。
消息
消息(Messages)是对象间的一种通信机制。由发送对象向另一个或其他几个接收对象发送信号,或由一个对象(发送者或调用者)调用另一个对象(接收者)的操作。
在UML中消息分为5类:递归调用、普通操作、返回消息、异步调用的消息、过程调用的消息。
分支与从属流
在UML中存在两种方式可以来修改序列图中消息的控制流,分别是:分支和从属流。
分支是指从同一点发出的多个消息并指向不同的对象,根据条件是否互斥,可以有条件和并行两种结构。
从属流指的是从同一点发出多个消息指向同一个对象的不同生命线。
示例
4、状态图
状态图主要用于描述对象具有的各种状态、状态之间的转换过程以及触发状态转换的各种事件和条件。
状态图的元素
状态
主要用于描述一个对象在生命周期内的一个时间段。状态图中的状态包括状态名、内部活动、内部转换、入口和出口动作等部分。
转换
转换是指状态之间在某种事件或条件的驱动下的切换的过程。转换分为外部转换、内部转换、完成转换、复合转换等。如下图:
判定
判定用来表示一个事件依据不同的监护条件有不同的影响。在实际建模的过程中,如果遇到需要使用判定的情况,通常用监护条件来覆盖每种可能,使得一个事件的发生能保证触发一个转换。
同步
同步是为了说明并发工作流的分支与汇合。状态图和活动图中都可能用到同步。
示例
5、活动图
活动图是一种用于描述系统行为的模型视图,它可用来描述动作和动作导致对象状态改变的结果,而不用考虑引发状态改变的事件。
活动图的元素
示例
6、组件图
组件图用来建模软件的组件及其相互之间的关系。这些图由组件和组件之间的关系构成。
组成元素
组件
组件(构件)是系统中可替换的代码模块。
依赖关系
依赖关系演示两个组件之间的依赖特性。依赖关系使用在一端带有开放箭头的短划线表示。箭头从依赖的对象指向被依赖的对象。例如下图所示
包含组件
一个组件可以包含在其他的组件中。其标记符可在其他组件中建模组件来表示。
下例演示了Inventory组件由3个独立的组件DataAccess,Business Logic和Userinterface组成,如下图所示。
示例
7、部署图
部署图描述的是系统运行时的结构,展示了硬件的配置及其软件如何部署到网络结构中。一个系统模型只有一个部署图,部署图通常用来帮助理解分布式系统。
部署图元素
结点(Node)
结点是存在与运行时的代表计算机资源的物理元素,可以是硬件也可以是运行其上的软件系统,比如64主机、Windows server 2008操作系统、防火墙等。结点用三维盒装表示,如下图:
结点实例(Node Instance)
与结点的区别在于名称有下划线和结点类型前面有冒号,冒号前面可以有示例名称也可以没有示例名称,如下图
结点类型(Node Stereotypes)
结点类型有:«cdrom», «cd-rom», «computer», «disk array», «pc», «pc client», «pc server», «secure», «server», «storage», «unix server», «user pc»,并在结点的右上角用不同的图标表示,如下图
物件(Artifact)
物件是软件开发过程中的产物,包括过程模型(比如用例图、设计图等等)、源代码、可执行程序、设计文档、测试报告、需求原型、用户手册等等。物件表示如下,带有关键字«artifact»和文档图标
连接(Association)
结点之间的连线表示系统之间进行交互的通信路径,这个通信路径称为连接(Association),如下图所示,连接中有网络协议。
结点容器(Node as Container)
一个结点可以包括其他的结点,比如组件或者物件,则称此结点为结点容器(Node as Container)。如下图所示,结点(Node)包容了物件(Artifact)。
示例