图书介绍

高效团队开发工具与方法【2025|PDF下载-Epub版本|mobi电子书|kindle百度云盘下载】

高效团队开发工具与方法
  • (日)池田尚史,(日)藤仓和明,(日)井上史彰著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115295941
  • 出版时间:2015
  • 标注页数:302页
  • 文件大小:45MB
  • 文件页数:324页
  • 主题词:程序设计

PDF下载


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

下载说明

高效团队开发工具与方法PDF格式电子书版下载

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

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

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

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

图书目录

第1章 什么是团队开发1

1.1 一个人也能进行开发2

1.2 团队开发面临的问题3

1.3 如何解决这些问题4

1.4 本书的构成5

1.4.1 第2章:案例分析5

1.4.2 第3~5章:基础实践5

1.4.3 第6~7章:持续交付和回归测试6

1.5 阅读本书前的注意事项7

1.5.1 最好的方法是具体问题具体分析7

1.5.2 没有最好的工具7

第2章 团队开发中发生的问题9

2.1 案例分析的前提10

2.1.1 项目的前提条件10

2.2 案例分析(第1天)11

2.2.1 问题1:重要的邮件太多,无法确定处理的优先顺序11

2.2.2 问题2:没有能用于验证的环境11

2.2.3 问题3:用别名目录管理分支12

2.2.4 问题4:重新制作数据库比较困难14

2.3 案例分析(第1天)中的问题点16

2.3.1 问题1:重要的邮件太多,无法确定处理的优先顺序16

邮件的数量太多,导致重要的邮件被埋没16

无法进行状态管理17

直观性、检索性较弱17

用邮件来管理项目的课题17

2.3.2 问题2:没有能用于验证的环境18

2.3.3 问题3:用别名目录管理分支18

2.3.4 问题4:重新制作数据库比较困难19

2.4 案例分析(第2天)22

2.4.1 问题5:不运行系统就无法察觉问题22

2.4.2 问题6:覆盖了其他组员修正的代码22

2.4.3 问题7:无法自信地进行代码重构24

2.4.4 问题8:不知道bug的修正日期,也不能追踪退化25

2.4.5 问题9:没有灵活使用分支和标签26

2.4.6 问题10:在测试环境、正式环境上无法运行28

2.4.7 问题11:发布太复杂,以至于需要发布手册28

2.5 案例分析(第2天)中的问题点30

2.5.1 问题5:不运行系统就无法察觉问题30

2.5.2 问题6:覆盖了其他组员修正的代码31

2.5.3 问题7:无法自信地进行代码重构31

2.5.4 问题8:不知道bug的修正日期,也不能追踪退化33

2.5.5 问题9:没有灵活使用分支和标签35

2.5.6 问题10:在测试环境、正式环境上无法运行35

2.5.7 问题11:发布太复杂,以至于需要发布手册36

2.6 什么是理想的项目37

2.6.1 使用缺陷管理系统对课题等进行统筹管理38

2.6.2 尽量使用版本管理系统38

2.6.3 准备可以反复验证的CI系统38

2.6.4 将环境的影响控制在最小限度,并随时可以发布39

2.6.5 保留所有记录以便日后追踪39

2.7 本章总结40

第3章 版本管理41

3.1 版本管理系统42

3.1.1 什么是版本管理系统42

3.1.2 为什么使用版本管理系统能带来便利42

能够保留修改内容这一最基本的记录43

能够方便地查看版本之间的差异43

能够防止错误地覆盖他人修改的代码43

专栏锁模式和合并模式44

能够还原到任意时间点的状态48

专栏基于文件和基于变更集49

能够生成多个派生(分支和标签),保留当时项目状态的断面49

3.2 版本管理系统的发展变迁51

3.2.1 没有版本管理系统的时代(20世纪70年代以前)52

3.2.2 RCS的时代(20世纪80年代)52

3.2.3 CVS的诞生(20世纪90年代)52

3.2.4 VSS、Perforce等商用工具的诞生(20世纪90年代)53

3.2.5 Subversion的诞生(2000年以后)54

3.2.6 分布式版本管理系统的诞生(2005年以后)54

3.2.7 番外篇:GitHub的诞生55

3.2.8 版本管理系统的导入情况57

3.3 分布式版本管理系统59

3.3.1 使用分布式版本管理系统的5大原因59

能将代码库完整地复制到本地59

运行速度快59

临时作业的提交易于管理59

分支、合并简单方便59

可以不受地点的限制进行协作开发60

3.3.2 分布式版本管理系统的缺点60

系统中没有真正意义上的最新版本60

没有真正意义上的版本号60

工作流程的配置过于灵活,容易产生混乱61

思维方式的习惯需要一定的时间61

3.4 如何使用版本管理系统62

3.4.1 前提62

3.4.2 版本管理系统管理的对象62

代码63

需求资料、设计资料等文档64

数据库模式、数据64

配置文件64

库的依赖关系定义65

3.5 使用Git顺利地推进并行开发66

3.5.1 分支的用法66

什么是分支66

什么是发布分支(release branch)66

克隆和建立分支67

提交和提交记录67

分支的切换68

修正bug后的提交69

合并到master70

向master进行Push71

分支使用方法总结72

3.5.2 标签的使用方法72

什么是标签72

新建标签72

标签的确认73

标签的取得73

专栏 避免使用相同的标签名和分支名74

标签使用方法总结75

专栏 什么是Detached HEAD76

3.6 Git的开发流程77

3.6.1 Git工作流的模式77

中央集权型工作流77

GitHub型工作流78

3.6.2 分支策略的模式79

git-flow79

github-flow82

笔者的例子(折衷方案)83

3.6.3 最合适的流程和分支策略因项目而异84

3.7 数据库模式和数据的管理85

3.7.1 需要对数据库模式进行管理的原因85

由数据库管理员负责对修改进行管理的情况85

修改共享数据库的模式的情况85

3.7.2 应该如何管理数据库模式86

版本管理的必要条件86

什么是数据库迁移86

数据库迁移的功能87

3.7.3 数据库迁移工具88

Migration(Ruby on Rails)88

south(Django)88

Migrations Plugin(CakePHP)89

Evolution(Play Framework)89

3.7.4 具体用法(Evolution))89

规定89

SQL文件的执行90

开发者之间数据库模式的同步91

一致性问题的管理93

3.7.5 数据库迁移中的注意点94

3.8 配置文件的管理96

3.9 依赖关系的管理97

3.9.1 依赖关系管理系统97

JVM语言97

脚本语言98

管理依赖关系的优点98

3.10 本章总结100

第4章 缺陷管理101

4.1 缺陷管理系统102

4.1.1 项目进展不顺利的原因102

4.1.2 用纸、邮件、Excel进行任务管理时的问题103

4.1.3 导入缺陷管理系统的优点104

具有任务管理所需的基本功能104

直观性、检索性较强104

能够对信息进行统一管理及共享104

能够生成各类报表105

能够和其他系统进行关联,具有可扩展性105

4.1.4 什么是缺陷驱动开发106

缺陷驱动开发的具体步骤106

专栏彻底贯彻缺陷驱动开发的情况107

4.2 主要的缺陷管理系统108

4.2.1 OSS产品108

Trac108

Redmine109

Bugzilla110

Mantis111

4.2.2 商用产品112

JIRA112

YouTRACK113

Pivotal Tracker113

Backlog114

GitHub115

4.2.3 选择工具(缺陷管理系统)的要点116

专栏 缺陷管理系统的应用事例117

4.3 缺陷管理系统与版本管理系统的关联118

4.3.1 通过关联实现的功能118

从提交链接到问题票118

从问题票链接到提交118

提交的同时修改问题票的状态119

4.3.2 关联的配置方法119

4.3.3 GitHub119

GitHub的issue119

Service Hooks120

GitHub和Pivotal Tracker的关联121

GitHub和JIRA的关联123

4.3.4 Trac/Redmine124

4.3.5 Backlog124

Backlog和Git的关联125

Backlog和GitHub的关联126

4.3.6 Git自带的Hook的使用方法127

4.4 新功能开发、修改bug时的工作流程128

4.4.1 工作流程128

1 建立问题票128

2 指定负责人129

3 开发129

4 提交129

5 Push到代码库129

4.5 回答“那个bug是什么时候修正的”的问题131

4.5.1 Pivotal Tracker的例子131

用记忆中残留的关键字进行检索131

检索131

通过问题票查找代码修改132

4.5.2 Backlog的例子133

检索134

4.6 回答“为什么要这样修改”的问题136

4.7 本章总结137

专栏 缺陷管理、bug管理以及需求管理137

第5章 CI(持续集成)141

5.1 CI(持续集成)142

5.1.1 什么是CI(持续集成)142

集成(integration)142

持续地进行集成就是CI142

5.1.2 使开发敏捷化143

瀑布式开发的开发阶段143

敏捷开发的开发阶段144

5.1.3 为什么要进行CI这样的实践147

成本效益147

市场变化的速度148

兼顾开发速度和质量148

5.1.4 CI的必要条件149

版本管理系统149

build工具149

测试代码151

CI工具151

5.1.5 编写测试代码所需的框架151

测试驱动开发(TDD)的框架151

行为驱动开发(BDD)的框架152

5.1.6 主要的CI工具154

Jenkins154

TravisCI155

5.2 build工具的使用方法157

5.2.1 新建工程的情况157

建立工程雏形158

依赖关系的定义160

执行测试161

导入Eclipse162

5.2.2 为已有工程添加自动build功能162

5.2.3 build工具的总结163

5.3 测试代码的写法164

5.3.1 作为CI的对象的测试的种类164

5.3.2 何时编写测试165

新建工程的情况165

已有工程中没有测试的情况165

修改bug或添加新功能的情况166

5.3.3 棘手的测试该如何写166

和外部系统有交互的测试166

使用mocking框架进行测试167

使用内存数据库进行测试168

数据库变更管理和配置文件管理的测试169

UI相关的测试169

棘手的测试要权衡工数170

5.4 执行基于Jenkins的CI171

5.4.1 Jenkins的安装171

使用本地安装包进行安装172

5.4.2 Jenkins能干些什么172

5.4.3 新建任务173

5.4.4 下载代码173

5.4.5 自动执行build和测试175

定期执行175

轮询版本管理系统175

专栏 从版本管理系统进行Push176

build的记述177

5.4.6 统计结果并生成报表178

专栏 以JUnitXML的形式输出报表比较高效179

5.4.7 统计覆盖率179

覆盖率统计工具180

Maven Cobertura插件的安装180

专栏 Java程序库的查找方法182

Jenkins插件的配置183

5.4.8 静态分析184

5.4.9 配置通知185

5.5 CI的运用187

5.5.1 build失败了该怎么办187

Subversion等中央集权型版本管理系统的情况187

Git等分布式管理系统的情况187

专栏 造成build失败后的惩罚游戏188

测试后合并189

5.5.2 确保可追溯性193

关联build和提交193

关联缺陷管理194

5.6 本章总结——借助CI能够实现的事198

第6章 部署的自动化(持续交付)199

6.1 应该如何部署200

6.1.1 部署自动化带来的好处200

细粒度、频繁地发布可以使风险可控200

能尽快地获得用户的反馈200

团队的规模可控201

6.2 部署的自动化202

6.2.1 部署自动化方面的共识202

6.2.2 部署流水线203

通过自动化加快部署速度204

任何人都能够实施部署是很重要的204

6.2.3 服务提供工具链(provisioning tool chain)204

6.3 引导(Bootstrapping)206

6.3.1 Kickstart206

Kickstart的使用方法206

使用时的注意事项206

Kickstart的配置示例207

6.3.2 Vagrant208

为每一位开发人员准备实体电脑比较困难208

使用虚拟机时的注意事项209

什么是Vagrant209

Vagrant的安装及运行方法209

6.4 配置(Configuration)212

6.4.1 不使用自动化时的问题212

6.4.2 Chef213

Chef的构成213

目录构成和文件配置215

node.json215

setup.json216

solo.rb216

default.rb217

virtualhost.conf.erb218

Chef的运行方法和运行结果218

使用Chef的优点219

使用Chef时的注意事项220

使用Chef的时间点220

6.4.3 serverspec221

什么是serverspec221

serverspec的安装221

测试文件的记述方式222

httpd_speec.rb222

git_spec.rb223

serverspec的执行方法及执行结果223

serverspec的优点224

6.4.4 最佳实践(其1)224

Vagrantfile226

default.rb227

6.4.5 最佳实践(其2)227

6.4.6 实现物理服务器投入运营为止的所有步骤的自动化229

6.5 编配(Orchestration)230

6.5.1 发布作业的反面教材230

6.5.2 Capistrano231

Capistrano的系统构成231

Capistrano的安装232

deploy.rb232

Capistrano的执行方法233

6.5.3 Fabric233

Fabric(串行执行)的情况234

Capistrano(并行执行)的情况234

理解本地服务器和远程服务器操作上的区别234

Fabric的运行方法236

6.5.4 Jenkins237

主节点(master node)和从节点(slave node)的协作237

从节点的添加238

任务的添加240

任务的执行242

6.5.5 最佳实践243

结合Jenkins和Fabric243

6.5.6 考虑安全问题244

专栏 手动部署的例子245

6.6 考虑运用相关的问题247

6.6.1 不中断服务的部署方法247

6.6.2 蓝绿部署(blue-green deployment)247

6.6.3 云(cloud)时代的蓝绿部署250

6.6.4 回滚(rollback)相关问题的考察251

随时准备好退路251

数据库模式的版本管理251

回滚的验证252

只更新代码的发布时的回滚252

数据库模式更新时的回滚253

6.7 本章总结255

专栏 Paas的使用方式255

第7章 回归测试259

7.1 回归测试260

7.1.1 什么是回归测试260

7.1.2 测试分类的整理261

支持团队的技术层面的测试(第1象限)262

支持团队的业务层面的测试(第2象限)262

评价产品的业务层面的测试(第3象限)262

使用技术层面测试的产品评价(第4象限)263

7.1.3 回归测试的必要性263

退化(degrade)的发生263

应该实现自动测试的原因263

7.1.4 回归测试自动化的目标265

7.2 Selenium266

7.2.1 什么是Selenium266

7.2.2 Selenium的优点266

自动化测试用例制作简单266

支持多种浏览器及OS266

7.2.3 Selenium的组件267

Selenium IDE267

Selenium Remote Control(Selenium RC)268

Selenium WebDriver269

7.2.4 测试用例的制作和执行271

Selemium IDE的安装和运行271

Selenium的测试用例271

什么是好的测试用例274

用Selenium Server来运行测试274

7.2.5 Selenium的实际应用276

测试页面是否有改动276

使Selenium测试稳定运行278

7.3 Jenkins和Selenium的协作282

7.3.1 关联Jenkins和Selenium的步骤282

7.4 Selenium测试的高速化287

7.4.1 利用Jenkins的分布式构建实现测试的并行执行288

Jenkins的分布式构建的构成288

分布式构建的配置289

7.4.2 Selenium测试并行化中的难点291

7.5 多个应用程序版本的测试295

7.5.1 应用的部署296

7.5.2 从版本管理系统下载测试用例296

7.5.3 用Selenium测试296

7.6 本章总结298

热门推荐