软件需求关注的是做什么的问题,而软件功能关注的是怎么做的问题。软件需求是为用户服务的,而软件功能是为软件开发服务的。相对于软件需求这个目的,软件功能是手段。
最近,又想到了一个比上次举的例子更好的例子。这就是汽车的例子。
假设我们需要设计一款新车。在设计新车之前,我们需要做一下市场调查,以确立汽车的市场定位。显然,市场定位很重要,如果定位失败,整个销售情况不会好。
我分析的过程分下面两个阶段进行。
第一阶段是设计一个角色,用来确定汽车需求。(在软件中叫做软件需求)
比如,我可以这样写,有一个人叫做张时尚,年纪28岁,在张江高科一家外企上班。月薪1万元。有一个还不太稳定的女朋友,目前房子是按揭,因为是独子,所以生活压力不大。买车的目的,为了上班还有平时带女朋友兜兜风。
第二阶段根据上面的角色的需求来确立汽车规格。(在软件中叫做规格定义,又称功能定义)
* 汽车定位两厢车,体现时尚感;
* 外形也要体现时尚;
* 价格十万元左右;
* 适合城市路面;
* 发动机排量1.6升;
* 等等。
从上面的例子,可以看出,第一阶段的工作主要是收集用户是如何使用该产品的问题,从而为我们下一步进行精确的产品定位打下良好的基础。第二阶段的工作是在
第一阶段工作的基础上确立产品规格,产品规格将产品的适用范围进一步缩小,从而使设计更有针对性,这样获得良好的设计成为可能。在这里,非常明确的规格列
表提供了一系列约束条件,规格之间往往有矛盾的地方,最后的设计就是在这些规格之间获得一个平衡。比如,发动机动力充沛和总体价格之间会存在矛盾,这时候
我们把具体规格(发动机排量1.6升,价格十万元左右)定下来就会避免此类问题的发生。
回到软件的话题,软件需求关注的是用户用软件来做什么的问题。而软件功能关注的是我们用软件的何种手段来满足用户需求的问题。比如软件界面如何设计就是一个典型的界面规格的问题。简单的模仿别人的界面或许会使我们失去一个创新的机会。
[参考]
1 软件需求和软件功能的区别