10.4.4建立活动图
活动具体表现为由一系列动作组成的执行过程,将各种活动及不同活动之间的转换,用图形进行表示就构成了活动图,作用是对系统的行为建模
1、活动图与流程图
活动图描述系统使用的活动,判定点和分支、活动图本质是一种流程图借鉴了工作流建模,Petri网等领域的相关概念,其表达能力比流程图更强、应用范围也更宽。
活动图与流程图的区别:不能将两个概念混淆,首先流程图着重描述处理过程,它的主要控制结构是顺序、选择和循环各个处理过程之间有严格的顺序和时间关系,活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为而非系统处理过程。活动图能够表示并发活动的情形,而流程图不能。活动图是面向对象的、而流程图是面向过程的。
2、活动图与状态图
活动图和状态图都是状态机的表现形式,两者有本质区别:活动图着重表现从一个活动到另一个活动的流程,主要由外部事件的参与。
3、活动图的组成及UML图形表示
活动图的UML图形表示中,如果一个活动引发下一个活动两个活动的图标之间带箭头的直线连接,有起点和终点,还包括分支与合并,分叉与汇合等模型元素,分支与合并的图标和状态图中判定的图标相同,分叉和汇合则用一条加粗的线段表示,活动图的示例描述参见图10.19
UML的活动图中包含的图形元素有:动作状态、活动状态、动作流分支与合并,分叉与汇合、分区和对象流等。
动作状态:是指执行原子的,不可中断的动作,并在此动作完成后通过玩转换向另一个状态,在UML中动作状态使用平滑的圆角矩形表示,所表示的动作写在圆角矩形内部、动作状态有如下特点。
(1)是原子的,它是构造活动图的最小单位,无法分解更小的部分
(2)是不可中断的 一直运行到结束
(3)是瞬时的行为,所占用的处理时间极短。
(4)可以由转换,如转换即可以是动作流,也可以是对象流,动作状态至少有一条出转换这条转换可以内部动作的完成为起点,与外部事件无关。
(5)和状态图中的状态不同,它不能有入口动作、出口动作更不能有内部转移。
(6)在一张活动图中,动作状态允许多出出现。
活动状态:用于表达状态机中的非原子的运行图标识平滑的圆角矩形(和动作、状态图标一样)活动状态可以在图标中给出入口动作信息。
活动状态的特点如下:
(1)可以分解成其他于活动或动作状态,由于它是一组不可中断的动作或操作的组合,所以可以被中断
(2)活动状态的内部活动可以用另外一个活动图表示
(3)可以由入出口动作,也可以由内部转移。
(4)动作状态是活动状态的一个特例,如果某个活动状态值包括一个动作,那么它就是一个动作的状态。
动作流:所有动作状态之间的转换称之为动作流。
分支与合并:条件行为用分支和合并表达,一般用于表示对象类所具有的条件行为,活动图中的分支与合并示例参见图10.20
分叉与汇合:分叉和汇合都使用加粗的水平线端表示,分叉用于将动作流分为两个或者多个并发运行的分支,而汇合则用于同步这些并发分支以达到共同完成一项事物的目的,分叉可以用来描述并发线程,每个分叉可以由一个输入转换和两个或多个输出转换,每个转换都可以是独立的控制流,汇合代表两个或多个并发控制流徒步发生,当所有的控制流都达到汇合点后控制才能继续往下进行,活动图的分叉与汇合参见示例图10.21
分区:区分将活动图中的活动划分为若干组,把每一组指定给负责这组活动的业务组织,即对象分区标识负责活动的对象范围,明确表示那些活动是由那些对象进行的,在包含区分的活动图中每个活动只能明确属于一个分区,分区可以用垂直或水平实线绘出活动图中。分区示例图参见10.22
对象流:是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响,在活动图中对象流用带有箭头的虚线表示,如果箭头从动作状态出发指向对象,则表示动作对对象施加了一定的影响,施加的影响包括创建、修改和撤销扥,如果箭头从对象指向动作状态,则表示该动作使用对象流所指向的对象,活动图中对象流示例图参见图10.23
对象流中对象的特点
(1)一个对象可以由多个动作操作
(2)一个动作输出的对象,可以作为另个动作输入的对象
(3)在活动图中,同一个对象可以多次出现,它的每一次出现表明该对象正处于对象生存周期的不同时间点。
4、活动的分解
一个活动可以分为若干个动作或子活动,这些动作和子活动本身又可以组成一个活动图,不含内在嵌活动或动作的活动称为简单活动,嵌套了若干活动或动作的活动称之为组合活动,组合活动有自己的名字和相应的子动图,示例图参见图10.24
5、活动图建模技术与步骤如下
(1) 识别要对工作流描述的类或对象,找出负责工作流实现的业务对象,目的是为每一个重要的业务对象建立分区(泳道)
(2)确定工作流的初始状态和终止状态,明确工作流的边界。
(3)对工作状态或活动状态建模
(4)对动作流建模,建模时可以首先处理顺序动作,接着处理分支与合并等条件行为,然后处理分叉与汇合等并发行为。
(5)对对象流建模:找出与工作流相关的主要对象,并将其连接到相应的动作状态和活动状态。
(6)对建立的模型进行精化和细化
10.5建立物理实现模型
构架图:用来建模系统的各个构件及其关系,这些构件通过功能或者文件组织在一起,使用构架图可以帮助读者了解某个功能位于软件包的哪一位置,以及包含那些功能等。
部署图:用来帮助读者了解软件中的各个构件驻留在什么硬件位置,以及这些硬件之间的交互关系。
构架图和部署图统称为:实现图,是面向对象系统的物理方面建模的图。
10.5.1建立构件图
1、构件:是一个相对独立的可以装配的物理块,一般作为一个独立的文件存在,具有接口、构件互相之间可以调用,构件之间存在依赖关系,构件定义了一个系统的功能,一个构件是一个或多个类的实现。
构件和类非常相似,都有名称、都可以实现一组接口,都可以参与依赖关系,都可以被嵌套,都有实例,都可以额参与交互。但两者又有所不同,类是逻辑抽象,构件是物理抽象,即构件可以位于结点上,构件是对其他逻辑元素,如类、协作的物理实现,构件是软件系统的一个物理单元,通常只有操作,而是这些操作只能通过构件的接口才能使用。在UML中构件通过左部带有两个小矩形的大矩形来表示,如图10.25所示
2、构件的接口
构件定义的操作的访问只能通过构件的接口进行,也就是说一个构件可以访问另一个构件所提供的服务,这样提供服务的构件呈现一个提供服务的接口,访问服务的构件使用所需的接口。
接口和构件之间的关系分为两种:实现关系和依赖关系,如10.26所示
简略图中:接口和构件之间用实线连接表示实现关系;而接口和构件之间用虚线箭头连接则表示依赖关系 ,箭头从依赖的对象指向被依赖的对象。
4、构架图
是描述构件及其相互关系的图,构件之间是依赖关系,构件图包含3种元素:构件、接口和依赖关系,每个构件实现一些接口并使用另一些接口。
(1)源代码文件建模(构件图)
有助于可视化源代码文件之间的编译依赖关系
策略
①识别出感兴趣的相关源代码文件集合,把它们表示成(file)的
②对于较大的系统,利用包对源代码文件进行分组。
③如有必要,可以为构件添加相应的标记值
④用依赖关系对这些文件之间的编译依赖关系建模
(2)可执行文件和库建模
对构成系统的实现构件建模,如果系统由若干个可执行程序和相关对象库构成,最后文档化,图10.28所示的是可执行文件和构件库建模示意图
10.29所示的是一个C程序的组成构件图示例如下
策略
①识别所有建模的构件集合,一般是一个结点行的部分或全部构件
②为构件选择合适的构造型
③对每一个构件考虑与相领构件之间的关系,通常涉及接口
(3) 表、文件和文档建模
对系统中附属实现构件,如数据文件、帮助文件、脚本、日志文件等进行建模,图10.30所示是关于表、文件和文档建模的构件图
①识别出作为系统的物理实现部分的附属构件
②将这些事物建模为构件
③对这些附属构件与其他可执行程序、库及接口之间的关系建模
10.5.2建立部署图
部署图也称配置图,实施图、用例描述系统中计算结点的拓扑结构和通信路径与结点上运行的软件构件等,部署图由结点和结点的类关联组成,描述运行软件的系统中硬件和软件的物理结构,一般一个系统仅用一个部署图。
1、部署图的要素
(1) 结点(Node)表示独立计算资源的物理设备,通常拥有一些内存,并具有一定的处理能力,可以分为处理机和设备两类,处理机是能够执行软件,具有计算能力的结点,包括主机、服务器、客户机等,设备是没有计算能力的结点,通常情况下是通过其接口为外部提供某种服务(如打印机、传感器、终端等)在UML中结点用立方体来表示。
结点与构件相比:两者都有名称、关系、实例、可以被嵌套、参与交互,不同点是:构件是参与系统执行的事物,而结点是执行构件的事物;构件表示逻辑的物理包等,而结点表示构件的物理配置。
(2)连接
表示两个结点之间的物理连接关系,用直线表示,在连接上可以加多重性、角色、约束等。代表一种交流的机制,可以是物理媒介或软件协议,部署图可以是显示结点及它们之间的必要连接。
2、如何开发部署模型
部署模型通常与构件模型并行开发,为了开发部署模型可以迭代使用以下步骤。
(1)确定模型范围
(2)确定分布结构
(3)确定结点和它们的连接
(4)把构件分布到结点
(5)为了不同构件之间的依赖建模
3、几种部署图建模方法
(1)构件的分布建模
①将系统中的每个有意义的构件部署到一个给定的结点上。
②如有必要,可以将同一个构件同时放在多个不同的结点上。
③构件在结点上的部署,可以参考(例10.2)
(2)嵌入式系统建模
①识别嵌入式系统中的设备和结点
②使用构造型结点对处理器和设备建模
③在部署图中对处理器和设备间的关系进行建模
④必要时,可以把身边展开,用更详细的部署图对它的结构进行建模,参考图10.26所例。
(3) 客户机/服务器建模
①识别代表客户机和服务器的结点
②标识出于系统行为有密切关系的设备
③利用构造型为处理器和设备提供可视化表示
④在部署图中为这些结点的拓扑结构建模
本章小结
面向对象的分析就是抽取和整理用户需求,并建立问题领域精确模型的过程。分析工作主要包括3项内容:理解、表达和验证。与传统的面向数据流的结构化方法以功能为导向的分析不同,免息对象的分析以对象类作为分析的基础,借助于面向对象方法进行需求分析,构建的是面向类的模型。一般地,可以通过对象模型、用例(功能)模型、动态(行为)模型和物理实现模型来表达分析结果。本章以面向对象的概念为基础,介绍了4种模型(对象、用例、动态行为、物理实现模型)为基础进行建模的基本方法和注意事项,为面向对象软件的分析过程提供指导。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)