��现代的大型信息系统十分复杂,而且受到不断变化的标准、组合分布计算技术、系统平台等各方面的影响。这种复杂性是内在的,无法回避的,但可以用良好的软件体系结构来处理。
��通常,在一个面向对象的软件系统中,将对象类的实现纳入子系统中,用软件体系结构定义软件按各子系统组织的静态结构(子系统之间通过接口相互联结),并在一定程度上定义各结点(执行子系统的各个结点)之间的相互作用关系。还有的软件体系结构采用可计算构件和构件之间的连接来定义。
��如果一个软件开发组织选择了良好的软件体系结构,开发人员就可以更有效、更有预见性地进行系统的设计和实现工作。人们可以在定义好的接口上进行工作。在应用系统开发时,良好的体系结构的作用相当于选择构件的指南。如果缺少清晰定义的体系结构和接口,各种构件很难协同工作,人们就很难复用构件。
��因而,选择合适的软件体系结构,对于一个软件开发组织来说,是最重要的决策之一。为了维护软件系统的完整性,使得开发和维护工作不致于杂乱无章,体系结构有十分重要的作用。此外,良好定义的软件体系结构还是简化软件系统复杂性的关键,可让大规模的软件开发以并行方式开展工作。
��系统的变更是经常发生的事情。良好的软件体系结构可以使得系统(不论是应用系统还是构件系统)有序地随时进行改进。为此,在定义和描述软件体系结构时,必须分清软件的哪些部分是很可能会变更的,哪些部分是不易变更的(即稳定的)。体系结构中最为稳定的部分应对软件的子系统和接口组织起最有影响的作用;而针对可能的变更,与之相关的子系统和接口应设计成可变更的。
��软件体系结构的设计如同盖房屋。有些部分(如地基、外墙、房顶)不常变动,有些部分(如内墙、内部装修)可以变动,还有的部分(如室内家具)则经常变动。如果把家具打造得无法更换,或把外墙修得易于更换,就失去了房屋的利用价值,对于将来可能的变动不能适应。
��开发组织的规模越大(特别是跨地域分布的情形),通信联系的开支就越大,因为软件人员必须经常协调他们的工作。具有显式接口的良好的体系结构能降低通信的开支,因为体系结构为开发人员提供了他们需要了解的大部分信息,特别是其他部分能做什么的信息。
采用什么样的体系结构可以满足上述的要求?没有简单的答案。经验证明,采用分层式体系结构,并正确运用它,才是正确的起步。
�� |
|