作者简介
张友生,计算机应用技术博士,管理科学与工程博士后(未出站),国家高级程序员和系统分析员,计算机软件与理论专业、计算机应用专业和软件工程专业硕士生导师
目录
目录
第1章软件体系结构概论
1.1从软件危机谈起
1.1.1软件危机的表现
1.1.2软件危机的原因
1.1.3如何克服软件危机
1.2构件与软件重用
1.2.1构件模型及实现
1.2.2构件获取
1.2.3构件管理
1.2.4构件重用
1.2.5软件重用实例
1.3软件体系结构的兴起和发展
1.3.1软件体系结构的定义
1.3.2软件体系结构的意义
1.3.3软件体系结构的发展史
1.4软件体系结构的应用现状
思考题
第2章软件体系结构建模
2.1“4+1”视图模型
2.1.1逻辑视图
2.1.2开发视图
2.1.3进程视图
2.1.4物理视图
2.1.5场景
2.2软件体系结构的核心模型
2.3软件体系结构的生命周期模型
2.3.1各阶段之间的关系
2.3.2软件体系结构的生命周期
2.4软件体系结构的抽象模型
2.4.1构件及其关系的抽象描述
2.4.2连接件
2.4.3软件体系结构
2.4.4软件体系结构关系
2.4.5软件体系结构范式
思考题
第3章软件体系结构风格
3.1经典软件体系结构风格
3.1.1管道与过滤器
3.1.2数据抽象和面向对象系统
3.1.3基于事件的系统
3.1.4分层系统
3.1.5仓库系统及知识库
3.1.6C2风格
3.2客户/服务器风格
3.3三层C/S体系结构风格
3.3.1各层的功能
3.3.2三层C/S体系结构应用实例
3.3.3三层C/S体系结构的优点
3.4浏览/服务器风格
3.5公共对象请求代理体系结构
3.5.1CORBA技术规范
3.5.2CORBA风格分析
3.6正交软件体系结构
3.6.1正交软件体系结构的抽象模型
3.6.2软件体系结构的正交化
3.6.3正交软件体系结构的实例
3.6.4正交软件体系结构的优点
3.7基于层次消息总线的体系结构风格
3.7.1构件模型
3.7.2构件接口
3.7.3消息总线
3.7.4构件静态结构
3.7.5构件动态行为
3.7.6运行时刻的系统演化
3.8异构结构风格
3.8.1异构结构的实例分析
3.8.2异构组合匹配问题
3.9互连系统构成的系统及其体系结构
3.9.1互连系统构成的系统
3.9.2基于SASIS的软件过程
3.9.3应用范围
3.10特定领域软件体系结构
3.10.1DSSA的定义
3.10.2DSSA的基本活动
3.10.3参与DSSA的人员
3.10.4DSSA的建立过程
3.10.5DSSA实例
3.10.6DSSA与体系结构风格的比较
思考题
第4章软件体系结构描述
4.1软件体系结构描述方法
4.2软件体系结构描述框架标准
4.3体系结构描述语言
4.3.1ADL与其他语言的比较
4.3.2ADL的构成要素
4.4典型的软件体系结构描述语言
4.4.1UniCon
4.4.2Wright
4.4.3C2
4.4.4Rapide
4.4.5SADL
4.4.6Aesop
4.4.7ACME
思考题
第5章统一建模语言
5.1UML概述
5.1.1UML的发展历史
5.1.2UML的应用领域
5.2UML的结构
5.2.1结构概述
5.2.2事物
5.2.3关系
5.2.4图形
5.3用例图
5.4类图和对象图
5.5交互图
5.5.1顺序图
5.5.2通信图
5.5.3定时图
5.6状态图
5.7活动图
5.7.1基本活动图
5.7.2带泳道的活动图
5.7.3交互概览图
5.8构件图
5.9部署图
5.10使用UML建模
5.11使用UML的扩展机制
思考题
第6章可扩展标记语言
6.1XML概述
6.1.1XML的特点
6.1.2XML的作用
6.1.3XML的应用
6.2解析XML
6.2.1XML与HTML的区别
6.2.2XML文档
6.2.3CSS与XSL
6.3XML编程接口
6.3.1API
6.3.2XML开发工具
6.3.3XML建模
6.4基于XML的软件体系结构描述语言
6.4.1XADL 2.0
6.4.2XBA
思考题
第7章动态软件体系结构
7.1动态软件体系结构概述
7.2基于构件的动态系统结构模型
7.3πADL动态体系结构
7.3.1πADL描述体系结构的框架
7.3.2πADL动态体系结构建模方法
7.3.3πADL动态体系结构建模语义
7.4动态体系结构的描述
7.4.1动态体系结构描述语言
7.4.2动态体系结构的形式化描述
7.5动态体系结构的特征
7.6化学抽象机
思考题
第8章基于服务的体系结构
8.1SOA概述
8.2面向服务的分析与设计
8.3SOA的关键技术
8.4SOA的实现方法
8.5服务描述语言
8.5.1WSDL概述
8.5.2使用WSDL文档
8.5.3WSDL文档结构
8.6统一描述、发现和集成协议
8.6.1UDDI数据模型
8.6.2注册Web服务
8.6.3调用Web服务
8.7消息封装协议
8.7.1消息封装和编码规则
8.7.2SOAP应用
8.7.3REST
8.8构造一个简单的服务
8.8.1编写服务器端
8.8.2编写客户端
8.9Web服务的应用实例
思考题
第9章富互联网应用体系结构
9.1RIA的概念
9.1.1RIA的提出
9.1.2丰富的含义
9.1.3RIA的优点
9.2RIA模型
9.3RIA客户端开发技术
9.4AJAX技术
9.5Mashup技术
9.5.1Mashup的体系结构
9.5.2Mashup实现技术
思考题
第10章软件体系结构的分析与测试
10.1体系结构的可靠性建模
10.2软件体系结构的风险分析
10.2.1风险分析的方法
10.2.2风险分析的步骤
10.3基于体系结构描述的软件测试
10.3.1测试方法
10.3.2实例与实现
思考题
第11章软件体系结构评估
11.1软件体系结构评估概述
11.1.1软件质量属性
11.1.2几个基本概念
11.1.3评估的主要方式
11.2ATAM评估方法
11.2.1ATAM评估的步骤
11.2.2ATAM评估的阶段
11.3SAAM评估方法
11.3.1SAAM评估的步骤
11.3.2SAAM评估实例
思考题
第12章基于体系结构的软件开发
12.1设计模式
12.1.1设计模式概述
12.1.2设计模式的组成
12.1.3设计模式的描述
12.1.4模式和软件体系结构
12.1.5设计模式的层次
12.1.6设计模式的分类
12.1.7设计模式实例
12.1.8MVC模式的设计与实现
12.2中间件技术
12.2.1中间件概述
12.2.2主要的中间件
12.2.3中间件与构件的关系
12.3基于体系结构的设计方法
12.3.1有关术语
12.3.2ABSD方法与生命周期
12.3.3ABSD方法的步骤
12.4体系结构的设计与演化
12.4.1设计和演化过程
12.4.2实验原型阶段
12.4.3演化开发阶段
12.5基于体系结构的软件开发模型
12.5.1体系结构需求
12.5.2体系结构设计
12.5.3体系结构文档化
12.5.4体系结构复审
12.5.5体系结构实现
12.5.6体系结构演化
12.6应用开发实例
12.6.1系统简介
12.6.2系统设计与实现
12.6.3系统演化
12.7基于体系结构的软件过程
12.7.1有关概念
12.7.2软件过程网
12.7.3基本结构的表示
12.7.4基于体系结构的软件过程Petri网
12.8软件体系结构演化模型
12.8.1SA静态演化模型
12.8.2SA动态演化模型
思考题
第13章软件产品线体系结构
13.1软件产品线的出现和发展
13.1.1软件体系结构的发展
13.1.2软件重用的发展
13.2软件产品线概述
13.2.1软件产品线的过程模型
13.2.2软件产品线的组织结构
13.2.3软件产品线的建立方式
13.2.4软件产品线的演化
13.3框架和应用框架技术
13.4软件产品线基本活动
13.4.1产品线分析
13.4.2产品开发
13.5软件产品线体系结构的设计
13.5.1产品线体系结构简介
13.5.2产品线体系结构的标准化和定制
13.6软件产品线体系结构的演化
13.6.1背景介绍
13.6.2两代产品的各种发行版本
13.6.3需求和演化的分类
思考题
内容摘要
软件体系结构概论软件开发不仅要把程序写好,还要做前期的需求和体系结构设计(架构设计),而且,前期的设计比程序编码更重要。关于这一点,初入行业的软件工程师时常会感到困惑,因为他们往往初出茅庐,没有大型项目经验。在他们的心中,只有程序,没有体系结构。为了解决软件新人的这些困惑,本章从软件危机谈起,介绍软件构件、软件重用的基本概念,阐述软件体系结构的意义、发展和应用现状。从软件危机谈起软件危机(software crisis)是指在计算机软件的开发(development)和维护(maintenance)过程中所遇到的一系列严重问题。20世纪60年代末至20世纪70年代初,“软件危机”一词在计算机界广为流传。事实上,从计算机诞生的那一天起,就出现了软件危机,只不过到了1968年在联邦德国加密施(Garmish)召开的国际软件工程会议上才被人们普遍认识到。1.1.1软件危机的表现时至今日,“软件危机”虽然在软件行业已经家喻户晓,但很多工程师还是不能很好地理解软件危机究竟为何物,在实际的软件项目中,软件危机的“表现”在哪里,本节就这些内容做一个简单的介绍。1.软件成本日益增长在计算机发展的早期,大型计算机系统主要是被设计应用于军事领域。这个时期,研制计算机的费用主要由国家财政提供,研制者很少考虑研制代价问题。随着计算机市场化和民用化的发展,代价和成本就成为投资者考虑的重要问题之一。20世纪50年代,软件成本(cost)在整个计算机系统成本中所占的比例为10%~20%。随着软件产业的发展,软件成本日益增长。相反,计算机硬件随着技术的进步、生产规模的扩大,价格却在不断下降。这样一来,软件成本在计算机系统中所占的比例越来越大。到20世纪60年代中期,软件成本在计算机系统中所占的比例己经增长到50%左右,而且该数字还在不断地递增。下面是一组来自美国空军计算机系统的数据:1955年,软件费用约占总费用的18%,1970年达到60%,1975年达到72%,1980年达到80%,1985年达到85%左右。如今,购买一台普通的计算机只要两三千元人民币,但如果把常用的操作系统、办公软件、安全软件等装好,却要远远超过购买计算机的费用。2.开发进度难以控制软件是逻辑、智力产品,软件的开发需建立庞大的逻辑体系,这与其他产品的生产是不一样的。例如,工厂里要生产某种机器,在时间紧的情况下可以要求工人加班或者实行“三班倒”,而这些方法都不能用在软件开发上。在软件开发过程中,用户需求(requirement)变化等各种意想不到的情况层出不穷,令软件开发过程很难保证按预定的计划实现,给项目计划和论证工作带来了很大的困难。Brooks 在其名著《人月神话》中指出:“在已拖延的软件项目上,增加人力只会使其更难按期完成”。事实上,软件系统的结构很复杂,各部分附加联系极大,盲目增加软件开发人员并不能成比例地提高软件
以下为对购买帮助不大的评价