1)其它软件系统:当系统需要与其它系统交互时, )其它软件系统:当系统需要与其它系统交互时, 柜员机系统中, 如ATM柜员机系统中,银行后台系统就是一个 柜员机系统中 银行后台系统就是一个 参与者; 参与者; 2)硬件设备:如果系统需要与硬件设备交互时, )硬件设备:如果系统需要与硬件设备交互时, 如在开发IC卡门禁系统时 卡门禁系统时, 卡读写器 卡读写器就是一 如在开发 卡门禁系统时,IC卡读写器就是一 个参与者; 个参与者; 3)时钟:当系统需要定时触发时,时钟就是参与 )时钟:当系统需要定时触发时,时钟就是参与 者
• 获取软件的需求是软件开发过程的重要难题,在当今的软件需求的实践中, RUP过程中的用例技术、XP中的用户故事(User Story)技术、FDD的Feature 描述技术是获取需求的较好技术 共同点是:站在用户的角度看待系统、定义系统 ;使用用户能够看懂的语 言来描述系统,定义系统。 需求技术种类 用例(Use case) 描述 描绘一个系统外在可见的需求情况,是代表系统中各个项目 相关人员(风险承担人,Stakeholder)之间就系统的行为所达 成的契约 由客户参与编写,说明他们需要系统为他们做什么,一般用 客户的术语编写,其长度约为三句话左右 就是一个小的,具有客户价值的功能,通常表示为 actionresultobject
• 某大学准备开发一个学生课程注册系统: 学生课程注册系统: 学生课程注册系统
– 学生使用该系统查询新学期将开设的课程和讲课教师情况,选择自己要学 习的课程进行登记注册,并可以查询成绩单 – 教师使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成 绩单 – 注册管理员使用该系统进行注册管理,包括维护教师信息、学生信息和课 程信息等 – 在每个学期的开始,学生获得该学期的课程目录表,课程目录表列出每门 课程的所有信息,诸如基本信息、教师、开课系和选课条件等 – 新学期开始前两周为选课注册时间,在此期间学生可以选课注册,并且允 许改变或取消注册申请,开学两周后注册管理员负责关闭课程注册。每个 学生可以选择不超过4门课程,同时指定2门侯选课程以备主选课程未选上。 每门课程最多不能超过10人,最少不能低于3人,低于3人选课的课程将被 取消。一旦学生的注册过程完毕,注册系统将有关信息提交收费系统以便 学生付费。如果在实际注册过程中名额已满,系统将通知学生在提交课程 表之前予以更改 – 在学期结束时,学生可以存取系统查看电子成绩单。由于学生成绩属于敏 感信息,系统必须提供必要的安全措施以防非法存取
–用耳 聆听用户的需求 用耳 –用脑 分析和整理所获取的信息 用脑 –用手 形成文档化的描述 用手
–建立顺畅的通信途径 建立顺畅的通信途径 –客户访谈和调查 客户访谈和调查 –建立联合分析小组, 建立联合分析小组, 建立联合分析小组 –观察用户操作流程 观察用户操作流程 –组成联合小组 组成联合小组 –及时整理分析,反馈循环 及时整理分析, 及时整理分析 –快速原型 快速原型
• 用例是对一组场景共同特征的抽象,即,用例是对一组场 景共同行为的抽象,场景就是用例的一次完整的、具体的 执行过程。用例与场景的关系,如同类与对象的关系。 • 场景 – 在系统中,按照某个顺序执行的一系列相关的动作后, 实现了某种功能,把完成了这一功能的操作的集合称 为场景。 “场景”就是用户使用系统的一个实际的、 特定的场面 。 • 场景例子。 – 小刘通过银行柜圆机(ATM系统)取款3000元的场景。
– 客户:详细说明系统应有的功能和使用方法 – 开发人员:理解系统的需求,作为后续工作 的基础 – 测试人员:验证系统实现是否与用例模型说Βιβλιοθήκη Baidu明的功能一致 – 文档人员:为编写用户手册提供参考
“用例驱动”的开发过程代表:RUP 用例驱动”的开发过程代表: 在这些开发过程中,开发人员首先捕获客户的需求,并 在这些开发过程中,开发人员首先捕获客户的需求, 以用例的形式组织成用例模型。然后分析并设计系统来 以用例的形式组织成 。 满足这些用例,因此在用例模型之后就是分析模型,接 满足这些用例,因此在用例模型之后就是 , 着是设计模型和实施模型。在实现了整个系统之后,还 着是 和 。在实现了整个系统之后, 将根据用例模型设计出测试模型来对系统进行验证 将根据用例模型设计出 来对系统进行验证 这些模型之间并不是线性转变的,它们是一个迭代、 这些模型之间并不是线性转变的,它们是一个迭代、增 量的开发过程。也就是在整个项目开发周期中, 量的开发过程。也就是在整个项目开发周期中,将会多 次经过这五个模型的迭代, 次经过这五个模型的迭代,每次都将越来越精化
用例(use case)是Ivar Jacobson发明的. 其它的中文译名 有: 用况、用案等. 用例是系统、子系统或类和外部参与者交互的动作 序列的说明, 包括可选的动作序列和会出现异常的动 作序列. 用例是代表系统中各个项目相关人员之间就系统的 行为所达成的契约.
事件流 1小刘将银行卡插入柜员机 小刘将银行卡插入柜员机 2柜员机要求客户输入卡密码 柜员机要求客户输入卡密码 3小刘输入卡密码,并确认密码 小刘输入卡密码, 小刘输入卡密码 4柜员机屏幕提示,请客户选择服务类型 柜员机屏幕提示, 5小刘选择取款服务 小刘选择取款服务 6柜员机提示:请客户输入取款数目 柜员机提示: 柜员机提示 7客户输入 客户输入3000,并确认 客户输入 并确认 8柜员机出钱口输出 张一佰元的人民币 柜员机出钱口输出30张一佰元的人民币 柜员机出钱口输出 9小刘取回 张一佰元的人民币 小刘取回30张一佰元的人民币 小刘取回 10柜员机提示服务类型:确认,或继续,或退卡 柜员机提示服务类型: 柜员机提示服务类型 确认,或继续, 11小刘选择服务类型退卡,结束服务。 小刘选择服务类型退卡, 小刘选择服务类型退卡 结束服务。 •小刘取款场景
参与者是为了完成一个事件而与系统交互的实体, 参与者是为了完成一个事件而与系统交互的实体, 是用户相对系统而言所演的角色。 是用户相对系统而言所演的角色。参与者不仅可以 由人承担, 由人承担,还可以是事物 ① ② ③ ④ ⑤ ⑥ 系统用户 与所建造的系统交互的其他系统 一些可以运行的进程 硬件设备 时钟 ……
UML中的 中的Actor实际上是一个版型化的类 可以有三种 实际上是一个版型化的类, 中的 实际上是一个版型化的类 表示形式
参与者实际上是一个类, 参与者实际上是一个类 因此它们之间可以存在一 定的关系 • 在用例图中,使用泛化 关系来描述多个参与者 之间的公共行为。 • 参与者间的泛化关系 示例:
• 说明了系统具有的一种行为模式 • 说明了一个参与者与系统执行的一个相关 的动作序列 • 提供了一种获取系统需求的方法 • 提供了一种与最终的用户和领域专家进行 沟通的方法 • 提供了一种测试系统的方法
从参与者的角度出发进行命名(如使用“登录”而不用 “身份验证”) 使用动宾结构或主谓结构命名. 尽量使用行业术语(如用“报销”,而不用“交钱”) 例: 字处理程序中, “置正文为 黑体”和”创建索引”都可 以是用例. 例: 在一个银行业务系统中 可能有如右的用例
• 需求 – 用户对目标软件系统在功能、行为、性能、设 计约束等方面的期望 • 软件需求分析的目标: – 调查分析,准确理解用户的要求 – 撰写需求,将用户的非形式的要求转化为完整 的、形式的规格说明
问题: * 谁使用系统的功能? * 谁需要借助系统完成日常工作? * 谁来维护和管理系统,以保证系统正常 工作? * 系统控制的硬件设备有哪些? * 系统需要与其他哪些系统交互? * 谁对系统产生的结果感兴趣?
• 外部可见的系统功能单元。 • 在不揭示系统内部构造的前提下定义连贯的行为。 • 用例是对一组动作序列 动作序列的描述,系统通过执行这 动作序列 一组动作序列为参与者产生一个可观察的结果 • 不是需求或功能的规格说明 规格说明,但是也展示和体现 规格说明 其所描述的过程中的需求情况
• 开发者获取需求的步骤是: • 第一步,开发者首先将用户的工作流程表示为场景,然后, 将同一类场景抽象为用例,以描述系统的功能; • 第二步,客户和用户通过审查场景,并测试开发者提供的 原型系统,以验证和确认需求规格说明书。 • 第三步,当系统需求定义成熟和稳定后,开发者和客户共 同对需求规格说明进行确认,包括,系统的功能性需求、 非功能需求、用例和场景在内的需求确认。
• 系统外部的一个实体。是直接 系统外部的一个实体。 与系统相互作用的系统、 与系统相互作用的系统、子系 统或类的外部实体的抽象 • 参与用例的执行过程。通过向 参与用例的执行过程。 系统输入或请求系统输入某些 事件来触发系统的执行 • 它是用户所扮演的角色,是系 它是用户所扮演的角色, 统的用户。 统的用户。每个参与者定义了 一个角色集合每个参与者可以 参与一个或多个用例
– 开发人员必须实现的软件功能,使得用户能完成他们 的任务,满足业务需求
– 对系统提供的服务或者功能提出的约束,包括时间、 开发过程、软件质量、标准等约束
• 从不同的角度来看,需求具有不同的层次,即业务 需求、用户需求、功能需求和非功能需求等 • 例子 字处理程序 之 “ 拼写检查器” 例子:字处理程序 拼写检查器”
– 业务需求 “用户能有效地纠正文档中的拼写错误” 业务需求:“用户能有效地纠正文档中的拼写错误” – 用户需求 用户需求:“找出文档中的拼写错误并通过一个提供的替 找出文档中的拼写错误并通过一个提供的替 换项列表来供选择替换拼错的词” 换项列表来供选择替换拼错的词 – 功能需求 功能需求:“找到并高亮度提示错词的操作”;“显示提 找到并高亮度提示错词的操作” 找到并高亮度提示错词的操作 供替换词的对话框” 实现整个文档范围的替换” 供替换词的对话框”;“实现整个文档范围的替换 – 非功能需求 “替换操作执行速度快”;“异常出现概率 非功能需求:“替换操作执行速度快” 小”
• 用例图是显示一组用例、参与者以及它们之间的关系的图, 用例图是显示一组用例、参与者以及它们之间的关系的图, 用于定义系统的功能需求 • 在UML中, 一个用例模型若干个用例图描述 中
• 图中的元素包括:参与者、 用例、一个方框和一些表 示关系的连接线,所有的 用例都位于方框之内,该 方框称为“系统边界”。 方框内是棋牌管理系统的 多个用例,方框外是外部 参与者。