![]()
编辑推荐 "《敏捷开发(纪念版)》通过丰富的案例来诠释了敏捷开发和敏捷设计的基础知识,介绍了UML模型如何转为实际可用的C#代码。在总体上概述敏捷运动之后,展示了敏捷实践过程,并通过大量有价值的源代码实例来展示了敏捷设计、开发与实践。 通过本书的阅读,读者可以掌握以下主题: ● 12个敏捷原则和14个极限编程实践 ● 技术预研,故事拆分,速率,迭代和版本规划 ● 测试驱动开发、测试先行设计以及验收测试 ● 单元测试与重构 ● 结对编程 ● 敏捷设计与设计异味 ● 5类UML图及其高效用法 ● 面向对象的软件包设计及其设计模式 ● 如何综合运用所有要点来实现一个真实的项目" 内容推荐 《敏捷开发(纪念版)》介绍敏捷原则、模式和实践,包含4部分38章24个附录,首先概述敏捷开发、包含6个主题,分别为敏捷实践、极限编程、规划、测试、重构和编程活动。接下来介绍敏捷设计,解释了5个设计原则、UML及其应用,包括状态图、对象图、用例图、序列图和类图,并以一个完整的咖啡机编程案例来介绍具体的用法。通过薪水支付系统Payroll的实战练习,书中呈现了敏捷开发的整个过程及其实用价值。 《敏捷开发(纪念版)》适合真正想要通过敏捷方法来提升软件开发技能以及及时交付软件价值的所有读者阅读和参考,尤其适合开发、管理和业务分析岗位的人员学习。通过本书的阅读,读者还可以了解UML、设计模式、面向对象设计原则以及包括极限编程在内的敏捷方法。 目录 第Ⅰ部分 敏捷开发 章 敏捷实践 002 敏捷联盟 003 个人和互动优先于过程和工具 004 可以工作的软件优先于详尽的文档 004 客户合作优先于合同谈判 005 应对变化优先于遵循计划 006 原则 007 小结 009 参考文献 010 第2章 极限编程概述 011 极限编程实践 011 完整的团队 011 用户故事 012 短的周期 012 验收测试 013 结对编程 014 测试驱动开发 015 集体所有权 015 持续集成 016 可持续的开发速度 016 开放的工作空间 017 规划游戏 017 简单设计 018 重构 019 隐喻 019 小结 020 参考文献 021 第3章 计划 022 初探 023 技术预研、故事拆分和速率 023 发布计划 024 迭代计划 024 定义“完成” 025 任务计划 025 迭代 027 跟踪 027 小结 028 参考文献 029 第4章 测试 030 测试驱动开发 030 验收测试 035 意外获得的架构 037 小结 037 参考文献 038 第5章 重构 039 素数产生程序:一个简单的重构示例 040 重构 043 后检查 049 小结 053 参考文献 054 第6章 一次编程实践 055 保龄球比赛 056 小结 106 保龄球规则概述 107 第Ⅱ部分 敏捷设计 臭味和原则 110 参考文献 110 第7章 什么是敏捷设计 111 设计臭味 112 设计的臭味:软件腐化的气味 112 僵化 113 脆弱 113 顽固 113 粘滞 114 不必要的复杂 114 不必要的重复 114 晦涩 115 为什么软件会腐化 115 Copy程序 116 一个熟悉的场景 116 Copy程序的敏捷设计 120 小结 122 参考文献 123 第8章 单一职责原则(SRP) 124 定义职责 126 分离耦合的职责 127 持久化 128 小结 128 参考文献 129 第9章 开/关原则(OCP) 130 描述 131 Shape应用程序 133 违反OCP 133 遵循OCP 136 预测变化和“贴切的”结构 138 放置“钩子” 139 使用抽象获得显式封闭性 140 使用“数据驱动”的方法获取 封闭性 141 小结 142 参考文献 143 0章 里氏替换原则(LSP) 144 违反LSP的情形 145 更微妙的违反情形 147 一个实际的例子 154 用提取公共部分的方法代替继承 158 启发式规则和习惯用法 162 小结 162 参考文献 163 1章 依赖倒置原则(DIP) 164 层次化 165 倒置的接口所有权 166 依赖于抽象 167 一个简单的DIP例子 168 找出底层抽象 169 熔炉示例 171 小结 172 参考文献 173 2章 接口隔离原则(ISP) 174 接口污染 174 分离客户端就是分离接口 176 类接口和对象接口 177 通过委托来分离接口 178 使用多重继承隔离接口 179 ATM 用户界面的例子 180 小结 187 参考文献 187 3章 C#程序员UML概述(C#语言) 188 类图 191 对象图 193 顺序图 193 协作图 194 状态图 195 小结 196 参考文献 196 4章 使用UML 197 为什么建模 197 为什么要建软件模型 198 写代码之前是否应该做好详细设计 198 有效使用UML 199 与他人交流 199 脉络图 201 项目结束文档 202 要保留的和要丢弃的 203 迭代式改进 204 行为优先 204 检查结构 206 想象代码 208 图示的演化 209 何时以及如何绘制图示 210 何时要画图,何时不要画图 210 CASE工具 211 那么,文档呢 212 小结 212 5章 状态图 214 基础知识 214 特定事件 216 超状态 217 初始伪状态和结束伪状态 218 使用FSM图示 219 小结 220 6章 对象图 221 即时快照 221 主动对象 223 小结 227 7章 用例 228 写用例 229 备选流程 230 其他东西呢 230 用例图 231 小结 232 参考文献 232 8章 顺序图 233 基础知识 234 对象、生命线、消息及其他 234 创建和析构 235 简单循环 236 时机和场合 237 不错概念 240 循环和条件 240 耗费时间的消息 241 异步消息 243 多线程 248 主动对象 249 向接口发送消息 250 小结 251 9章 类图 252 基础知识 253 类 253 关联 253 继承 254 类图示例 255 细节 258 类的衍型 258 抽象类 259 属性 260 聚合 260 组合 261 多重性 263 关联衍型 263 嵌套类 264 关联类 265 关联修饰符 266 小结 266 参考文献 266 第20章 咖啡的启示 267 Mark IV型专用咖啡机 267 规格说明书 268 常见的丑陋方案 271 虚构的抽象 273 改进方案 275 实现抽象模型 279 这个设计的好处 295 面向对象过度设计 303 参考文献 304 第21章 命令模式和主动对象模式 310 简单的命令模式 311 事务操作 313 实体上的解耦和时间上的解耦 314 时间上的解耦 315 UNDO()方法 315 主动对象模式 316 小结 322 参考文献 322 第22章 模板方法模式和策略模式:继承和委托 323 模板方法模式 324 模式滥用 327 冒泡排序 328 策略模式 332 小结 338 参考文献 338 第23章 外观模式和中介者模式 339 外观模式 339 中介者模式 340 小结 343 参考文献 343 第24章 单例模式和单状态模式 344 单例模式 345 好处 347 代价 347 单例模式实战 348 单状态模式 350 好处 351 代价 352 单状态模式实战 352 小结 358 参考文献 359 第25章 空对象模式 360 描述 360 小结 363 参考文献 364 第26章 案例学习:Payroll系统的轮迭代 365 规格说明书 366 基于用例进行分析 367 添加新员工 368 删除员工 369 提交考勤卡 370 提交销售凭证 370 提交工会服务费 371 更改员工信息 372 薪水支付日 374 反思:我们从中学到了什么 376 薪水支付类别抽象 376 支付薪水时间表抽象 377 第Ⅲ部分 案例学习:薪水支付系统Payroll 支付方式 378 工会所属关系 378 小结 379 参考文献 380 第27章 案例学习:Payroll系统 实现 381 事务 381 添加员工 382 Payoll系统的数据库 384 删除雇员 388 考勤卡、销售凭证和服务费用 390 更改员工信息 399 更改员工类别 403 我犯了什么晕? 409 支付员工薪水 413 我们是否希望开发人员来做商业决策? 415 按月薪结算的员工支付薪水 415 支付小时工的薪水 418 主程序 431 数据库 432 小结 433 关于本章 433 参考文献 434 第Ⅳ部分 案例学习:打包Payroll系统 第28章 包和组件的设计原则 436 包和组件 436 组件的内聚性原则:粒度 437 重用-发布等价原则(REP) 438 共同重用原则(CRP) 439 共同封闭原则(CCP) 440 组件内聚性小结 441 组件耦合原则:稳定性 441 无环依赖原则(ADP) 441 稳定依赖原则(SDP) 447 稳定抽象原则(SAP) 452 小结 456 第29章 工厂模式 457 依赖问题 460 静态类型与动态类型 461 可替换的工厂 462 对测试支架使用对象工厂 463 工厂模式的重要性 465 小结 465 参考文献 465 第30章 案例学习:Payroll系统的包分析 466 组件结构和符号 467 应用共同封闭原则(CCP) 469 应用发布等价原则(REP) 471 耦合和封装 474 度量指标 475 在薪水支付系统中使用这些度量 477 对象工厂 479 重新思考内聚的边界 483 终的包结构 483 小结 485 参考文献 485 第31章 组合模式 487 组合命令 489 多重性还是非多重性 490 小结 490 第32章 观察者模式 491 数字时钟 492 观察者模式 512 模型 513 观察者模式与面向对象设计原则 514 小结 514 参考文献 515 第33章 抽象服务器、适配器和桥接模式 516 抽象服务器模式 517 适配器模式 518 类形式的适配器 519 调制解调器问题、适配器和里氏替换原则 520 桥接模式 524 小结 527 参考文献 527 第34章 代理模式和TDG模式:管理第三方API 528 代理模式 529 代理购物车应用 534 小结 550 处理数据库、中间件以及其他第三方 接口 550 TDG模式 553 测试和内存TDG 561 测试DbGateway 562 小结 568 参考文献 568 第35章 访问者模式 569 访问者模式 570 非循环访问者模式 575 使用访问者模式 581 访问者模式的其他用途 589 装饰者模式 589 扩展对象模式 596 小结 610 参考文献 610 第36章 状态模式 611 嵌套语句switch/case 612 内部作用域内有效的状态变量 615 测试动作 616 代价和好处 616 迁移表 617 使用表解释 618 代价和收益 619 状态模式 620 状态模式和策略模式 624 使用状态模式的代价和好处 624 SMC(状态机编译器) 625 SMC生成的Turnstile.cs以及其他 支持文件 628 代价和收益 634 状态机的应用场合 634 作为 GUI 中的高层应用策略 634 GUI 交互控制器 636 分布式处理 637 小结 638 参考文献 639 第37章 案例学习:Payroll系统的数据库 640 建立数据库 641 代码设计中的一个缺陷 642 增加雇员 644 事务 658 加载Employee对象 665 还有什么工作? 680 第38章 案例学习:Payroll系统的用户界面 681 界面 683 实现 684 构建窗口 696 Payroll的窗口 705 真面目 720 小结 720 参考 721 Rupert:Alpha项目 722 附录A 两家公司的讽刺故事 722 附录B 源码即设计 739 |