图书介绍

持续交付 发布可靠软件的系统方法2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

持续交付 发布可靠软件的系统方法
  • (英)亨布尔,(英)法利著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:7115264596
  • 出版时间:2011
  • 标注页数:362页
  • 文件大小:80MB
  • 文件页数:386页
  • 主题词:

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反模式:手工部署软件4

1.2.2反模式:开发完成之后才向类生产环境部署5

1.2.3反模式:生产环境的手工配置管理7

1.2.4我们能做得更好吗8

1.3如何实现目标9

1.3.1每次修改都应该触发反馈流程10

1.3.2必须尽快接收反馈11

1.3.3交付团队必须接收反馈并作出反应12

1.3.4这个流程可以推广吗12

1.4收效12

1.4.1授权团队13

1.4.2减少错误13

1.4.3缓解压力15

1.4.4部署的灵活性16

1.4.5多加练习,使其完美17

1.5候选发布版本17

1.6软件交付的原则19

1.6.1为软件的发布创建一个可重复且可靠的过程19

1.6.2将几乎所有事情自动化19

1.6.3把所有的东西都纳入版本控制20

1.6.4提前并频繁地做让你感到痛苦的事20

1.6.5内建质量21

1.6.6“DONE”意味着“已发布”21

1.6.7交付过程是每个成员的责任22

1.6.8持续改进22

1.7小结23

第2章 配置管理24

2.1引言24

2.2使用版本控制25

2.2.1对所有内容进行版本控制26

2.2.2频繁提交代码到主干28

2.2.3使用意义明显的提交注释29

2.3依赖管理30

2.3.1外部库文件管理30

2.3.2组件管理30

2.4软件配置管理31

2.4.1配置与灵活性31

2.4.2配置的分类33

2.4.3应用程序的配置管理33

2.4.4跨应用的配置管理36

2.4.5管理配置信息的原则37

2.5环境管理38

2.5.1环境管理的工具41

2.5.2变更过程管理41

2.6小结42

第3章 持续集成43

3.1引言43

3.2实现持续集成44

3.2.1准备工作44

3.2.2一个基本的持续集成系统45

3.3持续集成的前提条件46

3.3.1频繁提交46

3.3.2创建全面的自动化测试套件47

3.3.3保持较短的构建和测试过程47

3.3.4管理开发工作区49

3.4使用持续集成软件49

3.4.1基本操作49

3.4.2铃声和口哨50

3.5必不可少的实践52

3.5.1构建失败之后不要提交新代码52

3.5.2提交前在本地运行所有的提交测试,或者让持续集成服务器完成此事53

3.5.3等提交测试通过后再继续工作54

3.5.4回家之前,构建必须处于成功状态54

3.5.5时刻准备着回滚到前一个版本55

3.5.6在回滚之前要规定一个修复时间56

3.5.7不要将失败的测试注释掉56

3.5.8为自己导致的问题负责56

3.5.9测试驱动的开发57

3.6推荐的实践57

3.6.1极限编程开发实践57

3.6.2若违背架构原则,就让构建失败58

3.6.3若测试运行变慢,就让构建失败58

3.6.4若有编译警告或代码风格问题,就让浏试失败59

3.7分布式团队60

3.7.1对流程的影响60

3.7.2集中式持续集成61

3.7.3技术问题61

3.7.4替代方法62

3.8分布式版本控制系统63

3.9小结66

第4章 测试策略的实现67

4.1引言67

4.2 测试的分类68

4.2.1业务导向且支持开发过程的测试69

4.2.2技术导向且支持开发过程的测试72

4.2.3业务导向且评价项目的测试72

4.2.4技术导向且评价项目的测试73

4.2.5 测试替身74

4.3现实中的情况与应对策略75

4.3.1新项目75

4.3.2项目进行中76

4.3.3遗留系统77

4.3.4集成测试78

4.4流程80

4.5小结82

第二部分部署流水线84

第5章 部署流水线解析84

5.1引言84

5.2什么是部署流水线85

5.3部署流水线的相关实践91

5.3.1只生成一次二进制包91

5.3.2对不同环境采用同一部署方式93

5.3.3对部署进行冒烟测试94

5.3.4向生产环境的副本中部署94

5.3.5每次变更都要立即在流水线中传递95

5.3.6只要有环节失败,就停止整个流水线96

5.4提交阶段96

5.5自动化验收测试之门99

5.6后续的测试阶段102

5.6.1手工测试103

5.6.2非功能测试103

5.7发布准备104

5.7.1自动部署与发布104

5.7.2变更的撤销106

5.7.3在成功的基础上构建107

5.8实现一个部署流水线107

5.8.1对价值流进行建模并创建简单的可工作框架107

5.8.2构建和部署过程的自动化108

5.8.3自动化单元测试和代码分析109

5.8.4自动化验收测试109

5.8.5部署流水线的演进110

5.9度量111

5.10小结113

第6章 构建与部署的脚本化115

6.1引言115

6.2构建工具概览116

6.2.1 Make118

6.2.2 Ant118

6.2.3 NAnt与MSBuild119

6.2.4 Maven120

6.2.5 Rake121

6.2.6 Buildr121

6.2.7 Psakc121

6.3构建部署脚本化的原则与实践122

6.3.1为部署流水线的每个阶段创建脚本122

6.3.2使用恰当的技术部署应用程序122

6.3.3使用同样的脚本向所有环境部署123

6.3.4使用操作系统自带的包管理工具124

6.3.5确保部署流程是幂等的(Idempotent)125

6.3.6部署系统的增量式演进126

6.4面向JVM的应用程序的项目结构126

6.5部署脚本化129

6.5.1多层的部署和测试130

6.5.2测试环境配置131

6.6小贴士132

6.6.1总是使用相对路径132

6.6.2消除手工步骤132

6.6.3从二进制包到版本控制库的内建可追溯性133

6.6.4不要把二进制包作为构建的一部分放到版本控制库中133

6.6.5“test”不应该让构建失败134

6.6.6用集成冒烟测试来限制应用程序134

6.6.7NET小贴士135

6.7小结135

第7章 提交阶段137

7.1引言137

7.2提交阶段的原则和实践138

7.2.1提供快速有用的反馈138

7.2.2何时令提交阶段失败139

7.2.3精心对待提交阶段140

7.2.4让开发人员也拥有所有权140

7.2.5在超大项目团队中指定一个构建负责人141

7.3提交阶段的结果141

7.4提交测试套件的原则与实践144

7.4.1避免用户界面145

7.4.2使用依赖注入145

7.4.3避免使用数据库145

7.4.4在单元测试中避免异步146

7.4.5使用测试替身146

7.4.6最少化测试中的状态149

7.4.7时间的伪装150

7.4.8蛮力150

7.5小结151

第8章 自动化验收测试152

8.1引言152

8.2为什么验收测试是至关重要的153

8.2.1如何创建可维护的验收测试套件155

8.2.2 GUI上的测试156

8.3创建验收测试157

8.3.1分析人员和测试人员的角色157

8.3.2迭代开发项目中的分析工作157

8.3.3将验收条件变成可执行的规格说明书158

8.4应用程序驱动层161

8.4.1如何表述验收条件163

8.4.2窗口驱动器模式:让测试与GUI解耦164

8.5实现验收测试166

8.5.1验收测试中的状态166

8.5.2过程边界、封装和测试168

8.5.3管理异步与超时问题169

8.5.4使用测试替身对象171

8.6验收测试阶段174

8.6.1确保验收测试一直处于通过状态175

8.6.2部署测试177

8.7验收测试的性能178

8.7.1重构通用任务178

8.7.2共享昂贵资源179

8.7.3并行测试180

8.7.4使用计算网格180

8.8小结181

第9章 非功能需求的测试183

9.1引言183

9.2非功能需求的管理184

9.3如何为容量编程186

9.4容量度量188

9.5容量测试环境191

9.6自动化容量测试194

9.6.1通过UI的容量测试195

9.6.2基于服务或公共API来录制交互操作196

9.6.3使用录制的交互模板197

9.6.4使用容量测试桩开发测试198

9.7将容量测试加入到部署流水线中199

9.8容量测试系统的附加价值201

9.9小结202

第10章 应用程序的部署与发布203

10.1引言203

10.2创建发布策略204

10.2.1发布计划205

10.2.2发布产品205

10.3应用程序的部署和晋级206

10.3.1首次部署206

10.3.2对发布过程进行建模并让构建晋级207

10.3.3配置的晋级209

10.3.4联合环境209

10.3.5部署到试运行环境210

10.4部署回滚和零停机发布211

10.4.1通过重新部署原有的正常版本来进行回滚211

10.4.2零停机发布212

10.4.3蓝绿部署212

10.4.4金丝雀发布213

10.5紧急修复216

10.6持续部署216

10.7小贴士和窍门219

10.7.1真正执行部署操作的人应该参与部署过程的创建219

10.7.2记录部署活动220

10.7.3不要删除旧文件,而是移动到别的位置220

10.7.4部署是整个团队的责任220

10.7.5服务器应用程序不应该有GUI220

10.7.6为新部署留预热期221

10.7.7快速失败221

10.7.8不要直接对生产环境进行修改222

10.8小结222

第三部分 交付生态圈224

第11章 基础设施和环境管理224

11.1 引言224

11.2理解运维团队的需要225

11.2.1文档与审计226

11.2.2异常事件的告警227

11.2.3保障IT服务持续性的计划227

11.2.4使用运维团队熟悉的技术228

11.3基础设施的建模和管理229

11.3.1基础设施的访问控制230

11.3.2对基础设施进行修改231

11.4服务器的准备及其配置的管理232

11.4.1服务器的准备233

11.4.2服务器的持续管理234

11.5中间件的配置管理239

11.5.1管理配置项239

11.5.2产品研究241

11.5.3考查中间件是如何处理状态的242

11.5.4查找用于配置的API242

11.5.5使用更好的技术243

11.6基础设施服务的管理243

11.7虚拟化245

11.7.1虚拟环境的管理247

11.7.2虚拟环境和部署流水线249

11.7.3用虚拟环境做高度的并行测试251

11.8云计算252

11.8.1云中基础设施253

11.8.2云中平台254

11.8.3没有普适存在255

11.8.4对云计算的批评256

11.9基础设施和应用程序的监控256

11.9.1收集数据257

11.9.2记录日志259

11.9.3建立信息展示板259

11.9.4行为驱动的监控261

11.10小结261

第12章 数据管理263

12.1引言263

12.2数据库脚本化264

12.3增量式修改265

12.3.1对数据库进行版本控制265

12.3.2联合环境中的变更管理267

12.4数据库回滚和无停机发布268

12.4.1保留数据的回滚268

12.4.2将应用程序部署与数据库迁移解耦269

12.5测试数据的管理270

12.5.1为单元测试进行数据库模拟271

12.5.2管理测试与数据之间的耦合272

12.5.3测试独立性272

12.5.4建立和销毁273

12.5.5连贯的测试场景273

12.6数据管理和部署流水线274

12.6.1提交阶段的测试数据274

12.6.2验收测试中的数据275

12.6.3容量测试的数据276

12.6.4其他测试阶段的数据277

12.7小结278

第13章 组件和依赖管理280

13.1 引言280

13.2保持应用程序可发布281

13.2.1将新功能隐蔽起来,直到它完成为止282

13.2.2所有修改都是增量式的283

13.2.3通过抽象来模拟分支284

13.3依赖285

13.3.1依赖地狱286

13.3.2库管理287

13.4组件289

13.4.1如何将代码库分成多个组件289

13.4.2将组件流水线化292

13.4.3集成流水线293

13.5管理依赖关系图295

13.5.1构建依赖图295

13.5.2为依赖图建立流水线297

13.5.3什么时候要触发构建299

13.5.4谨慎乐观主义300

13.5.5循环依赖302

13.6管理二进制包303

13.6.1制品库是如何运作的303

13.6.2部署流水线如何与制品库相结合304

13.7用Maven管理依赖304

13.8小结308

第14章 版本控制进阶309

14.1引言309

14.2版本控制的历史310

14.2.1 CVS310

14.2.2 SVN311

14.2.3商业版本控制系统312

14.2.4放弃悲观锁313

14.3分支与合并314

14.3.1合并316

14.3.2分支、流和持续集成317

14.4 DVCS319

14.4.1什么是D VCS319

14.4.2 DVCS简史321

14.4.3企业环境中的DVCS321

14.4.4使用DVCS322

14.5基于流的版本控制系统324

14.5.1什么是基于流的版本控制系统324

14.5.2使用流的开发模型326

14.5.3静态视图和动态视图327

14.5.4使用基于流的版本控制系统做持续集成328

14.6主干开发329

14.7按发布创建分支332

14.8按功能特性分支333

14.9按团队分支335

14.10小结338

第15章 持续交付管理340

15.1引言340

15.2配置与发布管理成熟度模型341

15.3项目生命周期343

15.3.1识别阶段344

15.3.2启动阶段345

15.3.3初始阶段346

15.3.4开发与发布347

15.3.5运营阶段349

15.4风险管理流程350

15.4.1风险管理基础篇350

15.4.2风险管理时间351

15.4.3如何做风险管理的练习352

15.5常见的交付问题、症状和原因353

15.5.1不频繁的或充满缺陷的部署353

15.5.2较差的应用程序质量354

15.5.3缺乏管理的持续集成工作流程355

15.5.4较差的配置管理355

15.6符合度与审计356

15.6.1文档自动化356

15.6.2加强可跟踪性357

15.6.3在筒仓中工作358

15.6.4变更管理358

15.7小结360

参考书目361

热门推荐