软件建模与设计:UML、用例、模式和软件体系结构
作者 : (美)Hassan Gomaa 著
译者 : 彭鑫 吴毅坚 赵文耘 等译
丛书名 : 计算机科学丛书
出版日期 : 2014-08-13
ISBN : 978-7-111-46759-5
定价 : 85.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 443
开本 : 16
原书名 : Software Modeling and Design: UML, Use Cases, Patterns and Software Architectures
原出版社: Cambridge University Press
属性分类: 教材
包含CD :
绝版 :
图书简介

本书介绍了关于软件应用建模和设计的知识。从UML中的用况到软件体系结构,本书展示了如何在解决现实世界问题的过程中应用COMET,介绍了针对各种体系结构的模式(包括客户端/服务器以及基于构件的软件体系结构中的客户端/服务模式,面向服务的体系结构中的代理、发现和事务模式,实时软件体系结构中的实时控制模式,软件产品线体系结构的分层模式)和软件质量属性(包括可维护性、可修改性、可测试性、可追踪性、可伸缩性、可复用性、性能、可用性和安全性)。此外,还包含了四个案例研究(包括银行系统、在线购物系统、应急监控系统和自动引导车辆系统)。

图书特色

本书提供了关于软件应用建模和设计的知识。从UML中的用例到软件体系结构,本书展示了如何在解决实际问题的过程中应用COMET(协作式对象建模和体系结构设计方法)这种基于UML的建模和设计方法,介绍了针对各种体系结构的模式,包括客户端/服务器和基于构件的软件体系结构中的客户端/服务模式,面向服务的体系结构中的代理、发现和事务模式,实时软件体系结构中的实时控制模式,软件产品线体系结构中的分层模式。此外,还介绍了软件质量属性,包括可维护性、可修改性、可测试性、可追踪性、可伸缩性、可复用性、性能、可用性和安全性。
四个完整的案例研究阐明了针对不同软件体系结构的设计问题:针对客户端/服务器体系结构的银行系统、针对面向服务的体系结构的在线购物系统、针对基于构件的软件体系结构的应急监控系统、针对实时软件体系结构的自动引导车辆系统。

作者简介
Hassan Gomaa 美国乔治梅森大学计算机科学和软件工程系教授,并担任系主任。他在软件工程领域拥有30多年的学术界和工业界经验,发表了150多篇技术论文。除本书外,他还编著了《Designing Software Product Lines with UML》、《Designing Concurrent, Distributed, and Real-Time Applications with UML》、《Software Design Methods for Concurrent and Real-Time Systems》三本书。

图书前言

概述
本书介绍了一种用例驱动、基于UML的软件体系结构建模和设计方法,包括面向对象的软件体系结构、客户端/服务器软件体系结构、面向服务的体系结构、基于构件的软件体系结构、并发和实时软件体系结构,以及软件产品线体系结构。本书为软件体系结构设计提供了一套统一的方法,同时针对每种类型的软件体系结构进行了特殊考虑。此外,本书还包含了四个案例研究:一个客户端/服务器银行系统、一个面向服务的体系结构的在线购物系统、一个基于构件的分布式应急监控系统和一个实时自动引导车辆系统。
本书介绍了一种基于UML的软件建模和设计方法——COMET(Collaborative Object Modeling and Architectural Design Method)。COMET是一种高度迭代的面向对象的软件开发方法,覆盖了面向对象开发生存周期的需求、分析和设计建模阶段。
本书针对希望使用一种系统化的基于UML的方法(从基于用例的需求建模开始,通过静态和动态建模,直至基于体系结构设计模式的软件设计)来设计软件体系结构的读者。
本书内容
目前市场上有很多介绍面向对象分析和设计概念及方法的书。本书针对设计软件体系结构的特定需要,介绍了基于UML的软件体系结构设计,由基于用例的需求建模、基于类图的静态建模、基于对象交互分析的动态建模和状态机建模开始,直至基于体系结构设计模式的软件设计。书中所有的例子都使用UML 2表示法进行描述。具体而言,本书包括以下内容:
全面介绍了应用基于UML的面向对象概念进行需求建模、分析建模和设计建模。需求建模包括用例建模,以描述功能性需求,同时通过扩展的方式来描述非功能性需求。分析建模包括静态建模和动态建模(交互建模和状态机建模)。设计建模涉及重要的体系结构问题,包括一种将基于用例的交互图集成到初始软件体系结构以及应用体系结构和设计模式来设计软件体系结构的系统化的方法。
提供了一种通用的需求和分析建模方法,并且分析了设计不同类型的软件体系结构所面对的特定问题(每种类型的软件体系结构对应一章),包括面向对象的软件系统、客户端/服务器系统、面向服务的系统、基于构件的系统、实时系统和软件产品线。
介绍了如何通过首先考虑与相应的软件体系结构类型相关的模式来设计软件体系结构,包括:针对客户端/服务器以及基于构件的软件体系结构的客户端/服务模式;针对面向服务的体系结构的代理、发现和事务模式;针对实时软件体系结构的实时控制模式;针对软件产品线体系结构的分层模式。
介绍了对软件产品质量有重要影响的软件质量属性。其中很多属性都可以在软件体系结构设计时进行考虑和评价。所涉及的软件质量属性包括可维护性、可修改性、可测试性、可追踪性、可伸缩性、可复用性、性能、可用性和安全性。
介绍了四个详细的案例研究。这些案例研究按照软件体系结构类型进行组织,包括针对客户端/服务器体系结构的银行系统、针对面向服务的体系结构的在线购物系统、针对基于构件的软件体系结构的应急监控系统,以及针对实时软件体系结构的自动引导车辆系统。
本书最后提供了软件体系结构模式分类、针对基于本书进行学术性课程和工业课程教学的教学建议以及术语表、参考文献、索引。此外,本书的大多数章节后都包含相应的练习。
目标读者
本书的目标读者包括学术界以及计算机相关专业的从业人员。学术界的目标读者包括计算机科学及软件工程专业的高年级本科生、研究生以及本领域的研究者。相关从业人员包括参与大规模工业和政府软件系统的分析、设计和开发的分析师、软件架构师、软件设计人员、程序员、项目经理、技术经理、程序经理和质量保障专家。
阅读本书的方式
本书可以通过多种不同的方式进行阅读。可以按章节顺序进行阅读:第1章至第4章提供了介绍性的概念;第5章对COMET/UML软件建模和设计方法进行了概述;第6章至第20章对软件建模和设计进行了深入介绍;第21章至第24章提供了详细的案例研究。
除此之外,有些读者可能希望跳过某些章节,这取决于读者对相关内容的熟悉程度。第1章至第4章是介绍性的内容,有经验的读者可以跳过。熟悉软件设计思想的读者可以跳过第4章。对软件建模和设计特别感兴趣的读者可以直接从第5章开始阅读关于COMET/UML的介绍。不熟悉UML或者对UML 2的变化感兴趣的读者可以阅读第2章以及第5章至第20章。
有经验的软件设计者还可以将本书作为参考书,将各章作为项目到达需求、分析或设计过程中特定阶段时的参考。每一章的内容都相对独立。例如,可以通过第6章了解用例,通过第7章了解静态建模,通过第9章了解动态交互建模。第10章可以作为设计状态机的参考;第12章和附录A可以作为软件体系结构模式的参考;第14章可以作为面向对象软件体系结构的参考;第15章可以作为基于静态模型设计关系数据库的参考。可以通过第16章了解面向服务的体系结构;通过第17章了解基于构件的分布式软件设计;通过第18章了解实时设计;通过第19章了解软件产品线设计。也可以通过阅读案例研究来加强对如何使用COMET/UML方法的理解,因为每个案例研究都对实际应用的设计中需求、分析和设计建模过程所做出的各种决策进行了解释。

Hassan Gomaa
邮件地址:hgomaa@gmu.edu
个人网站:http://mason.gmu.edu/~hgomaa

上架指导

计算机\软件工程

封底文字

本书提供了关于软件应用建模和设计的知识。从UML中的用例到软件体系结构,本书展示了如何在解决实际问题的过程中应用COMET(协作式对象建模和体系结构设计方法)这种基于UML的建模和设计方法,介绍了针对各种体系结构的模式,包括客户端/服务器和基于构件的软件体系结构中的客户端/服务模式,面向服务的体系结构中的代理、发现和事务模式,实时软件体系结构中的实时控制模式,软件产品线体系结构中的分层模式。此外,还介绍了软件质量属性,包括可维护性、可修改性、可测试性、可追踪性、可伸缩性、可复用性、性能、可用性和安全性。
 四个完整的案例研究阐明了针对不同软件体系结构的设计问题:针对客户端/服务器体系结构的银行系统、针对面向服务的体系结构的在线购物系统、针对基于构件的软件体系结构的应急监控系统、针对实时软件体系结构的自动引导车辆系统。

作者简介

(美)Hassan Gomaa 著:Hassan Gomaa 美国乔治梅森大学计算机科学和软件工程系教授,并担任系主任。他在软件工程领域拥有30多年的学术界和工业界经验,发表了150多篇技术论文。除本书外,他还编著了《Designing Software Product Lines with UML》、《Designing Concurrent, Distributed, and Real-Time Applications with UML》、《Software Design Methods for Concurrent and Real-Time Systems》三本书。


有作者照片

译者简介

彭鑫 吴毅坚 赵文耘 等译:暂无简介

译者序

软件开发的主要困难在于概念化层次上的问题理解和方案规划,主要包括需求理解、分析和软件设计。其中,软件体系结构设计是一项最具挑战性的任务。一个高质量的软件体系结构应当完整、准确地实现特定软件系统所要求的各项功能需求,同时实现性能、可用性、可伸缩性、可维护性等软件质量属性。为此,设计人员需要全面、准确地理解软件需求和软件质量属性,掌握各种常见的软件体系结构模式并具有在特定问题环境中综合应用多种模式的能力。此外,为了准确、规范地描述需求模型、分析模型、体系结构模式以及特定的体系结构设计模型,统一、规范的可视化建模语言及相应的建模指导也是必不可少的。
本书面向软件体系结构设计,以统一建模语言(UML)为基础,从基于用例的需求建模、基于类图的静态建模、基于对象交互分析的动态建模、状态机建模等基本的需求和分析建模手段开始,逐步介绍了多种软件体系结构模式以及基于模式的软件体系结构设计方法。这些体系结构模式覆盖了当前最为流行的多种软件体系结构类型,包括面向对象的软件体系结构、客户端/服务器软件体系结构、面向服务的软件体系结构、基于构件的软件体系结构、并发和实时软件体系结构以及软件产品线体系结构。本书还提供了四个详细的案例研究以及一系列模型实例,所有例子都使用UML 2表示法进行描述。本书不仅适用于高年级本科生及研究生软件分析与设计相关课程教学,而且还可以作为软件开发和管理相关领域专业人员学习、应用软件分析与设计方法和建模规范的参考。
彭鑫、吴毅坚、赵文耘主要组织并参加了本书的翻译和审校工作。其中,彭鑫负责第1章、第12~19章、第21~24章、附录及索引的翻译工作,吴毅坚负责第2~11章、第20章及术语表的翻译工作,赵文耘审阅了全文。参加本书翻译工作的还包括陈碧欢、林云、钱文亿、赵欣等。
由于本书内容丰富、覆盖面广,同时译者水平有限,译文中难免有疏漏或错误,恳请各位读者批评指正。

图书目录

出版者的话
译者序
前言
本书导读
致谢
第一部分 概览
第1章 引言 2
1.1 软件建模 2
1.2 面向对象方法与统一建模语言 2
1.3 软件体系结构设计 3
1.4 方法和表示法 3
1.5 COMET:一种基于UML的软件应用建模和设计方法 4
1.6 UML标准 4
1.7 软件体系结构的多视图 5
1.8 软件建模和设计方法的发展 5
1.9 面向对象分析和设计方法的发展 7
1.10 并发、分布式和实时设计方法 8
1.11 总结 8
练习 8
第2章 UML表示法概述 10
2.1 UML图 10
2.2 用例图 10
2.3 类和对象 11
2.4 类图 12
2.4.1 关联 12
2.4.2 聚合和组合层次 12
2.4.3 泛化和特化层次 13
2.4.4 可见性 13
2.5 交互图 13
2.5.1 通信图 13
2.5.2 顺序图 13
2.6 状态机图 14
2.7 包 15
2.8 并发通信图 16
2.9 部署图 17
2.10 UML扩展机制 17
2.10.1 构造型 18
2.10.2 标记值 18
2.10.3 约束 18
2.11 本书的约定 19
2.11.1 需求建模 19
2.11.2 分析建模 19
2.11.3 设计建模 20
2.12 总结 20
练习 20
第3章 软件生存周期模型和过程 22
3.1 软件生存周期模型 22
3.1.1 瀑布生存周期模型 22
3.1.2 瀑布模型的局限性 22
3.1.3 抛弃型原型 24
3.1.4 通过增量开发的演化式原型 24
3.1.5 抛弃型原型和增量开发的结合 24
3.1.6 螺旋模型 27
3.1.7 统一软件开发过程 27
3.2 设计验证和确认 28
3.2.1 软件质量保证 29
3.2.2 软件设计的性能分析 29
3.3 软件生存周期的活动 29
3.3.1 需求分析和规约 29
3.3.2 体系结构设计 29
3.3.3 详细设计 30
3.3.4 编码 30
3.4 软件测试 30
3.4.1 单元测试 30
3.4.2 集成测试 30
3.4.3 系统测试 30
3.4.4 验收测试 30
3.5 总结 31
练习 31
第4章 软件设计和体系结构概念 32
4.1 面向对象概念 32
4.2 信息隐藏 33
4.2.1 面向对象设计中的信息隐藏 34
4.2.2 信息隐藏示例 34
4.2.3 设计信息隐藏对象 36
4.3 继承和泛化/特化 36
4.4 并发处理 37
4.4.1 顺序应用与并发应用 38
4.4.2 并发对象 38
4.4.3 并发对象间的协作 38
4.4.4 同步问题 38
4.4.5 生产者/消费者问题 40
4.4.6 异步消息通信 40
4.4.7 带回复的同步消息通信 40
4.5 设计模式 41
4.6 软件体系结构和构件 41
4.6.1 构件和构件接口 42
4.6.2 连接器 42
4.7 软件质量属性 42
4.8 总结 42
练习 43
第5章 软件建模和设计方法概览 44
5.1 COMET基于用例的软件生存周期 44
5.1.1 需求建模 44
5.1.2 分析建模 44
5.1.3 设计建模 44
5.1.4 增量软件构建 46
5.1.5 增量软件集成 46
5.1.6 系统测试 46
5.2 COMET生存周期与其他软件过程的比较 46
5.2.1 COMET生存周期与统一软件开发过程对比 46
5.2.2 COMET生存周期与螺旋模型对比 47
5.3 需求、分析和设计建模 47
5.3.1 需求建模中的活动 47
5.3.2 分析建模中的活动 47
5.3.3 设计建模中的活动 48
5.4 设计软件体系结构 48
5.5 总结 49
练习 49
第二部分 软件建模
第6章 用例建模 52
6.1 需求建模 52
6.1.1 需求分析 52
6.1.2 需求规约 53
6.1.3 软件需求规约的质量属性 53
6.2 用例 54
6.3 参与者 55
6.3.1 参与者、角色和用户 55
6.3.2 主要和次要参与者 55
6.3.3 对参与者建模 55
6.3.4 谁是参与者 57
6.4 标识用例 57
6.5 用例模型中文档化用例 57
6.6 用例描述示例 58
6.7 用例关系 59
6.8 包含关系 59
6.8.1 包含关系和包含用例示例 60
6.8.2 结构化冗长的用例 61
6.9 扩展关系 61
6.9.1 扩展点 62
6.9.2 扩展点和扩展用例示例 62
6.10 用例组织指南 64
6.11 规定非功能性需求 64
6.12 用例包 65
6.13 活动图 65
6.14 总结 66
练习 67
第7章 静态建模 68
7.1 类之间的关联 68
7.1.1 类图描述关联 68
7.1.2 关联的多重性 69
7.1.3 三元关联 71
7.1.4 一元关联 71
7.1.5 关联类 71
7.2 组合和聚合层次 72
7.3 泛化/特化层次 73
7.4 约束 73
7.5 静态建模和UML 74
7.6 系统上下文的静态建模 75
7.7 使用UML构造型对类分类 76
7.8 外部类建模 77
7.8.1 从外部类开发软件系统上下文类图示例 78
7.8.2 参与者和外部类 78
7.8.3 从参与者开发软件系统上下文类图示例 79
7.9 实体类的静态建模 80
7.10 总结 81
练习 82
第8章 对象和类组织 83
8.1 对象和类的组织准则 83
8.2 对应用类和对象建模 83
8.3 对象和类的组织分类 84
8.4 外部类与软件边界类 85
8.5 边界类和对象 85
8.5.1 用户交互对象 85
8.5.2 代理对象 86
8.5.3 设备I/O边界对象 87
8.5.4 描述外部类和边界类 88
8.6 实体类和对象 89
8.7 控制类和对象 90
8.7.1 协调者对象 90
8.7.2 状态相关的控制对象 91
8.7.3 计时器对象 91
8.8 应用逻辑类和对象 92
8.8.1 业务逻辑对象 92
8.8.2 算法对象 92
8.8.3 服务对象 94
8.9 总结 94
练习 94
第9章 动态交互建模 96
9.1 对象交互建模 96
9.1.1 通信图 96
9.1.2 顺序图 97
9.1.3 对象交互建模的分析和设计决策 97
9.1.4 顺序图和通信图对比 98
9.1.5 用例和场景 98
9.1.6 通用和实例形式的交互图 99
9.2 交互图上的消息序列编号 99
9.2.1 交互图上的消息标签 99
9.2.2 交互图上的消息序列编号 100
9.2.3 并发和可替换的消息序列 100
9.2.4 消息序列描述 101
9.3 动态交互建模 101
9.4 无状态动态交互建模 101
9.5 无状态动态交互建模示例 102
9.5.1 查看警报示例 102
9.5.2 下单请求示例 103
9.6 总结 110
练习 110
第10章 有限状态机 112
10.1 有限状态机和状态转换 112
10.1.1 事件 112
10.1.2 状态 113
10.2 状态图示例 113
10.2.1 ATM状态图示例 113
10.2.2 微波炉状态图示例 115
10.3 事件和警戒条件 116
10.4 动作 117
10.4.1 状态转换中的动作 117
10.4.2 进入动作 119
10.4.3 退出动作 119
10.5 层次化状态图 120
10.5.1 层次化状态分解 121
10.5.2 复合状态 121
10.5.3 状态转换的聚合 121
10.5.4 正交状态图 122
10.6 开发状态图的指导原则 123
10.7 从用例开发状态图 124
10.8 从用例开发状态图示例 125
10.8.1 为每个用例开发状态图 125
10.8.2 考虑可替换序列 126
10.8.3 开发集成的状态图 126
10.8.4 开发层次化状态图 128
10.9 总结 129
练习 130
第11章 状态相关的动态交互建模 132
11.1 状态相关的动态交互建模中的步骤 132
11.2 使用交互图和状态图对交互场景建模 132
11.3 状态相关的动态交互建模示例:银行系统 133
11.3.1 确定主序列 133
11.3.2 确定可替换序列 135
11.3.3 主序列:有效PIN码 136
11.3.4 可替换序列:无效PIN码 136
11.3.5 可替换序列:第三次无效PIN码 137
11.3.6 可替换序列:被盗的或过期的卡片 137
11.3.7 所有场景通用的交互图 138
11.3.8 控制对象和状态图的编序 138
11.4 总结 140
练习 141
第三部分 软件体系结构设计
第12章 软件体系结构概览 144
12.1 软件体系结构以及基于构件的软件体系结构 144
12.1.1 基于构件的软件体系结构 144
12.1.2 体系结构构造型 145
12.2 软件体系结构的多视图 145
12.2.1 软件体系结构的结构视图 145
12.2.2 软件体系结构的动态视图 145
12.2.3 软件体系结构的部署视图 147
12.3 软件体系结构模式 147
12.3.1 抽象分层体系结构模式 148
12.3.2 调用/返回模式 150
12.3.3 异步消息通信模式 150
12.3.4 带回复的同步消息通信模式 153
12.4 描述软件体系结构模式 153
12.5 接口设计 154
12.6 设计软件体系结构 155
12.7 总结 157
练习 157
第13章 软件子系统体系结构设计 159
13.1 软件体系结构设计中的问题 159
13.2 集成通信图 160
13.3 子系统设计中的关注点分离 162
13.3.1 复合对象 162
13.3.2 地理位置 164
13.3.3 客户端和服务 164
13.3.4 用户交互 164
13.3.5 外部对象的接口 164
13.3.6 控制范围 165
13.4 子系统组织准则 166
13.4.1 客户端子系统 166
13.4.2 用户交互子系统 166
13.4.3 服务子系统 168
13.4.4 控制子系统 168
13.4.5 协调者子系统 169
13.4.6 输入/输出子系统 170
13.5 子系统间消息通信的决策 170
13.6 总结 172
练习 172
第14章 设计面向对象的软件体系结构 174
14.1 面向对象的软件体系结构的概念、体系结构和模式 174
14.2 设计信息隐藏类 174
14.3 设计类接口和操作 175
14.3.1 基于交互模型设计类操作 175
14.3.2 基于交互模型设计类操作示例 176
14.3.3 基于静态模型设计类操作 177
14.4 数据抽象类 177
14.5 状态机类 178
14.6 图形用户交互类 179
14.7 业务逻辑类 180
14.8 设计中的继承 180
14.8.1 类继承 180
14.8.2 抽象类 182
14.8.3 抽象类和子类示例 182
14.8.4 抽象超类和子类设计 184
14.9 类接口规约 185
14.10 信息隐藏类的详细设计 186
14.10.1 账户抽象超类的详细设计 187
14.10.2 支票账户子类的详细设计 187
14.10.3 储蓄账户子类的详细设计 188
14.11 多态和动态绑定 188
14.12 Java中类的实现 189
14.13 总结 190
练习 190
第15章 设计客户端/服务器软件体系结构 192
15.1 客户端/服务器体系结构的概念、体系结构和模式 192
15.2 客户端/服务软件体系结构的结构模式 192
15.2.1 多客户端/单服务体系结构模式 192
15.2.2 多客户端/多服务体系结构模式 194
15.2.3 多层客户端/服务体系结构模式 195
15.3 客户端/服务器体系结构的通信模式 195
15.3.1 带回复的同步消息通信模式 196
15.3.2 带回调的异步消息通信模式 196
15.4 客户端/服务器系统的中间件 197
15.4.1 客户端/服务器系统平台 197
15.4.2 Java远程方法调用 198
15.5 服务子系统的设计 199
15.5.1 顺序性服务的设计 199
15.5.2 顺序性服务设计示例 199
15.5.3 并发服务设计 200
15.6 包装器类的设计 202
15.6.1 数据库包装器类的设计 202
15.6.2 数据库包装器类示例 202
15.7 从静态模型到关系数据库的设计 203
15.7.1 关系数据库概念 203
15.7.2 确定主键 204
15.7.3 将关联映射到外键 204
15.7.4 将关联类映射到关联表 205
15.7.5 将整体/部分关系映射到关系数据库 206
15.7.6 将泛化/特化关系映射到关系数据库 207
15.8 总结 208
练习 208
第16章 设计面向服务的体系结构 210
16.1 面向服务的体系结构的概念、体系结构和模式 210
16.2 软件体系结构代理者模式 211
16.2.1 服务注册模式 211
16.2.2 代理者转发模式 212
16.2.3 代理者句柄模式 212
16.2.4 服务发现模式 213
16.3 面向服务的体系结构的技术支持 214
16.3.1 Web服务协议 214
16.3.2 Web服务 214
16.3.3 注册服务 214
16.3.4 代理和发现服务 215
16.4 软件体系结构事务模式 215
16.4.1 两阶段提交协议模式 216
16.4.2 复合事务模式 218
16.4.3 长事务模式 218
16.5 协商模式 219
16.6 面向服务体系结构中的服务接口设计 221
16.7 面向服务体系结构中的服务协调 222
16.8 设计面向服务的体系结构 223
16.9 服务复用 225
16.10 总结 225
练习 225
第17章 设计基于构件的软件体系结构 227
17.1 基于构件的软件体系结构的概念、体系结构和模式 227
17.2 设计基于构件的分布式软件体系结构 228
17.3 复合子系统和构件 228
17.4 使用UML建模构件 229
17.4.1 构件接口设计 229
17.4.2 供给和请求接口 230
17.4.3 连接器和交互构件 230
17.4.4 设计复合构件 231
17.5 构件组织准则 232
17.5.1 与物理数据源的邻近性 232
17.5.2 局部自治性 232
17.5.3 性能 233
17.5.4 特定硬件 233
17.5.5 I/O构件 234
17.6 组消息通信模式 234
17.6.1 广播消息通信模式 234
17.6.2 订阅/通知消息通信模式 234
17.6.3 使用订阅和通知的并发服务设计 236
17.7 应用部署 237
17.7.1 应用部署事务 237
17.7.2 应用部署示例 239
17.8 总结 239
练习 239
第18章 设计并发和实时软件体系结构 241
18.1 并发和实时软件体系结构的概念、体系结构及模式 241
18.2 实时系统的特点 241
18.3 实时软件体系结构中的控制模式 242
18.3.1 集中式控制体系结构模式 242
18.3.2 分布式控制体系结构模式 242
18.3.3 层次化控制体系结构模式 243
18.4 并发任务组织 244
18.5 I/O任务组织准则 244
18.5.1 事件驱动I/O任务 244
18.5.2 周期性I/O任务 245
18.5.3 按需驱动I/O任务 247
18.6 内部任务组织准则 248
18.6.1 周期性任务 248
18.6.2 按需驱动任务 248
18.6.3 控制任务 249
18.6.4 用户交互任务 250
18.7 开发并发任务体系结构 252
18.8 任务通信和同步 254
18.8.1 异步(松耦合)消息通信 254
18.8.2 带回复的同步(紧耦合)消息通信 254
18.8.3 不带回复的同步(紧耦合)消息通信 255
18.8.4 事件同步 255
18.8.5 信息隐藏对象上的任务交互 256
18.8.6 修正的并发通信图 257
18.9 任务接口和任务行为规约 257
18.9.1 针对银行服务任务的TIS示例 259
18.9.2 针对读卡器接口任务的TIS示例 259
18.10 Java中并发任务的实现 260
18.11 总结 260
练习 261
第19章 设计软件产品线体系结构 262
19.1 演化软件产品线工程 262
19.2 软件产品线的需求建模 263
19.2.1 软件产品线的用例建模 263
19.2.2 特征建模 264
19.3 软件产品线的分析建模 266
19.3.1 软件产品线的静态建模 266
19.3.2 软件产品线的动态交互建模 266
19.4 软件产品线的动态状态机建模 268
19.5 软件产品线的设计建模 269
19.5.1 建模基于构件的软件体系结构 269
19.5.2 软件体系结构模式 270
19.6 总结 270
练习 271
第20章 软件质量属性 272
20.1 可维护性 272
20.2 可修改性 273
20.3 可测试性 274
20.4 可追踪性 274
20.5 可扩展性 276
20.6 可复用性 276
20.7 性能 277
20.8 安全性 278
20.9 可用性 278
20.10 总结 279
练习 279
第四部分 案例研究
第21章 客户端/服务器软件体系结构案例研究:银行系统 282
21.1 问题描述 282
21.2 用例模型 282
21.2.1 “验证PIN码”用例 284
21.2.2 具体的“取款”用例 284
21.2.3 具体的“查询账户”用例 285
21.2.4 具体的“转账”用例 286
21.3 静态建模 286
21.3.1 问题域的静态建模 286
21.3.2 系统上下文的静态建模 286
21.3.3 实体类的静态建模 289
21.4 对象组织 290
21.4.1 客户端/服务器子系统组织 290
21.4.2 ATM客户端对象和类的组织:边界对象 291
21.4.3 ATM客户端对象和类的组织:用例中的对象 292
21.4.4 服务子系统中的对象组织 293
21.5 动态建模 293
21.5.1 客户端验证PIN码交互图的消息序列描述 294
21.5.2 服务器端验证PIN码交互图的消息序列描述 297
21.5.3 客户端取款交互图的消息序列描述 298
21.5.4 服务器端取款交互图的消息序列描述 299
21.6 ATM状态图 303
21.6.1 处理客户输入复合状态 304
21.6.2 处理交易复合状态 306
21.6.3 结束交易复合状态 307
21.7 银行系统的设计 308
21.8 集成通信模型 308
21.9 将系统划分为子系统 310
21.10 ATM客户端子系统的设计 310
21.10.1 设计ATM子系统并发任务体系结构 311
21.10.2 定义ATM子系统任务接口 312
21.10.3 设计ATM客户端信息隐藏类 314
21.11 银行服务子系统的设计 316
21.11.1 设计银行服务子系统并发任务体系结构 316
21.11.2 设计银行服务信息隐藏类 317
21.11.3 设计银行服务接口 318
21.12 关系数据库设计 318
21.13 银行系统的部署 320
21.14 其他设计考虑 322
21.15 详细设计 322
21.15.1 读卡器接口任务的事件顺序逻辑示例 322
21.15.2 ATM控制任务的事件顺序逻辑示例 323
21.15.3 银行服务任务的事件顺序逻辑示例 324
第22章 面向服务的体系结构案例研究:在线购物系统 326
22.1 问题描述 326
22.2 用例建模 326
22.2.1 “浏览目录”用例描述 327
22.2.2 “下单请求”用例描述 328
22.2.3 “处理配送订单”用例描述 328
22.2.4 “确认配送和给客户开账单”用例描述 329
22.2.5“查看订单”用例的活动图 331
22.3 静态建模 331
22.3.1 软件系统上下文建模 331
22.3.2 问题域的静态实体类建模 331
22.4 对象和类组织 332
22.5 动态建模 333
22.5.1 “浏览目录”用例的动态建模 333
22.5.2 “下单请求”用例的动态建模 334
22.5.3 “处理配送订单”用例的动态建模 335
22.5.4 “确认配送和给客户开账单”用例的动态建模 336
22.5.5 “查看订单”用例的动态建模 337
22.6 面向服务体系结构的代理者和包装器技术支持 338
22.7 设计建模 338
22.7.1 面向服务的体系结构概述 338
22.7.2 分层软件体系结构 338
22.7.3 体系结构通信模式 339
22.7.4 并发软件设计 339
22.7.5 服务接口设计 341
22.7.6 面向服务的软件体系结构设计 344
22.7.7 构件端口和接口设计 346
22.8 服务复用 347
第23章 基于构件的软件体系结构案例研究:应急监控系统 348
23.1 问题描述 348
23.2 用例建模 348
23.2.1 “查看监控数据”用例描述 349
23.2.2 “查看警报”用例描述 349
23.2.3 “生成监控数据”用例描述 350
23.2.4 “生成警报”用例描述 350
23.3 静态建模 351
23.4 动态建模 351
23.4.1 类和对象组织 351
23.4.2 用例的通信图 352
23.4.3 “查看警报”用例的通信图 352
23.4.4 “查看监控数据”用例的通信图 353
23.4.5 “生成警报”用例的通信图 354
23.4.6 “生成监控状态”用例的通信图 354
23.5 设计建模 355
23.5.1 集成的通信图 355
23.5.2 基于构件的分层体系结构 355
23.5.3 体系结构通信模式 357
23.5.4 基于分布式构件的软件体系结构 359
23.5.5 构件和服务接口设计 359
23.6 软件构件部署 362
第24章 实时软件体系结构案例研究:自动引导车辆系统 363
24.1 问题描述 363
24.2 用例建模 363
24.2.1 “移动到站点”用例 364
24.2.2 “发送车辆状态”用例 364
24.3 静态建模 365
24.3.1 概念静态模型 365
24.3.2 软件系统上下文建模 365
24.4 对象和类组织 366
24.5 动态状态机建模 366
24.6 动态交互建模 367
24.6.1 “移动到站点”用例的动态建模 367
24.6.2 “发送车辆状态”用例的动态建模 370
24.7 设计建模 370
24.7.1 集成通信图 370
24.7.2 基于构件的工厂自动化系统软件体系结构 370
24.7.3 自动引导车辆系统的软件体系结构 372
24.7.4 并发软件体系结构 373
24.7.5 体系结构通信模式 373
24.7.6 基于构件的软件体系结构 375
24.7.7 构件接口设计 377
附录A 软件体系结构模式分类 379
附录B 教学考虑 400
术语表 402
练习答案 412
参考文献 413
索引 420

教学资源推荐
作者: [美]约翰 W. 萨茨辛格(John W. Satzinger) 罗伯特 B. 杰克逊(Robert B. Jackson) 史蒂芬 D. 伯德(Stephen D. Burd)著
作者: 宫云战
作者: David Gustafson
参考读物推荐
作者: (美)Laurie Williams,Robert Kessler
作者: Chris Raistrick, Paul Francis, John Wright, Colin Carter, Lan Wilkie