The Introduction of Calling the Shot

这是人月神话:软体专案管理之道(20周年纪念版)的第八章:预估,这里有两段开场白,一段是:‘练习就是最好的教练。—西流士。’,一段是‘经验的代价是昂贵的,但愚人就只能从经验中经验中学习。’,这一篇真的很值得做软体工作的人员来阅读,ㄚ琪以前在开工作室的时候,最感困难的就是估价跟报价了,估价牵涉到软体系统要花多少时间来完成?这对新手来说,确实是很难预估的一件事,因为有时客户所要求的案子,可能之前自己还没做过说。

首先,要估计开发软体的时程,你可以参考The Introduction of The Mythical Man-Month的预估方法。其次,‘写一个独立的小程式(program)所花的时间不能拿来作为预估整个软体系统产品(programming systems product)的开发时程之用’,咦,不是直接用吗?这个经验ㄚ琪依稀记得,确实不能直接这样用,依据这样的公式,当然这公式可查出是经过验证的,我就不再多说,公式如下:

费力程度 = (常数)× (指令的数量)1.5

之前Portman研究发现,他的软体开发小组还使用计划评核图(PERT chart),这个ㄚ琪在工业工程上是有学过也很推崇的,不过在开发软体专案时,也会有不切实际的现象产生。

另外一个IBM的系统技术经理,也做过生产力的研究,发现这样的结论:

沟通很少     10,000指令/人年(man-year)

沟通量中等   5,000

沟通量很多  1,500

Harr的研究发现如下面的简体文字统计表:

2011-03-02_135640

有了这个表,要预估软体开发的时程就更方便了!

OS/360的开发验证了‘工作本身的复杂度与困难度将对生产力造成惊人的差异。’作者的经验估计‘编译器之类的程式会比一般整批处理的应用程式要复杂三倍,而作业系统又要比编译器复杂三倍。’,这样的推敲下去,看来ㄚ琪还是继续写应用程式就好了,比较简单。

前面的研究很多都是组合语言开发的生产力,Corbato’的研究则显示采用高阶语言,软体开发的生产译可以提升五倍,难怪用微软的Visual系列有一定的好处,真的是开发太方便了,想挥之欲去,都很难啊!ㄚ琪最近甚至有点爱上了C#的使用了,太好用了!