课件

8.4 需求工程过程.pdf

需求工程活动

在需求工程过程中最重要的工程活动包括:

  • 需求抽取(Elicitation)
  • 需求分析(Analysis)
  • 需求规约(Specification)
  • 需求管理(Management)
  • 需求验证(Validation)

image.png

需求抽取

需求抽取的工作主要目标是为了主动与干系人协同工作,找出他们的需求,识别潜在的冲突,磋商解决矛盾的冲突,定义系统的范围和边界。

它的实质就是要了解待解决的问题和它所属的应用领域。我们要确保该问题的解决是有商业价值的。

image.png
需求抽取的过程就很像漫画中小男孩向他妈妈提出的四个问题,妈妈要他打扫房间,他问的第一个问题就是我为什么要打扫房间,这是对需求的顶层目标的一个提问。其次他又问当前打扫房间的流程是什么样子的,这是对当前业务流程的一个抽取过程。接着又问难道做作业不比打扫房间更重要吗,这是在跟他妈妈征求两条需求之间哪个优先级更高的问题。最后他问妈妈的是我怎么知道我的房间算是干净还是没干净,这是在问妈妈需求验收的一个标准。

需求抽取方法

目前有很多种需求抽取方法,根据参与人员的能力、偏好、待了解需求的内容,以及应用领域的特性,我们可以选择的方法有:

  • 协同工作(Collaborative sessions)
  • 面谈(Interviewing techniques)
  • 问卷调查(Questionnaires)
  • 观察法(Ethnography)
  • 原型法(Prototyping)
  • 文档分析(Documentation)
  • 建模(Modeling)
  • 角色扮演(Roleplaying)
  • 非功能性需求列表(Checklists of NFRs)

这些方法可多种混用。

image.png
上图是对上百家中国的软件企业所采用的的需求获取方法的应用现状调研结果,按受欢迎程度排序,最受欢迎的几种方法包括:焦点会议、原型法、文档分析法、问卷法、参与设计、 被动观察等。

需求分析

抽取需求之后,进入需求的分析阶段,在分析阶段最主要的目标就是要对产品及其与环境的交互进行更深入的分析,识别系统需求,设计软件体系结构,建立需求与体系结构组件之间的关联,在体系结构设计实现过程中进一步识别矛盾冲突,并通过干系人之间的磋商、协调解决这些矛盾。

需求分析的实质问题是要进行概念建模,选择常用的建模语言并进行功能和信息的建模。

需求分析的关键是要实现体系结构设计与需求的适配。通过评估需求的满足度,来评价体系结构设计的质量。

需求建模方法

image.png
根据调研结果反映,目前在工业界应用最广泛的几种需求建模方法包括:非 UML 的图形建模模型、UML 模型、表结构、用户故事和和自然语言文档。

概念建模方法的选择首先取决于语言的表达能力,其次取决于语言的沟通效率和记忆水平,我们选择需求建模的语言时必然选择一个学习成本相对较低、而且沟通效率较高的语言。

需求验证

需求验证是对其它需求工程活动的质量保证,它通过数学的形式化工具或者工程化的测试过程,来确保系统满足干系人的要求。

常见的需求验证方法包括:

  • 评审(Review)
  • 原型化(Prototyping)
  • 模型验证(Model validation)
  • 确认测试(Acceptance Tests)

上述验证方法,从错误识别、时间开销和工作成本进行对比分析,可以发现:
image.png

  • 原型验证和基于测试的验证对错误的识别率较高;
  • 测试验证的工作成本较少;
  • 原型和测试验证时间开销也相对较低;

因此原型和测试验证是需求验证的首选。

需求管理

需求管理贯穿从需求获取到软件系统下线的全过程。它涉及软件配置管理、需求追踪、影响分析和版本控制等多个方面。

  • 需求跟踪(Requirements traceability):主要是描述和追踪一条需求的来龙去脉的能力,包括向前追踪到软件制品,向后追踪到需求来源,建立需求的跟踪矩阵是管理需求追踪关系的一个有效手段;
  • 变更请求管理(Change Requests):目前已经成为软件过程管理的一个必不可少的环节,有系统化的工具和方法学的支持,是现在实现广泛应用的一个需求活动之一;
  • 需求属性管理(Requirements attributes):是对需求项目的细化的管理,其中最主要的属性包括需求的优先级、需求的状态等等;