软件的需求是指用户对目标软件系统在功能、性能、设计约束、交互等方面的期望。需求分析(Requirement Analysis)就是通过对应问题以及环境的理解与分析,弄清楚问题的要求,包括需要输入什么数据、要得到什么结果、最后应输出什么,也就是弄清楚“做什么”的过程。在这个过程中要建立模型,把用户的需求精确化、完全化,最终形成需求规格说明。
需求分析是系统开发工作中的定义阶段中最后一个环节,它是系统分析与系统设计阶段之间的桥梁,是决定系统开发成败的关键,重要性是不言而喻的。一方面需求分析以前期的可行性研究报告、系统规格说明等作为分析的基本出发点,并且从软件开发的角度对前期的工作进行检查和调整;另一方面需求规格说明是后期软件设计、实现、测试、交付、维护的依据。因此,优秀的需求分析有助于修正和完善早期错误和不足,从而提高软件的开发质量和降低开发成本。但这个阶段的工作是很困难的,主要表现在:
1.职业隔阂
在软件生存周期中,只有本阶段是面向用户的,其他几个阶段都是面向软件技术问题。需求分析要细致地对用户的业务活动进行分析,明确在用户的业务环境中“想要什么”以及让软件系统应该“做什么”。因为软件开发人员不是用户问题领域的专家,不熟悉用户的业务活动和业务环境,又很难在短期内搞清楚客户的业务;而用户不熟悉计算机应用的有关问题,对问题的理解、描述以及他们对目标软件的要求往往是模糊的、片面的,甚至是不一致的。双方人员在交流上也会有一定的隔阂,因此在开始时,用户和开发人员双方都很难能准确地提出系统要“做什么”,这成了需求精确获取的最大障碍。
2.需求的变更(www.xing528.com)
由于职业隔阂,交流又可能不充分,客户业务变更等因素,特别是大型的、复杂的软件系统,用户很难精确完整地提出它的功能和性能要求,双方在一开始只能有一个模糊的、大概的轮廓,只有经过多次的、反复的认识后才能确定具体的功能。常常很多需求是进入到设计、编程阶段才能明确,更有甚者,到开发后期还在提新的要求。需求的这种多次的、大的变更这对软件开发而言无疑是一场灾难。
3.里程碑作用
需求分析是软件开发的基础,在整个系统开发中起到了里程碑作用,是相当重要的环节。假设在该阶段发现一个错误,解决它需要用一小时的时间;而如果到设计、编程、测试和维护阶段才发现的话,解决这个错误则大概对应要花2.5、5、25、100倍的时间。
由于需求分析不仅涉及组织、管理、具体业务等活动,而是要涉及各类工作人员,所以如何科学地组织和适当地着手展开这项工作是非常重要的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。