需求分析概述

Posted by fzy on January 26, 2024

第三章:需求分析概述

需求分析概述

需求的重要性:需求不明确会在多方面导致项目的失败,如果早期没有检测到并修复需求错误,会造成很高的代价。

需求分析的任务:集终于用户的需要,搞清楚用户想要什么样的行为

需求分析的结果:软件需求规格说明书

需求的三个层次

  • 业务需求:高层次的目标要求(公司层面)
  • 用户需求:具体用户使用软件的需求(用户层面)
  • 功能需求:对用户需求提炼出来之后的需求(开发层面)

image-20231129163818782

需求类型

  • 需求定义:用户想要得到的每一件事情的完整列表
  • 需求规格说明:将需求重新陈述为关于要构建的系统将如何运转的规格说明

image-20231129164150979

需求类型

  • 功能需求:根据要求的活动描述需求行为
  • 质量需求(非功能需求):描述软件必须拥有的质量特征
    • 性能要求、界面要求
    • 易用性、安全性、完整性、可靠性
    • 可移植性、可拓展性、可维护性
  • 设计约束:已经做出的设计决策或对问题解决方案集的限制的设计决策
  • 过程约束:对于构建系统的技术和资源的限制

需求建模

建模能帮助彻底理解需求。刚开始的建模从ER图开始。ER图关注需求中实体和实体之间的关系。

ER图

实体-关系图

ER图提供了解决问题的总体概况,当问题的需求变化的时候,视图相对稳定。

image-20231129165252534

UML类图

UML:统一建模语言。

  • 对象:类似于实体,按照继承层次的类进行组织
  • 方法:在对象的变量上执行的动作

image-20231129165948200

  • 属性和操作是和类相关联的,而不是与类的实例相关联的。
  • 类范围属性是用带下划线的属性表示,是被类的所有实例共享的数据值
  • 类范围操作书写为带下划线的操作,是被抽象类执行的操作,不是类实例执行的操作。
  • 关系标记为实体之间的连线
  • 聚合关联表示涉及关联的类中对象的相互作用或事件
  • 组装关联是一种特殊聚合

事件跟踪:关注“行为”

  • 垂直线:不同实体的时间线,实体名字出现在线的顶部
  • 水平线:两个实体之间的一个事件或者交互
  • 时间从上往下

image-20231129175444540

消息时序图:扩充的事件跟踪表示法

  • 实体:竖线
  • 消息:发送实体到接受实体的箭头
  • 动作:位于实体执行线上带标记的矩形
  • 条件:用标记的六边形表示,是一个实体演化的重要状态

image-20231129180357032

状态机

状态机在表示动态行为方面,以及描述在响应已经发生的历史事件时行为将如何变化方面很有用。

  • 点(状态):表示存在于事件发生之间的一个稳定的条件集合
  • 边(转移):表示由于一个事件的发生而产生的行为或条件的变化

image-20231201125232452

UML状态图

描述了一个UML类中的对象的动态行为。UML类图没有说明实体时如何运转的,行为时如何变化的。UML状态图就展现了状态变化的动态行为。

image-20231201125426722

数据流图(DFD)

data flow diagram

建模功能以及从一个功能到另一个功能的数据流,从数据的角度描述系统

  • 泡泡:加工

    控制点,决定系统中的控制流向何处转移

  • 箭头:数据流
  • 平行线:输出存储(库或者信息库)
  • 矩形:表示参与者(提供输入和输出的实体)

image-20231201125744808

用例

数据流图演变成UML的用例图。用例并不一定建模系统的全部,而是用于说明用户对重要系统行为的观察

用例(use case),表示系统的一个或一组功能,与用户的目标有关

  • 大的方框:系统边界
  • 方框外的小人:参与者,人或者系统
  • 方框内的椭圆:用例,表示必须的主要功能及其变种
  • 参与者与用例之间的连线:参与者参与了该用例

image-20231201130050865

UML

包括:

  • 用例图(高层DFD)
  • 类图(ER图)
  • 时序图(事件跟踪)
  • 协作图(事件跟踪)
  • 状态图(状态机模型)

原型化需求

  • 抛弃型原型:搞定完需求分析就可以抛弃
  • 演化型原型:不仅完成需求分析,还要演变成最终产品

原型化用来回答用户的问题,建模则是快速回答事件将要发生的顺序的约束问题、活动的同步问题。

需求文档

需求文档的目标和内容

  • 概述系统总体目的和范围
  • 描述开发背景和理由
  • 描述一个可接受的解决方案的基本特征
  • 描述系统运行的环境
  • 概述客户对解决问题的提议
  • 列出对环境作出的假设
  • 详细描述输入输出
  • 根据接口的输入输出重新陈述要求的功能
  • 对用户的质量需求,设计适配标准

需求工程

需求工程指应用已证实有效的原理、方法,通过合适的工具和记号,系统描述待开发系统及其行为特征和相关约束。

包含两个过程域:

  • 需求开发:重点在于开发出高质量的需求规格说明
  • 需求管理:重点在确保开发的软件满足需求

image-20231129171757609

5个独立的阶段:

  • 需求获取
  • 需求建模
  • 形成需求规格
  • 需求验证
  • 需求管理