一、需求问题的提出
1、来源:实际用户才能描述此系统必需达成的目标。
2、问题:用户并不一定可以指出这些目标所需要的具体的功能需求。
3、需求对项目的败因大致有五种:不完整的需求,缺乏用户参与,不切实际的用户期望,需求变更频繁,提供了不再需要的需求。
二、不同项目的需求视图
不同项目的需求在有着根本上的差异,不同的产品需要从不同的角度进行需求的获取。
三、需求的定义
1、定义:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
2、软件产业目前普遍存在缺乏统一的需求定义的问题。
3、基本原则:①需求是所有项目风险承担着在描述需求的那些名词的理解上务必达成的共识。
②需求关注的是系统的目的是什么,以及为了达到目的系统的所有功能。
③定义系统而不是项目,每个需求规格应该是长期有效的,适用于多个系统。
④需求的本身由需求规格的正式部分组成,是系统必须做什么的正式定义,其他都是非正式的
⑤避免重置,清晰得表达出每个需求。
⑥保持每个需求定义的大小在合适的范围,提炼出主要需求和附加需求。
4、优秀的需求应该有这些特性:完整性,正确性,无歧义性,可行性,有优先级,必要性,可验证性。
四、需求定义的实践
1、概述:问题与机会。需求定义应该从内部寻根和外部溯源同时进行,大体分为找到目标,发现问题,列出可选方案,选出合适方案4个步骤。
2、问题分析五步法:1)在问题定义上达成共识。2)分析问题背后的问题。3)确定相关人员和用户。4)定义解决方案的界限。5)确定加载解决方案上的约束。
3、问题定义的要素:目标、范围、相关人员与用户、相关事实与假定。定义过程中应注意从目标、业务优势、度量指标、合理性、可行性、和可达成性方面进行编写。
4、需求定义的范围:是通过程序分解结构给出,“清晰第一,效率第二”是当前软件开发的特点。合理的功能分解可以极大提升软件开发的效率。
五、需求的层次和分类
1、层次:业务需求:代表了需求链中最高层的抽象,为软件系统定义了项目视图和范围,是指导软件开发的高层需求。
用户需求:指用户使用软件需要完成的任务,怎么完成的需求,又称原始需求。
功能需求:功能需求是对用户求的分析、提炼和整理,是系统中的一些具体的功能。
2、分类:功能需求:定义了开发人员必须实现的软件功能。
非功能需求:是功能需求的补充,描述了系统展现给用户的行为和执行的操作等,包括了外部界面的细节、性能和质量属性。
设计约束:设计约束是指开发人员在软件产品设计和构造上的限制,产品必须遵从的标准,包括非技术因素的选型、语气的软硬件环境和预期的使用环境三大类型。
六、需求在总体方案中的位置
1、生命周期:软件的系统开发、运行、维护所实施的全部过程。
大致分为:1)问题的定义和可行性研究。2)制定开发计划。3)需求捕获。4)分析。5)设计。6)规范。7)实现。8)测试。9)部署。10)维护。
2、需求与软件项目过程的关系:需求阶段是系统开发的整个生命周期中最基础的、最重要的部分。需求分析是联系其他软件项目过程的枢纽。
总结:需求分析是软件生命周期中一个非常重要的过程,它决定着整个软件项目的质量,也是整个软件开发的成败所在。