3.1 引言
40多年前,原北约的报告 [30,31] 重点关注了企业软件交付的工业化方法的一些核心要素:面对严重的技能短缺时提高生产力和软件交付质量、标准化流程对于提高可预测性的重要性,以及测量和指标在深入了解项目的进展情况和优化开发与交付活动中的作用。在随后的几年里,这些主题吸引了很多关注,特别是关于不同形式的软件流程改进如何提高软件交付的质量和一致性[32,33]。这一研究创造了“螺旋式”和“迭代式”的软件开发模式[34,14]以及能力成熟度模型 (CMM) [35] 等测量改进方案。
近来,对软件工业化的研究注意力集中在软件生产自动化和验证上[36]。一方面,基于组件的设计技术和复用库被看做是建立零件目录并用预制件组合系统的关键要素[37]。而从另一个角度来看,与用来生成工作系统的增强型分析技术兼容的更为正规的建模语言正是自动化的关键[38]。
事实上,许多现有的论文已经讨论了企业软件的范畴,以及它从交付到投产和日常维护中面临的许多挑战。从广义上讲,我们可以看到,交付高品质企业软件的挑战是多种因素综合作用的结果。但其中三点特别值得一提:
复杂性增加。软件和系统的范围和能力在近几年显著增加。此外,现在许多包含软件的产品必须与其他软件或子系统集成,并涉及多个子集成、内部开发的代码、供应商生成的代码、打包的应用软件元素等。
团队的地理位置分散。分布式交付团队的出现,加上企业软件和工程团队的全球供应链让管理一个企业软件交付机构更为不易。地理上的分散增加了沟通的难度,而利益相关方的有效合作却往往被忽视。
缺乏标准化。许多团队运作的时候缺乏标准化少或共同的基础,导致流程共享很少,自动化程度低。
最后,互联设备的激增和软件交付的全球化已经凸显出软件被视为战略业务资产的趋势,软件是独特的客户价值和持续的业务差异化的关键。一流的产品和服务公司,是那些已经建立了强大的企业软件交付竞争力的公司—他们把企业软件交付视为核心业务流程。他们把注意力放在实现创新、降低成本和管理变革上。这些任务对于有效的企业软件交付这一全球性观点至关重要,必须加以工业化,才能拥有速度、质量和灵活性来提供必要的服务并满足新的需求。
在如今的互联世界中,这些重要因素让企业软件交付的一个日益强势的方面愈发引人注目。具体而言,我们看到很多组织已经开始重新考虑企业软件交付的模式,逐渐不再把它视为对单个组织可见并受其控制、如离散的岛屿般的一系列活动,而是把它看做“分布式集成供应链”,且这个软件供应链中的部件可以由合作伙伴和第三方供应商提供。
在这一章中,我会详细讨论这种企业软件交付观点。我首先会谈到“软件供应链”的思路,并引入软件工厂的概念。然后我会阐述软件工厂方法的特点,并用真实的例子来说明这些概念。最后我会给出一些观点和建议。