本书由绪论和两个部分组成。绪论介绍了本书其余部分所用到的必要概念和词汇,探讨了软件构架编档的使用方法以及它之所以重要的原因,定义了构架视图类型、风格和视图,这3个概念是本书介绍的编档方案的基础,另外,绪论部分还包含了正确编档的7个基本规则。第1部分“软件构架视图类型及风格”介绍了对软件构架进行编档的基本工具:视图类型。这一部分介绍了3个基本视图类型:模块视图类型、组件和连接器视图类型以及分配视图类型。每个视图类型包含多种构架风格,即视图类型的特化。这一部分具体描述了这些风格。第Ⅱ部分“软件构架编档实践”集中论述了完整的构架文档包,制作构架文档包是出色的软件构架师的职责。这一部分完善了第1部分铺陈的内容。
本书主要供软件构架师和负责为软件项目编写构架文档的技术文献书写员阅读,同时也可供那些打算学习和利用这种文档的人们阅读。
绪论 软件构架及编档
P.1 软件构架的作用
P.2 构架文档的使用
P.3 接口
P.4 视图
P.5 视图类型和风格
P.6 合理文档的7种原则
P.7 总结检查表
P.8 问题讨论
P.9 更多阅读材料
第I部分 软件构架视图类型及风格
I.1 视图类型和风格目录
I.2风格指导: 风格编档标准结构
第1章 模块视图类型
1.1 概述
1.2 模块视图类型的元素、关系和特性
1.3 模块视图类型支持什么和不支持什么
1.4 模块视图类型和表示法
1.5 与其他视图类型的关系
1.6 总结检查表
1.7 问题讨论
1.8 更多阅读材料
第2章 模块视图类型的风格
2.1 分解风格
2.2 使用风格
2.3 泛化风格
2.4 分层风格
2.5 总结检查表
2.6 问题讨论
2.7 更多阅读材料
第3章 组件和连接器视图类型
3.1 概述
3.2 C&C视图类型的元素、关系和特性
3.3 C&C视图类型支持什么和不支持什么
3.4 C&C视图类型表示法
3.5 总结检查表
3.6 问题讨论
3.7 更多阅读材料
第4章 组件和连接器视图类型的风格
4.1 管道和过滤器风格
4.2 共享数据风格
4.3 发布-订阅风格
4.4 客户机-服务器风格
4.5 对等连接风格
4.6 通信-进程风格
4.7 C&C风格表示法
4.8 总结检查表
4.9 问题讨论
4.10 更多阅读材料
第5章 分配视图类型和风格
5.1 概述
5.2 分配视图类型的元素、关系和特性
5.3 部署风格
5.4 实现风格
5.5 工作任务风格
5.6 总结检查表
5.7 问题讨论
5.8 更多阅读材料
第II部分 软件构架编档实践
第6章 高级概念
6.1 信息分块: 视图包、精化和描述完整性
6.2 使用上下文图
6.3 组合视图
6.4 为可变性和动态编档
6.5 创建和编档新风格
6.6 总结检查表
6.7 问题讨论
6.8 更多阅读材料
第7章 软件接口编档
7.1 概述
7.2 接口规范
7.3 接口文档的标准结构
7.4 接口文档的涉众
7.5 接口文档的表示法
7.6 接口文档范例
7.7 总结检查表
7.8 问题讨论
7.9 更多阅读材料
第8章 行为编档
8.1 结构之外的信息
8.2 行为编档位置
8.3 为什么需要编档行为
8.4 编档内容
8.5 编档行为的方式: 表示法和语言
8.6 总结检查表
8.7 问题讨论
8.8 更多阅读材料
第9章 视图的选择
9.1 涉众及其文档需要
9.2 做出选择
9.3 两个范例
9.4 总结检查表
9.5 问题讨论
9.6 更多阅读材料
第10章 制作文档包
10.1 采用一个文档还是若干文档
10.2 视图编档
10.3 编档视图之外的信息
10.4 软件构架文档的验证
10.5 总结检查表
10.6 问题讨论
10.7 更多阅读材料
第11章 其他视图和视图外信息
11.1 概述
11.2 Rational统一过程/Kruchten4+1
11.3 UML
11.4 西门子4种视图
11.5 C4ISR构架框架
11.6 ANSI/IEEE-1471-2000
11.7 数据流和控制流
11.8 RM-ODP
11.9 如何结束构架编档
11.10 尾声
11.11 更多阅读材料
附录A 软件构架文档摘录
术语表
参考文献
除了最为琐细的软件系统外,如果不悉心关注它们的构架——把系统分解为各组成部分的方法以及这些组成部分的交互操作方式——我们将难以取得成功。如果没有一个适于解决问题的构架,项目必将失败。即使具备出色的构架,倘若它未能得到很好的理解和传达——换句话说,未能为它编写良好的文档,项目就可能会遭遇挫折。
因此,软件构架成为目前人们热切关注的焦点。似乎每个月都会出现一部有关这一课题的新书。为了响应工业需求,一些高等学校纷纷为各自的软件工程课程增设软件构架科目。如今,“软件构架师”成为组织内的固定职位已经是一件司空见惯的事情,针对软件构架的专业实践小组也崭露头角。软件构架已成为一些重大国际会议和专题讨论会的主题。为了推销各自的产品,统一建模语言(UML)的供应商们将UML称为“软件构架标准表示法”,也许,这一称呼至少表明,他们认为软件构架的普及程度与UML不相上下。卡内基·梅隆大学软件工程研究所(SEI)保留了有关软件构架的1000多份期刊和会议论文目录。
令人颇感奇怪的是,在如何捕捉构架方面,独立于语言和表示法的实践指导难得一见。诚然,有关如何使用特定语言的书籍比比皆是——说到这里,不禁又想起UML来,但构架师们真正需要的是将软件构架置于首要地位的指导,而语言则应归结为处于支持角色的次要地位,这样才更为合适。
首先,让我们就一些基本的上下文达成一致意见。这一领域尚未给软件构架确定专一的定义,因此这方面的定义十分混杂,但我们可以指定一种能派上用场的定义,它由Bass,Clements和Kazman(1998年)给出的定义修订而成。尽管本书许多内容涉及诸多元素和关系的含义,但现在我们将利用该定义来强调软件构架中结构的多样性。每个结构以各种元素和关系为特点,每个结构提供一个视图,这一视图将传达对软件构架的特定理解。
定义:系统软件构架是指系统的结构或结构集,它由元素、外部可见特性以及它们之间的关系组成。
“外部可见特性”是其他组件对某个组件的各种假设,如它所提供的服务、质量属性特性和共享资源的使用,等等。
软件构架能用作系统和系统开发项目的蓝图,它能确定必须由设计和实现团队执行的工作任务。软件构架是系统质量——如性能、可修改性和安全性——的最初载体,没有统一的构架设想,就不可能达到这些质量标准。软件构架是用于早期分析的一种制品,它能确保根据设计方案产生的系统是可以接受的。软件构架是把握部署后系统的理解、维护和挖掘工作的关键。简而言之,软件构架是为所有涉众将项目所有阶段结合在一起的概念纽带。
为构架编档是建立构架的最重要的步骤。如果表达不明确,再完美的软件构架也将毫无用处。如果决定建立一种稳定可靠的软件构架,就必须努力对它进行足够详细、明确和有组织的说明,使其他人能迅速找到需要的信息。否则,你的努力将毫无结果,因为这样的构架根本无法使用。
本书的读者包括参与构架文档制作和消费的人员:软件开发团体。本书的目的在于帮助读者决定哪些构架信息对于获取和提供捕捉构架的指导原则、表示法和范例非常重要。我们力图使本书成为一部面向实践者的指南书,提供构成软件构架的各种信息。我们将提供有关选择编档信息的实践指导,并通过使用各种表示法的范例——包括但不限于UML——说明以书面方式表述这一信息的方法,以便其他人能利用它完成各自基于软件构架的工作:实现、分析和恢复,等等。因此,本书将涉及以下内容:
·软件构架编档的用途。编档方法取决于使用文档的预期方式。我们为软件构架编档设计了可能的最终目标,并针对每个目标提供了相应的编档策略。
·软件构架视图。我们坚持认为,软件构架编档的首要任务是编档一些相关视图,然后以适用于视图之外的相关信息对这种信息进行补充。本书的核心部分介绍了一些最为贴切的软件构架视图和有关如何记录它们的实践指导,这些视图被划分为3大类型,我们将这些类型称为视图类型。本书为每种视图类型提供了相应的范例。
·信息打包。了解了这些视图之后,接下来的问题就是选择相关的视图,包括视图中不包含的信息,并将所有信息打包成一个有机的整体。我们提供了针对所有这些方面的实践指导。
我们深信软件构架对于构建合格系统的重要性。可是,如果软件构架不能有效传达信息,它将无法达到这一目的,而编档就是成功传达信息的关键所在。但愿我们能为这一领域的实践者提供一部有用的参考手册。