<三>面向对象分析之UML核心元素之参与者
一:版型
--->在UML里有一个概念叫版型.有些书里也称类型,构造型。
--->这个概念是对一个UML元素基础定义的扩展。在同一个元素基础定义的基础上赋予特别的含义,使得这个元素适用于特定的场合。
--->例如(1)用例:的版型有:“业务用例”,“业务用例实现”
(2)类:的版型有:“接口”,“边界类”,“实体类”,“控制类”
--->除了UML已经定义的版型外,为了在某种场合下让元素表达某种特定的含义,版型也是可以自己定义的。也就是说在项目里,可以有自己项目的版型定义。例如:包元素有“子系统”,“组织结构”,“模块”等默认的版型。
--->版型只是UML的一种扩展手段,本身并不涉及太多的思想和方法,而是在建模的不同阶段,为了区分视图之间的不同观点,会采用不同的图示来表示。
二:参与者
【1】以人为本是当代流行的词汇。UML建模也是以人为本的。建模是从寻找抽象角度开始的。那么定义人,准确地说是定义参与者,就是我们寻找抽象角度的开始。
【2】基本概念
---->参与者在建模过程中是处于核心地位的。
---->UML官方文档对参与者的定义为:actor是在系统之外与系统交互的某人或某事务。
---->图3.1中的系统被一个边界包裹着。系统之外的定义说明参与者和系统之间有一个明确的边界,参与者只可能存在于边界之外,边界之内的所有人和事物都不是参与者。边界在UML图中有时会显示地绘制出来,有时则不绘制出来。但是无论是显示的还是隐式的,一谈到参与者,读者必须想到系统边界的存在,否则参与者就是可疑的。
---->如何找出参与者,第一步是弄明白系统边界。
---->如何搞明白系统边界,弄明白两个问题(1)谁对系统有着明确的目标和要求并且主动发出动作?(2)系统为谁服务的?
---->参与者也叫主角,只有主动启动了某个业务的,才是参与者。
例子:小王到银行开户,想大厅经理询问了办理手续,填写表单,交给柜台职员,拿到了银行存折。这个场景中,谁是参与者?
(1)小王是参与者
(2)大厅经理,柜台职员。虽然参与了该开户行为,但不属于主动发起者,称之为“业务工人”,而不是参与者。
【3】参与者可以非人
--->建模着也常常会面临另一个问题,有些需求并没有人参与,参与者如何确定?例如这样一个需求:每天自动统计网页访问量,生成统计报表,并发送至管理员邮箱。这个需求参与者是谁?
(1)物理学有一个熟知的概念,在没有外力的情况下,物体保持静止或匀速直线运动状态。这个概念也适用计算机系统。在没有“外力”的情况下,计算机保持等待或循环任务状态。因此必须有“东西”发出指令或动作,计算机才会做出相应的反应。
--->参与者一定是直接并且主动地向系统发出动作并获得反馈的。否则就不是参与者。
---->参与者和系统边界是共存的,相对的。随着系统边界的扩大或缩小,与之对应的参与者也在变动。
--->(1)业务主角:一个功能性需求的主动发起者。
--->(2)业务工人(不属于参与者):有些人员参与了业务,但属于被动参与业务。
--->(3)如何区分参与者和业务工人?可以通过三个问题来澄清他们的身份1他是主动向系统发出动作的吗?2他有完整的业务目标吗?3系统是为它服务的吗?
【4】参与者与与之相关方面的关系
---->参与者与涉众的关系.
(1)涉众(stakeholder),也称之为干系人。涉众是与要建设的这个系统有利益相关的一切人和事。
---->参与者与用户的关系。
(1)用户(user),是指系统的使用者,通俗点说是系统操作员。
---->参与者与角色的关系
(1)角色(role),是参与者的职责。是一类参与者的抽象。
<三>面向对象分析之UML核心元素之参与者的更多相关文章
- <十>面向对象分析之UML核心元素之关系
关系 --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构. 一,关联关系(association)
- <八>面向对象分析之UML核心元素之分析类
一:基本概念 ---->在那大数项目中,分析类是被忽视的一种非常有用的元素. ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处 ...
- <五>面向对象分析之UML核心元素之边界
一:基本概念
- <四>面向对象分析之UML核心元素之用例
一:基本概念 --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值. --->所谓用例,就是一件事情,要完成这 ...
- <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
- <十二>面向对象分析之UML核心元素之节点和设备
节点,设备
- <七>面向对象分析之UML核心元素之包
一:基本概念
- <六>面向对象分析之UML核心元素之业务实体
一:基本概念
- <十一>面向对象分析之UML核心元素之组件
组件
随机推荐
- boost序列化
#include <iostream> #include <boost/serialization/serialization.hpp> #include <boost/ ...
- 找不到对应的webservice配置参数[ProcessService]
在UI端 保存时 界面显示无法保存 且报此错误 “找不到对应的webservice配置参数[ProcessService]” 此下为解决方法: 首先 在[应用管理平台]--[参数模板设置] 找到你的参 ...
- 【WCF--初入江湖】05 WCF异步编程
05 WCF异步编程 一.服务设计最佳实践 在设计之初,是否用异步,应该由客户端来决定,而不应该去考虑服务的调用者调用的方式. 优点:充分利用多核CPU, 改善用户体验 缺点:滥用异步,会影响性能 二 ...
- DataRow.RowState 属性
RowState 的值取决于两个因素:已对该行执行的操作的类型,以及是否已对 DataRow 调用了 AcceptChanges. private void DemonstrateRowState() ...
- happens-before通俗理解
原文地址:http://ifeve.com/easy-happens-before/ 学习Java并发,到后面总会接触到happens-before偏序关系.初接触玩意儿简直就是不知所云,下面是经过一 ...
- linux入门教程(二) 图形界面还是命令窗口
对于linux的应用,我想大多数都是用在服务器领域,对于服务器来讲真的没有必要跑一个图形界面.所以我们平时安装linux操作系统时往往是不安装图形界面的.说到这里也许你会有疑问,图形界面还能选择装或者 ...
- 理解maven
1.理解“仓库” 首次运行完mvn -version后,会在用户目录下创建一个.m2的目录(比如:C:\Users\当前用户名\.m2\),这个目录是maven的“本地仓库”,仓库是maven中一个很 ...
- iOS开发 -- 发送JSON数据给服务器
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 1.URL NSURL *url = [NSURL URLW ...
- Android:AlertDialog对话框
1.简单的ALertDialog: Dialog alertDialog = new AlertDialog.Builder(this) .setTitle("标题") .setM ...
- *Linux之rpm命令
在Linux操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比"添加/删除程序"强很多,它就是Red Hat Package Mana ...