摘要
功能规格说明书(Functional Specification)是一个正式文档,它用来为软件开发者详细描述一个产品的潜在功能,表现以及与用户的交互性。当开发者写程序代码时,功能规格说明书是一个指导纲领和持续的参考书。
造楼房(非狗窝)和桥梁需要蓝图,出门旅行要看地图,即使没地图,好歹也有一些生存技巧作为指引,比如有罗盘和北极星辨别方向。然而,没有了这些用来指引的东西来做事情,是赌博。是生,是死,听天由命。
这篇文章不是给赌徒看的,目标读者是软件从业者,包括那个不可或缺该死的码农,还有项目经理,测试,产品狗等若干人等。
写过代码的人都有这种感觉,一个人写代码的时候很爽,只要把这个软件相关的所有知识装载到脑袋里,然后用某种或者多种编程语言讲这些逻辑写下来,最后神奇的事情就发生了,一个可以正常工作的软件产品开始有了生命。
随着软件的规模越来越大,一个人很难把所有的知识细节都加载到脑袋里,进入了像亚当斯密提到的钉子生产车间那样的分工协作时代。
在软件工程里,最大的成本就是沟通。具体的数据我没有,但是软件开发过程中,人的成本之重要已经是共识,人与人之间最困难的事情就是沟通,因此把沟通成本放大也不会偏离正确的方向。
然而如何保证高效的沟通,是个世界性的难题,但也绝不是不治之症。
- 首先,要有聪明的人,这是前提条件,因为除了软件本身的知识技能以外,还要掌握软件本身所解决问题的所在行业的知识技能,毕竟软件大多数情况下是不会孤立存在的。因此软件从业者需要能够快速领会当前软件所需要的行业知识。
- 其次,要认识到软件开发成本和维护成本的关系,业界共识是维护成本远大于开发成本。
- 最后,要保证相关知识的传承,既然软件需要长期维护,那么人员更迭是必然的,要让后来者快速掌握当前软件的状态。
看完以上几点,读者们应该也猜到了:文档很重要。
然而前几年,一些软件工程的方法论给大家一种误导,说文档不重要。其实人家说的是减少不必要的文档。如同下面代码的注释一样,是不必要的:
var i = i + 1; // 将变量i加1
那什么文档重要呢? 重要的文档有很多种,这里说的是其中之一:功能规格说明书。
在本篇文章的摘要里是这样描述功能规格说明书的。
功能规格说明书(Functional Specification)是一个正式文档,它用来为软件开发者详细描述一个产品的潜在功能,表现以及与用户的交互性。当开发者写程序代码时,功能规格说明书是一个指导纲领和持续的参考书。
功能规格说明书就如同建造大厦的蓝图,野外探险的指南针一样。不可或缺。
最后问一下,你的团队里有功能规格说明书吗?
后记
掰扯了半天,其实有人说的更好。如果这篇文章引起了你的兴趣,那么请移步看真正的高手是怎么说这件事的。
网友评论