图书介绍

敏捷软件开发 原则、模式与实践 C#版PDF|Epub|txt|kindle电子书版本下载

敏捷软件开发 原则、模式与实践 C#版
  • (美)马丁著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115239976
  • 出版时间:2010
  • 标注页数:540页
  • 文件大小:115MB
  • 文件页数:563页
  • 主题词:软件开发;C语言-程序设计

PDF下载


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

下载说明

敏捷软件开发 原则、模式与实践 C#版PDF格式电子书版下载

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

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

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

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

图书目录

第一部分 敏捷开发3

第1章 敏捷实践3

1.1 敏捷联盟4

1.1.1 人和交互重于过程和工具4

1.1.2 可以工作的软件重于面面俱到的文档5

1.1.3 客户合作重于合同谈判5

1.1.4 随时应对变化重于遵循计划6

1.2 原则6

1.3 结论8

1.4 参考文献8

第2章 极限编程概述9

2.1 极限编程实践9

2.1.1 完整团队9

2.1.2 用户故事10

2.1.3 短交付周期10

2.1.4 验收测试10

2.1.5 结对编程11

2.1.6 测试驱动开发11

2.1.7 集体所有12

2.1.8 持续集成12

2.1.9 可持续的开发速度12

2.1.10 开放的工作空间13

2.1.11 计划游戏13

2.1.12 简单设计13

2.1.13 重构14

2.1.14 隐喻14

2.2 结论15

2.3 参考文献15

第3章 计划16

3.1 初始探索17

3.2 发布计划17

3.3 迭代计划18

3.4 定义“完成”18

3.5 任务计划18

3.6 迭代19

3.7 跟踪19

3.8 结论20

3.9 参考文献21

第4章 测试22

4.1 测试驱动开发22

4.1.1 优先设计测试的例子23

4.1.2 测试促使模块之间隔离24

4.1.3 意外获得的解耦合25

4.2 验收测试26

4.3 意外获得的构架27

4.4 结论27

4.5 参考文献28

第5章 重构29

5.1 素数产生程序:一个简单的重构示例30

5.1.1 单元测试31

5.1.2 重构32

5.1.3 最后审视35

5.2 结论38

5.3 参考文献39

第6章 一次编程实践40

6.1 保龄球比赛40

6.2 结论75

第二部分 敏捷设计81

第7章 什么是敏捷设计81

7.1 设计臭味81

7.1.1 设计臭味——腐化软件的气味82

7.1.2 僵化性82

7.1.3 脆弱性82

7.1.4 顽固性82

7.1.5 粘滞性82

7.1.6 不必要的复杂性83

7.1.7 不必要的重复83

7.1.8 晦涩性83

7.2 软件为何会腐化84

7.3 Copy程序84

7.3.1 熟悉的场景84

7.3.2 Copy程序的敏捷设计87

7.4 结论88

7.5 参考文献88

第8章 SRP:单一职责原则89

8.1 定义职责90

8.2 分离耦合的职责91

8.3 持久化92

8.4 结论92

8.5 参考文献92

第9章 OCP:开放-封闭原则93

9.1 OCP概述94

9.2 Shape应用程序95

9.2.1 违反OCP95

9.2.2 遵循OCP97

9.2.3 预测变化和“贴切的”结构98

9.2.4 放置吊钩99

9.2.5 使用抽象获得显式封闭99

9.2.6 使用“数据驱动”的方法获取封闭性100

9.3 结论101

9.4 参考文献101

第10章 LSP:Liskov替换原则102

10.1 违反LSP的情形103

10.1.1 简单例子103

10.1.2 更微妙的违反情形104

10.1.3 实际的例子108

10.2 用提取公共部分的方法代替继承111

10.3 启发式规则和习惯用法113

10.4 结论114

10.5 参考文献114

第11章 DIP:依赖倒置原则115

11.1 层次化116

11.1.1 倒置的接口所有权117

11.1.2 依赖于抽象117

11.2 简单的DIP示例117

11.3 熔炉示例119

11.4 结论121

11.5 参考文献121

第12章 ISP:接口隔离原则122

12.1 接口污染122

12.2 分离客户就是分离接口123

12.3 类接口与对象接口124

12.3.1 使用委托分离接口124

12.3.2 使用多重继承分离接口125

12.4 ATM用户界面的例子126

12.5 结论131

12.6 参考文献131

第13章 写给C#程序员的UML概述132

13.1 类图134

13.2 对象图135

13.3 顺序图136

13.4 协作图136

13.5 状态图137

13.6 结论137

13.7 参考文献137

第14章 使用UML138

14.1 为什么建模138

14.1.1 为什么构建软件模型139

14.1.2 编码前应该构建面面俱到的设计吗139

14.2 有效使用UML139

14.2.1 与他人交流139

14.2.2 脉络图141

14.2.3 项目结束文档142

14.2.4 要保留的和要丢弃的142

14.3 迭代式改进143

14.3.1 行为优先143

14.3.2 检查结构144

14.3.3 想象代码146

14.3.4 图的演化147

14.4 何时以及如何绘制图示147

14.4.1 何时要画图,何时不要画图147

14.4.2 CASE工具148

14.4.3 那么,文档呢149

14.5 结论149

第15章 状态图150

15.1 基础知识150

15.1.1 特定事件151

15.1.2 超状态152

15.1.3 初始伪状态和结束伪状态153

15.2 使用FSM图示153

15.3 结论154

第16章 对象图155

16.1 即时快照155

16.2 主动对象156

16.3 结论159

第17章 用例160

17.1 编写用例160

17.1.1 备选流程161

17.1.2 其他东西呢161

17.2 用例图162

17.3 结论162

17.4 参考文献162

第18章 顺序图163

18.1 基础知识163

18.1.1 对象、生命线、消息及其他164

18.1.2 创建和析构164

18.1.3 简单循环165

18.1.4 时机和场合166

18.2 高级概念168

18.2.1 循环和条件168

18.2.2 耗费时间的消息169

18.2.3 异步消息171

18.2.4 多线程174

18.2.5 主动对象175

18.2.6 向接口发送消息175

18.3 结论175

第19章 类图177

19.1 基础知识177

19.1.1 类177

19.1.2 关联178

19.1.3 继承179

19.2 类图示例180

19.3 细节181

19.3.1 类衍型181

19.3.2 抽象类182

19.3.3 属性183

19.3.4 聚集183

19.3.5 组合184

19.3.6 多重性185

19.3.7 关联衍型186

19.3.8 内嵌类187

19.3.9 关联类187

19.3.10 关联修饰符187

19.4 结论188

19.5 参考文献188

第20章 咖啡的启示189

20.1 Mark IV型专用咖啡机189

20.1.1 规格说明书190

20.1.2 常见的丑陋方案192

20.1.3 虚构的抽象193

20.1.4 改进方案194

20.1.5 实现抽象模型198

20.1.6 这个设计的好处209

20.2 面向对象过度设计214

20.3 参考文献214

第三部分 薪水支付案例研究219

第21章 COMMAND模式和ACTIVE OBJECT模式:多功能与多任务219

21.1 简单的Command220

21.2 事务221

21.2.1 实体上解耦和时间上解耦222

21.2.2 时间上解耦223

21.3 Undo()方法223

21.4 ACTIVE OBJECT模式224

21.5 结论227

21.6 参考文献228

第22章 TEMPLATE METHOD模式和STRATEGY模式:继承和委托229

22.1 TEMPLATE METHOD模式230

22.1.1 滥用模式232

22.1.2 冒泡排序232

22.2 STRATEGY模式235

22.3 结论239

22.4 参考文献239

第23章 FACADE模式和MEDIATOR模式240

23.1 FACADE模式240

23.2 MEDIATOR模式241

23.3 结论243

23.4 参考文献243

第24章 SINGLETON模式和MONOSTATE模式244

24.1 SINGLETON模式245

24.1.1 SINGLETON模式的好处246

24.1.2 SINGLETON模式的代价246

24.1.3 运用SINGLETON模式246

24.2 MONOSTATE模式247

24.2.1 MONOSTATE模式的好处249

24.2.2 MONOSTATE模式的代价249

24.2.3 运用MONOSTATE模式249

24.3 结论253

24.4 参考文献253

第25章 NULL OBJECT模式254

25.1 描述254

25.2 结论256

25.3 参考文献256

第26章 薪水支付案例研究:第一次迭代开始257

26.1 初步的规格说明257

26.2 基于用例分析258

26.2.1 增加新雇员259

26.2.2 删除雇员260

26.2.3 登记考勤卡260

26.2.4 登记销售凭条260

26.2.5 登记工会服务费261

26.2.6 更改雇员明细261

26.2.7 发薪日263

26.3 反思:找出底层的抽象264

26.3.1 雇员支付类别抽象264

26.3.2 支付时间表抽象265

26.3.3 支付方式266

26.3.4 从属关系266

26.4 结论266

26.5 参考文献267

第27章 薪水支付案例研究:实现268

27.1 事务268

27.1.1 增加雇员269

27.1.2 删除雇员273

27.1.3 考勤卡、销售凭条以及服务费用274

27.1.4 更改雇员属性280

27.1.5 犯了什么晕287

27.1.6 支付雇员薪水290

27.1.7 支付领月薪的雇员薪水292

27.1.8 支付钟点工薪水294

27.2 主程序302

27.3 数据库303

27.4 结论304

27.5 关于本章304

27.6 参考文献305

第四部分 打包薪水支付系统308

第28章 包和组件的设计原则308

28.1 包和组件308

28.2 组件的内聚性原则:粒度309

28.2.1 重用-发布等价原则309

28.2.2 共同重用原则310

28.2.3 共同封闭原则311

28.2.4 组件内聚性总结311

28.3 组件的耦合性原则:稳定性311

28.3.1 无环依赖原则311

28.3.2 稳定依赖原则316

28.3.3 稳定抽象原则319

28.4 结论322

第29章 FACTORY模式323

29.1 依赖问题325

29.2 静态类型与动态类型326

29.3 可替换的工厂326

29.4 对测试支架使用对象工厂327

29.5 工厂的重要性328

29.6 结论329

29.7 参考文献329

第30章 薪水支付案例研究:包分析330

30.1 组件结构和符号330

30.2 应用CCP332

30.3 应用REP333

30.4 耦合和封装335

30.5 度量336

30.6 度量薪水支付应用程序337

30.6.1 对象工厂340

30.6.2 重新思考内聚的边界342

30.7 最终的包结构342

30.8 结论345

30.9 参考文献345

第31章 COMPOSITE模式346

31.1 组合命令347

31.2 多重性还是非多重性348

31.3 结论348

第32章 OBSERVER——演化至模式349

32.1 数字时钟350

32.2 OBSERVER模式365

32.2.1 模型365

32.2.2 面向对象设计原则的运用366

32.3 结论366

32.4 参考文献367

第33章 ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式368

33.1 ABSTRACT SERVER模式369

33.2 ADAPTER模式370

33.2.1 类形式的ADAPTER模式370

33.2.2 调制解调器问题、适配器以及LSP370

33.3 BRIDGE模式374

33.4 结论375

33.5 参考文献376

第34章 PROXY模式和GATEWAY模式:管理第三方API377

34.1 PROXY模式377

34.1.1 实现PROXY模式381

34.1.2 小结391

34.2 数据库、中间件以及其他第三方接口392

34.3 TABLE DATA GATEWAY394

34.3.1 测试和内存TDG399

34.3.2 测试DbGateWay400

34.4 可以用于数据库的其他模式403

34.5 结论404

34.6 参考文献404

第35章 VISITOR模式405

35.1 VISITOR模式406

35.2 ACYCLICVISITOR模式409

35.3 DECORATOR模式418

35.4 EXTENSION OBJECT模式423

35.5 结论432

35.6 参考文献432

第36章 STATE模式433

36.1 嵌套switch/case语句434

36.1.1 内部作用域的状态变量436

36.1.2 测试动作436

36.1.3 代价和收益436

36.2 迁移表437

36.2.1 使用表解释437

36.2.2 代价和收益438

36.3 STATE模式439

36.3.1 STATE模式和STRATEGY模式441

36.3.2 代价和收益442

36.4 状态机编译器442

36.4.1 SMC生成的Turnstile.cs以及其他支持文件443

36.4.2 代价和收益448

36.5 状态机应用的场合448

36.5.1 作为GUI中的高层应用策略448

36.5.2 GUI交互控制器450

36.5.3 分布式处理450

36.6 结论451

36.7 参考文献451

第37章 薪水支付案例研究:数据库452

37.1 构建数据库452

37.2 一个代码设计缺陷453

37.3 增加雇员455

37.4 事务464

37.5 加载Employee对象468

37.6 还有什么工作478

第38章 薪水支付系统用户界面:Model-View-Presenter479

38.1 界面480

38.2 实现481

38.3 构建窗口489

38.4 Payroll窗口495

38.5 真面目504

38.6 结论505

38.7 参考文献505

附录A 双公司记506

Rufus公司:“日落”项目506

Rupert工业公司:“朝阳”项目506

附录B 什么是软件516

索引524

热门推荐