星期三, 十月 08, 2008

从国防级软件开发的一点数据管窥高质量软件开发

高安全性、低缺陷的软件开发将戏剧性的获得美国国家安全局(NSA)的帮助,因为NSA向开源社区提供了Tokeneer研究项目。项目的主要意图是展示一款非常安全
的软件如何能合理的开发。 Tokeneer使用SPARK Ada语言编写,它是一种高级程序
设计语言,设计用于编写高安全应用程序。这里是它的网页, http://www.adacore.com/home/gnatpro/tokeneer/ ,可以下载到源码和文档。比较有趣的是网页上还列出了项目开发的几个数据,这让我们得以管窥一下高质量的软件开发:

总代码行数:9939 行
总耗时:260 天
生产率(日均产出代码行数,按总耗时的天数计算):38 行/日
生产率(日均产出代码行数,按编码阶段耗时的天数计算):203 行/编码日
自交付之日起发现的缺陷数目:1 个

从这些数据我们还可以推算出,编码阶段耗时约 49天,占整个项目耗时的比例是 18.85%,还不到20%。

可以看到,高质量的软件项目,编码的时间比例是很少的,认真的测试和文档很重要,前期调研和良好的设计则是重中之重。IBM说,设计耗时应当占到 50~60%的比重。调研和设计好比战略战术制定,编码好比战斗,这里反映出的道理就是"决策要慢,执行要快"(因为不知道项目人数,所以不好评价生产率的高低,但是 203 : 38 = 5.34 : 1 的这个速度比基本上可以说明这个一慢一快的事实)。

对比我们身边一些项目的六拍运动(拍脑袋上马,拍肩膀命令,拍胸脯保证,拍桌子呵斥,拍屁股走人,拍大腿后悔),真的是天壤之别呀。所以,我们做任何项目,都要避免做出草率的和违反事物发生发展规律的可笑事情。

之前项目管理培训课上,老师讲项目范围三角形(质量、时间、资源)和灵活性矩阵分析的时候,问道,对于项目经理而言,三角形哪一条边最灵活?我抢答质量, 老师笑了,大家也笑了,其实这是个幽一默的答案,不过这个幽默是黑色的。

其实,现实是理想的背面。所以自己开个作坊,做不出来好东西,怪不得其他任何人,只能怪自己没有common sense。

没有评论: