Section I:Agile Development 敏捷开发
         Chapter 1:Agile Practices 敏捷实践
         The Agile Alliance 敏捷联盟
         Individuals and Interactions over Processes and Tools人和交互重于过程和工具
         Working Software over Comprehensive Documentation 可以工作的软件重于面面俱到的文档
         Customer Collaboration over Contract Negotiation 客户合作重于合同谈判
         Responding to Change over Following a Plan 随时应对变化重于遵循计划
         Principles 原则
         Conclusion 结论
         Bibliography 参考文献
         Chapter 2:Overview of Extreme Programming 极限编程概述
         The Practices of Extreme Programming 极限编程实践
         Whole Team 完整团队
         User Stories 用户故事
         Short Cycles 短交付周期
         Acceptance Tests 验收测试
         Pair Programming 结对编程
         Test.Driven Development(TDD) 测试驱动开发
         Collective Ownership 集体所有权
         Continuous Integration 持续集成
         Sustainable Pace 可持续的开发速度
         Open Workspace 开放的工作空间
         The Planning Game 计划游戏
         Simple Design 简单设计
         Refactoring 重构
         Metaphor 隐喻
         Conclusion 结论
         Bibliography 参考文献
         Chapter 3:Planning 计划
         Initial Exploration 初始探索
         Spiking,Splitting,and Velocity 探究、分解和速度
         Release Planning 发布计划
         Iteration Planning 迭代计划
         Defining“Done” 定义“完成”
         Tlask Planning 任务计划
         Iterating 迭代
         Tracking 跟踪
         Conclusion 结论
         Bibliography 参考文献
         Chapter 4:Testing 测试
         TIest-Driven Development 测试驱动开发
         Example of Test-First Design 测试优先设计的例子
         Test Isolation 测试促使模块之间隔离
         Serendipitous Decoupling 意外获得的解耦合
         Acceptance Tests 验收测试
         Serendipitous Architecture 意外获得的构架
         Conclusion 结论
         Bibliography 参考文献
         Chapter 5:Refactoring 重构
         A Simple Example of Refactoring:Generating Primes 素数产生程序:一个简单的重构示例
         Unit Testing 单元测试
         Refactoring 重构
         The Final Reread 最后审视
         Conclusion 结论
         Bibliography 参考文献
         Chapter 6:A Programming Episode 一次编程实践
         The Bowling Game 保龄球比赛
         Conclusion 结论
         Overview of the Rules of Bowling 保龄球规则概述
         Section II Agile Design 敏捷设计
         Chapter 7:What Is Agile Design 什么是敏捷设计
         Design Smells 设计臭味
         Design Smells——The Odors of Rotting Software 设计坏味——腐化软件的气味
         Rigidity 僵化性
         Fragility 脆弱性
         Immobility 顽固性
         Viscosity 粘滞性
         Needless Complexity 不必要的复杂性
         NeedLless Repetition 不必要的重复
         Opacity 晦涩性
         Why Software Rots 软件为何会腐化
         The Copy Program Copy 程序
         A Familiar Scenario 熟悉的场景
         Agile Design of the Copy Program copy 程序的敏捷设计
         Conclusion 结论
         Bibliography 参考文献
         Chapter 8:The Single-Responsibility Principle(SRP) SRP:单一职责原则
         Defining a Responsibility 定义职责
         Separating Coupled Responsibilities 分离耦合的职责
         Persistence 持久化
         Conclusion 结论
         Bibliography 参考文献
         Chapter 9:The Open/Closed Principle(OCP) OCP:开放-封闭原则
         Description 0f OCP OCP概述
         The Shape Application Shape 应用程序
         Violating OCP 违反OCP
         Conforming to OCP 遵循OCP
         Anticipation and“Natural”Structure 预测变化和“贴切的”结构
         Putting the“Hooks”In 放置吊钩
         Using Abstraction to Gain Explicit Closure使用抽象获得显式封闭
         Using a Data-Driven Approach to Achieve Closure 使用“数据驱动"的方法获取封闭性
         Conclusion结论
         Bibliography参考文献
         Chapter 10:The Liskov Substitution Principle(LSP) LSP:Liskov替换原则
         Violations 0f LSP 违反LS P的情形
         A Simple Example 简单例子
         A More Subtle Violation 更微妙的违反情形
         A Real-World Example 实际的例子
         Factoring Instead of Deriving 用提取公共部分的方法代替继承
         Heuristics and Conventions 启发式规则和习惯用法
         Conclusion 结论
         Bibliography 参考文献
         Chapter 11:The Dependency-Inversion Principle(DIP) DIP:依赖倒置原则
         Layering 层次化
         Ownership Inversion 倒置的接口所有权
         Dependence on Abstractions 依赖于抽象
         A Simple DIP Example 简单的DIP示例
         Finding the Underlying Abstraction 找出潜在的抽象
         The Furnace Example 熔炉示例
         Conclusion 结论
         Bibliography 参考文献
         Chapter 12:The Interface Segregation Principle(ISP) ISP:接口隔离原则
         Interface Pollution 接口污染
         Separate Clients Mean Separate Interfaces 分离客户就是分离接口
         Class Interfaces versus Object Interfaces 类接口与对象接口
         Separation Through Delegation 使用委托分离接口
         Separation Through Multiple Inheritance 使用多重继承分离接口
         The ATM User Interface Example ATM用户界面的例子
         Conclusion 结论
         Bibliography 参考文献
         Chapter 13:Overview of UML for C# Programmers C#程序员UML概观
         Class Diagrams 类图
         Object Diagrams 对象图
         Sequence Diagrams 顺序图
         Collaboration Diagrams 协作图
         State Diagrams 状态图
         Conclusion 结论
         Bibliography 参考文献
         Chapter 14:Working with Diagrams 使用UML
         Why Model? 为什么建模
         Why Build Models of Software? 为什么构建软件模型
         Should We Build Comprehensive Designs Before Coding? 编码前应该构建面面俱到的设计吗
         Making Effective Use of UML 有效使用UML
         Communicating with Others 与他人交流
         Road Maps 脉络图
         Back-End Documentation 项目结束文档
         What to Keep and What to Throw Away 要保留的和要丢弃的
         Iterative Refinement 迭代式改进
         Behavior First 行为优先
         Check the Structure 检查结构
         Envisioning the Code 想象代码
         Evolution of Diagrams 图的演化
         When and How to Draw Diagrams 何时以及如何绘制图示
         When to Draw Diagrams and When to Stop 何时要画图,何时不要画图
         CASE Tools CASE工具
         But What About Documentation? 那么,文档呢
         Conclusion 结论
         Chapter 15 State Diagrams 状态图
         The Basics 基础知识
         Special Events 特定事件
         Superstates 超状态
         Initial and Final Pseudostates 初始伪状态和结束伪状态
         Using FSM Diagrams 使用FSM图示
         Conclusion 结论
         Chapter 16:Object Diagrams 对象图
         A Snapshot in Time 即时快照
         Active Objects 主动对象
         Conclusion 结论
         Chapter 17:Use Cases 示例
         Writing Use Cases 编写用例
         Alternate Courses 备选流程
         What Else? 其他东西呢
         Diagramming Use Cases 用例图
         Conclusion 结论
         Bibliography 参考文献
         Chapter 18:Sequence Diagrams 顺序图
         The Basics 基础知识
         Obj ects,Lifelines,Messages,and Other Odds and Ends 对象、生命线、消息及其他
         Creation and Destruction 创建和析构
         Simple Loops 简单循环
         Cases and Scenarios 时机和场合
         Advanced Concepts 高级概念
         Loops and Conditions 循环和条件
         Messages That Take Time 耗费时间的消息
         Asynchronous Messages 异步消息
         Multiple Threads 多线程
         Active Objects 主动对象
         Sending Messages to Interfaces 向接口发送消息
         Conclusion 结论
         Chapter 19:Class Diagrams 类图
         The Basics 基础知识
         Classes 类
         Association 关联
         Inheritance 继承
         An Example Class Diagram 类图示例
         The Details 细节
         Class Stereotypes 类衍型
         Abstract Classes 抽象类
         Properties 属性
         Aggregation 聚集
         Composition 组合
         Multiplicity 多重性
         Association Stereotypes 关联衍型
         Nested Classes 内嵌类
         Association Classes 关联类
         Association Qualifiers 关联修饰符
         Conclusion 结论
         Bibliography 参考文献
         Chapter 20 Heuristics and C0ffee 咖啡的启示
         The Mark IV Special Coffee Maker Mark IV型专用咖啡机
         Specification 规格说明书 260
         A Common but Hideous Solution 常见的丑陋方案
         Imaginary Abstraction 虚构的抽象
         An Improved Solution 改进方案
         Implementing the Abstract Model 实现抽象模型
         The Benefits of This Design 这个设计的好处
         Ooverkill 面向对象过度设计
         Bibliography 参考文献
         Section Ⅲ The Payroll Case Study 薪水支付案例研究
         Rudimentary Specification of the Payroll System 薪水支付系统的初步规格说明
         Exercise 练习
         Use Case 1:Add New Employee 用例1:增加新雇员
         Use Case 2:Deleting an Employee 用例2:删除雇员
         Use Case 3:Post a Time Card 用例3:登记考勤卡
         Use Case 4:Posting a Sales Receipt 用例4:登记销售凭条
         Use Case 5:Posting a Union Service Charge 用例5:登记工会服务费
         Use Case 6:Changing Employee Details 用例6:更改雇员明细
         Use Case 7:Run the Payroll for Today 用例7:现在运行薪水支付系统
         Chapter 21:Command and Active Object:Versatility and Multitasking COMMAND模式和ACTlVE OBJECT模式:多功能与多任务
         Simple Commands 简单的Command
         Transactions 事务
         Physical and Temporal Decoupling 实体上解耦和时间上解耦
         Temporal Decoupling 时间上解耦
         Undo Method Undo()方法
         Active Object ACTIVE OBJECT模式
         Conclusion 结论
         Bibliography 参考文献
         Chapter 22:Template Method and Strategy:Inheritance versus Delegation TEMPLATE METHOD模式和STRATEGY模式:继承和委托
         Template Method TEM PLATE METHOD模式
         Pattern Abuse 滥用模式
         Bubble Sort 冒泡排序
         Strategy STRATEGY模式
         Conclusion 结论
         Bibliography 参考文献
         Chapter 23:Facade and Mediator FACAD E模式和MEDIATOR模式
         Facade FACADE模式
         Mediator MEDIATOR模式
         Conclusion 结论
         Bibliography 参考文献
         Chapter 24:Singleton and Monostate SINGLETON模式和MONOSTATE模式
         Singleton SINGLETON模式
         Benefits SINGLETON模式的好处
         Costs SINGLETON模式的代价
         Singleton in Action 运用SINGLETON模式
         Monostate MONOSTATE模式
         Benefits MONOSTATE模式的好处
         Costs MONOSTATE模式的代价
         Monostate in Action 运用MONOSTATE模式
         Conclusion 结论
         Bibliography 参考文献
         Chapter 25:Null Object NULL OBJECT
         Description 描述
         Conclusion 结论
         Bibliography 参考文献
         Chapter 26:The Payroll Case Study:Iteration 1 薪水支付案例研究:第一次迭代开始
         Rudimentary Specification 初步的规格说明
         Analysis by Use Cases 基于用例分析
         Adding Employees 增加新雇员
         Deleting Employees 删除雇员
         Posting Time Cards 登记考勤卡
         Posting Sales Receipts 登记销售凭条
         Posting a Union Service Charge 登记工会服务费
         Changing Employee Details 更改雇员明细
         Payday 发薪日
         Reflection:Finding the Underlying Abstractions 反思:找出底层的抽象
         Employee Payment 雇员支付类别抽象
         Payment Schedule 支付时间表抽象
         Payment Methods 支付方式
         Affiliations 从属关系
         Conclusion 结论
         Bibliography 参考文献
         Chapter 27:The Payroll Case Study:Implementation 薪水支付案例研究:实现
         Transactions 事务
         Adding Employees 增加雇员
         Deleting Employees 删除雇员
         Time Cards,Sales Receipts,and Service Charges 考勤卡、销售凭条以及服务费用
         Changing EmplOyees 更改雇员属性
         What Was I Smoking? 犯了什么晕
         Paying Employees 支付雇员薪水
         Paying Salaried Employees 支付领月薪的雇员薪水
         Paying Hourly Employees 支付钟点工薪水
         Main Program 主程序
         The Database 数据库
         Conclusion 结论
         About This Chapter 关于本章
         Bibliography 参考文献
         Section IV:Packaging the Payroll System 打包薪水支付系统
         Chapter 28:Principles of Package and Component Design 包和组件的设计原则
         Packages and Components 包和组件
         Principles of Component Cohesion:Granularity 组件的内聚性原则:粒度
         The Reuse/Release Equivalence Principle(REP) 重用-发布等价原则
         The Common Reuse Principle(CRP) 共同重用原则
         The Common Closure Principle(CCP) 共同封闭原则
         Summary of Component Cohesion 组件内聚性总结
         Principles of Component Coupling:Stability 组件的耦合陛原则:稳定性
         The Acyclic Dependencies Principle(ADP) 无环依赖原则
         The Stable-Dependencies Principle(SDP) 稳定依赖原则
         The Stable-Abstractions Principle(SAP) 稳定抽象原则
         Conclusion 结论
         Chapter 29:Factory FACTORY模式
         A Dependency Problem 依赖问题
         Static versus Dynamic Typing 静态类型与动态类型
         SubStitutable Factories 可替换的工厂
         Using Factories for TIest Fixtures 对测试支架使用对象工厂
         Importance of Factories 工厂的重要性
         Conclusion 结论
         Bibliography 参考文献
         Chapter 30:The Payroll Case Study:Package Analysis 薪水支付案例研究:包分析
         Component Structure and Notation 组件结构和符号
         Applying the Common Closure Principle(CCP) 应用CCP
         Applying the Reuse/Release Equivalence Principle(REP) 应用REP
         Coupling and Encapsulation 耦合和封装
         Metrics 度量
         Applying the Metrics to the Payroll Application 度量薪水支付应用程序
         Object Factories 对象工厂
         Rethinking the Cohesion Boundaries 重新思考内聚的边界
         The Final Packaging Structure 最终的包结构
         Conclusion 结论
         Bibliography 参考文献
         Chapter 31:Composite  COMPOSITE模式
         Composite Commands 组合命令
         Multiplicity or No Multiplicity 多重性还是非多重性
         Conclusion 结论
         Chapter 32:Observer:Evolving into a Pattern OBSERVER——演化至模式
         The Digital Clock 数字时钟
         The Observer Pattern OBSERVER模式
         Models 模型
         Management of OOD Principles 面向对象设计原则的运用
         Conclusion 结论
         Bibliography 参考文献
         Chapter 33:Abstract Server,Adapter,and Bridge ABSTRACTSERVER模式、ADAPTER模式和BRIDGE模式
         Abstract Server ABSTRACT SERVER模式
         Adapter ADAPTER模式
         The Class Form of Adapter 类形式ADAPTER模式
         The Mode,m Problem,Adapters,and LSP 调制解调器问题、适配器以及LSP
         Bridge BRIDGE模式
         Conclusion 结论
         Bibliography 参考文献
         Chapter 34:Proxy and Gateway:Managing Third-Party APIs PROXY模式和GATEWAY模式:管理第三方API  Proxy PROXY 模式
         Implementing Proxy 实现PROXY模式
         Summary 小结
         Databases,Middleware,and Other Third.Party Interfaces 数据库、中间件以及其他第三方接口
         Table Data Gateway TABLE DATA GATEWAY
         Testing and In.Memory TDGs 测试和内存TDG
         Testing the DB Gateways 测试DbGateWay
         Using Other Patterns with Databases 可以用于数据库的其他模式
         Conclusion 结论
         Bibliography 参考文献
         Chapter 35:Visitor VISITOR模式
         VISITOR VISITOR模式
         Acyclic Visitor ACYCLIC VISITOR模式
         Uses of VISITOR 使用VISITOR模式
         Decorator DECORATOR模式
         Extension Object EXTENSION OBJECT模式
         Conclusion 结论
         Bibliography 参考文献
         Chapter 36:State STATE模式
         Nested Switch/Case Statements 嵌套switch/case语句
         The Internal Scope State Variable 内部作用域的状态变量
         Testing the Actions 测试动作
         Costs and Benefits 代价和收益
         Transition Tables 迁移表
         Using Table Interpretation 使用表解释
         Costs and Benefits 代价和收益
         The State Pattern STATE模式
         State versus Strategy STATE模式和STRATEGY模式
         Costs and Benefits 代价和收益
         The State Machine Compiler(SMC) 状态机编译器
         Turnstile.CS Generated by SMC,and Other Support Files SMC生成的Turnstile.CS以及其他支持文件 593
         Costs and Benefits 代价和收益
         Classes of State Machine Application 状态机应用的场合
         High-Level Application Policies for GUIs 作为GUI中的高层应用策略
         GUI Interaction Controllers GUI交互控制器
         Distributed Processing 分布式处理
         Conclusion 结论
         Bibliography 参考文献
         Chapter 37:The Payroll Case Study:The Database 薪水支付案例研究:数据库
         Building the Database 构建数据库
         A Flaw in the Code Design 一个代码设计缺陷
         Adding an Employee 增加雇员
         Transactions 事务
         Loading an Employee 加载Employee对象
         What Remains? 还有什么工作
         Chapter 38:The Payroll User Interface:Model View Presenter 薪水支付系统用户界面:Model-View-Presenter
         The Interface 界面
         Implementation 实现
         Building a Window 构建窗口
         The Payroll Window Payroll 窗口
         The Unveiling 真面目
         Conclusion 结论
         Bibliography 参考文献
         Appendix A:A Satire of Two Companies 双公司记
         Rufus Inc.:Proj ect Kickoff Rufus公司:“日落”项目 671 Rupert Industries:Project Alpha Rupert工业公司:“朝晖”项目
         Appendix B:What Is Software? 什么是软件
         Index索引
      · · · · · ·     (
收起)