许多软件问题都源于收集、记录、协商和修改产品需求过程中的方式不当,包括信息收集方式不正规,没有明确提出想要的功能,假设是未经过沟通的错误假设,需求的定义不够充分,以及未经仔细考虑进行需求变更等。在软件开发中遇到的问题时,人们常常轻率地将其忽略。软件项目中40%~60%的缺陷都是由需求分析阶段的过失所致。如果处理得当,各方利益的相互作用就能使产品获得成功,同时使客户感到满意,并使开发人员充满成就感;否则就会导致误解、挫折和矛盾,从而降低产品的质量的商业价值。由于需求是软件开发和项目管理活动的基础,所以涉众必须遵循有效的需求过程。
但是开发和管理需求绝非易事,没有任何捷径与魔法。由于很多组织被一些同样的问题所困扰,所以我们可以寻找共同的解决方法,以用于不同的情况。
软件行业存在这样一个问题,用于描述需求工作的术语没有统一的定义。对同一项需求,不同的人会有不同的描述,称其为用户需求,软件需求,功能需求,系统需求,技术需求,业务需求或产品需求。客户对需求的定义,在开发人员看来可能只是高级别的产品概念;而开发人员的需求概念对用户来说也许就是详细的用户界面设计。定义多样性导致了令人迷惑或沮丧的沟通问题。需求必须被记录成文档。
软件需求包括3个不同的层次————业务需求,用户需求和功能需求。除此之外,每个系统还有各种非功能需求。
需求开发可进一步细分为获取,分析,规格说明和确认,这些子学科涵盖了为软件和软件相关产品收集,评估和记录相关的所有活动。