软件体系结构意指“软件的整体结构和这种结构为系统提供概念完整性的方式”。从最简单的形式来看,体系结构是程序构件(模块)的结构或组织、这些构件交互的方式以及这些构件所用数据的结构。然而在更广泛的意义上,构件可以概括为主要的系统元素及其交互方式的表示。
软件设计的目标之一是导出系统体系结构示意图,该示意图作为一个框架,将指导更详细的设计活动。一系列的体系结构模式使软件工程师能够重用设计层概念。
Shaw和 Garlan描述了一组属性,这组属性应该作为体系结构设计的一部分进行描述。结构特性定义了“系统的构件(如模块、对象、过滤器)、构件被封装的方式以及构件之间相互作用的方式”。外部功能特性指出“设计体系结构如何满足需求,这些需求包括性能需求、能力需求、可靠性需求、安全性需求、可适应性需求以及其他系统特征需求”。相关系统族“抽取出相似系统设计中常遇到的重复性模式”。
一旦给出了这些特性的规格说明,就可以用一种或多种不同的模型来表示体系结构设计。模型将体系结构表示为程序构件的有组织的集合。框架模型可以通过确定相似应用中遇到的可复用体系结构设计框架(模式)来提高设计抽象的级别。动态模型强调程序体系结构的行为方面,指明结构或系统配置如何随着外部事件的变化而产生变化。过程模型强调系统必须提供的业务或技术流程的设计。最后,功能模型可用于表示系统的功能层次结构。
为了表示以上描述的模型,人们已经开发了许多不同的体系结构描述语言(Architectural Description Language,ADL)尽管提出了许多不同的ADL,但大多数ADL都提供描述系统构件和构件之间相互联系方式的机制。
需要注意的是,关于体系结构在设计中的地位还存在一些争议。一些研究者主张将软件体系结构的设计从设计中分离出来,并在需求工程活动和更传统的设计活动之间进行。另外—些研究者认为体系结构设计是设计过程不可分割的一部分。