第四章 需求工程
软件需求
软件需求
①用户解决问题或达到目标所需的条件或能力
②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力。
③一种反映上面①或②所描述的条件或能力的文档说明。
通常,软件需求可以划分为业务需求、用户需求、系统需求、功能需求和非功能需求等类型。
不同层次的软件需求及其关系
业务需求
业务需求是组织或客户对于系统的高层次目标要求,定义了项目的远景和范围,即确定软件产品的发展方向、功能范围、目标客户和价值来源。
用户需求
用户需求是从用户角度描述的系统功能需求和非功能需求,通常只涉及系统的外部行为,而不涉及系统的内部特性。
功能和非功能需求
功能需求描述系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互,一般不考虑系统的实现细节。
非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求,例如响应时间、数据精度、可靠性等。
系统需求
系统需求是更加详细地描述系统应该做什么,通常包括许多分析模型,诸如数据模型,状态模型等。
通常,系统需求模型的描述有3种方法:
①结构化英语(PDL)
②可视化模型
③形式化方法
需求工程过程
需求获取
(1)聆听用户的需求
(2)分析和整理所获取的信息
(3)形成文档化的描述
需求分析
(1)定义系统的边界
(2)建立软件原型
(3)分析需求可行性
(4)确定需求优先级
(5)建立需求分析模型
(6)创建数据字典
需求规格说明
软件需求规格说明是需求开发的结果,它精确地阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件。软件需求规格说明在整个开发过程中具有重要作用,项目管理人员可以利用它规划软件开发过程,更加准确地估计开发进度和成本,控制需求的变更过程,并将其作为最后验收目标系统的可测试标准。
需求验证
需求验证是为了确保需求说明准确、完整地表达必要的质量特点。需求验证主要围绕需求规格说明的质量特性展开,这些质量特性包括正确性、无二叉性、完整性、可验证性、一致性、可修改性和可跟踪性等。
需求管理
1.需求变更控制
①仔细评估已建议的变更
②挑选合适的人选对变更做出决定
③变更应及时通知所有涉及的人员
④项目要按一定的程序实施需求变更
2.需求文档的版本控制
版本控制是管理需求的一个必要方面,它保证在需求文档中记录和反映所有的需求变更。
3.需求跟踪
需求跟踪帮助人们全面地分析变更带来的影响,以便做出正确的变更政策。
4.需求管理工具
主要包括以数据库为核心和以文档为核心两类
需求获取技术
面谈
(1)事先准备一个合适的与背景无关的面谈,列出一些准备询问的问题,并将其记在笔记本上以便面谈时参考
(2)面谈前,需要研究一下要面谈的风险承担人或公司的背景资料,不要选择自己能回答的问题打扰被面谈人
(3) 面谈过程中,应该参考事先准备的面谈模板,以保证提出的问题是正确的。同时,需要建立起和谐的气氛,并将答案记录下来
(4)面谈之后,分析总结面谈记录,找到主要的用户需求或产品特征
需求专题研讨会
(1)专题讨论会的准备
(2)安排日程
(3)举行专题研讨会
观察用户工作流程
(1)被动观察
(2)主动观察
原始化方法
在构造原型之前,需要充分与客户交流,结合软件的应用领域、应用复杂性、客户特点和项目特点等因素,决定在评价完原型之后抛弃掉原型还是将其进化为最终产品的一部分。
基于用例的方法
(1)确定参与者
(2)确定用例
(3)描述用例