需求工程第三章需求工程过程,需求获取概述
第三章 需求工程过程
过程是一组相关活动的集成,通过这些活动的执行,可以完成一项任务或者达到一个目标。
需求工程过程是系统开发当中需求开发活动的集成,它的模板是产生一个能够在用户环境 下解决用户业务问题的系统方案。
需求工程活动
需求开发(问题获取,分析,编写规格说明,验证),需求管理
需求获取:
从人、资料或者环境当中获取需求的过程,往往和需求分析是交织在一起的。
需求获取子活动:收集背景资料,定义项目前景和范围,选择信息的来源,选择获取方法,执行获取,记录获取结果
需求分析:
建模来整合各种信息,以使得人们更好的理解问题,为问题定义出一个需求集合,这个集合能够为问题界定一个有效的解决方案。
需求分析子活动:背景分析,业务分析,利用场景/用例模型描述用户需求,需求建模,需求细化,需求优先级,需求协商,最终得到一个需求基线集
需求规格说明
获取的需求需要被编写成文档,主要目的是为了在系统涉众之间交流需求信息,业务需求被写入项目前景和范围文档,用户需求被写入用户需求文档(或用例文档),系统需求被写入需求规格说明。
子活动:定制文档模板,编写文档。
需求验证
确保需求规格说明文档能正确、准确的反映用户的意图,确保文档的高质量
子活动:执行验证,问题修正
需求管理
保证需求作用在整个软件的产品生命周期中持续、稳定和有效发挥
子活动:建立和维护需求基线集,建立需求跟踪信息,进行变更控制
需求工程过程实例:
螺旋RE
依赖原型方法:
HP需求过程,实践-based,敏捷RE,
需求工程过程与软件工程过程
瀑布模型,增量模型,螺旋和进化模型,敏捷模型
需求工程过程更应该是软件工程过程的一部分,而不是独立出来作为单独部分。
需求开发方法与软件开发方法是否适配,比结果需求的好坏更能影响项目的成败。
相比于应用领域的成熟性,一个项目管理者有效管理需求的能力更加重要。
应当在项目后续的阶段中逐步完善需求。
需求对后续的影响:增加理解,节省精力,提升沟通,帮助决策,预算,变更管理。
第四章 需求获取概述
需求获取的非平凡性
知识理解的困难,
默认知识现象,
普通用户缺乏概括性综合性的表述能力,
用户存在认知困境(潜在知识)需要利用各种有效的需求获取的方法和技巧来挖取,
用户越俎代庖(提出的是解决方案,用户固执的坚持某些特征和功能)
缺乏用户参与:用户数量太多选择困难,用户认识不足,用户情绪抵制,没有明确的用户。
需求获取的活动过程
研究应用背景,建立初始的知识框架;根据获取的需要,采用必要的获取方法和技巧;进行涉众分析,针对涉众的特点开展工作
需求获取活动的要点
内容
在项目范围之内,所有为用户创建解决系统必须的信息,获取的内容不是一次得到的,而是逐步积累的
来源
涉众,相关产品,硬数据,重要文档,相关技术标准和法规
方法
传统方法:问卷调查、面谈、硬数据分析、文档检查、需求剥离
集体获取方法:头脑风暴、专题讨论、JAD、JRP等
原型和模型驱动
基于上下文方法:观察、民族志和话语分析
认知方法:任务分析、协议分析等------对领域知识严谨而细致的抽取
过程
在整体上制定组织方案,维护项目的前景和范围,接受需求的不稳定性,控制探索性工作,防止需求遗漏,结束获取活动的判断条件
结果
笔录,正式文档(项目前景和范围文档,用例文档)
需求获取中需要关注的问题:
项目目标
项目范围
用户参与
交流问题
获取方法的使用