书籍详情
敏捷软件开发:原则、模式与实践
作者:(美)Robert C.Martin著;邓辉译;邓辉译
出版社:清华大学出版社
出版时间:2003-01-01
ISBN:9787302071976
定价:¥59.00
购买这本书可以去
内容简介
享誉全球的软件开发专家和软件工程大师Robert C.Martin向您介绍如何解决软件开发人员、项目经理及软件项目领导们所面临的最棘手的问题。这本综合性、实用性的敏捷开发和极限编程方面的指南,讲述了在预算和时间要求下软件开发人员和项目经理如何使用敏捷开发完成项目;使用真实案例讲解如何用极限编程来设计、测试、重构和结对编程;包含了极具价值的可重用的C++和Java源代码;还重点讲述了如何使用UML和设计模式解决面向客户系统的问题。本书于2003年荣获第13届软件开发图书震憾大奖,适于用作高校计算机专业本科生、研究生和软件学院的软件工程和软件开发相关课程的教材或参考书,也适于软件开发和管理人员提高自身水平学习之用。Robert C. Martin为《敏捷软件开发》中文版作序 《软件之美》 除了我的家庭,软件是我的挚爱。通过它,我可以创造出美的东西。软件之美在于它的功能,在于它的内部结构,还在于团队创建它的过程。对用户来说,通过直观、简单的界面呈现出恰当特性的程序就是美的。对软件设计者来说,被简单、直观地分割,并具有最小内部耦合的内部结构就是美的。对开发人员和管理者来说,每周都会取得重大进展,并且生产出无缺陷代码的具有活力的团队就是美的。美存在于所有这些层次之中,它们都是本书内容的一部分一软件开发人员如何学到创造美的知识呢?在本书中,我讲授了一些原则、模式以及实践,它们可以帮助软件开发人员在追求美的程序、设计以及团队的道路上迈出第一步。其中,我们探索了基本的设计原则,软件设计结构的通用模式以及有助于团队融为一个有机整体的一系列实践。由于本书是关于软件开发的,所以包含了许多代码。仔细研究这些代码是学习本书所教授的原则、模式以及实践的最有效方法。人们需要软件:需要许多的软件。50年前,软件还只是运行在少量大型、昂贵的机器之上。30年前,软件可以运行在大多数公司和工业环境之中。现在,移动电话、手表、电器、汽车、玩具以及工具中都运行有软件,并且对更新、更好软件的需求永远不会停止。随着人类文明的发展和壮大,随着发展中国家不断构建它们的基础设施,随着发达国家努力追求更高的效率,就需要越来越多的软件。如果在所有这些软件之中,都没有美存在,这将会是一个很大的遗憾。我们知道软件可能会是丑陋的。我们知道软件可能会难以使用、刁;可靠并且是粗制滥造的;我们知道有一些软件系统,其混乱、粗糙的内部结构使得对它们的更改既昂贵又困难:我们还见过那些通过笨拙、难以使用的界面展现其特性的软件系统;我们同样也见过那些易崩溃且行为不当的软件系统。这些都是丑陋的系统。糟糕的是,作为一种职业,软件开发人员所创建出来的美的东西却往往少于丑的东西。如果你正在阅读这本书,那么你也许就是那个想去创造美而不是丑的人。最好的软件开发人员都知道一个秘密:美的东西比丑的东西创建起来更廉价,也更快捷。构建、维护一个美的软件系统所花费的时间、金钱都要少于丑的系统。软件开发新手往往不理解这一点。他们认为做每件事情都必须要快,他们认为美是不实用的。错!由于事情做得过快,他们造成的混乱致使软件僵化,难以理解。美的系统是灵活、易于理解的,构建、维护它们就是一种快乐。丑陋的系统才是不实用的。丑陋会降低你的开发速度,使你的软件昂贵而又脆弱。构建、维护美的系统所花费的代价最少,交付起来也最快。我希望你能喜爱这本书。我希望你能像我一样学着以创建美的软件而骄傲,并享受其中的快乐。如果你从本书中略微看到了这种快乐,如果本书使你开始感受到了这种骄傲,如果本书点燃了你内心欣赏这种美的火花,那么就远超过我的目标了。RobertC.Martin2003年8月21日
作者简介
Robert C.Martin是Object Mentor公司的总裁。Martin和他的软件咨询队伍使用面向对象设计、模式、UML、敏捷方法学和极限编程,在世界各地都有他们的客户。他还是好几本畅销书的作者。他还是1996-1999年《C++ Report》杂志的总编,并多次在国际会议和展览中发表富有特色的演讲。
目录
第一部分 敏捷开发
第1章 敏捷联盟
1.1 敏捷联盟
1.2 原则
1.3 结论
参考文献
第2章 极限编程概述
2.1 极限编程实践
2.2 结论
参考文献
第3章 计划
3.1 初始探索
3.2 发布计划
3.3 迭代计划
3.4 任务计划
3.5 迭代
3.6 结论
参考文献
第4章 测试
4.1 测试驱动的开发方法
4.2 验收测试
4.3 结论
参考文献
第5章 重构
5.1 素数产生程序:一个简单的重构示例
5.2 结论
参考文献
第6章 一次编程实践
6.1 保龄球比赛
6.2 结论
第II部分 敏捷设计
第7章 什么是敏捷设计
7.1 软件出了什么错
7.2 设计的臭味——腐化软件的气味
7.3 “Copy”程序
7.4 保持尽可能好的设计
7.5 结论
参考文献
第8章 单一职责原则(SRP)
8.1 单一职责原则(OCP)
8.2 结论
参考文献
第9章 开放—封闭原则(OCP)
9.1 开发—封闭原则(OCP)
9.2 描述
9.3 关键是抽象
9.4 结论
参考文献
第10章 Liskov替换原则(LSP)
10.1 Liskov替换原则(LSP)
10.2 一个违反LSP的简单例子
10.3 正方形和矩形,更微妙的违规
10.4 一个实际的例子
10.5 用提取公共部分的方法代替继承
10.6 启发式规则和习惯用法
10.7 结论
参考文献
第11章 依赖倒置原则(DIP)
11.1 依赖倒置原则(DIP)
11.2 层次化
11.3 一个简单的例子
11.4 熔炉示例
11.5 结论
参考文献
第12章 接口隔离原则(ISP)
12.1 接口污染
12.2 分离客户就是分离接口
12.3 接口隔离原则(ISP)
12.4 类接口与对象接口
12.5 ATM用户界面的例子
12.6 结论
参考文献
第III部分 薪水支付案例研究
第13章 COMMAND模式和ACTIVE OBJECT模式
13.1 简单的COMMAND
13.2 事务操作
13.3 UNDO
13.4 ACTIVE OBJECT模式
13.5 结论
参考文献
第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托
14.1 TEMPLATE METHOD模式
14.2 STRATEGY模式
14.3 结论
参考文献
第15章 FACADE模式和MEDIATOR模式
15.1 FACADE模式
15.2 MEDIATOR模式
15.3 结论
参考文献
第16章 SINGLETON模式和MONOSTATE模式
16.1 SINGLETON模式
16.2 MONOSTATE模式
16.3 结论
参考文献
第17章 NULL OBJECT模式
17.1 结论
参考文献
第18章 薪水支付案例研究:第一次迭代开始
18.1 介绍
18.2 基于用例分析
18.3 反思:我们学到了什么
18.4 找出潜在的抽象
18.5 结论
参考文献
第19章 薪水支付案例研究:实现
19.1 增加雇员
19.2 删除雇员
19.3 时间卡、销售凭条以及服务费用
19.4 更改雇员属性
19.5 支付雇员薪水
19.6 主程序
19.7 数据库
19.8 薪水支付系统设计总结
第IV部分 打包薪水支付系统
第20章 包的设计原则
20.1 如何进行包的设计
20.2 粒度:包的内聚性原则
20.3 稳定性:包的耦合性原则
20.4 自顶向下设计
20.5 稳定依赖原则
20.6 稳定抽象原则
20.7 结论
第21章 FACTORY模式
21.1 依赖关系环
21.2 可替换的工厂
21.3 对测试支架使用对象工厂
21.4 使用对象工厂有多么重要
21.5 结论
参考文献
第22章 薪水支付案例研究(第2部分)
22.1 包结构和表示法
22.2 应用公共封闭原则(CCP)
22.3 应用重用发布等价原则(REP)
22.4 耦合和封装
22.5 度量
22.6 度量薪水支付应用程序
22.7 对象工厂
22.8 最终的包结构
22.9 结论
参考文献
第V部分 气象站案例研究
第23章 COMPOSITE模式
23.1 示例:组合命令
23.2 多重性带是非多重性
第24章 OBSERVER模式—回归为模式
24.1 数字时钟
24.2 结论
24.3 OBSERVER模式
参考文献
第25章 ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式
25.1 ABSTRACT SERVER模式
25.2 ADAPTER模式
25.3 BRIDGE模式
25.4 结论
参考文献
第26章 PROXY模式和STAIRWAY TO HEAVEN模式:管理第三方API
26.1 PROXY模式
26.2 STAIRWAY TO HEAVEN模式
26.3 可以用于数据库的其他模式
26.4 结论
参考文献
第27章 案例研究:气象站
27.1 Cloud公司
27.2 Nimbus-LC软件设计
27.3 结论
参考文献
27.4 Nimbus-LC需求概述
27.5 Nimbus-LC用例
27.6 Nimbus-LC发布计划
第VI部分 ETS案例研究
第28章 VISITOR模式
28.1 VISITOR设计模式系列
28.2 VISITOR模式
28.3 ACYCLIC VISITOR模式
28.4 DECORATOR模式
28.5 EXTENSION OBJECT模式
28.6 结论
参考文献
第29章 STATE模式
29.1 有限状态自动机概述
29.2 实现技术
29.3 STATE模式
29.4 应该在哪些地方使用状态机
29.5 作为GUI中的高层应用策略
29.6 结论
29.7 程序
参考文献
第30章 ETS框架
30.1 介绍
30.2 框架
30.3 框架设计
30.4 TEMPLATE METHOD模式的一个例子
30.5 TASKMASTER构架
30.6 结论
参考文献
附录
附录A UML表示法I:CGI示例
A.1 课程登记系统:问题描述
A.2 小结
参考文献
附录B UML表示法II:统计多路复用器
B.1 统计多路复用器的定义
B.2 结论
参考文献
附录C 两上公司的讽刺小品
附录D 源代码就是设计
索引
第1章 敏捷联盟
1.1 敏捷联盟
1.2 原则
1.3 结论
参考文献
第2章 极限编程概述
2.1 极限编程实践
2.2 结论
参考文献
第3章 计划
3.1 初始探索
3.2 发布计划
3.3 迭代计划
3.4 任务计划
3.5 迭代
3.6 结论
参考文献
第4章 测试
4.1 测试驱动的开发方法
4.2 验收测试
4.3 结论
参考文献
第5章 重构
5.1 素数产生程序:一个简单的重构示例
5.2 结论
参考文献
第6章 一次编程实践
6.1 保龄球比赛
6.2 结论
第II部分 敏捷设计
第7章 什么是敏捷设计
7.1 软件出了什么错
7.2 设计的臭味——腐化软件的气味
7.3 “Copy”程序
7.4 保持尽可能好的设计
7.5 结论
参考文献
第8章 单一职责原则(SRP)
8.1 单一职责原则(OCP)
8.2 结论
参考文献
第9章 开放—封闭原则(OCP)
9.1 开发—封闭原则(OCP)
9.2 描述
9.3 关键是抽象
9.4 结论
参考文献
第10章 Liskov替换原则(LSP)
10.1 Liskov替换原则(LSP)
10.2 一个违反LSP的简单例子
10.3 正方形和矩形,更微妙的违规
10.4 一个实际的例子
10.5 用提取公共部分的方法代替继承
10.6 启发式规则和习惯用法
10.7 结论
参考文献
第11章 依赖倒置原则(DIP)
11.1 依赖倒置原则(DIP)
11.2 层次化
11.3 一个简单的例子
11.4 熔炉示例
11.5 结论
参考文献
第12章 接口隔离原则(ISP)
12.1 接口污染
12.2 分离客户就是分离接口
12.3 接口隔离原则(ISP)
12.4 类接口与对象接口
12.5 ATM用户界面的例子
12.6 结论
参考文献
第III部分 薪水支付案例研究
第13章 COMMAND模式和ACTIVE OBJECT模式
13.1 简单的COMMAND
13.2 事务操作
13.3 UNDO
13.4 ACTIVE OBJECT模式
13.5 结论
参考文献
第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托
14.1 TEMPLATE METHOD模式
14.2 STRATEGY模式
14.3 结论
参考文献
第15章 FACADE模式和MEDIATOR模式
15.1 FACADE模式
15.2 MEDIATOR模式
15.3 结论
参考文献
第16章 SINGLETON模式和MONOSTATE模式
16.1 SINGLETON模式
16.2 MONOSTATE模式
16.3 结论
参考文献
第17章 NULL OBJECT模式
17.1 结论
参考文献
第18章 薪水支付案例研究:第一次迭代开始
18.1 介绍
18.2 基于用例分析
18.3 反思:我们学到了什么
18.4 找出潜在的抽象
18.5 结论
参考文献
第19章 薪水支付案例研究:实现
19.1 增加雇员
19.2 删除雇员
19.3 时间卡、销售凭条以及服务费用
19.4 更改雇员属性
19.5 支付雇员薪水
19.6 主程序
19.7 数据库
19.8 薪水支付系统设计总结
第IV部分 打包薪水支付系统
第20章 包的设计原则
20.1 如何进行包的设计
20.2 粒度:包的内聚性原则
20.3 稳定性:包的耦合性原则
20.4 自顶向下设计
20.5 稳定依赖原则
20.6 稳定抽象原则
20.7 结论
第21章 FACTORY模式
21.1 依赖关系环
21.2 可替换的工厂
21.3 对测试支架使用对象工厂
21.4 使用对象工厂有多么重要
21.5 结论
参考文献
第22章 薪水支付案例研究(第2部分)
22.1 包结构和表示法
22.2 应用公共封闭原则(CCP)
22.3 应用重用发布等价原则(REP)
22.4 耦合和封装
22.5 度量
22.6 度量薪水支付应用程序
22.7 对象工厂
22.8 最终的包结构
22.9 结论
参考文献
第V部分 气象站案例研究
第23章 COMPOSITE模式
23.1 示例:组合命令
23.2 多重性带是非多重性
第24章 OBSERVER模式—回归为模式
24.1 数字时钟
24.2 结论
24.3 OBSERVER模式
参考文献
第25章 ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式
25.1 ABSTRACT SERVER模式
25.2 ADAPTER模式
25.3 BRIDGE模式
25.4 结论
参考文献
第26章 PROXY模式和STAIRWAY TO HEAVEN模式:管理第三方API
26.1 PROXY模式
26.2 STAIRWAY TO HEAVEN模式
26.3 可以用于数据库的其他模式
26.4 结论
参考文献
第27章 案例研究:气象站
27.1 Cloud公司
27.2 Nimbus-LC软件设计
27.3 结论
参考文献
27.4 Nimbus-LC需求概述
27.5 Nimbus-LC用例
27.6 Nimbus-LC发布计划
第VI部分 ETS案例研究
第28章 VISITOR模式
28.1 VISITOR设计模式系列
28.2 VISITOR模式
28.3 ACYCLIC VISITOR模式
28.4 DECORATOR模式
28.5 EXTENSION OBJECT模式
28.6 结论
参考文献
第29章 STATE模式
29.1 有限状态自动机概述
29.2 实现技术
29.3 STATE模式
29.4 应该在哪些地方使用状态机
29.5 作为GUI中的高层应用策略
29.6 结论
29.7 程序
参考文献
第30章 ETS框架
30.1 介绍
30.2 框架
30.3 框架设计
30.4 TEMPLATE METHOD模式的一个例子
30.5 TASKMASTER构架
30.6 结论
参考文献
附录
附录A UML表示法I:CGI示例
A.1 课程登记系统:问题描述
A.2 小结
参考文献
附录B UML表示法II:统计多路复用器
B.1 统计多路复用器的定义
B.2 结论
参考文献
附录C 两上公司的讽刺小品
附录D 源代码就是设计
索引
猜您喜欢