第8章活动图8.1活动图ActivityDiagram用于描述活动流程的图形称为活动图和结构化方法中的工具-程序流程图-作用基本一致。是一种特殊的状态图。与状态图的区别活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程;状态图着重描述从一个状态到另一个状态的流程,主要有外部事件的参与。8.1活动图活动图可以用作以下目的:描述一个操作执行过程中所完成的工作(动作),这是活动图最常见的用途。描述对象内部的工作。显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。显示用例的实例如何执行动作以及如何改变对象状态。说明一次业务流程中的人(参与者)和对象是如何工作的。存款8.1.1基本概念动作状态活动状态转换分支--分叉和汇合同步泳道对象流1.状态State状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。活动图中的状态包括动作状态和活动状态。动作状态对象的动作状态是活动图中最小单位的构造块,表示原子动作。动作状态有三个特性:原子性;不可中断性:瞬时性:活动状态表示的是可以分割的动作特点是:它可以被分解成若干活动状态或动作状态,它能够被中断,占有有限的时间。活动状态可以理解为一个组合,它的控制流由其他活动状态或动作状态组成。动作状态和活动状态使用带圆端的方框表示活动图中也有初态和终态初态表示一个工作流程的开始,用实心圆点来表示终态表示了一个活动图的最后和终结状态,用实心圆点外加一个小圆圈来表示转换(transition)转换是两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态。分支(Branch)分支用于描述基于某个条件的可选择路径。一个分支可以有一个进入转换和两个或多个输出转换在每条输出转换上都有监护条件表达式保护,当且仅当监护条件表达式为真时,该输出路径才有效。在所有输出转换中,其监护条件不能重叠,而且它们应该覆盖所有的可能性。分支在图形表示上用菱形表示分叉(fork)和汇合(join)在UML中使用分叉和汇合表示并行发生的事件流分叉表示把一个单独的控制流分成两个或多个并发的控制流。一个分叉可以有一个进入转移和两个或多个输出转移,每一个转移表示一个独立的控制流。汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。分叉和汇合在图形上都使用同步条来表示,同步条通常用一条粗的水平线表示示例:描述打电话活动中的并发事件摘机拨号说听挂机分叉汇合泳道(swimlane)“泳道”技术,是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。“泳道”技术来描述每个活动是由哪个对象负责完成UML中,每个组被称为一个泳道,用一条垂直的实线与邻居分开每个活动都明确属于一个泳道,不可以跨越泳道,而转移则可以跨越泳道用活动图描述客户在商店中购买物品的过程。对象流(objectstream)对象流是动作状态或活动状态与对象间的依赖关系。对象流可用于对下列关系建模:动作状态对对象的使用动作状态对对象的影响。在UML中,使用矩形表示对象,对象和动作之间使用带箭头的虚线连接,带箭头的虚线表示对象流。工具栏-customize…用活动图描述客户在商店中购买物品的过程。(使用对象流技术描述购物这个动态过程中系统内对象的状态变化)8.2活动图建模活动图的建模技术活动图用于对系统的动态行为建模,在对一个系统建模时,通常有两种使用活动图的方式:为工作流建模为对象的操作建模使用活动图对系统建模的步骤确定活动图所关注的业务流程。确定该业务流程中的业务对象。确定该工作流的起始状态和终止状态。从该工作流的起始状态开始,说明随着时间发生的动作和活动,并在活动图中把它们表示成活动状态或动作状态。将复杂的动作,或多次出现的动作集合归并到一个活动状态,并对每个这样的活动状态提供一个可展开的单独的活动图。找出连接这些活动和动作状态的转移。如果工作流中涉及重要的对象,则也把它们加入到活动图中。实例新增读者用例属于读者信息管理中的一个功能,主要用于在系统中增加新的读者信息,其具体的办理流程是:(1)读者填写申请表,并交给图书管理员;(2)图书管理员将申请表中的信息通过录入界面,输入到图书管理系统;(3)系统中的业务逻辑组件将判断输入的信息是否合法;(4)如果不合法则转入步骤(5),否则转入步骤(6);(5)显示添加错误信息,转到(8);(6)在“数据库”添加相信的用户信息;(7)显示添加成功信息;(8)结束。餐馆就餐活动的并发事件活动图的创建示例:用户购物活动图活动图创建案例——电子商城用户购物活动图1.标识活动图的用例用户购物活动中要涉及多个用例,完成工作流的主要对象是购物用户。活动图的创建示例:用户购物活动图活动图创建案例——电子商城用户购物活动图2.建模用例的路径用户登录,首先选择要查看商品信息,…,最后退出系统。活动图的创建示例:用户购物活动图活动图创建案例——电子商城用户购物活动图3.创建活动图在创建活动图的过程中,需要注意如下问题:考虑用例其他可能的工作流情况,如执行过程中可能出现的错误或是可能执行其他活动。使用泳道细化活动图。按照时间顺序自上而下的排列泳道内的动作或者状态。使用并发时,不要漏掉任何的分支,尤其是当分支比较多的时候。活动图的创建示例:教师查看、修改学生信息活动图创建案例——教师管理学生信息活动图1.标识活动图的用例对于“教师查看、修改学生信息”来说,它的参与者是教师,教师在查看、修改学生信息的活动中有以下3个用例:登录;查询学生信息;修改学生信息。活动图的创建示例活动图创建案例——教师管理学生信息活动图2.建模用例的路径教师登录后,首先选择要查看哪位同学的信息,查看之后修改该学生的信息,修改完成后保存修改过的信息,最后退出系统。活动图创建案例——教师管理学生信息活动图3.创建活动图在创建活动图的过程中,需要注意如下问题:考虑用例其他可能的工作流情况,如执行过程中可能出现的错误或是可能执行其他活动。使用泳道细化活动图。按照时间顺序自上而下的排列泳道内的动作或者状态。使用并发时,不要漏掉任何的分支,尤其是当分支比较多的时候。练习1、远程网络教学系统中学生登录后可下载课件,登录时系统需要验证登录信息,如果验证通过系统会显示所有的可选服务,如验证失败则登录失败,然后退出用户看到可选服务时可选择下载服务,然后下载需要的课件.下载完成后用户退出系统.系统会注销相应的用户信息.画出学生下载课件的活动图.验证登录信息显示所有服务注销账户验证通过验证未通过登录失败登录选择下载服务下载课件退出系统学生系统练习2、远程网络教学系统中,管理员登录后可处理注册申请或审核课件.在处理注册申请后需要发送邮件通知用户处理的结果;审核完课件后需要更新页面信息以保证用户看到最新的课件,同时系统更新页面完成以上工作后管理员退出系统,系统则注销管理员帐户,画出管理员的工作活动图.处理注册申请审核课件更新页面信息邮件通知结果退出系统更新页面注销账户登录管理员系统课堂作业:画出ATM自动取款机“取款”用例的活动图事件路径:1.用户选择取款2.系统要求输入取款金额3.用户输入取款金额4.系统验证取款金额4a余额不足4a1系统显示余额不足4a2用例终止5.系统出款6.系统询问是否打印凭条7.用户选择不打印凭条8.系统显示取款成功小结活动图是UML中用于对系统的动态方面建模的五种图中的一种,一张活动图从本质上说是一个流程图,显示从活动到活动的控制流多数情况下,活动图用于对业务过程中顺序和并发的工作流程进行建模。活动图中的基本要素包括状态、转移、分支、分叉和汇合、泳道、对象流。状态是指在对象的生命周期中满足某些条件、执行某些活动或等待某些事件时的一个条件或状况。活动图中的状态包括动作状态和活动状态。对象的动作状态是活动图中最小单位的构造块,表示原子动作。具有原子性、不可中断性和瞬时性。活动状态表示的是可以分割的动作。活动图中还有一类特殊的状态,用于表示活动的开始和结束,分别称为起始状态(startstate)和终止状态(endstate)。转移表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后继状态。分支用于描述基于某个条件的可选择路径。分叉表示把一个单独的控制流分成两个或多个并发的控制流。汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。“泳道”技术,是将一个活动图中的活动状态进行分组。用活动图描述某个对象时,可以把所涉及的对象放置在活动图上,并用一个依赖将这些对象连接到对它们进行创建、撤销和修改的活动转移上。这种包括依赖关系和对象的应用被称为对象流。第9章组件图和部署图9.1组件图(ComponentDiagram)组件图是对面向对象系统的物理方面建模时使用的两种图之一(另一种图是部署图),用于描述软件组件以及组件之间的组织和依赖关系。9.1组件图组件图有利于:帮助客户理解最终的系统结构。使开发工作有一个明确的目标。复用软件组件。帮助开发组的其他人员理解系统。例如,编写文档和相关帮助的人员不直接参与系统的分析和设计,然而他们对系统的理解直接影响到系统文档的质量,而组件图是帮助他们理解系统的有力工具。9.1.1组件图元素构成组件图的元素包括:组件(component)接口(interface)关系(relationship)还可以包括包(package)和子系统(subsystem)它们有助于将系统中的模型元素组织成更大的组块。9.1.1组件图1.组件(Component)组件是定义了良好接口且提供实现的一个物理部件是指类的物理实现,表示将类、接口等逻辑元素打包而形成的物理模块。它具有很广泛的定义,以下的一些内容都可以被认为是组件:程序源代码、子系统、动态链接库等。组件的图形表示法是把组件画成嵌套了两个小矩形标签的大矩形。title.java9.1.1组件图组件在许多方面都与类相同:二者都有名称;都可以实现一组接口;都可以参与依赖、泛化和关联关系;都可以被嵌套;都可以有实例;都可以参与交互。组件和类之间也有一些显著的差别:类表示逻辑抽象,而组件表示存在于计算机中的物理抽象。组件表示的是物理模块而不是逻辑模块,与类处于不同的抽象级别。类可以直接拥有属性和操作;而一般情况下,组件仅拥有只能通过其接口访问的操作。9.1.1组件图组件可以分为以下三种类型:部署组件(DeploymentComponent)如dll文件、exe文件等.工作产品组件(WorkProductComponent)源代码文件、数据文件等,用来产生部署组件执行组件(ExecutionComponent)系统执行后产生的组件。如ejb、com+对象、corba对象等9.1.1组件图2.接口(Interface)接口是一组用于描述类或组件的某个服务的操作,它是一个被命名的操作的集合,与类不同,它不描述任何结构(因此不包含任何属性),也不描述任何实现(因此不包括任何实现操作的方法)。9.1.1组件图组件的接口可以分为两种类型:导出接口(expertinterface):即为其他组件提供服务的接口,一个组件可以有多个导出接口。导入接口(importinterface):在组件中所用到的其他组件所提供的接口,称为导入接口,一个组件可以使用多个导入接口。9.1.1组件图3.关系(relationship)关系是事物之间的联系,在面向对象的建模中,最重要的关系是依赖、泛化、关联和实现,但组件图中使用最多的是依赖和实现关系。组件图中的依赖关系使用虚线箭头表示,如图所示。9.1.1组件图实现关系使用实线表示。实现关系多用于组件和