一、需求分析概述
什么是软件需求?
软件需求是指用户对软件所提出的功能性和非功能性的要求。前者定义了系统做什么,后者定义了系统工作时的特性。
软件需求的定义:
用户解决问题或达到目标所需的条件或能力。
系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。
软件需求的定义包括了用户角度(系统的外部行为)和开发人员角度(系统的内部特性)两个方面,其中的关键在于需求一定要文档化。
二、需求分析任务
什么是需求分析?
需求分析是指开发人员要准确地理解用户的要求,进行细致的调查研究,将用户非形式化的需求描述转化为完整的需求定义,再由需求定义转化为相应的软件需求规格说明书(即需求分析的结果)的过程。
需求分析是理解、分析和表达“系统必须做什么”的过程。
需求分析是为用户所看到的系统建立一个概念模型,是对需求的抽象描述。
为什么要做需求分析?
许多大型应用系统的失败,最后均归因于需求分析的失败。要么获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;要么客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。
需求规格说明书是客户、软件开发人员、软件测试人员和项目管理人员四者共同工作的基线,是项目Alpha测试和Beta测试的准则,是供方交付产品和需方验收产品的依据。
需求分析通常要占用整个软件开发时间或工作量的30%左右。
需求分析阶段的错误,属于软件开发过程中的早期错误,将给项目带来极大风险,因为这些错误会在后续的设计和实现中进行发散式的传播。
基于以上四项原因,IT企业对需求分析特别重视,通常派经验最丰富的人员去做软件或项目的需求分析。
需求分析做什么?
准确回答“系统必须做什么?”这个问题;
通过分析和构建系统的“模型”,对系统提出完整、准确、清晰、具体的要求;
编写软件需求规格说明书;
用户要很好地参与到需求分析过程中来;(需求需要不断地迭代)
注意区别”可行性分析”和”需求分析”的异同;
需求分析怎么做?
从概念上讲,需求分析主要涉及三项活动或工作:获取需求,理解和分析需求,表达需求。