图书介绍

软件架构理论与实践PDF|Epub|txt|kindle电子书版本网盘下载

软件架构理论与实践
  • 李必信等编著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111620709
  • 出版时间:2019
  • 标注页数:494页
  • 文件大小:78MB
  • 文件页数:518页
  • 主题词:软件设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

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

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

上篇 基础理论篇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几种典型的ADL109

5.3.1 Aesop109

5.3.2 C2 SADL110

5.3.3 UniCon114

5.3.4 Wright116

5.3.5 XYZ/ADL117

5.3.6 ACME118

5.3.7 XBA118

5.3.8 ABC/ADL120

5.3.9 MetaH121

5.3.10 Rapide121

5.3.11Darwin122

5.3.12 xADL 2.0122

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 SAAM348

15.2.2 SAAMCS350

15.2.3 ESAAMI351

15.2.4 SAAMER352

15.2.5 ATAM352

15.2.6 QAW356

15.2.7 OATAM358

15.2.8 ARID358

15.2.9 SBAR361

15.2.10 ALPSM362

15.2.11 SNA362

15.2.12 ALMA363

15.2.13 PSAEM364

15.2.14 ASAAM365

15.2.15 PASA365

15.2.16 SALUTA367

15.2.17 HoPLAA368

15.2.18 CBAM370

15.2.19 CPASA370

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

热门推荐