首页 理论教育软件需求工程中的UML视图

软件需求工程中的UML视图

【摘要】:UML核心元素讲述了方法论中需要用到的一些关键概念,在业务建模以及系统建模阶段都有所涉及。接下来讨论这两种UML图形的组成以及在方法论中的应用情况。在UML中一般使用带圆端的矩形框表示。在UML一般使用带箭头的直线表示,线上可以添加条件。在UML中使用菱形表示分支。分叉和汇合在图形上都使用同步条来表达,在UML中一般使用一条粗水平线表示。在UML中泳道一般用垂直实线来表示,垂直线分割出的区域就是泳道。

UML核心元素讲述了方法论中需要用到的一些关键概念,在业务建模以及系统建模阶段都有所涉及。接下来本节将重点介绍在方法论中用到的两大图形:用例图和活动图(泳道图)。接下来讨论这两种UML图形的组成以及在方法论中的应用情况。

1.用例图

用例图展现了一组用例、参与者(actor)以及它们之间的关系,我们已经讨论过它的主要组成元素,相信大家对它们的使用不会存在很大的疑问。用例图从用户角度描述系统的静态使用情况,主要用于建立需求模型。用例图描述了用户希望如何使用一个系统,通过用例图可以知道谁将是系统的相关用户,他们希望系统提供什么样的服务,以及他们需要为系统提供什么样的服务。

用例图从用户的角度来描述对软件项目的需求,分析项目需要的功能和动态行为,对于用户来讲,用例图是他们业务领域的逻辑化表达。用例图在系统的整个分析、设计和开发阶段都非常重要,对于项目的建设单位而言,用例图是系统蓝图和开发的依据,它的正确与否直接影响客户对最终实现的软件满意度。用例图的主要作用如下:

(1)用来描述将要开发系统的功能需求和系统的使用场景。

(2)作为设计和开发过程的基础,促进各阶段开发工作的进展。

(3)可以通过不同的视角,验证和确认需求的完整性。

(4)在方法论的实施过程中,我们将用例图细化为业务用例图和系统用例图。

业务用例图就是使用业务主角和业务用例展示业务建模结果的静态视图。业务用例图可以展示业务领域的业务目标,将参与达成业务目标的业务主角和业务用例展现在业务用例图中。我们可以从实现业务目标,完成完整业务的角度出发,检查完成某项业务的所有业务主角和业务用例是否齐全,以此来检查是否有遗漏的业务用例。实际建模过程中,我们也可以根据实际业务需求从其他视角来进行业务用例视图的建设。例如可以用业务主角视角查看某个业务角色的业务是否完整;可以从文件的产生到归档或销毁的全过程中涉及的业务主角或业务用例视角;可以从某个关乎业务的重要实体的演化过程等。

系统用例图展示的是系统范围,站在计算机系统执行的角度来描述系统的静态场景,主要是对业务用例进行分析以后得到的结果进行展现。主要从业务情景的活动获取,反映业务用例的系统映射功能,也即反映了业务需求到系统需求的映射和拆分,保证了过程的可追溯性。当然,系统用例的实现视角,也可以参考业务用例,以具体方便反映业务用例的计算机系统化执行过程为目标,从不同的视角进行建设。

2.活动图

活动图在需求建模过程中主要是对用例的动态执行过程进行描述,我们在讲述用例图的时候讨论过用例图是对业务或系统场景的静态描述。针对业务用例,活动图根据现实世界的业务情况,描述其执行的动态业务场景,展示业务执行的每个瞬间,也就是业务流程图;针对系统用例,活动图根据系统用例执行过程中涉及的角色和计算机执行涉及的业务对象,描述系统用例在计算机中的动态执行瞬间,也就是系统流程图。在建模过程中一般采用泳道的形式加入执行的角色,用以说明活动由谁执行,承担什么职责等。

活动图在建模过程中的作用主要有:

(1)描述一个操作执行过程中完成的工作(动作),这是活动图最常见的用途。

(2)描述对象内部的工作。(www.chuimin.cn)

(3)显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。

(4)显示用例的实例如何执行动作以及如何改变对象状态。

(5)说明一次业务流程中的人(参与者)和对象是如何工作的。

我们了解活动图的基本信息和作用后,为了使大家在后面的建模过程中真正能够应用,能够按照方法论的指导将用例中的场景描述清楚,有必要对组成活动图的基本元素做一下介绍。

起点:标记活动图的开始,一个活动图只有一个起点。在UML中一般使用圆点表示。

结束点:标记一个活动图的结束,一个活动图可以有一个或多个结束节点。在UML中一般使用带实体的圆环表示。

动作状态:对象的动作状态是活动图中最小单位的构造块,表示原子动作。动作状态有以下三个特性:原子性(不能被分解成更小的部分);不可中断性(一旦开始就必须运行到结束);瞬时性(占用的处理时间是极短的,甚至是可以被忽略的)。在UML中一般使用带圆端的矩形框表示。

活动状态:表示可以分割的动作,主要特点有:可以分解成其他活动或动作状态;能够被中断;占有有限的时间。所以活动状态可以理解为一个组合,它的控制流由其他子活动或动作状态组成。同动作状态类似,在UML中一般使用带圆端的矩形框表示。

转移:表示两个状态间的一种关系,表示对象将在当前状态中执行动作,并在某个特定事件发生或某个特定的条件满足时进入后续状态。在UML一般使用带箭头的直线表示,线上可以添加条件。

分支:用于描述某个条件的可选择路径。一个分支可以有一个、两个或多个输出,每条输出转移上都可以添加条件或表达式,当且仅当条件或表达式为真时,该路径才有效,才会被启用。在所有的输出中,其条件或表达式不能重复,而且要覆盖所有可能性。在UML中使用菱形表示分支。针对只有两个输出的判断,尽量采用“是否……”的语句,输出的分支判定线上统一使用“是”或“否”,可以保证流程中判定条件输出的统一性,避免出现诸如“审核(不)通过”“有(无)效”等。

分叉和汇合:对象在运行时可能存在两个或多个并发运行的控制流,为了对并发的控制流建模,UML引入了分叉与汇合的概念。分叉表示把一个单独的控制流分成两个或多个并发的控制流。一个分叉可以有一个进入转移和两个或多个输出转移,每一个转移都表示一个独立的控制流。汇合表示两个或多个并发控制流的同步发生,一个汇合可以有两个或多个进入转移和一个输出转移。分叉和汇合应该是平衡的。分叉和汇合在图形上都使用同步条来表达,在UML中一般使用一条粗水平线表示。

泳道:用以将活动划分为若干分组的元素,并为每一组指定负责活动的对象。每一组都可以表示一个特定的类、角色或部门等,他们负责完成组内的活动。使用泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的,也明确表示了实际执行活动的对象。在UML中泳道一般用垂直实线来表示,垂直线分割出的区域就是泳道。在泳道的上方可以给出对象的名称或泳道名称。泳道没有顺序,不同泳道的活动既可以顺序进行也可以并发进行,各活动允许穿越分割线。

总之,活动图可以作为动态建模工具,强调从活动到活动的控制流,用于描述对象的过程或操作的步骤。