Xungerrrr's Blog

用例建模总结

Word count: 1.8kReading time: 5 min
2019/06/30 Share

需求分析是软件生命周期的一项重要内容,它是每一次项目迭代的开端,奠定了软件设计的基础。在系统分析与设计的课程项目“挣闲钱”中,我使用了用例建模的方法进行需求分析。在项目中,我第一次接触系统性的需求分析方法,了解到了用例建模的重要性。本文对项目中的用例建模方法进行了总结。

用例建模的制品

相对于传统的软件需求规约,用例建模的优点是能够从用户的角度出发,使用自然语言文本和图表来描述系统业务的功能,清晰表达系统需求。用例建模一般包含以下制品:

  • 系统上下文图
  • 用例描述
    • 用例文本
    • 业务流程
    • 故事板

在本项目中,系统上下文图采用了面向对象的UML用例图。业务流程使用UML活动图表示。由于我没有参与UI设计,因此故事板部分不展开描述。

UML用例图

用例图使用UMLet绘制。

绘制用例图是一个识别需求的过程,能够帮助组织确定系统的范围、对象、外部系统,也能够方便工作量的评估。

用例图的绘制分为以下几个步骤:

  1. 确定系统

系统是我们研究问题的边界,应包含涉及到的所有用例。在“挣闲钱”项目中,我们的系统命名为挣闲钱系统。

  1. 识别Actors

系统参与者,用actor符号表示,放在系统左边。挣闲钱系统的受众是大学生,用户既可以发布任务也可以接受任务,因此我们的用例图只有一类参与者。

外部系统,用NeighbourSystem框表示。一个系统不可能是大而全的,它应该只包含与核心功能直接相关的用例,其余逻辑交由外部系统来完成。在我的建模中,用户管理和交易管理两部分比较复杂,因此抽离出来成为独立的外部系统。

  1. 识别用例

首先要确定的是用户级别的用例,即最顶层的用例。在我们的迭代会议中,初步确定了问卷填写和有赏问答两大业务。据此我提出了一些与用户直接相关的用例,如完成问答任务、发起提问等,也考虑了一系列的manage用例,例如管理提问、管理余额等等。

接下来需要识别子功能级别的用例,一般是将父用例进行功能分解。识别过程要注意父用例和子用例的关系,一般有<>和<>两种。前者表示父用例必不可少的部分,后者表示可选用例。例如在输入问卷时,添加问题是一个必须的场景,删除已经添加的问题则不是一个必做功能。

  1. 建立Actor与用例之间的关联

使用无方向连线,表示双向交互的协议。

下面是我针对“挣闲钱系统”绘制的系统用例图。

用例描述

用例图只是简单的理清了用例之间的关系。为了详细对用例进行建模,还需要对用例的描述。我主要完成了用例文本和UML活动图两部分。

用例文本

RUP用例规约模板包含以下内容:

  • 简要说明 (Brief Description)

    简要介绍该用例的作用和目的。

  • 事件流 (Flow of Event)

    包括基本流和备选流,事件流应该表示出所有的场景。

  • 用例场景 (Use-Case Scenario)

    包括成功场景和失败场景,场景主要是由基本流和备选流组合而成的。

  • 特殊需求 (Special Requirement)

    描述与该用例相关的非功能性需求(包括性能、可靠性、可用性和可扩展性等)和设计约束(所使用的操作系统、开发工具等)。

  • 前置条件 (Pre-Condition)

    执行用例之前系统必须所处的状态。

  • 后置条件 (Post-Condition)

    用例执行完毕后系统可能处于的一组状态。

根据该模板可以用文本详细描述一个用例。以最简单的注册登录为例,用例可以描述为:

用例名称 注册登录
范围 Web网页
级别 用户目标
主要参与者 用户
涉众及其关注点 用户:希望能注册为挣闲钱平台的用户,登录系统发布任务或接收任务,获得收益
前置条件 用户了解登录注册的流程和需要填写的信息
后置条件 用户填写的信息无误,邮箱不与已有邮箱冲突
主成功场景 用户打开网页,填写昵称、邮箱和密码进行注册,邮箱不重复则注册成功;用户通过注册的邮箱和密码进行登录。
扩展 两次输入密码不一致,提醒密码错误;邮箱重复,提醒邮箱已注册。
特殊需求 界面美观,有明显的报错提醒
发生频率 经常发生
未决问题 邮箱验证问题

活动图

文本往往不能很好地描述用例的事件流,使用活动图可以更清晰地表达复杂的流程。以注册登录为例,用例涉及邮箱重复、密码不一致等判断过程,活动图表示更为直观。

另外,如果用例涉及到多个角色,可以采用多泳道图来更清晰地表示角色之间的交互业务。

总结

用例建模从用户的角度出发,将分析和设计分离,能清晰表达系统的业务和功能需求。用例图清晰地展示了系统的功能组成,客户可以清楚地看到系统与自己的要求是否相符。同时,客户可以简单修改用例图来表达需求变更的想法。用例图明确地表达了用户的需求,因此系统架构的设计可以更加准确,同时系统的工作量评估也变得方便。在测试阶段,测试人员也可以根据用例设计测试用例,对系统进行全面的测试。

不过,用例建模需要的工作量是很大的,特别是当系统需要复杂和严谨的结构时,用例建模会花费大量的时间,在小型项目的开发上可能会降低开发效率。

项目文档

Earning Money

Reference

[1] 软件系统分析与设计指南:组织第一次迭代

[2] 软件系统分析与设计指南:用例建模 - 绘制用例图

[3] 软件系统分析与设计指南:用例建模 - 业务建模方法

[4] 用例建模指南

CATALOG
  1. 1. 用例建模的制品
  2. 2. UML用例图
  3. 3. 用例描述
    1. 3.1. 用例文本
    2. 3.2. 活动图
  4. 4. 总结
  5. 5. 项目文档
  6. 6. Reference