第三章 太多的知识点了 一个一个整理
什么是参与者?
在项目里 谁是参与者?
参与者
是建模过程中处于核心位置(actor) UML官方定义:actor是在系统之外与系统交互的某人或某物
系统与参与者之间有一个明确的边界 参与者 只可能存在于边界之外 边界之内的所有人和事物都不是参与者
举栗子
小王到银行开户 向大厅经理询问了办理手续 填写表单 交给柜台职员,拿到了银行存折 这个场景谁是参与者?
在我们回答这个问题之前 我们用俩个问题来寻找参与者
1 谁对系统有着明确的目标和要求并且主动发出动作?
2 系统是谁服务的?
在这个小王的例子里
1)小王有着明确的目标 去开户 主动发出了开户的请求
2)所有的服务人员和系统都是为小王服务 给他开户
所以小王是参与者 而大厅经理和柜台职员 如果小王不做开户的动作 他们是不会有响应的 所以 在这个例子里 小王是参与者 别的人 和物 都可以括在 系统里 那大厅经理和柜台职员是什么角色那? 他们页参与了项目里 但是属于 business worker 业务工人
参与者 在汉语里 可能会混淆意义 我们可以叫主角
参与者不一定是一个人
举个栗子
一个网站要记录 网页的访问量 生成统计表 发至管理员邮箱 那这个里面谁是参与者(主角)
物理的牛顿第一定律 任何物体在没有外力的情况下都是保持静止和匀速运动 计算机里 没有外力情况下不会自己运行 必须有个东西来发送指令 触发计算机才能有反应 所以 这里 计时器Tmer控件是一个参与者
功能性用例其中一个特征就是 不存在没有参与者的用例 用例不应该自己启动 也不应该主动去启动另一个用例
就是说 如果没有一个启动者 就说明这不是一个功能性的需求
栗子 如果客户说 想把一个界面弄的更好看一些 这个就不是一个功能性的需求 只能算一个具体要求 界面好看不好看 没有一个启动者
发现参与者
参与者一个重要来源就是涉众(stakeholder)
从涉众中找出那么直接对系统发出动作 或者直接从系统中接受反馈的涉众
如:客户的岗位设置(就是客户的部门)
客户代表(客户中出来对应项目的代表人)
并假定为参与者 列出他在系统里需要做的事情 在与其他客户代表进行访谈 通过收集需求 找出共同性 并与客户敲定
在查找参与过程中 可以抱着这些问题寻找参与者
1)谁负责提供 使用 或删除信息
2)谁使用此功能
3)谁对某个特定功能感兴趣
4)在组织中什么地方使用系统
5)谁负责支持和维护系统
6)系统有哪些外部资源
7)其他还有哪些系统将与该系统交互
参与者一定是直接并主动的向系统发出动作并获得反馈
举栗子
火车票都买过 分别是自己上网订票 ,打电话给客服 或者通过语音提示订票
情况1)机票购买者通过登录网站订票
情况2)机票购买者通过呼叫中心 由人工来进行网站订票
情况3)机票通过呼叫中心的语音自动提示体统来进行网站订票
那么这三种情况 都谁是网站的参与者?
情况1 参与者是机票购买者
情况2 参与者是呼叫中心的人工
情况3 参与者是呼叫中心的语音自动提示系统(非人案例)
(情况2 和情况3 人分别人工和语音自动提示的参与者 )
如果把系统的边界调大 把人工系统和自动语音 归于系统中 叫子系统的话 那么 所有情况的参与者都是机票购买者 人工就属于业务工人 business worker
业务主角
业务主角针对业务 而非计算机系统 在软件项目里业务范围和系统范围是不同的
业务范围指这个项目所涉及的所有客户业务 这些业务是没有系统就客观存在的
系统范围是指软件要实现那些对应业务功能的系统功能 从功能性需求来说系统范围是业务范围的一个子集
业务主角 在需求阶段 业务主角是与业务系统有着交互的人和物 他们用来定义业务范围 业务主角必须拥有参与者的所有定义 在引用计算机系统之前他们的业务也一直跑的很流畅 这是因为在初始需求阶段 我们需要获得是客户的业务模型 根据业务模型才能建立计算机系统模型 要记住 要建设一个符合客户需要的计算机系统 首要条件就是完全彻底的搞清楚客户的业务 而不是预先假设已经有了一个计算机系统 再让客户假想需要什么计算机系统帮助他们做什么
建立业务模型时 不要第一时间去想用功能怎么做 不要加入自己的主观判断 要真正的从业务角色角度出发 了解实际业务 前期 客户可能对计算机从业者忙目的信任 你说啥就是啥 往往做完后 客户会认为这不是我要的东西 而开发人员也会很委屈 因为他们也是按照需求做的
如何确定业务主角
1)业务主角的名称是否是客户的业务术语
2)业务主角的职责是否是客户的岗位手册里有对应的定义
3)业务主角的业务用例是否都是客户的业务术语?
4)客户是否对业务主角能顺利理解
业务工人
经常遇到一些问题 有些人参与了业务 但是身份很尴尬 他是被动参与业务的
怎么区分业务工人 最直接的办法是判断在边界内还是在边界外 如果边界不清楚 可以通过以下三个问题澄清
1)他是主动向系统发出动作的么
2)他有完整的业务目标么
3)系统是为他服务的么
如果三个问题都是否定 那一定是业务工人
阶段性结束