本书的第二章给出了软件构架的定义,并介绍了参考模型、参考构架和构架模式的相关概念。
软件架构的确定定义:某个软件或计算系统的软件构架是该系统中的一个或多个结构,他们由软件元素、这些元素的外部可见属性以及这些元素之间的关系组成。这里所说的某个元素的“外部可见属性”是指其他元素对该元素所做的假设,如它所提供的服务、性能特性、错误处理、共享资源的使用,等等。
构架定义了软件元素。
构架中包含了关于各元素应如何彼此相关的信息。该定义明确指出系统可能而且确实由多个结构组成,而且,其中任何一个结构并不能与构架等同。
该定义意味着具有软件的每个计算系统都有一个软件构架,这是因为每个软件系统都可以看做是由若干个元素及其相互联系构成的。构架可以独立于对构架的描述而存在,这也让我们更加认识到构架编档和构架重构的重要性。
只要某个元素的行为可以从其他元素的角度观察到或区别开,这个元素的行为就是构架的内容。这是这种行为的存在,才使各元素的交互成为可能,而这种交互显然是构架的一部分。这是被当作构架的框线图其实根本就不是构架的另一个原因。
软件构架之所以重要,主要有以下3个基本原因:
涉众之间的交流。软件构架是一种常见的对系统的抽象,绝大多数(如果不是全部的话)系统的涉众都以此作为彼此理解、协商、达成共识或相互沟通的基础。
早期设计决策。软件构架是所开发系统的最早设计决策的体现,而这些早期决策对系统的后续开发、部署和维护具有重要影响。这也是能够对所开发系统进行分析的最早时间点。
可传递的系统抽象。软件构架是关于系统构造及系统各元素工作机制的相对较小、却又能突出反映问题的模型。这种模型可以在多个系统之间传递,特别是可以应用刀具有相似质量属性和功能需求的系统中,并能促进大规模的重用。