一. 什么是软件架构
计算机系统的软件架构是解释该系统所需的结构体的集合,其中包括:软件元素、元素之间相互关系,以及二者各自的属性——该定义来自卡内基梅隆大学软件工程研究所。
二. 架构为什么重要
软件架构的重要性在于它会影响整个软件系统。只有审慎地选择软件架构,才能降低风险,避免失败。
- 架构是系统的骨架
- 架构影响质量。
- 架构与功能(基本上)是正交的
- 架构约束程序
三. 架构何时重要
对于大规模或高复杂度的系统,需要特别重视架构。下面给出了五种存在架构高风险的特殊案例。
- 小的解空间
- 高的失败风险
- 难以实现的质量属性
- 全新的领域
- 产品线
四. 如何运用软件架构?
4.1 架构无关的设计
这种方式几乎不关注架构。系统要么成为一个大泥鳅,要么形成某种并非你有意为之的独特架构,要么在领域规范的引导下选用某一推定架构。
4.2 专注架构的设计
专注架构的设计往往需要使用架构层面的抽象概念(例如,各种组件及连接器)及架构层面的视图(例如,模块视图、运行时视图与部署视图)去解释问题。
4.3 提升架构的设计
对于专注架构的设计方式,开发者会审慎挑选适合其系统目标的架构。而提升架构的设计是一种更为严格的专注架构的设计。当采用提升架构的设计方式时,开发者会以保证系统的某一目标或属性为目的去设计架构。使用任何一种软件设计,要得到若干保证都是很困难的,不过提升架构的设计会力争通过架构决策来保证某一目标或属性。提升架构的想法是,一旦某一目标或属性被提升至架构中,开发者就无需再写任何代码去实现它。
五 架构建模
架构划分为三个主要模型:领域模型、设计模型与代码模型。
领域模型描述了领域中不变的事实;设计模型描述了所要构建的系统;代码模型描述了系统的源代码。
- 领域模型。领域模型表达了与系统相关的现实世界的不变事实。
- 设计模型。设计模型主要是在设计者控制下。
- 代码模型。代码模型即是系统的源代码实现。
其他
UML(统一建模语言)、4+1架构视图