1.1 引言
几年前,我在一家大型跨国软件服务公司工作,我知道每个季度的第一天会发生什么—企业软件交付机构的负责人会发表一番讲话,开头是这么一句:“今天,我们开始了公司历史上最具挑战性的一年中最具挑战性的一个季度!”
当然,这番旨在呼吁公司中每个人加倍努力的讲话,却收到了大伙的一声叹息。不过,没准他说得对呢?没准每个新季度的挑战确实更加困难,风险确实更高 ,企业软件交付的压力确实更大了呢?
几乎每一天,我们都会听到,越来越多的人连上了互联网(已经约有2亿人上网了,约占世界人口的28%),新一代芯片中包含的晶体管数量剧增(已经超过20亿个),越来越多的人的口袋里有了可以上网的设备(2012年年初估计,全球手机用户数近60亿,其中12亿为移动宽带用户),并且大多数企业已经依靠网上采购来满足他们的需求(美国的网上零售额几乎达到每年2 500亿美元)。如今的世界比过去任何时候都要在技术上更先进。享受这些技术进步的巨大动力,使我们的世界连接更加紧密,智能化正在改变我们的日常生活和我们的业务—带给我们更聪明的城市、更创新的医疗保健、更智能化的工业控制系统,以及更好的消费体验。
然而,只有软件系统出现重大创新,这些技术进步才会成为可能。在越来越聪明的产品和服务、越来越智能的企业软件和解决方案背后,软件是那条“看不见的线”。比如,最新的汽车包含几十个微处理器,运行数千万行代码,以便管理发动机和制动系统,监测轮胎的压力,利用实时路况提供安全导航,并提供丰富的娱乐系统,可以连接到手机和MP3播放器等个人设备。新的客户需求不断涌现,意味着这套软件将变得愈发复杂。例如,软件会把汽车连接到多个外部系统,如经销商网络、应对紧急情况的监控中心、GPS导航系统等等。
这个由软件驱动的世界并不是没有挑战。许多企业软件从部署时就非常复杂,我们已经看到了一个个惨败的例子。我们都在报刊上看到过各种吓人的案例,车辆由于发动机管理和制动系统中的软件故障而召回,银行对账单错误,资金莫名其妙从账户中消失,病人监护系统误诊或是将价值数百万美元的导弹打向太空等等。事实上,最近的一项分析调查了75个机构中部署的288个企业应用软件(超过10.8亿行代码),发现软件中的每个结构性错误平均需要1万多美元才能解决。
根本的问题在于,现在要对生产系统中大量的软件进行控制并非易事,并且在未来几年内,还需要对将要部署的几十亿行代码进行开发、交付、投入生产并加以维护。那些业务依靠软件来运行的企业机构,必须学会如何在对于企业软件交付的必要投资和这些投资为公司带来的商业价值之间取得平衡。
因此,虽然软件工程师正忙着“发明未来”,但是他们也必须照管当前和过去的投资。虽然企业必须对未来的需求和创新投资,但是他们也必须了解和控制其目前部署的系统中固有的“技术债务”。各个公司已经创造了数以百万计的应用,来驱动现有的设备并管理其业务。例如,估计有2 000亿行COBOL代码仍然在天天运行,它控制的企业软件仍然驱动着很多业务。这些系统都需要人力来管理、维护、升级和演变。
我和欧洲一家大型金融服务公司的一个软件交付经理最近研究了他所在机构中,影响软件交付的四方面挑战,如图1.1所示。
第一个方面, 业务负载(图左上),面临的挑战是在这个机构目前部署的系统上业务量显著增加,特别是来自于互联网和合作伙伴渠道的业务。第二个方面,管理地点(左下),面临的挑战不仅是随着业务拓展到新的区域(本例中以讲西班牙语的人口为主),许多地点的地理多样性增大,而且是使用多个供应商作为这些地方的主要交付者(特别是系统集成商)。第三个方面,IT投资(右上),面临的挑战是对于企业软件交付支持的投资逐步降低的趋势。三年来,在IT上的投资从企业收入的7%以上减少到不到5%。第四个方面,工具平台的多样性(右下),面临的挑战是其所管理的企业软件开发和交付中的工具环境日益复杂。这里有多种工具、多个数据源,以及错综复杂、相互交织的交付过程。
面对这些压力,我们要问的关键问题是,在需要管理已有软件这一背景下,如何最好地提供新的功能。考虑到企业软件交付的现状,我们必须决定,如何把力量集中在有助于改善和加快新功能交付能力的领域,从而更快地提供更多的功能,并更高效地维护现有产品。
在这一章中,我会解决一些有关企业软件交付的基本问题。附录A中提供了更多的历史细节、分析以及关于企业软件交付机构的作用和结构的评论,在那里我更详细地解释了一个典型的企业软件交付机构的角色和功能。