
| 作者独辟蹊径,丰富的联想,因此,读者在读到下面的内容时不要惊讶: *罗密欧与朱丽叶的温情对白 *编程中的橄榄球技巧 *软件开发中也有太极功夫 …… |
| 第一部分 软件和模型 第1章 软件和模型 1.1 冒险的成功 1.1.1 瀑布模型的特点 1.1.2 可接受的失败 1.1.3 与工程项目的比较 1.1.4 项目失败的实例 1.2 能力成熟度模型 1.2.1 第一级--初始级 1.2.2 第二级--可重复级 1.2.3 第三级--定义级 1.2.4 第四级--管理级 1.2.5 第五级--优化级 1.2.6 关键过程域 1.3 即时上市达成即时上市的方法 1.4 足够好的软件 1.5 优秀的程序员 1.5.1 程序员的差异 1.5.2 魔术数字28 1.5.3 真正的才能 .1.6 编程心理学 1.6.1 不同的诠释 1.6.2 编码不等于软件项目 1.7 不要从经验学习 1.7.1 信念 1.7.2 从经验中学习 1.7.3 经验与实验 1.8 总结 思考与练习 参考文献 第2章 极限编程 2.1 极限编程的诞生 2.2 快速改变的软件需求 2.3 角色 2.3.1 权利和责任 2.3.2 单元测试和验收测试 2.3.3 客户 2.3.4 程序员 2.4 价值 2.5 原则 2.6 活动 2.7 12个实践 2.7.1 小版本 2.7.2 规划游戏 2.7.3 现场客户 2.7.4 隐喻 2.7.5 简单设计 2.7.6 重构 2.7.7 测试驱动开发 2.7.8 持续集成 2.7.9 结对编程 2.7.10 代码共有 2.7.11 编码标准 2.7.12 每周40小时工作制 2.8 极限编程实践的追溯 2.9 软件过程改进 2.10 总结 思考与练习 参考文献 第3章 3.1 敏捷软件开发 3.1.1 敏捷宣言 3.1.2 敏捷开发的原则 3.2 软件方法 3.2.1 控制元素 3.2.2 方法的设计 3.2.3 轻量级和重量级方法 3.3 scrum 3.3.1 橄榄球的团队精神 3.3.2 简史 3.3.3 scrum的开发方式 3.3.4 scrum实践 3.4 极限编程和scrum 3.4.1 极限编程和scrum的比较 3.4.2 xp@scrum 3.5 总结 思考与练习 参考文献 第二部分 幻象和真实 第4章 结对编程 4.1 科学和艺术 4.1.1 结对编程的方法 4.1.2 经济上的争议 4.1.3 管理上的疑问 4.2 无工资世界和真实世界 4.2.1 无工资世界 4.2.2 真实世界 4.3 结对编程的效率 4.3.1 nosek的实验 4.3.2 williams的实验 4.3.3 nawrocki的实验 4.3.4 结对编程效率的矛盾 4.4 结对编程的普查 4.4.1 百分比分析 4.4.2 比例问题 4.4.3 开放式评论 4.5 结对编程的扩展 4.5.1 结对学习 4.5.2 结对程序员的组合 4.5.3 分布式结对编程 4.5.4 三结编程 4.6 总结 思考与练习 参考文献 第5章 群动力 5.1 群体动力学与结对编程 5.2 群体的特性 5.2.1 互动 5.2.2 结构 5.2.3 凝聚力 5.2.4 社会认同 5.2.5 目标 5.3 群体的生命周期 5.4 群体动力学 5.4.1 系统理论 5.5 工作性质 5.5.1 累积性工作 5.5.2 补偿性工作 5.5.3 分离性工作 5.5.4 联合性工作 5.5.5 自由决定性工作 5.6 两个脑袋 5.7 群体生产力下降 5.7.1 评价忧虑 5.7.2 社会两难 5.7.3 生产力假象 5.8 头脑风暴 5.9 总结 思考与练习 参考文献 第6章 重复编程 6.1 结对编程的争议 6.1.1 不可重复的实验 6.1.2 三结编程、四结编程、五结编程,等等 6.1.3 编程不是什么大不了的工作 6.2 经济和生产力 6.3 重复编程 6.3.1 重复的编写程序 6.3.2 效率差异 6.3.3 挑战 6.3.4 一加一等于三 6.3.5 三结编程的效率 6.4 程序算法 6.4.1 不想输的实验 6.4.2 实验结果 6.5 生命游戏 6.5.1 轮转式的实验 6.5.2 先输后赢的结果 6.6 编程认知模型 6.6.1 "定义" 6.6.2 "表示" 6.6.3 "模型" 6.6.4 "模式" 6.6.5 "算法" 6.6.6 "编码" 6.6.7 认知模型的运用 6.6.8 演绎和算法 6.7 总结 思考与练习 参考文献 第7章 重构 7.1 重做和重构 7.1.1 优化 7.1.2 修改 7.2 重构理论 7.2.1 重构和极限编程 7.2.2 可读性和可维护性 7.3 坏气味 7.3.1 重复 7.3.2 过大 7.3.3 功能 7.3.4 依赖 7.3.5 设计 7.3.6 注释 7.4 重构技巧 7.4.1 提取 7.4.2 内联化 7.4.3 重命名 7.4.4 移动 7.4.5 替换算法 7.5 总结 思考与练习 参考文献 第8章 测试驱动开发 8.1 逆流瀑布 8.1.1 设计-编码-测试 8.1.2 测试-编码-设计 8.2 测试和编码 8.2.1 测试 8.2.2 编码 8.2.3 测试驱动开发 8.2.4 测试驱动开发和其他极限编程实践 8.2.5 科学方法 8.3 测试驱动开发的工具 8.3.1 xunit系列 8.3.2 代码覆盖 8.3.3 jester 8.3.4 模仿对象 8.3.5 重构浏览器 8.3.6 测试数据 8.4 软件缺陷评估 8.4.1 传统方法 8.4.2 减少缺陷 8.5 测试驱动开发在中国软件业中的应用 8.5.1 对缺乏经验的编程组的tdd指引 8.5.2 项目计划 8.5.3 项目进度跟踪 8.5.4 质量保证 8.5.5 纪律 8.5.6 回溯 8.5.7 推销员问题 8.6 极限编程和测试驱动开发 8.6.1 极限编程成熟度模型 8.6.2 测试驱动开发演化模型 思考与练习 参考文献 第三部分 旅程结束、回到工作 第9章 极限编程的实施 9.1 环境和工序 9.1.1 工效学 9.1.2 每天的工作程序 9.1.3 标准 9.2 实施 9.2.1 故事卡 9.2.2 探棒 9.2.3 故事的优先次序 9.2.4 分开故事 9.2.5 选取结队伙伴 9.2.6 迭代 9.2.7 编程 9.2.8 集成 9.3 模板应用实例 9.3.1 迭代准备 9.3.2 第一迭代 9.3.3 第二迭代 9.3.4 第三迭代和第一次发布 9.4 总结 思考与练习 参考文献 第10章 极限编程的评语 10.1 不愉快的经验 10.1.1 假结对编程 10.1.2 硬性极限编程 10.1.3 梦想里的现场客户 10.1.4 曲解失败为成功 10.1.5 现实中的极限编程 10.2 humphrey的评估 10.3 反极限编程 10.3.1 大型软件开发 10.3.2 做和道 10.3.3 小教派 10.4 解破幻象 10.4.1 格列佛游记 10.4.2 主观和客观 10.4.3 太极软件开发 10.5 总结 思考与练习 参考文献 附录a 测试驱动开发的形式化描述 附录b junit及bubblesort实例 附录c 重构浏览器refactorlt概览 附录d 重构实例 附录e jester安装和应用 附录f jcoverage安装和应用 附录g jester和jcoverage实例比较 附录h 参考答案 |
商品评论(0条)