用例和用例图分析
QueryGrade
Student
ModifyGrade
学生成绩管理系统 注:visio画用例图系统边界用方框表示同时附上系统名称; rose无法画系统边框
3.5 例:金融贸易系统用例图
Trading Manager
Set Limits
Update Accounts
Accounting System
3.2 参与者
□ 参与者的3种表示形式
<<Actor>> actor2 actor1 Icon形式 Label形式 Decoration形式
actor3
3.2 参与者
□ 参与者之间的关系
泛化(继承)关系:一个一般 性的参与者(父参与者)与另 一个特殊的参与者之间的联系 (子参与者)。 UML图中用空心箭头的实线表 示泛化关系 子参与者继承了父参与者的行 为和含义,还可以增加自己特 有的行为和含义,子参与者可 以出现在父参与者出现的任何 位置上。
3.1 用例
UML建模: ① 静态建模 ② 动态建模 ◇ 静态建模:类图、对象图、构件图和 部署图 ◇ 动态建模:用例图、顺序图、协作图、 状态图和活动图。
3.1 用例
□ 理论上可以把一个软件系统的所有用例都 画出来,但实际开发过程中,进行用例分析 时只需把那些重要的、交互过程复杂的用例 找出来。
3.1 用例
□ 系统的需求大纲
· 系统的目的和范围 · 系统中的术语表 · 用例 · 系统采用的技术 · 开发过程中的参加人员、业务规则、系统 运行所依赖的条件、安全要求、文档要求等各 种其它需求 · 法律、政治、组织机构等方面的问题 See example
3.1 用例
□ 正确使用用例分析来做好领域建模,以确 保定义正确的需求,然后开发出正确的系统, 是保证OO软件开发成功的基础。 □对于初学者来说,掌握用例的概念并不难, 但要在具体的项目中灵活地使用用例来捕获 用户的需求,并不是一件容易的事情,往往 需要用户的经验、沟通能力、丰富的领域知 识等。
3.1 用例
□ 本质上,用例分析是一种功能分解的技术, 并未使用到面向对象思想。因而有人认为用 例分析只是面向对象分析与设计的先导性工 作,并非OOA/OOD过程的一部分,但也有 人视其为OOA/OOD的一环。 □用例是UML的一部分,确定系统的用例是 开发OO系统的第一步,用例分析做得好, 接下来的交互图分析、类图分析等才有可能 做的好,整个系统的开发才能顺利。
Smith
Lecturer
3.2 参与者
【例3.3】在一个银行业务系统中,可能会有以 下参与者: ·客户:从系统获取信息并执行金融交易 ·管理人员:开办系统的用户。获取并更新信息 ·厂商:接受作为转帐支付结果的资金 ·mail系统
3.2 参与者
客户给销售员发来传真订货,销售员下班前将当 然订货单汇总输入系统。谁是系统的参与者? 销售员 系统以外的,需要使用系统或与系统交互的实体
<<include>> Analyze Risk <<include>> Price Deal Valuation
Trader
<<extend>>
Capture Deal
SalesPerson
Limits Exceeded
3.3 脚本
脚本(scenario,情景、场景等)是用例执行 过程中发生的事件流的形式化描述 指贯穿用例的一条单一路径,用来显示用例 中的某种特殊情况 一个脚本使用具体的文字描述来表示 脚本是用例的实例(instance),如果与类和 对象之间的关系作比较,则脚本与用例的关 系相当于对象与类的关系
3.1 用例
□ 用例(use case) -微信: 发送消息给好友 -图书馆系统: 提醒还书日期;维护图书信息 -KFC订餐系统: 下订单 -淘宝系统: 浏览产品,购买产品 -某射击游戏: 开枪 …
3.1 用例
【例】在个人网上银行系统中,可能会有以 下哪些用例: · 浏览账户余额 · 转账 · 登录 · 更新个人信息 · 列出交易内容 · 打印交易内容 · 退出系统 · 设置个人密码
练习1
画出图书管理系统中的用例图。 提示: 系统使用者包括读者、图书管理员、系统 管理员。 读者可以查询图书 图书管理员可以完成图书管理、借阅管理 系统管理员可以完成图书管理、借阅管理 、读者管理、报表管理、系统管理。
练习2
在CarMatch汽车保险管理系统里, 保险公司员工可以基于 保险公司会员客户的年龄、职业及住址给他们搜索合适 的保险产品,然后向会员客户推荐一种或多种保险产品 ,将保险产品卖给会员客户。 1.分析CarMatch系统的用例有哪些?如何命名这些用例? 2.在每个CarMatch汽车保险分公司都有一个保险主管和一 个保险助理。他们的角色都是向CarMatch的客户卖保险 。使用相同的CarMatch系统用例。这个系统的参与者有 哪些,如何命名? 3.画出用例图
练习2
三个用例: 1. 查询保险产品 2. 推荐保险产品 3. 卖保险产品
查询保险产品
由于保险主管和保险助理 都是用相同的用例,所以 没有必要区分他们为不同 的参与者。因此只需要一 种参与者:员工。
员工
推荐保险产品
卖保险产品
3.2 参与者
□ 参与者(actor)是指系统以外的,需要使 用系统或与系统交互的实体(人、设备、外 部系统)例如: ATM系统的参与者是银行客户 超市的管理系统需要与外部信用卡程序建 立联系验证信用卡以便付款,其中外部信 用卡程序就是一个参与者
3.2 参与者
□注:参与者(actor)是一种角色,而不是 具体的人、设备和外部系统。某人可能有多 个角色。例如小王是银行的工作人员,工作 时间他使用银行管理系统,作为管理员这个 角色参与管理,他也可以作为银行用户这个 角色来取钱。
粒度越大,包含的功能越多,反之越少 如果用例粒度很小,那么得到的用例数就会很多,用 例模型过大,引入设计困难就很大 如果用例粒度很大,那么得到的用例数就会很少,不 便于进一步充分分析 建议:简单的系统,复杂度较低,可适当加大用例数; 复杂的系统,一个用例可包含较多的需求信息量。保 证整个模型易理解。
3.3 脚本
【例3.4】:在“订货”这个用例中,包含着 几个相关的脚本。 一个是订货进行顺利的脚本;一个是相关 货源不足的脚本;一个是涉及购物者的信用 卡被拒的脚本,等等。这些脚本的组合构成 了一个用例。
3.3 脚本
讨论:ATM系统中, “取钱”这个用例中, 包含着几个相关的脚本。 一个是取钱进行顺利的脚本;一个是余额 不足的脚本;一个是没有此面额纸币的脚本, 等等。
3.1 用例
□ 用例是与实现无关(implementation independent)的关于系统功能的描述。在 UML中,可以用协作(collaboration)来说 明对用例的实现。
Login realization Login Login realization (with security)
图3.3 用例及其实现
3.1 用例
□ 在UML中,协作用虚线椭圆表示。在图3.3中,对 用例Login共有两个实现,一个是简单的实现,另 一个是带有安全验证功能的实现,这里没有显示 协作的内部结构和行为方面的内容。 □协作的内部由两部分组成:一是结构部分,如类、 接口及其他一些建模元素等;另一部分是行为部 分,说明类、接口以及其他建模元素如何协同工 作,如协作图(collaboration diagram)、顺序图 (sequence diagram)、类图(class diagram)等。 □大多数情况下,一个用例由一个协作实现,这时 可以不用在模型中显式指明这种实现关系。
3.1 用例
□ 用例(use case) ○ 代表系统中各个项目相关人员之间就系统的行为 所达成的契约 ○ 把软件开发过程的需求分析、设计、实现、测试 阶段捆绑在一起 ○ 用例分析结果为预测系统的开发时间和预算提供 了依据,保证了项目的顺利进行。 ○软件开发过程是用例驱动的
3.1 用例
□ 使用用例进行需求分析的特点: 从使用者的角度描述系统中的信息,站在系 统外部看系统,不考虑系统内部对该功能的 具体实现方式 描述了用户提出的一些可见需求,对应一 个具体的用户目标。使用用例可以促进与 用户沟通,理解正确需求,同时也可以用 来划分系统与外部实体的界限 对系统行为的动态描述,属于UML的动态 建模部分
第3章 用例和用例图
Introduction
用例图:是显示一组用例、参与者以及他们之 间关系的图。 在UML中,一个用例模型由若干个用例图描 述。
3.1 用例
□ 用例(use case)--所需求的系统功能的描述 Ivar Jacobson于20世纪60-70年代在爱立信公司 开发AKE、AXE系列系统时发明的。 ○ 定义1:对一个活动者(actor)使用系统的一项功能 时所进行的交互过程的一个文字描述序列。 ○ 定义2:用例是系统、子系统或类和外部的参与者 (actor)交互的动作序列的说明,包括可选的动作序 列和会出现异常的动作序列。
如何确定用例
参与者需要从系统获取哪种功能?参与者 想要做什么? 参与者是否需要读取、产生、删除、修 改、存储系统中的某种信息?如果是, 参与者是如何完成这些操作的? 参与者是否会将外部的事件通知给系统? 系统发生的事件是否通知参与者?
用例图例子
RecordGrade
Teacher
Tutorial Questions
1. 用例图由哪几部分组成? 2. 用例的定义是什么?举例说明什么是用例。 3. 用例的颗粒度是否相同? 4. 用例是否可以表示出所有的系统需求? 5. 什么是参与者? 6. 一个参与者是否可以执行多个用例? 7. 一个用例是否可以由多个参与者使用? 8. 什么是参与者之间的泛化关系?举例说明参与 者之间的泛化关系。 9. 脚本定义是什么?脚本与用例的关系是什么?