什么是软件需求呢?为什么它需要管理呢?

软件需求完全严格来解释是:

(1) 用户解决问题或达到目标所需条件或权能(Capability)。

(2) 系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。

(3) 一种反映上面(1)或(2)所述条件或权能的文档说明

也许看起来有点深奥,其实简单来说,软件需求是一个软件要实现的功能,当然这里所谓的“功能”可能分为两种情况,一种是有形的,一种是无形的:

 “有形”的应该很好理解,你实际可以用到的功能,比如在Word文档里能把字加粗。
 “无形”的其实也好理解,虽然你平常用不到,但是还是能感受到的,比如说软件的运行速度,稳定性,还有比如这个软件要达到什么目的(比如Word的目的是可以让你处理文字信息)。
 

当然,其实终所有“无形”的需求还是需要靠一个个的“有形”的需求来实现,只是有些“有形“的需求即使实现了客户也无法直接看到,只有设计、开发与测试才能看到它们。

那为什么要对需求进行管理呢?

软件需求是随着计算机的发展而发展的,在计算机发展早期,软件规模很小,所以当时大家关注的是编码,而对于需求并不怎么关注,后来随着“软件危机”的出现,诞生了软件工程,而需求阶段是其第一阶段,至此,软件需求(也称之为需求分析)阶段开始慢慢被关注。

大家都知道,“软件危机”的原因是落后的软件生产方式无法满足迅速增长的计算机软件需求,软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出,原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。

而软件需求分析阶段作为软件工程的第一阶段,需要为一个软件的开发搭好初的框架并且还要考虑好后面可能的修改,所以对于软件可靠性、易用性、可扩展性和可维护性来说,需求分析阶段是及其重要的,直接关系到一个软件是否能够成功。

如果一个产品在需求分析阶段没有被设计好的话,在以后的各个阶段,开发与维护的成本会非常高,导致后失败的可能性会非常大,的例子比如微软的Vista,设计初期没有考虑好兼容性与硬件,导致发布以后发现与其他软件的兼容性很差,而且硬件要求又很高,很多客户不买他们的账,所以后匆匆收场,赶紧推出Windows 7来,要知道Vista的开发成本估计要接近百亿美金了,都还没怎么赚钱赶紧推出另外一个产品,足见其失败了。

所以软件需求分析阶段对于软件工程而言,已经成为至关重要的阶段,其实按照我的理解,它已经成为软件工程重要的阶段,记住,不是之一。(当然,我这里说的需求分析阶段是包含软件的设计阶段的)

一个软件的成功与否,在需求分析与设计阶段已经可以基本上预见了,因为需求分析与设计阶段从概念上其实已经把这个产品做出来了,而之后的编码阶段只是去实现它,让产品能真正可以去用。那这个“实现”阶段其实相对来说不会那么重要了,所以现在很多跨国公司只在总部保留设计部门,研发部门都外包出去,是这个原因。 “苹果”是这样一个公司,把需求分析与设计工作做好,让台湾人去把产品做出来,后得到一个完美的产品。

既然软件需求阶段已经变成如此重要,那对它的管理也相应的变得特别重要了,只有把需求设计做好了,产品才有可能成功,所以我们需要对这个阶段进行有效的管理,而且是非常有效的管理!