作者前言
译者前言
1 引言
1.1 软件架构——软件工程中的重要学科
1.2 iSAQB
1.3 认证软件架构专业人士——基础级与高级
1.4 编撰本书的目的
1.5 前提条件
1.6 读者指南
1.7 目标受众
1.8 鸣谢
2 软件架构基础
2.1 对应iSAQB课程大纲
2.1.1 学习目标
2.2 软件密集型系统与软件架构
2.2.1 什么是软件密集型系统?
2.2.2 软件密集型系统的不同类型
2.2.3 软件架构对于软件密集型系统的重要意义
2.3 软件架构基本概念
2.3.1 什么是软件架构?
2.3.2 构建块、接口和配置
2.3.3 用于描述软件架构的相关概念
2.3.4 架构说明和架构层级
2.3.5 软件架构与环境之间的相互作用
2.3.6 软件架构的质量和价值
2.4 鸟瞰软件架构设计
2.4.1 软件架构设计的目标与任务
2.4.2 软件架构设计概述
2.4.3 设计中各项活动与抽象层之间的相互作用
2.4.4 软件架构师的工作任务以及与其他职能的相互关系
2.5 知识测试
3 软件架构的设计
3.1 对应iSAQB课程大纲
3.1.1 学习目标
3.2 架构设计过程概述
3.3 设计原则与启发式方法
3.3.1 自上而下和自下而上的方法
3.3.2 分层组合(分解)
3.3.3 信息隐藏与精简接口
3.3.4 定期重构和重新设计
3.4 以架构为核心的开发方法
3.4.1 领域驱动设计
3.4.2 模型驱动架构
3.4.3 参考架构
3.5 实现优秀设计的技巧
3.5.1 初始情况和动机:设计进化
3.5.2 松耦合
3.5.3 高内聚
3.5.4 开闭原则
3.5.5 依赖倒置
3.5.6 接口分离
3.5.7 解决循环依赖
3.5.8 里氏替换原则
3.6 架构模式
3.6.1 适应性系统
3.6.2 交互式系统
3.6.3 从混沌到结构化
3.6.4 分布式系统
3.7 设计模式
3.7.1 适配器模式(Adapter)
3.7.2 观察者模式(Observer)
3.7.3 装饰器模式(Decorator)
3.7.4 代理模式(Proxy)
3.7.5 外观模式(Facade)
3.7.6 桥接模式(Bridge)
3.7.7 状态模式(State)
3.7.8 中介者模式(Mediator)
3.8 知识测试
4 软件架构说明与沟通协调
4.1 对应iSAQB课程大纲
4.1.1 学习目标
4.2 CoCoME示例
4.2.1 CoCoME系统中的用例
4.2.2 CoCoME系统的结构概览
4.3 视图与模板
4.3.1 iSAQB定义的既定常用视图
4.3.2 在视图说明中使用UML图作为注释工具
4.3.3 视图说明:简略结构和介绍性实例
4.3.4 上下文视图
4.3.5 构建块视图
4.3.6 运行时视图
4.3.7 部署或基础设施视图
4.3.8 架构视图的相互依赖关系
4.3.9 架构视图的分层次细化
4.4 软件架构中的技术或横切概念方案
4.4.1 技术或横切关注点维度示例
4.4.2 错误处理
4.4.3 信息安全性
4.5 架构与实现
4.5.1 示例实现
4.6 软件架构的常用文档类型
4.6.1 核心架构说明
4.6.2 架构概述
4.6.3 文档概览
4.6.4 概述介绍
4.6.5 架构墙纸
4.6.6 文档(指南)手册
4.6.7 技术信息
4.6.8 外部接口文档
4.6.9 模板
4.7 文档编制的实践规范
4.7.1 规范1:编写时从读者的角度出发
4.7.2 规范2:避免不必要的重复
4.7.3 规范3:避免歧义
4.7.4 规范4:标准化组织结构或模板
4.7.5 规范5:用书面形式提供重要决策的依据
4.7.6 规范6:检查文档的可用性
4.7.7 规范7:清晰的图示
4.7.8 规范8:定期更新
4.8 其他架构框架示例
4.8.1 4+1框架
4.8.2 RM - ODP
4.8.3 SAGA
4.9 知识测试
5 软件架构与质量
5.1 对应iSAQB课程大纲
5.1.1 学习目标
5.2 软件架构评估
5.2.1 定性评估
5.2.2 定量评估
5.3 原型及技术概念论证
5.3.1 技术概念论证
5.3.2 原型
5.4 架构分析
5.4.1 ATAM方法
5.5 知识测试
6 软件架构师常用工具
6.1 概述
6.1.1 成本
6.1.2 许可证及许可条件
6.2 需求管理工具
6.2.1 要求与决策标准
6.2.2 需求管理工具所面临的挑战
6.2.3 示例
6.3 建模工具
6.3.1 要求与决策标准
6.3.2 建模工具面临的挑战
6.3.3 示例
6.4 生成工具
6.4.1 要求与决策标准
6.4.2 生成工具所面临的挑战
6.4.3 示例
6.5 静态代码分析工具
6.5.1 要求与决策标准
6.5.2 静态代码分析工具所面临的挑战
6.5.3 示例
6.6 动态代码分析工具
6.6.1 要求与决策标准
6.6.2 动态代码分析工具所面临的挑战
6.6.3 示例
6.7 构建管理工具
6.7.1 要
展开