需求的概念有了,但是如何系统地、高效地获取需求?获取需求的流程是什么、有哪些步骤、每个步骤对应的方法、标准是什么?等,解决这些问题就需要建立一套标准的需求获取方法。需求工程就是用来解决上述问题的方法,它是软件工程的三个核心工程(需求工程、设计工程、开发过程)中的第一部,需求工程的成果是其后设计工程的输入。需求工程是支持系统化的需求建模过程,为软件需求模型提供了标准的定义和约束条件,使得需求工程师和开发工程师对需求信息的理解是一致的。

1. 需求工程的构成

用软件工程的三个核心部分搭建一个框架,其中需求工程的内容可以按照横轴和纵轴分为两个维度展示,如图1所示。


图1 软件工程与需求工程的构成

1)工程分解 — 横轴
在图1中给出了需求工程在软件工程中的位置、需求工程的内容构成,并按照流程的方式表达了需求工程的四个主要阶段和顺序关系,四个阶段分别为:调研准备、需求调研、需求分析、需求管理,其中需求调研和需求分析是需求工程中的重点,是获取需求的主要工作阶段。

2)工作分解 — 纵轴
在需求工程中每个阶段内完成了不同的工作,纵轴给出了需求工程每个阶段中的主要工作构成,如调研准备阶段的主要工作分为:组织计划、背景问卷、标准环境等。
下面分别对横轴和纵轴的内容进行说明。

2. 调研准备

调研准备,是需求工程的第一个阶段,重点给出了需求工程在进入正式的调研前需要做哪些准备,这些准备对后面的调研、分析和资料管理都有着非常重要的指导作用。

1)组织计划
□进行需求工程前要先建立需求调研组,确定调研资源、分工等
□由调研组对后续的调研工作进行策划、路线、方法等
□根据调研内容、工期、资源等制定调研计划,包括里程碑计划、执行计划(月计划、周计划、人计划、板块计划、周例会)、资料交付时间、成果评审时间等。

2)背景问卷
□背景资料:收集项目相关的背景资料,包括:客户企业构成、业务领域、IT现状、对信息化的期望等。资料的来源有企业网站、资料、销售人员的沟通等。
□问卷调研:预先采用问卷的方式进行“预调研”,初步收集用户信息,为正式进入调研时掌握主动打下基础,问卷可以让用户预先有一个心理准备,要调研什么内容、怎么调研等,同时预调研的资料可以支持做策划和计划。

3)标准环境
□建立标准,包括:与客户统一主要的用语(用语字典)、调研标准流程、需求记录模板、交付资料类型、阶段评审时间和内容等。
□布置调研环境,包括办公室、交流场所、调研用具(包括投影仪、白板、彩笔)
□召开项目启动会时间,会上要确定的内容,包括:客户与调研双方要遵守的纪律、规则、计划、可能出现的风险和应对方法等,这是非常重要保障措施。

3. 需求调研

需求调研,是需求工程的核心阶段之一,这个阶段的主要工作是收集、记录客户对信息化的需求,重点是在对原始需求的“记录”,而不对原始需求进行“分析或设计”,此时应该避免因为分析与设计融入了需求工程师个人的见解,需求调研阶段的资料一定要保持其第一手资料的“原始性”(使用需求模板是为了使记录内容标准化、格式化)。收集和记录的主要形式有以下三种。


图2 需求调研的三种记录形式

1)现状构成(图形记录形式),图2(a)
做好需求调研工作的第一件事,就是要理解客户业务现状,采用架构图的方式表达业务现状是最佳的的方法。现状构成图不仅是客户现状的记录,而且也是后续进行业务架构、优化、改进的重要参考物。没有此图,后续在设计时就不知道以什么为参考对象进行业务的优化了。
■注:
需求调研的目的不仅仅要获取软件的“业务功能”,而且还必须要获得“业务逻辑”,这两者是软件设计和开发必不可少的依据,而业务逻辑主要依靠架构图的方式获取的。

2)访谈记录(文字记录形式),图2(b)**
不能用图形表达的需求要用文字记录,用文字记录有两种主要形式:事前问卷、当面访谈。
(1)事前问卷
对一些用户基本情况的了解可以提前编制一个起着诱导、启发作用的问卷,将相关的问题提出来,用填写、或是选择的方式让未来的调研对象先做个回答,这样可以高效快速地掌握一些简单、基础的需求。

(2)当面访谈
这个部分的内容最多、工作量也是最大的,包括了客户对信息化的明确需求、不明确的问题、对未来的期望等,比如:
□决策层面的需求:理念、目的、商机等;
□管理层面的需求:优化、效率、效益等;
□执行层面的需求:功能、措施、规则等;
以及各层共有的问题,如:企业运营中的难度、痛点等。

3)既存表单(表格记录形式),图2(c)
既存表单,是客户在导入信息系统前正式使用的、并且需要转化为用系统处理的各类资料。包括:各类凭证单据、统计报表、分析资料等。它们的存在形式可以是:电子表单、纸质表单。
这是后续设计业务功能的重要参考物。这些资料提供了如下的信息(不限于此)
□业务功能、系统界面的参考;
□数据定义、数据逻辑、数据规则(计算公式);
□业务流程上节点对应的实体;等

4. 需求分析

需求分析,是对收集到的原始需求进行细致的分析、研判,准确地理解客户的目标、业务等对信息化的需求,最终将这些需求转换为准确的功能需求定义。需求分析就是确定系统必须要做什么的过程。需求分析阶段是分析系统在功能上需要“实现什么”,而不考虑如何去“实现”。
需求分析完成后,给出【需求规格说明书】,这个资料的用途有两个:回答客户的需求、作为后续设计的输入。
□对客户:确定了系统需要开发/交付的全部内容,是双方签订/验收合同的依据;
□对设计:是规划系统范围、目标、原则等的依据,是具体设计的指导;

需求分析的结果,不但影响着需要实际开发的功能数量,而且也直接影响着软件项目的开发成本、甚至是对软件商技术的能力要求等。

对需求调研收集到的资料理解基础之上,进行了抽提、归类、梳理,同时根据分析补全了调研时的断点,并且采用比较规范的方式进行了表述,重要的是:需求工程师通过对目标需求、业务需求等高端需求的分析加入了个人的理解、以及对企业信息化提升有价值的意见,所以需求分析的结果与原始记录之间会发生不同,需求工程师的理解代表了软件开发团队的理解,并以此为基础向客户进行确认、最终稿就形成了向下一个设计环节的输入资料。
所以说,需求工程师的能力会最终影响到信息系统的内容、技术、成本和周期等

图3 需求调研成果与需求分析的三个分层的关系

需求分析阶段的主要就是要给出具体的软件“功能需求”。需求调研阶段获得了三种调研记录,如图3(a)所示,将这些原始需求的内容按照提出者、目的的不同分为三层,如图3(b)所示。其中
□目标需求:提出了系统的构建方向、目标,比较抽象,需要转换为对应的业务需求;
□业务需求;提出了系统要支持的业务内容,是从业务上相互理解的基础;
□功能需求:提出了系统要实现的功能内容,是从功能上相互理解的基础;
目标需求和业务需求要想落实到系统中都要转换为功能需求。

5. 需求管理

主要是配置的管理工作。由于需求工程中的需求管理部分(包括:记录标准、记录模板、需求确认、需求跟踪、变更控制、版本更新等)是对分析与设计成果的管理和维护。

前述三篇博文说明了什么是需求、需求工程,下面就要对需求工作的担当者所需要的能力给予说明。

■ 本博文系列下一篇:需求、需求工程与需求工程师 — 4. 咨询的能力要求

详细的需求工程说明请参见《大话软件工程—需求分析与软件设计》一书。

需求、需求工程与需求工程师 — 3. 需求工程的构成相关推荐

  1. 需求、需求工程与需求工程师 — 4. 咨询能力的要求

    对需求工程师的能力要求是什么?在回答这个问题前要先定义他的工作范围和岗位.在软件行业中,"需求工程师"的工作范围不太确定,如:在大型软件公司或是大型软件项目中,他的工作是" ...

  2. 需求、需求工程与需求工程师 — 2.需求的来源

    软件的需求是从哪里来的?可能你会毫不犹豫的回答:从客户那里调研来的.这只回答对了一部分.简单的.小规模的.技术含量不高的软件功能基本上是依据客户提出的需求完成的,而复杂的.大规模的.技术含量高的的软件 ...

  3. 需求、需求工程与需求工程师 — 1.定义、作用

    在软件实现的过程中,需求分析的正确与否是软件成功的基础和前提,需求内容不但包含了客户对软件的期望与要求,同时它也影响着系统采用的架构方法.实现技术等.需求工程质量的优劣,直接影响着后续设计工程和开发工 ...

  4. 软件需求分析学习日记(一)需求工程概述

    软件需求分析学习日记(一)需求工程概述 文章目录 软件需求分析学习日记(一)需求工程概述 1.1需求工程的重要性 1.1.1几点说明和描述 1.1.2不适当的需求过程所引起的风险 1.2什么是软件需求 ...

  5. 【需求工程】需求管理

    需求标识与分类 需求以自然语言进行描述,应该以某种标识方案进行编号. 几种常见的需求标识和分类的技术: 唯一标识符:一个顺序号,手工方式或CASE工具自动生成. 文档层次内的顺序编号:考虑需求在文档内 ...

  6. 社区疫情防控平台需求工程--软件需求规格说明

    软件需求规格说明 (IEEE 830 标准) a. 引言........................................................................ ...

  7. 软件需求管理(二) 需求获取

    一. 需求获取概述 1.1相关概述 软件需求获取是软件工程的主体. 主要表现为: 发现问题->分析问题->解决问题 的过程. 需求获取阶段主要产生的文档:1.前景和范围文档 2.用例说明文 ...

  8. 需求获取的三阶段:需求背景、需求调研、需求分析(1)

    软件需求的获取是软件开发过程的第一步,需求质量是决定软件成功与否的重要前提,如果获取的需求有了偏差或是遗漏,其结果可能导致后续的分析.设计与开发都出现问题:反之,如果获得了全面.严谨.逻辑表达清晰的需 ...

  9. 需求获取的三阶段:需求背景、需求调研、需求分析 (3)

    收集到了客户的需求后,下一步就到了对需求进行分析的阶段,在这个阶段就要理解需求.分析需求.最后确定系统需要实现的功能需求.这一阶段非常重要,因为前期收集到的需求表达形式各种各样,不一定都是用" ...

最新文章

  1. 《Windows Server 2012 Hyper-V虚拟化管理实践》——1.3 物理服务器选型建议
  2. 高级C语言教程-sscanf()函数使用方式
  3. (Prototype)原型模式的Java实现(转)
  4. 这不关我的事,别烦我!
  5. redis持久化之rdb篇
  6. android 富文本编辑器_富文本编辑器原理探索
  7. 英语学习笔记2019-9-29
  8. (40)VHDL实现移位寄存器(方法2)
  9. Android系统(117)---Activity启动过程
  10. java 框架介绍------权限框架
  11. 开源表单系统|Tduck填鸭表单docker部署详细教程
  12. SPD软件(医用耗材管理系统)应用效果分析
  13. 一个简单标注库的插件化开发实践
  14. 恒讯科技分析:香港服务器有效防止DDos攻击的3种方法
  15. 【Python】程序员也可以很会撩:如何一键生成漂亮的生日快乐词云
  16. 《剑指Offer》题解与笔记(Java实现)
  17. 2014北邮计算机考研复试上机题解(上午+下午)
  18. Android实现关机代码
  19. 世界读书日:作为一个优秀的程序员请收藏这份书单
  20. Tensorflow训练模型越来越慢

热门文章

  1. java调用el_[Java教程][javaEE] EL表达式调用java方法
  2. java 对list增删_List 中正确的增删操作
  3. ISTQB高级-测试经理国际认证试题及答案(二)
  4. 阿里巴巴Java开发手册——速读记录
  5. centos uninstall teamviewer11
  6. 我使用的Chrome插件列表
  7. linux gcc编译C程序 分享
  8. Apple 的 CEO和Google的CEO在星巴克聊什么呢?
  9. 5月25号GE一面经历
  10. 多个字段条件相同进行分组并过滤拼装SQL