[软件架构训练基础教程-9]应用架构

时间:2021-11-15 17:04:11
  软件架构同时包括应用程序功能和商业技术改变的管理。前面提到的一些优点并不是采用特定技术的直接结果,而是用效率最高的方式采用某种技术以实现系统的商业目标。采用CORBA或COM+这样的简单决定对于保证实际的商业成果并不充分。其中一个关键的挑战是如何管理那些支持长时间系统生命周期,并且随着技术的演化需要扩展那些没有持续地维护的系统。

  图16是一些必须被面向对象架构管理的技术挑战的例子。图16涉及到中间件技术的演化,从套接字技术开始演化到远程过程调用和分布式计算环境,再到目前的J2EE和ActiveX技术。没有人可以准确地预料未来,但是有了专利技术演化和开放系统演化的知识后,我们可以看出目前正在流行的大多数技术最终都有自己的生命周期,因而它们都有一个明确的终止点,这依赖于厂商什么时候终止对自己产品的支持并把他们的注意力移到新的产品线上。中间件的特殊的技术演化对应用软件有戏剧般的影响,因为中间件与很多已有的应用程序能力是紧密集成的。当某种技术(例如ActiveX)被废除的适合,为了受到厂商的支持和集成新的能力,把应用系统升级到新的技术是必要的。ActiveX的让位的情形在COM+(一种随后的技术)中也可以看到了,它更替了技术的核心原理。它的软件接口可能明显不同,特别是由于COM和COM+都是以一种接口定义语言为基础的,但是它与CORBA的接口定义语言不同,而且COM+没有接口定义语言,至少在目前市场中是没有的。软件架构能够预料到这类必然的改变并且能够计划把应用系统迁移到新架构的能力是很重要的,而且不会降低当前系统开发的商业目标。

[软件架构训练基础教程-9]应用架构
图16.管理技术的改变

  架构在应用程序方面面临着很多挑战。其中最艰难的挑战莫过于改变当前正在使用的业务流程。所有的部门都面临着越来越多的竞争,通过技术把多种能力合并在一起,例如通过Internet,类似报纸、计算机公司、有线电视厂商、电讯运营商都开始在同一个竞争空间中工作了,并且正在经受着强大的竞争压力,这些都是信息技术革新和应用系统中实现的革新概念的直接结果。即使有了先前的技术,我们也相当清楚需求发生了很大的改变。实际上,软件开发中的应用程序成本的大部分都直接归咎于需求的改变【Horowitz 1993】。

  在历史上第一次出现了信息技术的预算超过了类似金融服务行业中的很多组织的工资总额。在这类领域中信息技术正在成为竞争优势的同义词。但是,系统开发的基本能力仍然远远落后于需要充分了解的竞争能力。例如,在共同开发中,三个已经开始的系统中大约有一个以项目取消为结束【Johnson 1995】。这类统计数据表明小型和中型企业面临过度异常的风险,他们的成本和对信息系统的依赖都在不断增长。

  计算机行业中重要的基本原则之一是没有任何技术会真正地“离开”。我们可以想象,有些早期的IBM小型机至今仍然在世界范围内忠诚地执行各种业务系统中的任务。随着信息技术的演化,集成越来越多的不同系统和软件的需求开始变成重大的挑战了。随着跨越企业或者在企业之间使用内部网和外部网集成成为必须的,架构的挑战成为了现实。其中有一个问题是当前信息技术的下部构造的不充分,包括COM+和CORBA,它们在某些重要的方面与现实的应用程序需求之间有差异。

  随着信息技术的挑战逐步上升,另一个与软件技能基础相关的问题浮出了水面。在某些行业中,软件工程师是不够的。与此同时,估计在美国软件工程行业最少有10%的失业率。某些行业想成功还要困难一些,其中包括公共部门系统承包商。为了建立已经考虑到的挑战的一些系统,面向对象架构必须计划系统的开发并采用比以往效率更高的方式控制关键的软件边界。

  在应用程序开发者和软件架构的面前还有很多重大的挑战。应用系统开发的复杂性在逐步升高。这种复杂性是由不断增加的不同信息系统和在公司内部和外部集成的范围不断增加而导致的。此外,用户的需求不仅增加了用户的期望(这是暴露的Internet技术和其它惊奇的现代生活的结果),而且驱动着软件开发者使用更复杂的和矫饰的的系统概念,导致了风险增加。面向对象架构的关键角色是改变(change)的管理。管理不同步的产品生命周期的商业技术创新是它的一个方面。另一个方面是管理信息技术支持和实现的业务流程的改变。可能的解决方案之一是由用户来引导开放系统技术的演化,要求软件厂商提供完整的技术能力,影响立法者为系统架构和开发的设想目标设置一些商业性的和适用的恰当的保证。