一:动态视图
--->动态视图是描述事物动态行为的。
--->需要注意的是:动态视图不能够独立存在,它必需特指一个静态视图活uml元素,说明在静态视图规定的事物结构下它们的动态行为。
--->动态视图:活动图,状态图,时序图,协作图
 
二:活动图
--->活动图描述了为了完成某一个目标需要做的活动以及这些活动的执行顺序。
--->uml中有两个层面的活动图,一种用于描述用例场景,叫[用例活动图],另一种用于描述对象交互,叫[对象活动图]。
--->在面向对象的眼中是没有业务流程这种东西的,所谓流程只不过是在某个外部力量推动下对象之间相互交流的一个过程,它只是“瞬时”的。如果从活动图的观点来描述业务,实际上是不能直接看到对象是如何发挥作用的。这样在观念上很容易导致对象独立性被破坏。因为面向对象要求对象越独立,封装度越高越好,可是面向对象越纯粹,我们越难以理解这些对象将会干什么。正所谓上帝什么都能做,但其实它什么也没有做。所以我们面临一个这样的矛盾,既要保持面向对象观点中对象的独立性,又要保持现实世界中业务目标的过程化描述。活动图的引入解决了业务目标过程化描述,但也给对象分析造成了混乱。因此,在使用活动图时,要保持清醒的头脑,活动图只是我们用来描述业务目标的达成过程,并借此发现对象的工具。他不是我们的分析目标,也不是编程的依据,它只是对象的应用场景之一。我们使用活动图来描述用例场景,帮助我们认识问题领域,从问题领域中发现关键对象,然后经应该把活动图中的流程忘掉,而专心研究关键对象的特性。
 
 
三:用例活动图
--->用例活动图是最经常使用的。用例表达了参与者的一个目标。
--->起始点:标记业务流程的开始。一个活动图,活着说一个业务流程有且仅有一个起始点。
--->活动:是业务流程中一个执行单元
--->判断:判断根据某个条件进行决策,执行不同的流程分支。
--->同步:同步分为同步起始和同步汇合。同步起始表示它开始多个支流并行执行。同步汇合表示多个支流同时到达后再执行后续活动。
--->结束点:表示业务流程的终止。一个活动图活着说一个业务流程,可以有一个或多个结束点。
--->基本流:表示最主要,最频繁使用的,默认的业务流程分支。
--->支流:表示不经常使用的,由某个条件触发的,非默认的业务流程分支。
--->异常流:表示非正常的,不是业务目标期待的,容错性的,处理意外情况的业务流程分支
--->组合活动:可以用嵌套的活动来表示。不过这种方式会导致活动图太复杂而不清晰,建议不使用。
 
 
四:对象活动图
--->对象活动图用于展示对象的交互。
--->根据查询商品的对象交互过程绘制出对象活动图。
--->用对象活动图来描述对象交互的感觉并不是那么清晰。实际工作中没什么理由使用它,有更好的工具绘制对象几乎图。例如:状态图,时序图,协作图。
 
 
 
五:泳道
--->顾名思义,就像一个游泳运动员只能在一个泳道里比赛一样。一个对象也只能在一个业务历程中担任一个(或一类)的职责。泳道代表了一个特定的类,人,部门,层次等对象的职责区,这些对象在业务流程中负责执行的活动集合合成了他们的职责。 
--->解决了活动图不能描述对象职责的遗憾。
 
 
五:业务场景建模
--->业务场景建模,就是以客户代表作为泳道,以从业务主角处获取业务用例作为活动来编排活动图。这种活动图对我们获取正确的业务用例作有很好的帮助。
(1)帮助发现业务用例
(2)帮助检查业务用例粒度
(3)帮助检查业务主角
(4)帮助检查业务用例
六:用例场景建模
--->获得业务用例之后,我们得到了参与者的业务目标,我们通过用例场景来说明如何达到业务目标。
--->我们经常以业务主角和业务工人作为泳道,以工作单元作为活动来编排活动图来描述用例场景。
--->这种活动图对我们获得概念用例,角色和业务对象(业务实体)有着很好的帮助。
(1)帮助发现概念用例(工作单元)。
  如果发现多个用例场景中类似的工作单元经常出现,就可以考虑将她抽象出来。在根据情况采用包含,扩展或者泛化关系将其连接到基本用例(即他们所贡献的业务用例)
(2)帮助发现角色
  通常,一个泳道(业务主角活业务工人)可以定义一个角色。但是如果多个用例场景中发现同一个或同一类工作单元(活动)位于不同泳道,即被不同的业务主角或业务工人使用,那么应该考虑为这些使用了同一活动的业务主角活业务工人抽象出更高级别的角色。
(3)帮助发现业务实体
  如上图,我们会发现所有活动都有着相同的命名规则:动词+名词。这些名词就是很好的业务实体(对象)的来源。如:机票,登机牌。
(4)帮助建立领域模型。
  领域模型描述哪些对业务有着重要意义的业务对象,如果在同一个或多个用例场景的不同活动中发现某个名词重复出现。那么应当对这个名词给予重视。它很可能就是一个关键的业务对象。这个业务对象在不同活动中的状态以及它与活动图中其他名词之间的关系很可能就决定了业务的结构。绘制出这个结构就能获得领域模型。
 

<十五>UML核心视图动态视图之活动图的更多相关文章

  1. 【UML】-NO.42.EBook.5.UML.1.002-【UML 大战需求分析】- 活动图 (Activity Diagram)

    1.0.0 Summary Tittle:[UML]-NO.42.EBook.1.UML.1.002-[UML 大战需求分析]- 活动图 Style:DesignPattern Series:Desi ...

  2. <十八>UML核心视图动态视图之协作图

    一:协作图 --->描述了对象间交互的一种模式.它通过对象之间的连接和它们相互发送的消息来显示参与交互的对象 --->协作图可以有对象和主角实例,以及描述它们之间关系和交互的连接和消息.通 ...

  3. <十六>UML核心视图动态视图之状态图

    一:状态图 --->状态图显示一个状态机. --->状态机用于对模型元素的动态性进行建模.更具体地说,就是对系统行为中受事件驱动的方面进行建模. --->通常使用状态图来说明业务角色 ...

  4. <十四>UML核心视图静态视图之类图和包图

    一:类图(行为类和实体类) --->类图用于展示系统中的类及其相互之间的关系 --->概念层类图 --->说明层类图   二:概念层类图 --->概念层的观点认为:在这个层次的 ...

  5. <十七>UML核心视图动态视图之时序图

    一:时序图 --->时序图是用于描述按时间顺序排列的对象之间的交互模式. --->它按照参与交互的对象所具有的“生命线”和他们相互发送的消息来显示这些对象. --->时序图包含对象和 ...

  6. ABP源码分析三十五:ABP中动态WebAPI原理解析

    动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...

  7. python接口自动化测试十五:解决密码动态,无法登录情况

    解决问题:每次密码都是变化的,无法通过账号密码登录 (总不能每次去fiddler复制吧????) 解决思路: 1.先用selenium调用浏览器(不会selenium的自己想办法了), 2.登录后从浏 ...

  8. Thinking in UML 学习笔记(四)——UML核心视图之活动图

    在UML中活动图的本质就是流程图,它描述了为了完成某一个目标需要做的活动以及这些互动的执行顺序.UML中有两个层面的活动图,一种用于描述用例场景,另一种用于描述对象交互. 活动图只是我们用来描述业务目 ...

  9. ****** 五十 ******、软设笔记【UML分析和意义】-类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图,动静态模式

    一.类图(Class Diagram) 描述一组类.接口.协作已经它们之间的图,用来显示系统中各个类的静态结构图. 类之间的关系(relationship) *依赖(dependency) *泛化(g ...

随机推荐

  1. Allegro中解决鼠标放在走线上网络名、走线长度显示不出来的问题

    一些PCB设计者在使用allegro时,由于一些误操作 导致当鼠标放在走线(cline)和网络(net)上面时,软件没有显示该走线的所属网络,或者相关的长度信息.本人经过help文档发现,以下方法可以 ...

  2. 基于faro SDK 读取fls原始文件

    #define _SCL_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #include <iostream> //#include ...

  3. aar格式

    aar包是Android Library Project的二进制公布包. 文件的扩展名是aar,并且maven包类型也应该是aar. 只是这文件本身就是一个简单的zip文件.里面有例如以下的内容: / ...

  4. 从英语单词shell想到的

    shell当初听到以为很高级 后来才知道只是壳而已 百度百科中解释为 shell 在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器).它类似于DOS下的c ...

  5. ckdeitor的使用方法

    CKEditor 3 JavaScript API Documentation : http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.con ...

  6. 深入理解Java 8 Stream

    Java 8中新增了Stream,主要是lambda表达式的应用,其链式调用简洁,用于高效表达集合操作. 先对Stream的使用做了解,参照blog. (1) 生成Stream的方式 主要有以下几种 ...

  7. 【Java】事件驱动模型和观察者模式

    你有一件事情,做这件事情的过程包含了许多职责单一的子过程.这样的情况及其常见.当这些子过程有如下特点时,我们应该考虑设计一种合适的框架,让框架来完成一些业务无关的事情,从而使得各个子过程的开发可以专注 ...

  8. git拉取远程分支到本地分支或者创建本地新分支

    git fetch origin branchname:branchname 可以把远程某各分支拉去到本地的branchname下,如果没有branchname,则会在本地新建branchname g ...

  9. Optimistic concurrency control

    Optimistic concurrency control https://en.wikipedia.org/wiki/Optimistic_concurrency_control Optimist ...

  10. MySql 三大知识点——索引、锁、事务(转)

    1. 索引 索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容. 索引的优点:1. 天生排序.2. 快速查找.索引的缺点:1. 占用空间.2. 降低更新表的速度. 注意点:小表使用全表扫描 ...