软件体系结构——第五章<用例模型>

一、理解需求

什么是需求?客户可接受的、系统必须满足的条件或具备的能力——由用户提出

image.png

二、从业务模型获取需求

3个步骤:

  • 寻找业务改进点——从业务用例模型中寻找系统改进点;

  • 定义项目远景——结合系统远景,获取系统用例来表达需求;

  • 导出系统需求——采用需求启发技术,从涉众中获得

实例分析:

旅店系统开发远景:

  • 随着旅店声誉日益提高,住宿人员越来越多,旅客为了能够获得好的房间,均提前预订房间

  • 然而,随着预订的增多、预订周期的拉长,前台服务员工作压力也日益增大,还经常出现工作的失误,使得已经预订好房间的旅客也不能按期入住,这给酒店的声誉带来不好的影响

  • 为此,旅店老板想到了用计算机来管理——希望能够通过计算机来自动管理这些预订业务,但由于目前资金的问题,目前只开发一个单机版的系统,不提供网上业务;并且旅店方面的其它业务暂不考虑信息化问题

  • 旅店老板委托某计算机公司开发该系统,并承诺如果系统运转良好的话,将会考虑进一步合作事宜

远景:酒店预订系统

  • A很荣幸地成为项目经理,并被要求在两个月之内发布该系统的第一个版本,同时还被要求要为后续的开发提供必备的接口

  • 结合现状和老板的要求,考虑到项目可扩展的要求,A首先通过利用业务用例、业务处理活动、业务对象进行了建模

  • 之后,A初步定义了项目的远景(项目的目标)

    • 方便、快捷、准确地为旅客预订房间
    • 旅客可以方便的取消预订的房间
    • 旅店经理能够定期的获取预订的信息,根据这些信息可以及时调整房间的价格
    • 及时、快速地计算房间费用、预订费用、取消预订后退款金额等信息
    • 预留接口:可为以后的网络版,以及其它业务系统的开发提供支持

image.png

三、建立用例模型

3.1、获取需求

需求只能来自涉众(stakeholders)、或相关利益者、或角色等等,但并不是直接从涉众中来,根据远景确定需求。

image.png

3.2、识别参与者

从需求中的业务用例模型识别参与者

  • 参与者:在系统之外,通过系统边界与系统进行有意义交互的任何事物

要点:

  • 任何事物 (参与者用小人表示,但是可以是everything)

image.png

参与者的命名:

规范的参与者命名:用能知道其角色的名称来命名

  • 例如,学生、订单管理员、维护部门…

  • 即使使用系统的人改变,从系统来看,使用者的角色(作用)是相同的

参与者之间的关系:泛化(继承)

image.png

泛化实例:

image.png

3.3、识别用例

关键词:提供的价值——业务功能

用例的特征:

  • 用例实例是系统执行的一系列动作(执行过程),这些动作将生成特定参与者可观测的结果值

  • 一个用例定义一组用例实例(场景)

用例:参与者使用系统达到某个目标

image.png

用例的命名:

参与者(执行者)视角:动宾结构

image.png

用例粒度:指的是系统中某个用例所包含的系统服务或功能单元的多少。

  • 用例的粒度越大,用例包含的功能越多,反之则包含的功能越少。

  • 最常犯错误:①粒度过细,陷入功能分解 ②把步骤当用例 ③把系统活动当用例 ④CRUD会掩盖业务,锐变成关系数据库的建模

采用管理用例解决CRUD问题:

  • 多数的基本数据管理业务都可以用一个用例表示

  • image.png

  • 可以把包含复杂交互的路径独立出去形成用例——用例扩展关系的利用

3.4、构建用例图

用例图:表达参与者与用例关系的图形

image.png

实例分析:旅游业务申请系统

image.png

四、编写用例文档

用例文档:更进一步对用例进行详细说明

  • 需求规格说明书的核心,而用例图作为用例文档的索引图(也称软件功能总图)
  • 有层次的文档
  • 文档中每一句话都有其价值

用例文档的组成:

  • 用例标识(UC)、名称、描述

  • 涉及的参与者、涉及的用例

  • 涉众利益——参与者的利益关系

  • 前置条件 PreConditions(在用例开始前系统的状态)、后置条件 PostConditions(用例执行后系统的状态)

  • 事件流

    • 基本路径Flow of events
    • 备选路径Alternate flow
  • 补充约束

    • 字段列表、业务规则
    • 非功能需求、设计约束
  • 待解决问题

  • 相关图(用例图、活动图、类图)

事件流描述-用例交互四部曲:

image.png

事件流描述要点:

  • ①使用业务语言,而非技术语言
  • ②以参与者或系统为主语
  • ③避免出现过细的GUI描述
  • ④用例的重点在于描述功能需求

用例文档案例:记录时间 ,UC01:“Record Time”

用例标识 UC01
用例名称 Record Time
涉及的参与者 雇员、系统管理员
描述 雇员利用“Record Time”用例来登记他们的工时,系统管理员用这个用例为任何雇员登记时间
前置条件 用户必须已经登录到这个系统
后置条件 系统将雇员的工时正确的记录到数据库中
正常事件流(雇员记录时间) 1.雇员查看当前时间之前输入的数据;2.雇员从已有的支付号码中选择一个,这些收费代码是按客户和项目组织的;3.雇员从当前的时间段选择一个日期;4.雇员输入以正整数表示的工时;5.系统在视图中显示这个数据,并在以后的视图中看到这个数据。
备选事件流(雇员更改时间) 1.雇员查看当前时间之前输入的数据;2.雇员选择一个已有的条目;3.雇员改变工时;4.系统在视图中更新这个信息,并在以后的视图中都可以看到。
非功能需求
设计约束
部署约束 用户可以从客户端或雇员的家中访问到“Record Time”用例,如果是从客户端访问,则要考虑到客户端的防火墙
未解决的问题 ①雇员是否可以在以前的考勤卡上输入和更改时间?②雇员是否可以在以后的考勤卡上输入和更改时间,例如,在休假之前?
相关图 用活动图来描述该用例的执行过程,即:场景(用户可以按照场景的描述来验证系统是否达到了预期目标——验证用例的有效性。)

活动图-简述用例流程:

image.png

五、重构用例模型

利用用例建模的高级技术重构用例模型:

  • 用例关系——可降低用例的复杂度
  • 用例分级——可寻找重要的用例
  • 用例分包——可按应用来组织管理用例

5.1、用例关系

image.png

5.1.1、扩展

某个用例在特定情况下,包含其他用例(扩展用例)的行为,表示某个用例的功能被扩展

扩展使用带有 <<extend>> 的虚线表示。箭头由扩展的用例指向基用例,通过扩展点指明在基用例中的扩展位置

image.png

基用例路径本身是完整的,可能是一条被扩展的路径。其特点主要表现为:

  • 扩展路径步骤多

  • 扩展路径内部还有扩展点——扩展之扩展

image.png

扩展点必须是系统能感知的:

image.png

5.1.2、包含

某个用例中包含了其他用例的行为

用带有<<include>>的虚线来表示。箭头由原用例指向被包含部分的用例——用例的复用

image.png

何时运用包含:

  • 某些步骤在多个用例中重复出现,且能单独形成价值

  • 另外,用例步骤较多时,可用Include简化(慎用,会增加用例模型的复杂性)

image.png

5.1.3、扩展vs包含

image.png

包含:由用例A连向用例B,表示用例A中使用了用例B中的行为或功能,离开用例B就无法工作

image.png

扩展:由用例B连向用例A。用例A描述了一项基本需求,用例B则描述了该基本需求的特殊处理情况,即一种功能扩展

image.png

案例:网络购物系统

image.png

5.1.4、泛化

泛化:表示子用例继承了父用例

用途:

  • 一个用例可以特化另一个普通用例(普通用例泛化特殊用例)

image.png

用例泛化关系:

是指一种从子用例到父用例(比较抽象)的关系,它指定了子用例如何特化父用例的所有行为和特征。

image.png

5.1.5、扩展vs泛化

扩展用例只是对基用例进行功能扩展,而泛化用例是完全可以取代基用例的功能,并添加新的行为

image.png

5.2、用例分包

作用:

  • 让用例图更为清晰地表现出系统的业务逻辑关系和层次
  • 对系统进行模块的分割,这将影响到今后的开发和系统的最终表现形式

分包方式:

  • 按参与者分包

  • 按主题分包

  • 按开发团队分包

  • 按发布情况分包

分包经验:先按主题分包,主题内再按参与者、开发团队和发布情况分包

案例:申请业务审查系统顶层用例包图

image.png

5.3、用例分级

用例和迭代开发的关系:

  • 迭代开发中开发周期是围绕用例的需求来组织的
  • 一个迭代周期需要被指派一个到多个用例。如果某个用例在一个迭代周期中处理起来太复杂的话,那就采用简化版本和完整版本的用例,分阶段来完成。如图所示:image.png

用例分级原则:寻找高级别用例(5种途径)

  • 对架构设计有重要影响的用例,如:在领域层中包含多个类的用例、或者需要持久化(数据存储)的用例

  • 不需要花费很多努力就可以从中获得重要信息和线索的那些用例,即代表主要的在线业务流程的用例

  • 含有开发风险、时间紧迫或功能复杂的用例

  • 涉及到重要技术研究或者新技术和高风险的用例

  • 能产生直接经济效益或者降低成本的用例

用例分级实施策略:

  • 可以使用一个简单的但是有些不精确的经验分类方法,如将用例划分成高、中、低三个等级

image.png

  • 依照上述影响用例级别的特性(5种途径)给用例打分(特性也可能带有权值)

image.png

六、企业进、存、销管理系统案例分析

6.1、需求分析

(1)采购员根据生产原料的使用情况判断采购用品,对需要订购产品信息统计订货的,并制作产品订单。最后根据订单进行采购活动。

(2)仓库管理员负责产品的库存管理。包括产品入库管理、处理盘点信息、处理报损产品信息和一些信息的设置。这些设置信息,包括:供应商信息、产品信息。仓库管理员每天对产品进行一次盘点,当发现库存产品有损坏时,及时处理报损信息。当产品生产后,将产品进行入库。当产品销售后时,产品进行出库处理。

(3)统计人员负责统计分析管理,包括:查询产品信息、查询销售信息、查询供应商信息、查询缺货信息、查询报表信息,并制作报表。统计分析员使用系统的统计分析功能,了解产品信息、销售信息、供应商信息、库存信息。

(4)在销售员客户提供售货服务时,接受客户购买产品,根据系统的定价计算出产品的总价,客户付款,系统自动保存客户购买记录。

(5)系统管理员负责本系统的系统维护。系统管理员负责员工信息管理、供货商信息管理以及系统维护等。每种管理者都通过自己的用户名称和密码登录到各自的管理系统中。

6.2、识别参与者

(1)销售员:为客户客提供销售产品的服务。

(2)仓库管理员:负责库存产品的管理活动。

(3)采购员:负责企业生产原料的订购。

(4)会计(统计人员):负责企业经营状况的统计。

(5)系统管理员:负责企业员工信息管理、供应商信息管理以及系统维护等。

6.3、销售员用例图

销售员能够通过该系统进行销售商品活动。首先登录系统,验证身份成功后,获取商品信息,然后将销售信息更新,最后对客户进行商品销售。

image.png

6.4、仓库管理员用例图

仓库管理员能够通过该系统进行如下活动:

1、处理盘点,每天需要对库存产品信息进行盘点。

2、产品入库。当产品生产后,将产品进行入库。

3、产品出库。当产品销售发货后,进行出库处理。

4、管理设置。仓库管理员负责供应商信息、产品基本信息的管理设置。

image.png

6.5、采购员用例图

采购员能够通过该系统进行订货管理活动。采购员首先根据经营情况统计所缺的生产资料,根据需要制定出订单。

image.png

6.6、会计用例图

会计负责产品的统计分析管理,它能够通过该系统进行如下活动:

1、查询基本信息。会计能够查询产品的基本信息,根据产品的基本信息,制定出相应的方案。

2、查询销售信息。会计根据销售情况汇总后交销售部制定合理的销售方案。

3、查询供应商信息。会计能够查询供应商信息。

4、查询缺货信息。会计能够查询缺货信息。

5、查询报损信息。会计能够查询报损信息。

image.png

6.7、系统管理员用例图

系统管理员能够通过该系统进行如下活动:

1、维护员工信息。系统管理员能够维护企业员工的信息,如添加员工、删除员工和修改员工信息等。

2、维护供应商信息。系统管理员能够维护供应商的信息,如添加供应商、删除供应商和修改供应商信息等。

3、系统设置。系统管理员能够根据一些需要进行必要的系统设置。

image.png

posted @ 2022-05-02 15:32  我在吃大西瓜呢  阅读(511)  评论(0编辑  收藏  举报