2016年秋季-《UML大战需求分析》-阅读笔记5

流程分析三剑客之总结

顺序图,活动图相类似表示活动,状态机图表示状态。分析特点:

顺序图:

  1. 强调角色之间的交互,信息明确;
  2. 从上到下,从左到右,按时间顺序;
  3. 不适合表达复杂特殊情况(循环分支,条件分支,可选分支)//因为需要画框框,看起来很乱,不清晰

活动图:

  1. 强调每个角色做了什么(泳道分开,一目了然,每个泳道就是每个角色的活动),还有事情的先后关系;
  2. 适合表达特殊流程(分支等);

状态机图:

  1. 事情围绕某东西开展(例子:缺陷,假条等);
  2. 该东西有不同状态(例子:已同意,未同意等)

---------------------------------------------------------------------------------------------------------------------------------

状态图是描述某一对象的状态转化的,它主要表现的是该对象的状态。从状态图中可以看出,该对象在接受了外界的某种刺激之后,会做出什么样的反应。描述的是一个对象的事情。可以说是对类图的一种补充,帮助开发者完善某一类。

活动图是描述系统在执行某一用例时的具体步骤的,它主要表现的是系统的动作。从活动图中可以看出,系统是如何一步一步的完成用例规约的,主要用于业务建模阶段。活动图描述的是整个系统的事情。可以说活动图是对用例图的一种细化,帮助开发者理解业务领域。

比如说:
学校用的学生选课系统。
在系统中,学生是一个对象(UML中的对象,不是编程语言中的对象),那么学生“未登录”“已登录”“未完成选课”“已完成选课”“已选XX课”“未选XX课”等都是学生的状态。描述这些状态之间是如何转化的,就要用状态图。
而学生选课的这个动作涉及到:学生、课程、教师、学生课表等多个对象。同时这个动作也是学生选课系统的一个用例,所以要描述它就要用到活动图。

活动图(activity diagram,动态图)是阐明了业务用例实现的工作流程。业务工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个或多个备选工作流程。工作流程的结构使用活动图来进行说明。
一个活动图可能包括以下元素:
活动状态表示在工作流程中执行某个活动或步骤。
转移表示各种活动状态的先后顺序。这种转移可称为完成转移。它不同于一般的转移,因为它不需要明显的触发器事件,而是通过完成活动(用活动状态表示)来触发。
决策,为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。您也可以使用判定图标来表示线程重新合并的位置。决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。
同步示意条用于显示平行分支流。同步示意条使您能够显示业务用例的工作流程中的并行线程。
 

条件线程

活动图活动图
警戒条件用于说明一组并行线程中的某个线程是有条件的。例如,在上面的“个人登记”示例中,进行登记的乘客可能是频繁乘机旅行的顾客。在此情况下,您需要给他奖励一些飞行里程数.
关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前” 节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态, 状态机停止。
包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transition function)的计算模型。当输入符号串,模型随即进入起始状态。它要改变到新的状态,依赖于转换函数。在有限状态机中,会有有许多变量,例如,状态 机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有 限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态,等等。
传统应用程序的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地执行。很少有事件能改变标准执行流程;而且这些事件主要涉及异常情况。“命令行实用程序”是这种传统应用程序的典型例子。
另一类应用程序由外部发生的事件来驱动——换言之,事件在应用程序之外生成,无法由应用程序或程序员来控制。具体需要执行的代码取决于接收到的事件,或者它 相对于其他事件的抵达时间。所以,控制流程既不能是顺序的,也不能是事先设定好的,因为它要依赖于外部事件。事件驱动的GUI应用程序是这种应用程序的典 型例子,它们由命令和选择(也就是用户造成的事件)来驱动。
posted @ 2016-12-11 17:29  落地生根  阅读(150)  评论(0编辑  收藏  举报