[PMP(5)]软件需求分析概述

1、根本任务

建立分析模型,创建解决方案。从实践角度考虑,需求分析是以业务分析为导向,将用户零散的需求串联起来,形成一个体系完整、组织合理、内容清晰的框架(What to do, not how to do)。

1.1需求分析根本任务概述

分解提炼,并在此过程中消除需求矛盾

  • 分解(自顶向下)

①业务流为主线的分解策略(目标系统→主体域→业务事件→业务活动→业务步骤)

②程序结构为主线的分解策略(目标系统→子系统→功能模块→子模块→功能点)

③基于场景的分解策略(目标系统→关注点→场景集合→使用场景→任务)

④基于数据的分解策略(目标系统→主题域→主题类→逻辑数据→物理数据)

  • 提炼(自底向上)

1.2建立分析模型

目的:通过软件建模,帮助我们按照实际情况或按照我们的需要的模式对系统进行可视化,提供一种详细说明系统的结构或者行为的方法,给出一个指导系统构造的模板。对所有做出的决定实施文档化

抽象(Abstraction)

一方面要求人们只关注重要的信息,忽略次要的内容。通过强调本质的特征,就减少了问题的复杂性(例如学生模型)

另一方面也要求人们将认知保留在适当的层次,屏蔽更深层次的细节,在问题的各元素之间推断出更广泛和更普遍的关系,帮助人们寻找解决方案;

[PMP(5)]软件需求分析概述
模型的描述

分解(Decomposition / Partitioning)

“分而治之” 将单个复杂和难以理解的问题分解成多个相对更容易的子问题,并掌握各子问题之间的联系

分解的方案往往还能提供问题的解决思路

投影(Projection)

多视点(Viewpoints)方法

1.3创建解决方案

[PMP(5)]软件需求分析概述
创建解决方案的过程

2、需求分析技术

2.1结构化技术

  • 数据建模(E-R图)
  • 过程建模(数据流图DED、上下文图、微规格说明、数据字典)
  • 行为建模(状态转换图/矩阵State)
  • 过程/数据关系建模(功能实体矩阵)
  • 信息工程方法(功能分解图、过程依赖图)

2.2面向对象的技术

  • UML(用例图、类图、交互图、活动图、对象约束语言、状态图)

2.3Wieringa框架

2.4Zachman框架

[PMP(5)]软件需求分析概述

3、需求分析方法

传统分析(程序=数据结构+算法)→结构化分析(以数据流动为中心,以DFD为核心技术)→面向对象分析(以对象为中心,以UML为核心技术)

3.1UML(Unified Modeling Language),OMG认可的工业标准

[PMP(5)]软件需求分析概述
UML2.0标准共定义了13种不同的图
[PMP(5)]软件需求分析概述
需求阶段一般采用的图

 

5、需求分析活动

需求细化(ID、Source、Rational、Priority、Cost、Risk、Volatility)

确定需求优先级(Top-N:N的取值是不受明确限制的,真正受限制的是Top-N个需求的实现代价总和)

需求协商