3.7 见解与评论
在企业软件交付中,软件供应链的产业化被视为成本控制和效率的基石。如本章所述的软件工厂就提供了一个重要的工业化视角来看待企业软件交付,从这里面我们可以观察到一些东西:
软件工厂方法需要一套不同的思路来监测进展并实现有效的状态管理。大多数传统的指标突出了两类衡量标准:生产力,即交付的功能点或源代码行数;以及质量,即每个交付模块中的缺陷数。这种措施有一定的用处,但对于企业软件交付的供应链视角来说还显不足。这些衡量标准必须着眼于各个供应商的更广泛的服务水平协议 (SLA) ,其中可能包括成本、可预测性、时间表变动、需求的波动、对新需求的响应速度等。类似地,供应链交付过程的透明度变得至关重要。这种透明度可能会介于下面两种观点之间:“黑盒”观点,即供应商完全控制自己的交付方式(使用哪些流程、工具和做法)和“白盒”观点,即所有活动都开放地进行讨论、检查和审查。确定一种方法(并协调和管理这些活动)对于供应链的运作至关重要。
在许多情况下,机构会在企业软件交付过程中选择各种不同的合作伙伴。机构不仅为不同的专业任务选择不同的供应商,还将在某些领域实施多源采购,以减少风险、提高灵活性并加强竞争。虽然这样的计划能够创造价值,但复杂的供应链也大大增加了管理成本。
多源采购的一个极端版本,就是在部件交付中采用“众包”。一些机构已经开始做出交付方法的尝试,基本上就是将新的需求进行“拍卖”,目标就是找到能满足规定需求的最便宜的供应商。这是典型的提案邀请 (Request for Proposals, RFP) 方法的一个扩展,面向更开放的市场,推向更广阔的候选对象,提高部件供应商的灵活性。当然,企业必须解决这种方法面临的诸多挑战,特别是在安全性、知识产权和质量等方面。
现在开始出现一种更标准化的方法来解决软件工厂的基础设施问题。对传统的源代码管理和变更管理工具进行扩展,协同应用生命周期管理 (Collaborative Application Life-cycle Management, CALM) 对于采用软件工厂方法的机构的重要性与日俱增[46]。CALM的核心,就是认识到企业软件交付中必须协调许多不同的分布式团队。这些团队可能来自不同的公司,地点也很分散。因此,CALM技术加强了一套软件工厂做法和工具,在各个层次的合作交付场景中都可以轻松适应广泛分布的团队。在极端情况下,这些团队可能由职责、责任移交和产品所有权都非常明确的外包供应商构成。然而,许多较为折衷的混合情况也很常见,软件工厂的基础设施必须能够适应这些安排。
已经证明,在供应链中,一个健康的部件供应商生态系统极为关键。软件工厂中的供应商机构必须能够对部件的交付进行优化,并且这往往是为许多潜在的消费者进行的。我们现在所看到的最有意思的方法之一涉及模型驱动架构 (MDA) 和PLE技术[47]。
在这些方法中,使用系统特性的抽象模型来生成部件和子部件。相比针对特定系统交付的代码而言,机构可以更容易地针对不同的使用环境来分析和优化这些模型。有了这些方法,出现了专门针对部件和部件加工的供应商。例如,一些金融服务机构选择用第三方核心银行框架起步,并通过修改其数据模型和流程模型来让它适应自己的经营环境,避免了自己从头开发。
虚拟化技术平台对于采用软件工厂方法的机构特别有吸引力。与其他行业类似,分布分散且运营灵活的供应链需要一个适合这些特性的自动化框架。CALM技术的一个自然的延伸就是使用云计算技术,“按需”提供这些自动化能力[48]。云托管服务对于交付企业软件的机构(在生命周期的峰谷时基础设施的灵活性,尽可能广泛地开放供应链)和供应商(无需昂贵的基础设施投资就可以轻松访问他们的服务)来说都有优势。
转向云托管服务的趋势,催生了越来越多的“软件即服务”产品,作为提供软件工厂能力的一种方式[49]。例如,在软件测试中,许多系统集成商和第三方公司纷纷宣布推出“云端测试”的方法,让企业软件交付机构可以购买这些测试活动,比如将性能测试作为一种服务。机构无需投资于宏大的基础设施,就可以在需要时利用云基础设施,对企业软件系统按需求配置和运行各种负载测试。