
| 极限编程(XP)是一种全新的轻量级软件开发方法,近年来已得到从大型咨询公司到小型软件工作室的认可。本书以循序渐进的方式阐述了极限编程的方方面面。“我深信,本书将引导您成功地应用XP并使其适用于您的项目。希望在软件开发中取得成功的人都应阅读本书。” |
| Stewart Baird 是一名独立咨询人员,主要从事软件开发、领导和写作等工作。创办自己的公司之前,他受聘于新西兰的KPMG Consulting公司,担任XP(极限编程)实现的首席传教士。他曾在美国和新西兰介绍和教授XP,当前则忙于帮助客户使用XP和其他敏捷技术实现他们的解决方案。 虽然在最近的职业生涯中主要使用的是Microsoft工具,但他却是开放源代码的坚定倡导者。最初,他从业于航空电子设备和嵌入系统领域,20世纪80年代末,他遇到并爱上了C语言,不久后便开始编写IBMOS/2操作系统的应用程.. << 查看详细 |
| 第一部分 xp基础 1 第1小时课程 初识xp 3 1.1 软件开发概述 3 1.1.1 软件工程的进展 5 1.1.2 个人计算机革命 6 1.1.3 有控制地快速地构建应用程序 6 1.1.4 internet时代的软件开发 7 1.2 软件开发方法 7 1.2.1 编码-修复方法 7 1.2.2 瀑布式方法 8 1.2.3 进化式原型化方法 9 1.2.4 分步交付方法 10 1.2.5 rup方法 10 1.2.6 msf方法 11 1.3 使用敏捷方法解决软件开发悖论 12 1.4 xp如何交付高质量的软件 13 1.5 各种开发方法之比较 13 1.6 总结 14 1.7 问与答 14 1.8 作业 15 .1.8.1 小测验 15 1.8.2 答案 15 1.8.3 练习 15 第2小时课程 xp概述 17 2.1 第一个xp项目 17 2.2 定义xp 18 2.2.1 价值观 18 2.2.2 原则 19 2.2.3 行为 19 2.2.4 实践 20 2.3 xp的关键特征 21 2.3.1 明确的反馈 21 2.3.2 逐步规划 21 2.3.3 时间安排灵活 22 2.3.4 自动化测试 22 2.3.5 口头交流 22 2.3.6 进化式设计 22 2.4 xp的极端方面 22 2.5 xp与其他开发方法的不同之处 23 2.6 总结 23 2.7 问与答 24 2.8 作业 25 2.8.1 小测验 25 2.8.2 答案 25 2.8.3 练习 25 第3小时课程 使用xp解决软件开发中的问题 27 3.1 揭示软件开发中的问题 27 3.1.1 软件开发危机 27 3.1.2 死亡之旅 28 3.1.3 项目中的4个控制变量 29 3.2 使用xp控制风险 30 3.2.1 incis:一个关于软件灾难的案例研究 30 3.2.2 使用xp避免灾难 31 3.3 使用xp提高质量 31 3.4 使用xp管理变化 33 3.5 总结 35 3.6 问与答 35 3.7 作业 36 3.7.1 小测验 36 3.7.2 答案 36 3.7.3 练习 36 第二部分 xp的工作原理 49 第4小时课程 xp开发的生命周期 39 4.1 xp项目的生命周期概述 39 4.2 调查用户需求 41 4.2.1 编写用户故事 41 4.2.2 估算和发现 42 4.3 制定项目计划 43 4.4 将发布划分为迭代 44 4.4.1 迭代过程 44 4.4.2 度量生产量 45 4.4.3 开发和测试 45 4.5 将软件部署到生产环境中 45 4.6 发布后维护系统 46 4.7 总结 47 4.8 问与答 47 4.9 作业 48 4.9.1 小测验 48 4.9.2 答案 48 4.9.3 练习 48 第5小时课程 xp小组中的角色 49 5.1 xp角色如何协同工作 49 5.1.1 协作的重要性 49 5.1.2 作为一个团队来解决问题 50 5.1.3 权利和职责 51 5.2 客户 52 5.3 指导xp小组 53 5.4 开发人员 54 5.4.1 日常工作 54 5.4.2 将xp实践同开发人员的工作对应起来 55 5.5 测试人员 56 5.6 跟踪人员 56 5.7 经理 57 5.8 其他xp角色 57 5.9 总结 58 5.10 问与答 58 5.11 作业 58 5.11.1 小测验 59 5.11.2 答案 59 5.11.3 练习 59 第6小时课程 xp实践 61 6.1 xp实践如何协同工作 61 6.2 计划游戏 62 6.3 小型发布 63 6.4 隐喻 63 6.5 简单设计 64 6.6 测试 64 6.7 重构 65 6.8 结对编程 65 6.9 集体拥有 66 6.10 持续集成 66 6.11 每周工作40小时 67 6.11.1 可忍受的工作时间 67 6.11.2 揭露加班黑市 67 6.11.3 长期还是短期 67 6.12 现场客户 68 6.13 编码标准 69 6.13.1 编码标准的方方面面 69 6.13.2 到哪里去了解编码标准 69 6.14 总结 70 6.15 问与答 70 6.16 作业 71 6.16.1 小测验 71 6.16.2 答案 71 6.16.3 练习 72 第三部分 运作xp项目 97 第7小时课程 指导xp项目 75 7.1 使用xp价值观来运作项目 75 7.2 信任小组 76 7.3 领导xp小组 76 7.3.1 做一名受小组拥戴的领导 77 7.3.2 不应容忍的行为 77 7.3.3 您是哪种类型的领导 78 7.4 组建小组 79 7.4.1 营造小组文化 79 7.4.2 激励小组 81 7.5 总结 81 7.6 问与答 81 7.7 作业 82 7.7.1 小测验 82 7.7.2 答案 83 7.7.3 练习 83 第8小时课程 规划xp中的软件发布 85 8.1 软件发布基础 85 8.1.1 确定项目的范围 86 8.1.2 发布规划 87 8.2 总结 92 8.3 问与答 92 8.4 作业 93 8.4.1 小测验 93 8.4.2 答案 93 8.4.3 练习 94 第9小时课程 以迭代的方式开发软件 95 9.1 将发布划分为迭代 95 9.2 小组集思广益地讨论任务 96 9.3 承担工作 98 9.4 编写验收测试 98 9.5 跟踪和指导迭代 100 9.5.1 处理延迟的情况 102 9.5.2 控制迭代的方向 102 9.5.3 度量和控制速度 103 9.5.4 常务会议 103 9.6 结束迭代 104 9.7 总结 104 9.8 问与答 104 9.9 作业 105 9.9.1 小测验 105 9.9.2 答案 106 9.9.3 练习 106 第10小时课程 以用户故事的方式收集客户需求 107 10.1 编写第一个用户故事 107 10.1.1 选择用于编写用户故事的工具 109 10.1.2 用于收集客户需求的用户故事范例 112 10.2 用户故事变体 112 10.2.1 用户故事和用例之比较 113 10.2.2 转换功能规范 113 10.2.3 使用用户故事设计原型 114 10.3 总结 114 10.4 问与答 115 10.5 作业 115 10.5.1 小测验 115 10.5.2 答案 116 10.5.3 练习 116 第11小时课程 以结对编程的方式开发软件 117 11.1 养成结对编程的习惯 117 11.2 营造物理空间 118 11.3 结对编程的代价和好处 120 11.3.1 通过结对编程提高开发人员的士气 121 11.3.2 程序员的看法 122 11.4 驳斥对结对编程的非难 122 11.5 使结对编程适合于您 123 11.6 总结 124 11.7 问与答 124 11.8 作业 125 11.8.1 小测验 125 11.8.2 答案 126 11.8.3 练习 126 第四部分 使用xp工具 127 第12小时课程 以xp方式集成系统 129 12.1 集成周期 129 12.1.1 提供产品 130 12.1.2 每天构建软件 131 12.1.3 定义良好的构建 132 12.1.4 确保源代码的安全 133 12.2 开始自动化构建 134 12.2.1 通过持续集成将构建演绎到极致 134 12.2.2 消除集成障碍 135 12.3 总结 136 12.4 问与答 136 12.5 作业 137 12.5.1 小测验 137 12.5.2 答案 137 12.5.3 练习 137 第13小时课程 使用xp开发工具 139 13.1 搜集xp工具集 139 13.2 使用xunit测试框架来测试软件 140 13.3 使用工具跟踪缺陷 143 13.4 使用基于纸张的工具 144 13.5 提高代码速度的软件工具 145 13.6 源代码控制工具 146 13.7 检查代码质量的工具 147 13.8 利用集成开发环境 149 13.8.1 ibm的visualage for java 149 13.8.2 microsoft的visual studio.net 152 13.8.3 其他集成开发环境 155 13.9 总结 156 13.10 问与答 156 13.11 作业 157 13.11.1 小测验 157 13.11.2 答案 158 13.11.3 练习 158 第14小时课程 java单元测试工具 159 14.1 再谈测试先行 159 14.2 junit简介 160 14.3 安装junit 161 14.4 编写第一个junit测试 165 14.5 测试方面的难题 168 14.5.1 用户界面 168 14.5.2 基于web的系统 168 14.5.3 数据库 168 14.6 总结 169 14.7 问与答 169 14.8 作业 169 14.8.1 小测验 169 14.8.2 答案 170 14.8.3 练习 170 第15小时课程 microsoft单元测试工具 171 15.1 microsoft com和.net 171 15.1.1 microsoft com 171 15.1.2 microsoft.net 172 15.2 建立.net环境 173 15.2.1 下载并安装.net 173 15.2.2 安装并运行.net测试框架 173 15.3 编写第一个nunit测试 174 15.3.1 用于nunit测试的范例用户故事 174 15.3.2 创建范例应用程序 175 15.3.3 为rugby类创建单元测试 176 15.3.4 使用nunit进行调试 183 15.3.5 从命令行运行nunit 184 15.4 总结 185 15.5 问与答 185 15.6 作业 186 15.6.1 小测验 186 15.6.2 答案 187 15.6.3 练习 187 第16小时课程 软件开发自动化 189 16.1 使用ant实现自动化构建 189 16.1.1 安装ant 190 16.1.2 ant命令选项 191 16.2 ant构建文件 192 16.2.1 project标记 194 16.2.2 target标记 194 16.2.3 任务 195 16.2.4 属性 195 16.3 使用ant构建helloworld程序 196 16.4 在microsoft平台上自动化构建 198 16.5 总结 200 16.6 问与答 200 16.7 作业 201 16.7.1 小测验 201 16.7.2 答案 201 16.7.3 练习 202 第17小时课程 充分利用ant来自动化xp项目 203 17.1 使用ant来自动化单元测试 203 17.1.1 使用ant建立数据库 204 17.1.2 通过ant运行junit测试 213 17.1.3 使用ant以email的方式发送测试报告 218 17.2 在.net平台上自动化构建 221 17.3 总结 224 17.4 问与答 225 17.5 作业 225 17.5.1 小测验 225 17.5.2 答案 226 17.5.3 练习 226 第五部分 实施xp 227 第18小时课程 在组织中实施xp 229 18.1 技术接纳曲线 229 18.2 xp实施指南 230 18.2.1 解决最严重的问题 231 18.2.2 针对项目修正xp 233 18.2.3 创造物理环境 233 18.3 避开陷阱 235 18.4 评估xp实施情况 236 18.5 总结 237 18.6 问与答 237 18.7 作业 237 18.7.1 小测验 238 18.7.2 答案 238 18.7.3 练习 238 第19小时课程 成功地推销xp 239 19.1 在内部推销xp 239 19.1.1 如何向开发人员推销xp 239 19.1.2 赢得结队编程之战 241 19.2 说服管理人员 242 19.3 如何向客户推销xp 243 19.3.1 确定问题 244 19.3.2 确定解决方案 245 19.3.3 确定资源 246 19.3.4 确定后勤保障 246 19.3.5 就价格达成一致 246 19.3.6 签订合同 246 19.4 总结 247 19.5 问与答 247 19.6 作业 247 19.6.1 小测验 247 19.6.2 答案 248 19.6.3 练习 248 第20小时课程 xp案例研究 249 20.1 案例研究:确保推销方法和交付方法相称的重要性 249 20.2 案例研究:中途采用xp的后果 250 20.3 案例研究:独立软件厂商采用xp 252 20.4 案例研究:在大型项目中采用xp 253 20.5 总结 254 20.6 问与答 254 20.7 作业 254 20.7.1 小测验 254 20.7.2 答案 255 20.7.3 练习 255 第六部分 扩大xp的应用范围及其他高级主题 257 第21小时课程 再谈重构技术 259 21.1 为何需要重构 259 21.2 何时重构 260 21.3 重构面临的挑战 261 21.4 重构思想 261 21.4.1 提取(extract)方法 261 21.4.2 将幻数变为符号常量 263 21.4.3 内联临时变量 264 21.4.4 使用断言 265 21.4.5 用显式方法替代参数 266 21.4.6 重构小结 267 21.5 养成重构的习惯 268 21.6 重构除代码外的其他东西 268 21.7 有关重构技术的资源 269 21.8 总结 270 21.9 问与答 270 21.10 作业 270 21.10.1 小测验 270 21.10.2 答案 271 21.10.3 练习 271 第22小时课程 突破xp的局限 273 22.1 如何将xp用于大型项目 273 22.1.1 划分功能小组 274 22.1.2 扩展结对编程 276 22.1.3 规划游戏 276 22.1.4 没有现场客户 277 22.2 虚拟小组工具 278 22.3 总结 279 22.4 问与答 279 22.5 作业 279 22.5.1 小测验 280 22.5.2 答案 280 22.5.3 练习 280 第23小时课程 在xp中使用敏捷建模技术 281 23.1 敏捷建模技术简介 281 23.1.1 am的价值观 282 23.1.2 am的核心原则 283 23.1.3 am的辅助原则 283 23.1.4 am的核心实践 284 23.1.5 am的辅助实践 285 23.1.6 xp与am之比较 286 23.2 am使用范例 287 23.3 总结 292 23.4 问与答 292 23.5 作业 293 23.5.1 小测验 293 23.5.2 答案 294 23.5.3 练习 294 第24小时课程 其他敏捷开发方法 295 24.1 敏捷开发方法 295 24.1.1 敏捷宣言 296 24.1.2 敏捷原则 296 24.1.3 敏捷软件开发的平衡术 296 24.2 scrum方法 297 24.3 动态系统开发方法 299 24.4 特性驱动的开发 301 24.5 创建自己的敏捷方法 302 24.6 总结 303 24.7 问与答 303 24.8 作业 303 24.8.1 小测验 304 24.8.2 答案 304 24.8.3 练习 304 第七部分 附录 305 附录a 参考资料 307 附录b 网上资源 311 b.1 极限编程链接 311 b.2 与xp相关的链接 312 b.3 xp工具链接 312 b.4 敏捷方法链接 312 |
商品评论(0条)