当前位置:首页 > 工业技术
软件架构理论与实践
软件架构理论与实践

软件架构理论与实践PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:李必信等编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2019
  • ISBN:9787111620709
  • 页数:494 页
图书介绍:本书全面介绍了软件架构基础理论和最佳实践,内容涵盖软件架构发展的过去、现在到可能的未来,软件架构的基础理论方法和技术手段,以及软件架构的设计开发实践和质量保障实践等,涉及与软件架构相关的几乎所有必要的知识点。
《软件架构理论与实践》目录

上篇 基础理论篇 2

第1章 软件架构概述 2

1.1软件架构产生的背景 2

1.2软件架构的主要思想和特征 3

1.2.1软件架构的主要思想 3

1.2.2软件架构的特征 3

1.3软件架构的发展阶段 4

1.3.1基础研究阶段(1968—1994) 4

1.3.2概念体系和核心技术形成阶段(1991—2000) 6

1.3.3理论体系完善与发展阶段(1996年至今) 7

1.3.4普及应用阶段(1999年至今) 7

1.4软件架构研究和应用现状 7

1.4.1软件架构理论和方法研究 8

1.4.2软件架构的应用研究 11

1.5本章小结 13

思考题 13

参考文献 14

第2章 软件架构的概念 17

2.1引言 17

2.2组成派的主要定义 18

2.3决策派的主要定义 19

2.4其他定义 20

2.5参考定义框架 20

2.6本章小结 21

思考题 22

参考文献 22

第3章 软件架构模型 23

3.1引言 23

3.2软件架构的可视化建模方法 24

3.2.1基于图形可视化的建模方法 24

3.2.2基于UML的建模方法 25

3.3软件架构的形式化建模方法 31

3.3.1基于形式化规格说明语言的建模方法 32

3.3.2基于UML的形式化建模方法 36

3.4其他建模方法 45

3.4.1文本语言建模方法 45

3.4.2模型驱动的架构建模方法 47

3.5软件架构建模方法的发展趋势分析 49

3.5.1第1层:文本模型 50

3.5.2第2层:图形可视化模型 50

3.5.3第3层:UML模型 50

3.5.4第4层:形式化模型 51

3.5.5第5层:未来模型 52

3.6本章小结 52

思考题 53

参考文献 53

第4章 软件架构的风格与模式 59

4.1软件架构风格的定义 59

4.2软件架构风格的分类 60

4.3典型的软件架构风格 60

4.3.1管道-过滤器风格 60

4.3.2主程序/子程序风格 62

4.3.3面向对象风格 64

4.3.4层次化风格 65

4.3.5事件驱动风格 67

4.3.6解释器风格 69

4.3.7基于规则的系统风格 71

4.3.8仓库风格 73

4.3.9黑板系统风格 75

4.3.10 C2风格 77

4.3.11客户机/服务器风格 79

4.3.12浏览器/服务器风格 83

4.3.13平台/插件风格 85

4.3.14面向Agent风格 87

4.3.15 面向方面架构风格 91

4.3.16面向服务架构风格 93

4.3.17正交架构风格 95

4.3.18异构风格 97

4.3.19基于层次消息总线的架构风格 99

4.3.20模型-视图-控制器风格 101

4.4软件架构模式 103

4.5本章小结 103

思考题 104

参考文献 104

第5章 软件架构描述语言 107

5.1引言 107

5.2 ADL的核心设计元素 107

5.2.1组件 108

5.2.2连接件 108

5.2.3架构配置 109

5.3几种典型的ADL 109

5.3.1 Aesop 109

5.3.2 C2 SADL 110

5.3.3 UniCon 114

5.3.4 Wright 116

5.3.5 XYZ/ADL 117

5.3.6 ACME 118

5.3.7 XBA 118

5.3.8 ABC/ADL 120

5.3.9 MetaH 121

5.3.10 Rapide 121

5.3.11Darwin 122

5.3.12 xADL 2.0 122

5.4本章小结 123

思考题 123

参考文献 123

第6章 软件架构与敏捷开发 125

6.1软件开发的发展简史 125

6.2敏捷开发 127

6.2.1敏捷开发的基本理念 127

6.2.2敏捷开发实践 128

6.3敏捷开发过程中的软件架构设计 130

6.3.1需求分析 130

6.3.2初始设计 130

6.3.3迭代过程 130

6.3.4敏捷的设计思想 131

6.4两类常见的敏捷软件架构设计方法 132

6.4.1敏捷开发初始阶段设计 133

6.4.2敏捷开发迭代过程中的设计 134

6.5本章小结 136

思考题 137

参考文献 137

中篇 工程实践篇 140

第7章 架构驱动的软件开发 140

7.1架构驱动的软件开发简介 140

7.2架构需求获取 140

7.3架构设计、文档化和评估 144

7.3.1架构设计、文档化和评估是一个迭代过程 144

7.3.2什么是架构的结构 147

7.3.3从架构需求出发的评估 148

7.3.4寻找ATAM中的“权衡点”和“敏感点” 149

7.4架构的实现与维护 151

7.4.1架构的实现 151

7.4.2架构的维护 152

7.5本章小结 152

思考题 152

参考文献 153

第8章 软件架构设计和实现 154

8.1从需求分析到架构设计 154

8.1.1软件架构对需求的影响 155

8.1.2基于软件需求的软件架构设计 156

8.1.3需求与架构的协同演化 163

8.2从软件架构到详细设计 163

8.2.1详细设计对软件架构的影响 164

8.2.2从软件架构映射到详细设计 166

8.2.3软件架构视图 168

8.3软件架构设计原则 169

8.3.1架构设计的一些基本原则 169

8.3.2架构设计的关键原则 170

8.4软件架构设计面临的主要威胁及对策 171

8.4.1被忽略的重要非功能需求 171

8.4.2频繁变化的需求 172

8.4.3考虑不全面的架构设计 172

8.4.4不及时的架构验证 173

8.4.5较高的创造性架构比重 173

8.4.6架构的低可执行性 174

8.5本章小结 174

思考题 174

参考文献 174

第9章 软件架构的演化和维护 178

9.1软件架构演化和软件架构定义的关系 179

9.1.1对象演化 179

9.1.2消息演化 180

9.1.3复合片段演化 184

9.1.4约束演化 186

9.2软件架构演化方式的分类 186

9.2.1软件架构静态演化 187

9.2.2软件架构动态演化 190

9.3软件架构演化原则 197

9.4软件架构维护 201

9.4.1软件架构知识管理 201

9.4.2软件架构修改管理 202

9.4.3软件架构版本管理 202

9.5本章小结 202

思考题 203

参考文献 203

第10章 软件架构恢复 207

10.1引言 207

10.1.1软件架构的恢复过程 208

10.1.2架构信息提取 208

10.1.3架构恢复技术 209

10.2架构信息提取 212

10.2.1相关定义 212

10.2.2从源代码提取架构信息 212

10.2.3从编译构建过程提取架构信息 215

10.2.4从目录层次提取架构信息 217

10.2.5基于架构文档的架构信息提取 219

10.3基于多规则聚类的架构恢复 220

10.3.1聚类理论基础 220

10.3.2架构恢复流程 222

10.3.3具体恢复技术 223

10.4本章小结 232

思考题 233

参考文献 233

第11章 软件架构质量 237

11.1引言 237

11.2软件架构与质量属性 239

11.3软件架构质量指标 240

11.3.1内部质量指标 240

11.3.2外部质量指标 243

11.4软件架构质量保障和评估方法 245

11.4.1评估准备 246

11.4.2利益相关者 247

11.4.3参与者 248

11.4.4评估时机 249

11.4.5评估技术 250

11.4.6软件架构评估的收益与成本 253

11.5本章小结 254

思考题 254

参考文献 254

第12章 软件架构仿真 256

12.1软件仿真的概念 256

12.1.1连续型仿真 256

12.1.2离散型仿真 257

12.1.3混合型仿真 257

12.2软件架构仿真流程 258

12.3 UML软件架构仿真 259

12.3.1基于UML类图和顺序图的软件架构仿真 259

12.3.2基于UML用例图和活动图的软件架构仿真 259

12.3.3从带有注释的UML图产生OPNET仿真模型 260

12.4非UML软件架构仿真 261

12.4.1 SASIM仿真:用于系统功能分析 261

12.4.2面向对象数据库的架构仿真 263

12.5软件架构仿真实践 264

12.5.1软件架构描述文档 264

12.5.2 SSD和SD转化为事件执行图 266

12.5.3局部仿真和整体仿真 269

12.5.4仿真结果的分析 275

12.6本章小结 276

思考题 276

参考文献 277

第13章 软件架构度量和评估 279

13.1引言 279

13.1.1单版本的软件架构度量和评估 280

13.1.2多版本的软件架构度量和评估 281

13.2典型的软件架构度量和评估方法 283

13.2.1 SAEM方法 283

13.2.2 SAABNet方法 283

13.2.3 SACMM方法 285

13.2.4 SASAM方法 287

13.2.5 ALRRA方法 288

13.2.6 AHP方法 290

13.2.7 COSMIC+UML方法 291

13.2.8基于Shannon信息论的方法 292

13.3软件架构度量和评估过程 293

13.3.1质量属性选择 293

13.3.2软件架构可维护性度量及评估 294

13.3.3软件架构可靠性度量及评估 297

13.4软件架构演化度量和评估实践 302

13.4.1演化过程已知的软件架构演化评估 302

13.4.2演化过程未知的软件架构演化评估 305

13.4.3实例分析 305

13.5本章小结 313

思考题 313

参考文献 313

第14章 软件架构形式化验证 317

14.1引言 317

14.2形式化验证 317

14.2.1形式语义 318

14.2.2规约语言 318

14.2.3求精分析 319

14.2.4验证方法 320

14.2.5形式化验证方法的优缺点 320

14.3软件架构验证 322

14.3.1静态软件架构验证 322

14.3.2动态软件架构验证 323

14.3.3运行态软件架构验证 323

14.4基于SPIN的静态软件架构验证实践 324

14.4.1SPIN简介 324

14.4.2基于SPIN的验证过程 325

14.4.3架构模型 326

14.4.4验证模型 332

14.4.5验证结果 334

14.5架构演化验证案例分析——以MVC为例 335

14.5.1演化案例 335

14.5.2场景1演化评估 337

14.5.3场景2演化评估 341

14.6本章小结 344

思考题 345

参考文献 345

第15章 软件架构分析与测试 347

15.1引言 347

15.2软件架构分析方法 347

15.2.1 SAAM 348

15.2.2 SAAMCS 350

15.2.3 ESAAMI 351

15.2.4 SAAMER 352

15.2.5 ATAM 352

15.2.6 QAW 356

15.2.7 OATAM 358

15.2.8 ARID 358

15.2.9 SBAR 361

15.2.10 ALPSM 362

15.2.11 SNA 362

15.2.12 ALMA 363

15.2.13 PSAEM 364

15.2.14 ASAAM 365

15.2.15 PASA 365

15.2.16 SALUTA 367

15.2.17 HoPLAA 368

15.2.18 CBAM 370

15.2.19 CPASA 370

15.3软件架构测试 371

15.4本章小结 371

思考题 372

参考文献 372

第16章 软件架构重构 375

16.1引言 375

16.2软件重构现状 376

16.2.1软件重构概念 376

16.2.2重构点识别和定位方法 376

16.2.3重构实施技术 379

16.2.4现状分析 380

16.3基于度量的软件架构重构 381

16.3.1软件架构度量评估 382

16.3.2产生重构需求 385

16.3.3分析重构需求 385

16.3.4建议重构操作 387

16.3.5实施重构操作 389

16.4面向模式的软件架构重构 392

16.4.1模式选择 392

16.4.2重构点定位 393

16.4.3重构实施 394

16.5本章小结 397

思考题 398

参考文献 398

下篇 未来主题篇 402

第17章 软件架构的腐蚀和对策 402

17.1引言 402

17.2软件架构腐蚀的含义 403

17.3软件架构腐蚀的预防控制策略 403

17.3.1腐蚀最小化方法 403

17.3.2腐蚀预防方法 406

17.3.3腐蚀修补方法 407

17.4软件架构实践中面临的主要威胁及其对策 408

17.4.1主要威胁 408

17.4.2有效对策 409

17.5本章小结 409

思考题 409

参考文献 409

第18章 软件架构解耦 412

18.1引言 412

18.2分层架构及其解耦 413

18.2.1模式描述 413

18.2.2架构解耦 413

18.2.3实例分析 414

18.3微内核架构及其解耦 414

18.3.1模式描述与解耦 415

18.3.2实例分析 415

18.4微服务架构及其解耦 416

18.4.1模式描述与解耦 416

18.4.2设计原则 417

18.4.3实例分析 417

18.5黑板架构风格及其解耦 418

18.6干净架构及其解耦 419

18.6.1模式描述 419

18.6.2架构解耦 421

18.7管道-过滤器风格及其解耦 421

18.7.1模式描述与解耦 421

18.7.2实例分析 422

18.8基于元模型的架构及其解耦 422

18.9REST架构风格及其解耦 422

18.10本章小结 424

思考题 424

参考文献 424

第19章 软件架构技术债 426

19.1引言 426

19.2技术债简介 426

19.2.1技术债的定义 426

19.2.2技术债的分类 427

19.2.3技术债的产生 428

19.3设计债 429

19.3.1设计债的定义 429

19.3.2设计债的识别方法 429

19.3.3架构技术债 430

19.4代码债 432

19.5测试债 432

19.6文档债 433

19.7技术债的处理 433

19.7.1发现技术债 433

19.7.2管理技术债 433

19.7.3偿还技术债 435

19.8本章小结 435

思考题 435

参考文献 436

第20章 软件架构坏味道 438

20.1引言 438

20.2典型的代码坏味道 439

20.2.1应用级坏味道 439

20.2.2类级坏味道 440

20.2.3方法级坏味道 441

20.3典型的设计坏味道 442

20.3.1架构坏味道 442

20.3.2架构坏味道的检测 447

20.4本章小结 450

思考题 451

参考文献 451

第21章 软件架构脆弱性 453

21.1引言 453

21.2什么是软件脆弱性 453

21.2.1软件脆弱性定义 453

21.2.2软件脆弱性的特点和产生的原因 454

21.2.3软件脆弱性的生命周期 455

21.3典型的软件架构脆弱性 455

21.3.1分层架构 456

21.3.2 C/S架构 457

21.3.3 B/S架构 457

21.3.4事件驱动架构 458

21.3.5 MVC架构 460

21.3.6微内核架构 461

21.3.7管道-过滤器架构 461

21.3.8黑板模式架构 462

21.3.9微服务架构 462

21.3.10基于空间的架构 463

21.3.11 PAC架构 464

21.4本章小结 465

思考题 466

参考文献 466

第22章 软件架构模式识别 468

22.1引言 468

22.2模式识别方法现状 468

22.2.1设计模式识别现状 468

22.2.2架构模式识别现状 469

22.3两种典型的架构模式识别方法 470

22.3.1 IDAPO方法 470

22.3.2基于DSL的架构模式识别方法 472

22.4基于本体的架构模式识别方法 473

22.4.1可行性分析 473

22.4.2识别过程 474

22.4.3典型步骤 475

22.5本章小结 481

思考题 481

参考文献 481

第23章 结束语 484

23.1软件架构是早期阶段质量保障的基础 484

23.2软件架构的作用 485

23.2.1好的架构设计能够满足系统的多种品质 485

23.2.2架构设计能够使利益相关者达成一致的目标 485

23.2.3架构设计能够支持计划编制过程 485

23.2.4架构设计能够有效地管理复杂性 486

23.2.5架构设计为重用奠定了基础 486

23.2.6架构设计能够降低维护费用 487

23.2.7架构设计能够支持冲突分析 487

23.2.8架构设计的其他作用 487

23.3软件架构发展趋势 487

思考题 489

参考文献 489

相关图书
作者其它书籍
返回顶部