第 1 章 软件体系结构概论
1.1 从软件危机谈起
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
1.1.1 软件危机的表现
- 软件成本日益增长
- 开发进度难以控制
- 软件质量差
- 软件维护困难
1.1.2 软件危机的成因
- 用户需求不明确
- 缺乏正确的理论指导
- 软件规模越来越大
- 软件复杂度越来越高
1.1.3 如何克服软件危机
采用工程的方法进行软件生产可以克服软件危机,于是诞生了软件工程
软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法
软件工程包括三个要素:方法、工具和过程
1.2 构件与软件重用
软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。这些可重用的元素称做软构件,简称构件
由于构件大都经过严格的质量认证,并在实际运行环境中得到检验,因此,重用构件有助于改善软件质量
1.2.1 构件模型及实现
构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通信接口和实现代码的复合体。简单地说,构件是具有一定的功能,能够独立工作或能同其它构件装配起来协调工作的程序体。
构件模型是对构件本质特征的抽象描述
1.2.2 构件获取
在建立基于构件的软件开发(component-based software development, CBSD)中,构件获取可以有多种不同的途径:
- 从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件
- 通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件
- 从市场上购买现成的商业软件,即CTOS(commerical off-the-shell)构件
- 开发新的符合要求的构件
一个组织在进行以上决策时,必须考虑到不同方式获得构件的一次性成本和以后的维护成本,然后做出最优的选择
1.2.3 构建管理
对大量的构件进行有效的管理,以方便构件的存储、检索和提取,是成功重用构件的必要保证。构件管理的内容包括构建描述、构建分类、构件库组织、人员及权限管理和用户意见反馈等
1.3 软件体系结构的兴起和发展
1.3.1 软件体系结构的定义
软件体系结构为软件系统提供了一个结构,行为和属性的高级抽象,由构成系统的元素的描述,这些元素的相互作用,知道元素集成的模式以及这些模式的约束组成
1.3.2 软件体系结构的意义
- 体系结构是风险承担者进行交流的手段
- 体系结构是早期设计决策的体现
- 软件体系结构是可传递和可重用的模型
1.4 软件体系结构的应用现状
- 软件体系结构描述语言
- 体系结构描述构造与表示
- 体系结构分析、设计与验证
- 体系结构发现、演化和重用
- 基于体系结构的软件开发方法
- 特定领域的体系结构框架
- 软件体系结构支持工具
- 软件产品线体系结构
- 建立评价软件体系结构的方法
第 2 章 软件体系结构建模
2.1 软件体系结构建模概述
可以将软件体系结构的模型分为5种:结构模型、框架模型、动态模型、过程模型和功能模型。最常用的是结构模型和动态模型
2.2 “4+1”视图模型
“4+1”视图模型从5个不同的视角,包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。每一个视图只关心一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容
2.2.1 逻辑视图
逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。逻辑视图中使用的符号集合如下
2.2.2 开发视图
开发视图也称模块视图,主要侧重于软件模块的组织和管理。软件可通过程序库或子系统进行组织,这样,对于一个软件系统,就可以由不同的人进行开发。下图是用来表示开发视图的符号
2.2.3 进程视图
进程视图侧重于系统的运行特性,主要关注一些非功能性的需求。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。如下是进程视图使用的标记符号
2.2.4 物理视图
物理视图主要考虑如何把软件映射到硬件上,它通常要考虑系统性能、规模、可靠性等。下图是物理视图的标记元素集合
2.3 软件体系结构的核心模型
体系结构的核心模型由5种元素组成:构件、连接件、配置、端口和角色。其中构件、连接件和配置是最基