|
软件工厂就是指为了支持某种特定应用程序的快速开发而配置的开发环境。软件工厂从逻辑上讲就是软件开发方法和实践的下一个发展阶段。然而,通过引入产业化模式,软件工厂势必会改变软件行业的现状。
扩大软件开发的规模
从目前的情况来看,软件开发的速度缓慢、代价高昂而又极易出错,常常会生产出存在大量缺陷的产品,在可用性、可靠性、性能、安全以及其他服务质量方面造成严重的问题。
根据 Standish Group [Sta94] 的统计,美国公司每年投资约 175,000 个软件开发项目,投资额约为 2,500 亿美元。这些项目中只有 16% 能够在预算内按计划完成。另有 31% 的项目主要由于质量问题而被取消,经济损失约为 810 亿美元。另外 53% 的项目平均超出预算 189%,经济损失约为 590 亿美元。完成的项目平均只实现了原来规划的功能的 42%。
这些数字客观地印证了我们根据经验所做出的判断,那就是软件开发是一项劳动密集型的产业,它创造每一美元的价值所消耗的人力资本超过了我们对于一个现代化行业的期望值。
当然,除了这些缺点以外,软件开发的成果显然为消费者带来了巨大的价值,正如需求增长的长期趋势所表明的那样。但这并不意味着消费者已经非常满意,不管是对我们提供的软件,还是对我们提供软件的方式。这只是说明他们确实看好软件的前景,愿意承担巨大的风险和损失,以此来获得软件所带来的好处。然而,正如软件开发的外包越来越受欢迎所表明的,这种情况显然不是最好的,因为它似乎不能推动软件行业在软件开发方法和实践方面作出重大的改变。
在过去十年中,生产率只获得了有限的提高,最重要的原因可能是采用了字节编码的语言、模式和灵活的方法。除了这些进步,我们开发软件的方法与十年前没有什么不同。我们的方法和实践实际上没有太大的改变,相应的成本和风险同样也没有太大的改变。
然而,这种情况就要被改变。据预测,全球对软件的总体需求将在下一个十年中以数量级的速度增长,这是由于受到全球经济中的新生力量(例如中国的崛起)的推动,以及由于新的应用类型(例如商业集成和医学信息科学)和新的平台技术(例如 Web 服务、移动设备和智能产品)而使软件在社会基础结构中的作用日益加大。 如果软件开发能力没有相应的增长,那么十年后势必出现总体软件开发能力大大低于总体需求的局面。当然,如果市场力量能够自由运作,这种情况不会真正出现,因为受到启发的软件提供商将出于个人利益而提供足够多的软件来满足这种需求 |