软件工厂(4)
 
2008年5月15日
 
实现软件开发的产业化
         
            在其他行业,提高生产能力的途经是从手工作业过渡到机械生产。在手工作业阶段,所有产品都是由个人或小组从无到有制造出来的,而在机械生产阶段,各种产品通过组装多家供应商生产的可重复利用的组件迅速生产出来,在这个过程中,许多机械琐碎的任务都是由机器自动完成的。这些行业对工艺、设计和包装进行标准化,借助产品线实现系统性重复利用,并通过供应链分担成本和风险。现在已有部分行业可以实现大规模定制,根据需求快速而经济地制造出各种产品,以满足不同客户的特定要求。
 
软件能够实现产业化吗?
 
       人们对软件与实物之间的类比进行过热烈的讨论。这些产业化模式能够应用于软件行业吗?难道软件行业没有因其产品性质的不同而比其他行业特殊吗?Peter Wegner 对它们之间的异同总结如下 [Weg78]:
软件产品在某些方面与传统工程学科中的有形产品(如桥梁、建筑物和计算机)存在相似之处。但也存在某些重要的区别,使得软件开发与众不同。由于软件是逻辑概念而非实物,因此其成本集中在开发过程中而不是生产过程中。又因为软件不会磨损,因此其可靠性取决于逻辑质量(如正确性和稳健性)而非物理质量(如硬度和韧性)。
有些讨论将实物的生产与软件的开发比作“苹果与桔子”。理清这些困扰的关键是理解生产和开发之间的不同,以及规模经济与范围经济的不同。
        为了获得投资回报,必须尽最大可能重复利用那些可重复利用的组件而不仅仅是收回开发成本,无论是直接通过降低成本,还是间接通过降低风险、缩短进入市场的时间或改进质量来实现。从投资角度讲,可重复利用的组件属于金融资产。由于为使组件可重复利用而耗费的成本通常非常高,很难达到可获利的重复利用程度,因此需要有一种系统的方法来实现重复利用。这通常包括确定一个要开发多个系统的领域,找出该领域中重现出现的问题,开发出一套解决该问题的集成生产资产,然后将这些资产应用到在该领域中开发系统的过程中。
 
[关闭]  [打印]