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


    一、理解需求

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

    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

  • 相关阅读:
    未能加载文件或程序集“xxx, Version=x.x.x.x, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx”或它的某一个依赖项。系统找不到指定的文件
    RabbitMQ本地正常,发布到服务器上 出行连接失败
    Windows 服务 创建 安装 卸载 和调试
    CSS 格式化 一行一条
    ES6---new Promise()讲解,Promise对象是用来干嘛的?
    Win Server 2008 R2 IIS 默认只能添加一个 443 HTTPS 端口
    MVC 部分视图:Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 区别
    ;(function ($, undefined){ })(jQuery); 的使用及说明
    JS中的call()方法和apply()方法用法总结
    MongoDB服务无法启动,windows提示发生服务特定错误:100
  • 原文地址:https://www.cnblogs.com/wangzheming35/p/16215927.html
Copyright © 2020-2023  润新知