当前位置:文档之家› UML建模实例

UML建模实例


3. 用例建模的优势
• 完全站在用户的角度描述系统 – – – – • 将被定义的系统看成黑匣子,不考虑内部实现问题. 定义了系统具有的参与者,他们都将与系统有交互. 描述了参与者的所有行为 用例图可展示被定义系统的整体情况
将需求与设计做了比较彻底的分离 – 用例模型主要用于表述系统的功能性需求(系统的设 计主要由对象模型来表述) – 每一个用例描述的是一个完整的系统服务,容易被用 户理解,有利于设计者与用户间的沟通.
•避免二义性语义
好的需求定义应该是无二义性的,即不同的人对于同一需求的理解 应该是一致的。
如何确定用例间的关系
包含:提取公共交互,提高复用 泛化:同一业务目的的不同实现技术
扩展:“冻结”基用例以保持稳定
包含(inclusion) :是指基础用例会用到的包含用例,具体地
讲,就是将包含用例的事件流插入到基础用例的事件流中。 包含用例是可重用的用例──是多个用例的公共用例。
第四章
实例学习
----一个餐馆系统的业务建模
南开大学软件学院
1
本章目标
使用面向对象分析方法和UML完成一个业务建模 典型实例:餐馆系统
南开大学软件学院
2
一、餐馆系统管理
• 当前系统使用手工方式完成用餐预定,预约单 格式:
当前主要完成的功能包括
• 预约信息记录在一张纸片上 – 联系人的姓名和电话号码 – 就餐人数: ‘餐桌占用’ • ‘未预约就餐’ 也需要记录 – 只记录就餐人数 • 可以预定指定的餐桌 • 可取消预约信息 – 在预约单上划掉已有的预约记录
3、调整与检查用例模型
在用例模型中除了参与者和用例之间的关系外,还要描 述参与者与参与者之间的泛化(generalization)、用例和用例 之间的包含(include)、扩展(extend)和泛化(generalization)关 系。 通过调整把一些公共的信息抽取出来重用,使得用例模 型更易于维护。但要注意模型调整通常都是在建模后期完 成,为的是避免不必要的复杂化.
泛化(generalization):描述同一业务目标的不同实现。当 多个用例共同拥有一种类似的结构和行为的时候,可以将它 们的共性抽象成为父用例,其他的用例作为泛化关系中的子 用例。
扩展(extend): 将扩展用例的事件流在一定的条件下按照相应的 扩展点插入到基础用例中。
基础用例不必知道扩 展用例的任何细节, 它仅为其提供扩展点 扩展用例的行为是否 被执行要取决于主事 件流中的判定点。
用户界面原型
• 写用例时, 需要给出一个用户界面的粗略构思, 这对今后的设计是有用的。
界面可只包含要显示的内容和方式,其他暂不考虑。
四、用例模型的调整与优化
找出共享功能
• 不同的用例可能有交融的部分 • E.g. “记录到达”: – 领班输入当前日期 – 系统显示当天预约 – 领班确认一个预约已到达 – 系统记录这些并更新显示 • 前两步与‘记录预约’是共享的(尽管属于不同的 参与者)
用IT替代原系统:定义第一次迭代
• 第一次迭代应能实现一个最简可用的系统 • 基本功能: – 记录预约 – 更新预约单的信息 • 系统应能够替代手工制单操作
二、用例建模
创建用例模型的基本步骤: 1.定义系统 2.确定参与者 3.确定用例 4.描述用例 5.定义用例间的关系 6.确认模型
完成最初的用例图
七、用例建模中包含技术
1.确定参与者(Actor) • 参与者是指与系统交互的人或其它系统 • 参与者代表一种角色,而不是具体的某个人 可通过回答下列问题确定执行者: 谁使用系统的主要功能? 谁需要系统对他们日常工作的支持? 谁需要维护、管理和维持系统的日常运行 ? 系统需要控制哪些硬件设备? 系统需要与哪些其它系统交互? 哪些人/系统对系统产生的结果感兴趣?
这里有一个新 的参与者是”员 工“,他是已有 参与者通过泛 化产生的。
用例扩展
用例扩展是表示用例间所具有的依赖关系。如‘ 记录未预约’ 顾客的基本事件流程为: 1. 领班执行”显示预约“用例 2. 领班输入时间、用餐人数和分配的餐桌 3. 系统记录并显示新预约 • 该用例与”记录到达”用例有太多重叠,能否用包 含依赖性来描述呢? •
领域词汇表
建立领域词汇表可以对今后的描述进行规范。 • 预约单(Booking): 针对一个餐桌的就餐预约 • 就餐人数(Covers): 对于就餐预约中的人数说明 • 顾客(Customer): 提出预约就餐的人 • 预约(Reservation): 预约的一次就餐 • 未预约(Walk-in): 没有提前预约的一次就餐 • 位子(Places):一个餐桌能够就坐的数量
对模型检查的重点
•功能需求的完备性
检查是否还有系统功能没有被记录在现有的用例模型中,抽象一些 新的用例或是归纳到原有用例中
•模型是否易于理解
考察模型是否易于被不同的涉众所理解 ,可能需要修改用例的粒度、 个数以及模型元素之间的关系复杂程度 等内容
•是否存在不一致性
要特别注意不同工件之前是否存在前后矛盾或冲突的地方,避免在 模型内部产生不一致性。
作业2
对一个简化了的银行储蓄账户管理系统进行业务建模。该系 统可完成在银行的柜台上对客户办理活期储蓄业务。系统 的需求陈述如下: 一个客户可以在多个银行中开设账户,一个客户也可在 同一银行中开设多个不同的账户。 客户可以通过银行职员进行开户、存款、取款、转账、 注销账户等活动。其中转账指客户将自己的某个账户上 的钱款转入同一银行的不同账户(称为银行内转账)或 转入不同银行的账户(称为银行间转账)。 系统管理员负责系统的账户管理及业务报表的生成。 完成:确定参与者,确定用例,画出用例模型图,给出开户和 取款事件的基本流程描述。
标识包含依赖关系
• UML可表现出两个用例之间具有’依赖‘的这种包 含关系, 这时需要用规定的’依赖‘符号来标识
:
表示:”记录预约 “用例中包含着” 显示预约“用例。 或称”记录预约“ 用例与”显示预约 “用例有包含依赖 关系。
参与者泛化
结合前面的用例图,可以将包含“显示预约”用例的用例 图替换:
2.确定用例
针对每个参与者从以下问题入手: 参与者为什么要使用该系统或需要系统提供哪些功能? 参与者是否会在系统中创建、修改、删除、访问、存储 数据?若是的话,参与者又是如何来完成这些操作的? 参与者是否会将外部的பைடு நூலகம்些事件通知给该系统? 系统是否会将内部的某些事件通知该参与者?
会出现的情况 对同一个项目,不同的开发者选取的用例数 可能不同。 例如一个10人年规模的项目,有人选取了20 个用例,有人选用了100个用例。 似乎20个太少,而100个太多,因此需要在 项目建模中找到一个最好或较好的用例模型。
扩展用例举例:
用例与扩展用例的区别 ①相对于基础用例,扩展用例是可选的,而包含 用例则不是。 ②如果缺少扩展用例,基础用例还是完整的,而 缺少包含用例,则基础用例就不完整了。 ③扩展用例的执行需要满足某种条件,而包含用 例不需要。 ④扩展用例的执行会改变基础用例的行为,而包 含用例不会。
八、领域建模
描述用例---“记录预约”可选事件流程
• 在“记录预约”时若没有餐桌,可选流程: 1 接待员输入预约日期 2 系统显示该日的预约 3 没有可用餐桌: 用例终止
描述用例---“记录预约”可选事件流程
在“记录预约”时餐桌过小,例外流程 1. 接待员输入要求预约的日期; 2. 系统显示该日的预约; 3. 接待员输入输入预约人详细信息; 4. 发现用餐人数多于餐桌可容纳数,系统发出警 告并询问是否继续预约; 5. 回答“no”预约终止 6. 回答“yes”预约将被记录,并附警告标志
• 领域建模是对业务领域描述,并用模型方式展 示,重要的是用该领域的术语进行描述。 • 它是一个真实世界的模型 – 类似于实体关系模型(协助设计者理解) • 该模型记录像是一个类图 • 便于‘Seamless development’ – 对于分析和设计使用同一种注释 – 设计可以是从初始的领域模型中演化而来
综合用例模型
将以上各模型综合起来,完成整体用例图:
六、关于用例模型的价值
1.从使用层面看
任何参与系统功能活动的人都需要用例模型: 客户:因用例模型指明了系统的功能,描述了系统将如 何使用。客户积极参与用例建模十分重要。 开发者:用例模型可帮助他们理解系统要做什么,同时 为以后的其它模型建模、结构设计、实现等提供依据。 集成测试和系统测试人员:根据用例来测试系统,以验 证系统是否完成了用例指定的功能。
2.从实质层面看
用例模型描述的是参与者(Actor)所理解的系统功能。 描述了待开发系统的功能需求。 用例模型由用例图组成,用例图展示了执行者、 用例以及它们之间的关系。 用例通常用正文和活动图描述。 一个用例模型可由若干幅用例图组成。一幅用例 图包含的模型元素有系统、执行者、用例,以及 表示它们间的不同关系,如关联、扩展、包含、 泛化等。
经分析后用扩展依赖比较合适
•因为并不是每次执行’记录到达‘要执行的内容,但 在某种情况下‘记录到达’ 用例可以被’记录未预约‘用 例扩。因此有:
注意:包含依赖和扩 展依赖关系可以通过 用例描述加以区别!
五、完用例模型
完成其他两个用例模型
“取消预约”用例基本事件流程: 1. 接待员选择要求取消的预约 2. 接待员取消该预约 3. 系统询问接待员是否确认取消 4. 回答“是”,记录取消并显示。 “调换餐桌”用例基本事件流程: 1. 领班选择需调换餐桌预约 2. 领班改变该预约餐桌分配 3. 系统记录改变并更新显示
• 找出用例,找出参与者并描述他们都做什么, 画出初始用例图:
用例包括: •记录预约 •取消预约 参与者包括: •前台接待员 •领班 •记录到达 •调换餐桌
三、描述用例 “记录预约”基本事件流程
• 对于 “记录预约”正常情况完成: 1 接待员输入要预约的日期 2 系统显示该日的预约 3 接待员输入具体细项 4 系统记录并显示新的预约
相关主题