一、需求工程过程概念介绍
(一)概述
1.规格说明
需求工程过程是系统开发中需求开发活动的集成,它以用户所面临的业务问题为出发点进行分析和各种转换,最终产生一个能在用户环境下解决用户业务问题的系统方案,并将其文档化为明确的规格说明。
2.生命周期
需求工程也有属于它自己的生命周期模型,即存在针对需求开发的需求工程过程,这个过程又作为系统工程和软件工程的一个子过程部署在系统开发的初期阶段。
3.活动分类
需求获取、需求分析、需求规格说明、需求验证为需求开发活动,需求管理为项目管理活动。
(二)需求开发活动成果文档类型简述
1.项目前景和范围文档
定义系统业务需求,明确系统开发的努力方向和工作范围。
2.用户需求文档
定义系统用户需求,以用户立场表达行为期望。例如,用例文档就属于用户需求文档中的一种。
3.需求规格说明文档
定义系统的系统级需求,指出开发者应该完成的任务。需求规格说明文档按照需求范围大致可以分为以下两类:
(1)系统规格说明文档
定义软、硬件需求、其他需求。
(2)软件规格说明文档
仅仅用于描述软件需求。
(三)系统开发后续阶段
在所有的系统开发活动结束之后,定义良好的需求被转入系统开发的后续阶段——设计、实现和测试等,这时往往会面对一个重要问题——需求变化。因此,在需求开发结束之后,在后续阶段中采取有效的方法统一管理开发的需求和需求变化,进行需求管理和变化控制。
二、需求工程过程分步介绍
(一)需求获取
需求获取主要包含五个步骤:
收集背景材料->获取问题与目标,定义项目前景与范围->识别涉众,选择信息的来源->选择获取方法,执行获取,获取功能与非功能要求->记录获取结果。
下面对每个过程的注意事项进行简要介绍:
1.收集背景材料
此阶段主要是通过与用户交流,发现用户的问题,经过需求分析步骤转化为用户的需求。
2.获取问题与目标,定义项目前景与范围
需求获取中面对的信息比较广泛,因此,为保证获取信息的有效性需要保证:
(1)不在无关内容上花费太多时间。
(2)不遗漏应该获取的重要内容。
3.识别涉众,选择信息的来源
此过程将涉及众多用户的需求采集,但是为了便于实现和收集信息的准确性,需要将用户按角色不同进行大致分类,分类后选择用户代表尽可能采集到全面的信息。这个过程叫做“涉众分析”。
4.选择获取方法,执行获取,获取功能与非功能要求
需求获取有许多技巧与方法,利用表单、报表、备忘录等硬数据进行需求获取,常用的获取方法还有面谈、调查表、观察和原型等。应该根据实际场景和业务类型选择合适的采集方法。
5.记录获取结果
对以上获取到的信息,需要对每个阶段进行记录,以便后期进行分析和处理,因此,获取笔录记录的内容往往具有凌乱、模糊、冗余和遗漏等诸多问题。
(二)需求分析
其主要工作为通过建模来整合各种信息、检查需求中存在的错误、遗漏和不一致等各种缺陷,并加以修正。这其中主要包含了六个方面的内容:
背景分析->问题分析、目标分析、业务分析,确定系统边界->软件需求建模->细化需求->确定优化级->需求协商。
1.背景分析
主要适用于大规模的系统中,因为系统环境难以梳理,此时就需要进行背景分析。例如,领域分析、企业建模等。
这个步骤在一般的项目中被省略,以免花费太多不必要的精力。
2.问题分析、目标分析、业务分析,确定系统边界
系统边界需要保证系统能够和周围环境形成有效互,并且在互动中解决用户问题,满足业务需求,这些都将依赖于分析技术与方法的使用。例如,系统用例图和上下文图。
3.软件需求建模
为了展现和解释信息而进行的抽象描述活动,常用技术包括数据流图、实体关系图、状态转换图、类图等半形式化建模技术。需要注意的是,对于一些要求严格的项目(医疗器械控制),还需要利用严格形式化的技术进行建模。例如,Z模型。
4.细化需求
对于有模糊、有歧义的用户需求,通过系统建模,转化为一些有良好粒度和特性的需求细节,即“系统型需求”。
5.确定优化级
对于用户众多的需求,需求工程师需要对需求进行排序。
6.需求协商
当用户需求出现冲突时,需要与用户进行协商,对冲突的需求进行选择。
(三)需求规格说明
1.定制文档模板
通常组织会参考[IEEE 1998]推荐的规格说明文档,再根据自己的特点和需要进行调整,建立组织的参考模板。
2.编写文档
一般会同时使用模型语言(图形、表达式等)和自然语言(文本)两种表达方式,以确保文档内容准确、易读。
(四)需求验证
验证需求说明文档是否满足以下标准:
l 真实反映用户意图
l 记录的需求整体上具有完整性和一致性
l 组织方式和书写方式具有可读性和可修改性
需求验证主要包含以下任务:
1.执行验证
最好采取同级评审,如果必要的话,可采取原型或模拟但代价较高。
2.问题修正
对发现的问题,在验证之后需要及时修正。并对修正进行跟踪,以保证修正的落实。
(五)需求管理
在需求开发建立需求基线,在设计、实现等后续活动中处理来自客户、管理层、营销部门及其他涉众群体的变更需求。需求管理在项目的各项管理活动中具有非常重要的作用,CMMI(capability Maturity Model Integration,软件能力成熟度模型集成)将其作为所有二级成熟度企业都应该具备的一个关键过程域。
主要包含以下任务:
1.建立和维护需求基线集
建立良好的配置管理,对需求基线进行版本控制。首先要标识每项需求,记录相关属性。基线的版本控制工作可以使用版本管理工具来进行。
2.建立需求跟踪信息
系统的可跟踪性要求以系统级需求为出发点进行双向跟踪。
(1)后向跟踪
跟踪系统级需求被设计、实现为什么制品,并回溯到每个设计、实现制品是为何而存在。
(2)前向跟踪
回溯每个系统级需求是为支持哪些用户需求及业务需求存在。
3.进行变更控制
需求基线建立之后,仍应该积极接受来自外界的需求变化请求,并作出及时调整与反馈。