注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件工程及软件方法学软件架构设计

软件架构设计

软件架构设计

定 价:¥45.00

作 者: 温昱
出版社: 电子工业出版社
丛编项:
标 签: 软件工程

购买这本书可以去


ISBN: 9787121039461 出版时间: 2007-05-01 包装: 平装
开本: 0开 页数: 340 字数:  

内容简介

  本书紧紧围绕“软件架构设计”这一主题,立足实践解析了软件架构的概念、阐述了切实可行的软件架构设计方法、提供了可操作性极强的完整的架构设计过程。另外,本书从思维方式的突破、面向对象设计、UML建模、过程与管理等关键过渡环节,为广大程序员的成长提供了切中肯綮的指导。本书可作为计算机软件专业本科生、研究生和软件工程硕士的软件架构设计教材,也可作为软件开发高级培训、软件开发管理培训的培训教材,更是第一线高级开发人员和开发管理人员的必备参考书。

作者简介

  温昱,资深咨询顾问,CSAI特聘高级顾问,软件架构专家,软件架构思想的传播者和积极推动者。十年系统规划、架构设计和研发管理经验,在金融、航空、多媒体、网络管理、中间件平台等领域负责和参与多个大型系统的规划、设计、开发与管理。在《程序员》杂志、IBM DeveloperWorks等媒体发表了《图论思想与UML应用》、《敏捷设计从理论到实践》、《随需而变的RUP》等文章数十篇。译著有《应用框架的设计与实现——NET平台》等。松耦合空间(www.ou-he.com)网站创办人。

图书目录

第一部分 软件架构概念与思想篇. 1  
第1章 解析软件架构概念 3  
1.1 软件架构概念的分类 3  
1.1.1 组成派 4  
1.1.2 决策派 5  
1.2 软件架构概念大观    
1.2.1 Booch. Rumbaugh和Jacobson的定义 5  
1.2.2 Woods的观点 6  
1.2.3 Garlan和Shaw的定义 6  
1.2.4 Perry和Wolf的定义 6  
1.2.5 Boehm的定义 6  
1.2.6 IEEE的定义 6  
1.2.7 Bass的定义 6  
1.3 软件架构关注分割与交互 7  
1.4 软件架构是一系列有层次性的决策 8  
1.5 PM Tool案例:领会软件架构概念 10  
1.5.1 案例故事 10  
1.5.2 软件架构概念的体现 12  
1.5.3 重要结论 14  
1.6 总结与强调 14  
第2章 子系统. 框架与架构 15  
2.1 子系统和框架在架构设计中的地位 16  
2.1.1 关注点分离之道 16  
2.1.2 子系统和框架在架构设计中的地位 17  
2.2 子系统与软件架构 19  
2.2.1 不同粒度的软件单元 20  
2.2.2 子系统也有架构 21  
2.2.3 子系统不同,28架构不同 21  
2.2.4 不同实践者眼中的粒度 23  
2.3 框架与软件架构 23  
2.3.1 框架的概念 23  
2.3.2 架构和框架的区别 24  
2.3.3 架构和框架的联系 25  
2.3.4 框架也有架构 26  
2.4 超越概念:立足实践理解架构 26  
2.4.1 理解架构 26  
2.4.2 回到实践 28  
2.5 专题:框架技术 29  
2.5.1 框架vs.类库 29  
2.5.2 框架的分类 30  
2.5.3 框架的开发过程 32  
2.5.4 如何实现框架中的扩展点 33  
2.6 总结与强调 36  
第3章 软件架构的作用 37  
3.1 充分发挥软件架构的作用 37  
3.2 软件架构对新产品开发的作用 38  
3.3 软件架构对软件产品线开发的作用 40  
3.4 软件架构对软件维护的作用 42  
3.5 软件架构重构 42  
3.6 总结与强调 43  
第二部分 软件架构设计方法与过程篇 45  
第4章 软件架构视图 47  
4.1 呼唤软件架构视图 47  
4.1.1 办公室里的争论 48  
4.1.2 呼唤软件架构视图 48  
4.2 软件架构为谁而设计 49  
4.2.1 为用户而设计 49  
4.2.2 为客户而设计 50  
4.2.3 为开发人员而设计 50  
4.2.4 为管理人员而设计 51  
4.2.5 总结 51  
4.3 引入软件架构视图 52  
4.3.1 生活中的“视图”运用 53  
4.3.2 什么是软件架构视图 54  
4.3.3 多组涉众,65多个视图 54  
4.4 实践指南:逻辑架构与物理架构 55  
4.4.1 逻辑架构 56  
4.4.2 物理架构 57  
4.4.3 从逻辑架构和物理架构到设计实现 58  
4.5 设备调试系统案例:领会逻辑架构和物理架构 59  
4.5.1 设备调试系统案例简介 59  
4.5.2 逻辑架构设计 59  
4.5.3 物理架构设计 61  
4.6 总结与强调 62  
第5章 架构设计的5视图法 63  
5.1 架构设计的5视图法 64  
5.2 实践中的5视图方法 66  
5.3 办公室里的争论:回顾与落实 67  
5.4 案例:再谈设备调试系统 67  
5.4.1 根据需求决定引入哪些架构视图 68  
5.4.2 开发架构设计 68  
5.4.3 运行架构设计 69  
5.5 总结与强调 71  
第6章 从概念性架构到实际架构 73  
6.1 概念性架构 73  
6.2 实际架构 77  
6.3 从概念性架构到实际架构 78  
6.4 网络管理系统案例:从分层架构开始 78  
6.4.1 构思:概念性架构设计 78  
6.4.2 深入:实际架构设计 81  
6.5 总结与强调 82  
第7章 如何进行成功的架构设计 83  
7.1 何谓成功的软件架构设计 83  
7.2 探究成功架构设计的关键要素 84  
7.2.1 是否遗漏了至关重要的非功能需求 84  
7.2.2 能否驯服数量巨大且频繁变化的需求 86  
7.2.3 能否从容设计软件架构的不同方面 86  
7.2.4 是否及早验证架构方案并做出了调整 87  
7.3 制定软件架构设计策略 87  
7.3.1 策略一:全面认识需求 88  
7.3.2 策略二:关键需求决定架构 89  
7.3.3 策略三:多视图探寻架构 89  
7.3.4 策略四:尽早验证架构 90  
7.4 总结与强调 90  
第8章 软件架构要设计到什么程度 93  
8.1 软件架构要设计到什么程度 94  
8.1.1 分而治之的两种方式 94  
8.1.2 架构设计与详细设计 96  
8 .1.3 软件架构是团队开发的基础 96  
8.1.4 架构设计要进行到什么程度 98  
8.2 高来高去式架构设计的症状 98  
8.2.1 缺失重要架构视图 99  
8.2.2 浅尝辄止. 不够深入 100  
8.2.3 名不副实的分层架构 101  
8.3 如何克服高来高去症 101  
8.4 网络管理系统案例:如何将架构设计落到实处 102  
8.4.1 网管产品线的概念性架构 102  
8.4.2 识别每一层中的功能模块 102  
8.4.3 明确各层之间的交互接口 103  
8.4.4 明确各层之间的交互机制 104  
8.4.5 案例小结 105  
8.5 总结与强调 105  
第9章 软件架构设计过程 107  
9.1 打造有效的架构设计过程 107  
9.1.1 一般的软件过程 107  
9.1.2 架构师自己的架构设计过程 109  
9.2 软件架构设计过程解析 111  
9.2.1 架构设计策略应成为一等公民 111  
9.2.2 架构设计过程中的工作产品 112  
9.3 总结与强调 114  
第10章 需求分析 115  
10.1 软件需求基础 116  
10.1.1 什么是软件需求 116  
10.1.2 需求捕获vs.需求分析vs.系统分析 116  
10.1.3 需求捕获及其工作成果 118  
10.1.4 需求分析及其工作成果 118  
10.1.5 系统分析及其工作成果 119  
10.2 需求分析在软件过程中所处的位置 120  
10.2.1 概念化阶段所做的工作 120  
10.2.2 需求分析所处的位置 122  
10.3 架构师必须掌握的需求知识 123  
10.3.1 软件需求的类型 123  
10.3.2 各类需求对架构设计的不同影响 .. 127  
10.3.3 超市系统案例:领会需求类型的不同影响 129  
10.3.4 各类需求的“易变更性”不同 130  
10.3.5 质量属性需求与需求折衷 132  
10.4 PM Tool实战:需求分析 135  
10.4.1 上游活动:确定项目愿景 135  
10.4.2 第1步:从业务目标到特性列表 135  
10.4.3 第2步:从特性列表到用例图 136  
10.4.4 第3步:从用例图到用例规约 138  
10.4.5 需求启发与需求验证 139  
10.4.6 最终成果:《软件需求规格说明书》 140  
10.5 总结与强调 141  
第11章 专题:用例技术及应用 143  
11.1 用例图vs.用例简述vs.用例规约vs.用例实现 143  
11.2 储蓄系统案例:需求变化对用例的影响 148  
11.3 用例技术应用指南 150  
11.4 用例与需求捕获 152  
11.5 用例与需求分析 153  
11.6 用例与《软件需求规格说明书》 154  
11.7 总结与强调 155  
第12章 领域建模 157  
12.1 领域模型基础知识 157  
12.1.1 什么是领域模型 158  
12.1.2 领域模型相关的UML图 158  
12.2 领域建模在软件过程中所处的位置 159  
12.2.1 领域建模的必要性:从需求分析的两个典型困难说起 159  
12.2.2 领域建模与需求分析的关系 161  
12.2.3 领域建模所处的位置 162  
12.3 领域模型对软件架构的重要作用 163  
12.3.1 配置管理工具案例:探索复杂问题. 固化领域知识 163  
12.3.2 人事管理系统案例:决定功能范围. 影响可扩展性 165  
12.3.3 在线拍卖系统案例:提供交流基础. 促进有效沟通 168  
12.4 领域模型 vs. 文字说明 170  
12.5 PM Tool实战:建立项目管理的领域模型 171  
12.5.1 领域建模实录(1) 171  
12.5.2 领域建模实录(2) 174  
12.6 总结与强调 176  
第13章 确定对软件架构关键的需求 177  
13.1 虚拟高峰论坛:穷兵黩武还是择战而斗 177  
13.1.1 需求是任何促成设计决策的因素 178  
13.1.2 很少有开发者能奢侈地拥有一个稳定的需求集 178  
13.1.3 关键性的第一步是缩小范围 178  
13.1.4 要择战而斗 178  
13.1.5 功能. 质量和商业需求的某个集合塑造了构架 179  
13.2 关键需求决定架构 179  
13.2.1 实践中的常见问题 179  
13.2.2 关键需求决定架构 181  
13.3 确定关键需求在软件过程中所处的位置 182  
13.3.1 对架构关键的需求vs.需求优先级 182  
13.3.2 关键需求对后续活动的影响 183  
13.4 什么是对软件架构关键的需求 184  
13.4.1 关键的功能需求 184  
13.4.2 关键的质量属性需求 185  
13.4.3 关键的商业需求 186  
13.5 如何确定对软件架构关键的需求 187  
13.5.1 全面整理需求 188  
13.5.2 分析约束性需求 188  
13.5.3 确定关键功能需求 189  
13.5.4 确定关键质量属性需求 190  
13.6 PM Tool实战:确定关键需求 190  
13.7 总结与强调 191  
第14章 概念性架构设计 193  
14.1 概念性架构设计的步骤 194  
14.2 鲁棒性分析 195  
14.2.1 分析和设计之间的鸿沟 195  
14.2.2 鲁棒图简介 196  
14.2.3 从用例到鲁棒图 197  
14.3 运用架构模式 198  
14.3.1 架构模式简介 198  
14.3.2 架构模式的经典分类 199  
14.3.3 架构模式的现代分类 200  
14.3.4 分层 201  
14.3.5 MVC 201  
14.3.6 微内核 202  
14.3.7 基于元模型的架构 203  
14.3.8 管道—过滤器 204  
14.4 PM Tool实战:概念性架构设计 204  
14.4.1 进行鲁棒性分析 204  
14.4.2 引入架构模式 206  
14.4.3 质量属性分析 207  
14.4.4 设计结果 207  
14.5 总结与强调 208  
第15章 质量属性分析 209  
15.1 质量属性需求基础 210  
15.2 质量属性分析的位置 211  
15.3 利用“属性—场景—决策”表设计架构决策 211  
15.3.1 概述 211  
15.3.2 “属性—场景—决策”表方法 212  
15.3.3 题外话:《需求文档》如何定义质量属性需求 214  
15.4 PM Tool实战:可扩展性设计 214  
15.5 总结与强调 215  
第16章 细化架构设计 217  
16.1 架构细化在软件过程中所处的位置 218  
16.1.1 我们走到哪了 218  
16.1.2 运用基于5视图方法进行架构细化 219  
16.2 设计逻辑架构 220  
16.2.1 概述 220  
16.2.2 识别通用机制 220  
16.3 设计开发架构 223  
16.3.1 概述 223  
16.3.2 分层和分区 223  
16.4 设计数据架构 226  
16.4.1 概述 226  
16.4.2 如何将OO模型映射为数据模型 227  
16.5 设计运行架构 229  
16.5.1 概述 229  
16.5.2 运用主动类规划并发 230  
16.5.3 应用协议的设计 234  
16.6 设计物理架构 234  
16.6.1 概述 234  
16.7 注意满足所有约束性软件需求 235  
16.8 PM Tool实战:细化架构设计 236  
16.9 总结与强调 239  
第17章 实现并验证软件架构 241  
17.1 基础知识 242  
17.1.1 原型技术及分类 242  
17.1.2 验证架构的两种方法 245  
17.2 实现并验证软件架构的具体做法 245  
17.3 总结与强调 247  
第三部分 程序员成长篇 249  
第18章 MIME编码类案例: 从面向过程到面向对象 251  
18.1 设计目标 251  
18.2 MIME编码基础知识 252  
18.3 MIME编码类的设计过程 252  
18.3.1 面向过程的设计方案 252  
18.3.2 转向面向对象设计 254  
18.3.3 面向对象设计方案的确定 257  
18.3.4 Template Method和Strategy模式的对比 260  
第19章 突破OOP思维:继承在OOD中的应用 261  
19.1 从一则禅师语录说起 261  
19.1.1 见继承是继承——程序员境界 262  
19.1.2 见继承不是继承——成长境界 262  
19.1.3 见继承只是继承——设计师境界 262  
19.2 从OOD层面认识继承 262  
19.3 针对接口编程——隔离变化 263  
19.3.1 相关理论 263  
19.3.2 针对接口编程举例——用于架构设计 263  
19.3.3 针对接口编程举例——用于类设计 265  
19.4 混入类——更好的重用性 266  
19.4.1 相关理论 266  
19.4.2 混入类举例 266  
19.5 基于角色的设计——使用角色组装协作 267  
19.5.1 相关理论 267  
19.5.2 基于角色的设计举例 268  
第20章 细微见真章:耦合其实并不空洞 269  
20.1 顺序耦合性简介 269  
20.2 案例研究:顺序耦合性Bug一例 269  
20.2.1 项目简介 270  
20.2.2 新的需求 270  
20.2.3 发现顺序耦合性Bug 271  
20.2.4 跟踪调试 271  
20.2.5 分析原因 273  
20.2.6 解决策略 273  
20.2.7 运用重构的“Extra t Method”成例 273  
20.2.8 运用重构的“Hide Method”成例 274  
20.2.9 运用重构的“Introdu e Parameter Obje t”成例 274  
20.2.10 其他改进 274  
第21章 敏捷设计:从理论到实践 277  
21.1 换个角度考察依赖 278  
21.1.1 依赖的概念 278  
21.1.2 从会不会造成“实际危害”的角度考察依赖 278  
21.2 良性依赖原则 278  
21.2.1 依赖是不可避免的 278  
21.2.2 重要的是如何务实地应付变化 279  
21.3 案例:需求改变引起良性依赖变成恶性依赖 279  
21.4 案例:隔离第三方SDK可能造成的冲击 281  
21.5 案例:对具体类的良性依赖 283  
21.6 总结:如何处理好依赖关系 285  
第22章 基于角色的设计:从理论到实践 287  
22.1 基于角色的设计理论 288  
22.2 基于角色的设计与团队开发 288  
22.3 基于角色的设计实践 289  
22.4 基于角色的设计案例 291  
22.4.1 项目简介 291  
22.4.2 通过基于角色的设计组织子系统之间的协作 291  
22.4.3 通过基于角色的设计组织同一子系统内不同模块之间的协作 292  
22.5 基于角色的设计与面向对象分析 293  
第23章 超越设计模式:理解和运用更多模式 295  
23.1 关于模式的两个问题 295  
23.2 模式的正交分类法 296  
23.2.1 正交思维 296  
23.2.2 正交思维用于模式分类 297  
23.3 专攻性能:性能模式简介 299  
23.4 模型驱动开发的方方面面:MDD模式简介 301  
23.5 总结:拥抱模式 302  
第24章 如此轻松:立足图论学UML 303  
24.1 管窥UML中的OO思想 304  
24.1.1 一道笔试题的故事 304  
24.1.2 UML背后的思想 305  
24.2 图的定义与UML应用 306  
24.2.1 图的定义 306  
24.2.2 图的定义的UML应用——UML的图论观点 307  
24.2.3 图的定义的UML应用——关联类语法的理解 308  
24.2.4 图的定义的UML应用——说说序列图 309  
24.3 有向边与UML应用 310  
24.3.1 有向边 310  
24.3.2 有向边的UML应用——依赖关系 310  
24.3.3 有向边的UML应用——泛化. 实现和关联的依赖思想 312  
24.3.4 有向边的UML应用——一个例子 312  
24.4 着色顶点与UML应用 313  
24.4.1 着色顶点 313  
24.4.2 着色顶点的UML应用——通过颜色为图元分类 314  
24.4.3 着色顶点的UML应用——UML彩色建模方法介绍 315  
24.5 着色边与UML应用 317  
24.6 图的同构与UML应用 317  
24.6.1 图的同构 317  
24.6.2 图的同构的UML应用——UML风格 318  
第25章 理解软件过程:解析RUP核心概念 321  
25.1 架构师必须了解软件过程 321  
25.1.1 架构师的工作职责 321  
25.1.2 架构师必须了解软件过程 322  
25.2 RUP实践中的常见问题 322  
25.3 RUP核心概念解析 323  
25.3.1 一图胜千言 323  
25.3.2 角色执行活动,357活动生产工件 323  
25.3.3 阶段和迭代:提供不同级别的决策时机 324  
25.3.4 配置和变更管理支持迭代式的基于基线的开发 326  
25.3.5 发布是什么,360发布不是什么 327  
第26章 海阔凭鱼跃:通盘理解软件工程 329  
26.1 什么是软件工程概念模型 329  
26.2 一个精简的软件工程概念模型 329  
26.3 一个细化的软件工程概念模型 330  
26.3.1 模型概述 331  
26.3.2 方法论 331  
26.3.3 过程 331  
26.3.4 目标 332  
26.3.5 项目 332  
26.3.6 其他 333  
26.4 软件工程概念模型的具体应用 333  
26.4.1 搞清楚Agile是过程还是方法论 333  
26.4.2 为CMM定位 334  
26.4.3 理解RUP定制 335  
26.5 总结:软件工程概念模型的启示 335  
26.5.1 软件工程,376一门实践的科学 335  
26.5.2 软件过程,377合适的才是最好的 336  
26.5.3 对个人的启示 336  
26.5.4 呼唤高层次人才 336  
参考文献 337

本目录推荐