主要点:

  • 需求的概念,要能判断
  • 需求分类
  • 需求层次,3个,需要解释
  • 获取分析需求的方法
    • 原型法作用、特点


需求的概念

定义:需求是以简洁清晰且无二义性的方式,对待开发的软件系统中各个功能和性能方面的描述集合。
需求必须满足 5 个性质:

  1. 必要性。
  2. 无歧义性。
  3. 可测试性。
  4. 可跟踪性。
  5. 可测量性。

需求的重要性

  1. 需求是整个软件系统开发的源头,是后续设计、开发、测试、维护等所有活动的根本依据。
  2. 随着系统开发的进度,需求的修改代价呈指数级上升。

需求的层次

层次 含义 表现形式
业务需求 用户组织对系统和产品的业务目标 项目前景与范围文档
用户需求 站在用户的角度描述产品的功能和性能概要 用例文档
系统需求 站在软件工作者的角度对系统应该做什么的详细描述 系统需求规格说明

需求的分类

包括功能性需求和非功能性需求,两者互为一对多关系,所以总的来说是多对多关系。

1、功能性需求

明确软件要干什么,要提供什么服务

2、非功能性需求

明确软件要遵循什么业务规则,主要源于企业、政府,主要分为 4 大类:
注:业务规则主要包括企业政策,政府法规,工业标准等等。

  1. 性能:例如系统应该在指定时间内达到什么样的要求。
  2. 外部接口:例如XX系统必须接受YY系统的信息。
  3. 设计约束:例如软件系统必须采用某一种语言开发。
  4. 质量属性:例如系统的可靠性,存活性、安全性、可维护性,用户友好性,可移植性。

需求的层次与分类的关系

image.png
内容都在图了,读图理解= =

需求工程过程

需求工程

所有与需求直接相关的活动通称为需求工程,他包括 2 个方面:

  1. 需求开发。
  2. 需求管理。

image.png

需求工程过程

螺旋迭代过程
image.png

需求获取与分析

最关键最困难的活动。

面临的挑战

  1. 模糊性。用户不知道要什么。
  2. 隐蔽性。用户不肯说出来,如实际决策权利结构。
  3. 多样性。因为用户多样性。
  4. 变化性。市场、技术在变。

4项基础活动

image.png

应对模糊性

1、诱导性访谈

虚心倾听,采用需求建议诱导的方式,而非直接提问“你想要什么”。

2、原型法

作用:

  1. 建议诱导访谈的有效形式之一。
  2. 将产品实在化,**消除在需求理解上的差异,获得客户真实意图。**
  3. 有利客户了解系统规模、风格,以及开发商的能力

目的:

  1. 明确并完善需求。
  2. 探索设计方案。
  3. 发展为最终的产品原型。

步骤:
image.png
分类:
1、快速原型(抛弃型)
特点:

  • 以最小的代价,快速建立原型供评审
  • 解决需求的模糊性、不完整性、不确定性。
  • 提高需求质量。

2、进化原型(渐进型)
特点:

  • 构建过程中重视系统性和完整性的设计原则,必须易于优化升级。
  • 从测试和使用中获取下一次更新的信息。
  • 比快速原型的代价更大。

应对隐蔽性

方法:观察和挖掘。

  • 现场观察。例如敏捷宣言“客户合作胜过合同谈判”的与客户一起工作。
  • 扎根蘑菇群理论,深入实际应用场景。

应对多样性

方法:用例
步骤:

  1. 用户分类。决策者,最终用户,其他,为每一类用户做用户画像。
  2. 用例构建。为每一类用户构建用例。
  3. 用例汇总。
  4. 用例排序。按照优先级给用例排序,优先级由 需求强度 = 潜在用户数 + 使用频率 来确定。

应对变化性

采用能够应对变化的软件工程过程模型,比如螺旋迭代模型、RUP 统一过程模型,敏捷开发等。