书籍详情

敏捷软件开发:原则、模式和实践(C#版•;英文注释版)

敏捷软件开发:原则、模式和实践(C#版•;英文注释版)

作者:Robert C.Martin, Micah Martin

出版社:人民邮电出版社

出版时间:2007-12-01

ISBN:9787115165077

定价:¥89.00

购买这本书可以去
内容简介
  《敏捷软件开发:原则、模式与实践(C#版)(英文版)》旨在指导.NET程序员学习构建软件的最佳实践,从而创建更好的设计并提升.NET应用的质量。书中使用真实案例讲解如何用极限编程来设计、测试、重构和结对编程,包含了极具价值的可重用的C#源代码,还重点讲述了如何使用UML和设计模式解决面向客户系统的问题。《敏捷软件开发:原则、模式与实践(C#版)(英文版)》适于软件开发和管理人员提高自身水平学习之用,也适于用作高校计算机专业本科生、研究生以及软件学院的软件工程和软件开发相关课程的教材或参考书。
作者简介
  Robert C.Martin世界级的软件开发大师,著名软件咨询公司Object Mentor公司的创始人和总裁。曾经担任C++ Report杂志主编多年,也是设计模式和敏捷开发运动的主要倡导者之一。
目录
Section I:Agile D evelop ment敏捷开发        1
Chapter 1:Agile Practices敏捷实践        3
  The Agile Alliance敏捷联盟        4
    Individuals and Interactions over Processes and Tools人和交互重于过程和工具        5
    Working Software over Comprehensive Documentation  
    可以工作的软件重于面面俱到的文档        6
    Customer Collaboration over Contract NegOtiatiOn客户合作重于合同谈判        6
    Responding to Change over Following a Plan随时应对变化重于遵循计划        7
  Principles原则        10
  Conclusion结论        10
  Bibliography参考文献        11
Chapter 2:Overview of Extreme Programming极限编程概述        13
  The Practices of Extreme Programming极限编程实践        14
    Whole Team完整团队        l4
    User Stories用户故事        15
    Short Cycles短交付周期        16
    Acceptance Tests验收测试        16
    Pair Programming结对编程        16
    Test.Driven Development(TDD)测试驱动开发        17
    Collective Ownership集体所有权        17
    Continuous Integration持续集成        17
    Sustainable Pace可持续的开发速度        18
    Open Workspace开放的工作空间        18
    The Planning Game计划游戏        19
    Simple Design简单设计        19
    Refactoring重构        20
    Metaphor 隐喻        21
    Conclusion结论        22
    Bibliography参考文献        22
Chapter 3:Planning计划        23
    lnitial Exploration初始探索        24
    Spiking,Splitting,and Velocity探究、分解和速度        24
    Release Planning发布计划        25
    Iteration Planning迭代计划        25
    Defining“Done”定义“完成”        26
    Tlask Planning任务计划        26
    Iterating迭代        27
    Tracking跟踪        28
    Conclusion结论        29
    Bibliography参考文献        29
Chapter 4:Testing测试        31
    TIest-Driven Development测试驱动开发        32
    Example of Test—First Design测试优先设计的例子        32
    Test Isolation测试促使模块之间隔离        33
    Serendipitous Decoupling意外获得的解耦合        36
    Acceptance Tests验收测试        36
    Serendipitous Architecture意外获得的构架        37
    Conclusion结论        38
    Bibliography参考文献        39
Chapter 5:Refactoring重构        41
  A Simple Example of Refactoring:Generating Primes素数产生程序:一个简单的重构示例        42
    Unit Testing单元测试        44
    Refactoring重构        45
    The Final Reread最后审视        49
    Conclusion结论        53
    Bibliography参考文献        54
Chapter 6:A Programming Episode一次编程实践        55
    The Bowling Game保龄球比赛        56
    Conclusion结论        98
    Overview of the Rules of Bowling保龄球规则概述        99
Section II  Agile D esign敏捷设计        101
Chapter 7:What Is Agile Design什么是敏捷设计        103
    Design Smells设计臭味        104
    Design Smells--The Odors of Rotting Software设计坏味——腐化软件的气味        104
    Rigidity僵化性        105
    Fragility脆弱性        105
    Immobility顽固性        105
    Viscosity粘滞性        105
    Needless Complexity不必要的复杂性        106
    NeedLless Repetition不必要的重复        106
    Opacity晦涩性        107
    Why Software Rots软件为何会腐化        107
    The Copy Program Copy程序        108
    A Familiar Scenario熟悉的场景        108
    Agile Design of the Copy Program copy程序的敏捷设计        111
    Conclusion结论        1l 3
    Bibliography参考文献        114
Chapter 8:The Single-Responsibility Principle(SRP)
    S R P:单一职责原则        1l 5
    Defining a Responsibility定义职责        117
    Separating Coupled Responsibilities分离耦合的职责        119
    Persistence持久化        119
    Conclusion结论        119
    Bibliography参考文献        120
Chapter 9:The Open/Closed Principle(OCP)
    OC P:开放一封闭原贝IJ        12l
    Description 0f oCP OCP概述        122
    The Shape Application Shape应用程序        124
    Violating OCP违反OCP        124
    Conforming to OCP j望循OCP        127
    Anticipation and“Natural”Structure预测变化和“贴切的”结构        128
    Putting the“Hooks”In放置吊钩        129
    Using Abstraction to Gain Explicit Closure使用抽象获得显式封闭        13O
    Using a Data--Driven Approach to Achieve Closure
    使用“数据驱动"的方法获取封闭性        131
    Conclusion结论        132
    Bibliography参考文献        133
Chapter 10:The Liskov Substitution Principle(LSP)
    LS P:Liskov替换原则        135
    Violations 0f LSP违反LS P的情形        136
    A Simple Example简单例子        136
    A More Subtle Violation更微妙的违反情形        138
    A Real.World Example实际的例子        143
    Factoring Instead of Deriving用提取公共部分的方法代替继承        148
    Heuristics and Conventions启发式规则和习惯用法        15O
    Conclusion结论        151
    Bibliography参考文献        151
Chapter 11:The Dependency--Inversion Principle(DIP)
    D I P:依赖倒置原则        153
    Layering层次化        l 54
    Ownership Inversion倒置的接口所有权        155
    Dependence on Abstractions依赖于抽象        156
    A Simple DIP Example简单的D l P示例        157
    Finding the Underlying Abstraction找出潜在的抽象        158
    The Furnace Example熔炉示例        160
    Conclusion结论        161
    Bibliography参考文献        162
Chapter 12:The Interface Segregation Principle(ISP)
    ISP:接口隔离原则        163
    Interface Pollution接口污染        163
    Separate Clients Mean Separate Interfaces分离客户就是分离接口        165
    Class Interfaces versus Obj ect Interfaces类接口与对象接口        166
    Separation Through Delegation使用委托分离接口        167
    Separation Through Multiple Inheritance使用多重继承分离接口        168
    The ATM User Interface Example ATM用户界面的例子        169
    Conclusion结论        174
    Bibliography参考文献        175
Chapter 13  Overview of UML for Cjfj6Programmers c≠}程序员UM嘲        177
    Class Diagrams类图        180
    Obj ect Diagrams对象图        182
    Sequence Diagrams顺序图        182
    Collaboration Diagrams协作图        183
    State Diagrams状态图        184
    Conclusion结论        185
    Bibliography参考文献        j185
Chapter 14:Working with Diagrams使用UML        187
    Why Model?为什么建模        187
    Why Build Models of Software'?为什么构建软件模型        188
    Should We Build Comprehensive Designs Before Coding?--编码前应该构建面面俱到的设计吗        188
    Making Effective Use of UML有效使用U M L        189
    Communicating with Others与他人交流        189
    Road Maps脉络图        191
    Back-End Documentation项目结束文档        192
    What to Keep and What to Throw Away要保留的和要丢弃的        192
    Iterative Refinement迭代式改进        194
    Behavior First行为优先        194
    Check the Structure检查结构        196
    Envisioning the Code想象代码        198
    Evolution of Diagrams图的演化        199
    When and How to Draw Diagrams何时以及如何绘制图示        200
    When to Draw Diagrams and When to Stop何时要画图,何时不要画图        200
    CASE Tools CASE工具            201
    But What About Documentation?那么,文档呢        202
    Conclusion结论        202
Chapter 15  State Diagrams状态图        203
  The Basics基础知识        204
    Special Events特定事件        205
    Superstates超状态        206
    Initial and Final Pseudostates初始伪状态和结束伪状态        207
  Using FSM Diagrams使用FSM图示          208
  Conclusion结论        209
Chapter 16:Obj ect Diagrams对象图        211
  A Snapshot in Time即时快照        212
  Active Obj ects主动对象        213
  Conclusion结论        217
C hapter 17:Use C ases j~N        219
  Writing Use Cases编写用例        220
    Alternate Courses备选流程        221
    What Else?其他东西呢          221
  Diagramming Use Cases用例图        222
  Conclusion结论        223
  Bibliography参考文献        223
Chapter 18:Sequence Diagrams顺序图        225
  The Basics基础知识        226
    Obj ects,Lifelines,Messages,and Other Odds and Ends对象、生命线、消息及其他        226
    Creation and Destruction创建和析构        227
    Simple Loops简单循环        228
    Cases and Scenarios时机和场合        228
  Advanced Concepts高级概念        232
    Loops and Conditions循环和条件        232
    Messages That Take Time耗费时间的消息        233
    Asynchronous Messages异步消息        235
    Multiple Threads多线程        239
    Active Obj ects主动对象        240
    Sending Messages to Interfaces向接口发送消息        240
    Conclusion结论        241
  C hapter 19:Class Diagrams类图        243
    The Basics基础知识        244
    Classes类        244
    Association关联        245
    Inheritance继承        246
    An Example Class Diagram类图示例        247
    The Details细节        249
    Class Stereotypes类衍型        249
    Abstract Classes抽象类        250
    Properties属性        251
    Aggregation聚集        252
    Composition组合        253
    Multiplicity多重性        254
    Association Stereotypes关联衍型        255
    Nested Classes内嵌类        256
    Association Classes关联类        256
    Association Qualifiers关联修饰符        257
    Conclusion结论        258
    Bibliography参考文献        258
Chapter 20  Heuristics and C0ffee咖啡的启示        259
    The Mark IV Special Coffee Maker Mark lV型专用咖啡机        260
    Specification规格说明书        260
    A Common but Hideous Solution常见的丑陋方案        263
    Imaginary Abstraction虚构的抽象        265
    An Improved Solution改进方案        266
    Implementing the Abstract Model实现抽象模型        270
    The Benefits of This Design这个设计的好处        277
    OOverkill面向对象过度设计          279
    Bibliography参考文献        292
Section 1II  The Payroll C ase Study薪水支付案例研究        293
    Rudimentary Specification of the Payroll System薪水支付系统的初步规格说明        294
    Exercise练习        295
    Use Case 1:Add New Employee用例1:增加新雇员        295
    Use Case 2:Deleting an Employee用例2:删除雇员        295
    Use Case 3:Post a Time Card用例3:登记考勤卡        296
    Use Case 4:Posting a Sales Receip t用例4:登记销售凭条        296
    Use Case 5:Posting a Union Service Charge用例5:登记工会服务费        296
    Use Case 6:Changing Employee Details用例6:更改雇员明细        296
    Use Case 7:Run the Payroll for Today用例7:现在运行薪水支付系统        297
Chapter 21:Command and Active Obj ect:Versatility and Multitasking COM MAN D模式和ACTlVE OBJECT模式:多功能与多任务        299
    Simple Commands简单的Command        300
    Transactions事务        302
    Physical and Temporal Decoupling实体上解耦和时间上解耦        304
    Temporal Decoupling时间上解耦        304
    Undo Method Undo()方法        304
    Active Obj ect ACTIVE OBJ ECT模式        305
    Conclusion结论        31O
    Bibliography参考文献        31O
Chapter 22:Template Method and Strategy-.Inheritance versus Delegation TEMPLATE METHOD模式~13STRATEGY模式:继承和委托        311
    Template Method TEM PLATE M ETHOD模式        312
    Pattern Abuse滥用模式        315
    Bubb l e S o r t冒泡排序        316
    Strategy STRATEGY模式        319
    Conclusion结论        324
    Bibliography参考文献        324
Chapter 23"Facade and Mediator FACAD E模式~13MEDIATO R模式        325
    Facade FACAD E模式        325
    Mediator M E D IATOR模式        327
    Conclusion结论        329
    Bibliography参考文献        329
  Chapter 24"一Singleton and Monostate SlNGL日_ON模式和MONOSTATE模式        331
    Singleton SI N G LETON模式        332
    Benefits SINGLETON模式的好处        334
    Costs SINGLETON模式的代价        334
    Singleton in Action运用SINGLETON模式        334
    Monostate MO NOSTATE模式        336
    Benefits MONOSTATE模式的好处        337
    Costs MONOSTATE模式的代价        338
    Monostate in Action运用MONOSTATE模式        338
    Conclusion结论        343
    Bibliography参考文献        343
Chapter 25:Null Obj ect NULL OBJECT        345
  Description描述        345
  Conclusion结论        348
  Bibliography参考文献        348
Chapter 26:The Payroll Case Study:Iteration 1
    薪水支付案例研究:第一次迭代开始        349
    Rudimentary Specification初步的规格说明        350
    Analysis by Use Cases基于用例分析        351
    Adding Employees增加新雇员        352
    Deleting Employees删除雇员        353
    Posting Time Cards登记考勤卡        354
    Posting Sales Receipts登记销售凭条        354
    Posting a Union Service Charge登记工会服务费        355
    Changing Employee Details更改雇员明细        356
    Payday发薪日        358
    Reflection'.Finding the Underlying Abstractions反思:找出底层的抽象        360
    Employee Payment雇员支付类别抽象        360
    Payment Schedule支付时间表抽象        360
    Payment Methods支付方式        362
    Affiliations从属关系        362
    Conclusion结论        363
    Bibliography参考文献        363
  Chapter 27"The Payroll Case Study:Implementation
    薪水支付案例研究:实现        365
    Transactions事务        366
    Adding Employees增加雇员        366
    Deleting Employees删除雇员        372
    Time Cards,Sales Receipts,and Service Charges考勤卡、销售凭条以及服务费用        373
    Changing EmplOyees更改雇员属性        381
    What Was I Smoking?犯了什么晕        390
    Paying Employees支付雇员薪水        393
    Paying Salaried Employees支付领月薪的雇员薪水        396
    Paying Hourly Employees支付钟点工薪水        398
    Main Program主程序        408
    The Database数据库        409
    Conclusion结论        411
    About This Chapter关于本章        411
    Bibliography参考文献        412
Section IV:Packaging the Payroll System
    打包薪水支付系统        413
  Chapter 28:Principles of Package
  an d C o mp o n ent D esign包和组件的设计原则        415
    Packages and Components包和组件        416
    Principles of Component Cohesion:Granularity组件的内聚性原则:粒度        417
    The Reuse/Release Equivalence Principle(REP)重用一发布等价原则        417
    The Common Reuse Principle(CRP)共同重用原则        418
    The Common Closure Principle(ccP)共同封闭原则        419
    Summary of Component Cohesion组件内聚性总结        420
    Principles of Component Coupling:Stability组件的耦合陛原则:稳定性        420
    The Acyclic Dependencies Principle(ADP)无环依赖原则        420
    The Stable—Dependencies Principle(SDP)稳定依赖原则        426
    The Stable—Abstractions Principle(SAP)稳定抽象原则        431
    Conclusion结论        “435
Chapter 29"Factory FACTORY~        437
    A Dependency Problem依赖问题        √440
    Static versus Dynamic Typing静态类型与动态类型        √441
    SubStitutable Factories可替换的工厂        “442
    Using Factories for TIest Fixtures对测试支架使用对象工厂        √443
    Importance of Factories工厂的重要性        “444
    Conclusion结论        445
    Bibliography参考文献        445
  Chapter 30:The Payroll Case Study:Package Analysis
    薪水支付案例研究:包分析        447
    Component Structure and Notation组件结构和符号        448
    Applying the Common Closure Principle(CCP)/EIII CCP        450
    Applying the Reuse/Release Equivalence Principle(REP)/E,EB REP        452
    Coupling and Encapsulation耦合和封装        454
    Metrics度量        455
    Applying the Metrics to the Payroll Application度量薪水支付应用程序        457
    Obj ect Factories x,/N2J-        460
    Rethinking the Cohesion Boundaries重新思考内聚的边界        461
    The Final Packaging Structure最终的包结构        463
    Conclusion结论        465
    Bibliography参考文献        465
  C hapter 31:C omposite COM POSITE模式        467
    Composite Commands组合命令        469
    Multiplicity or No Multiplicity多重性还是非多重性        470
    Conclusion结论        470
  Chapter 32"Observer"Evolving into a Pattern
    O BS E RVE R——演化至模式        47l
    The Digital Clock数字时钟        472
    The Observer Pattern OBSE RVE R模式        491
    Models模型        491
    Management of OOD Principles面向对象设计原则的运用        492
    Conclusion结论        493
    Bibliography参考文献        494
Chapter 33"Abstract Server,Adapter,and Bridge
    ABSTRACT S E RVE R模式、ADAPTE R模式~I:IBRIDG E模式        495
    Abstract Server ABSTRACT S E RVE R模式        496
    Adapter ADAPTE R模式        498
    The Class Form of Adapter类形式ADAPTER模式        498
    The Mode,m Problem,Adapters,and LSP调制解调器问题、适配器以及LSP        499
    Bridge BRI DG E模式        503
    Conclusion结论        505
    Bibliography参考文献        506
Chapter 34"Proxy and Gateway".Managing
Third-Party APIs P ROXY模式~N GATEWAY模式:管理第三方API        507
    Proxy PROXY模式        508
    Implementing Proxy实现PROXY模式        512
    Summary小结        525
    Databases,Middleware,and Other Third.Party Interfaces
    数据库、中间件以及其他第三方接口        526
    Table Data Gateway TABLE DATA GATEWAY        528
    Testing and In.Memory TDGs测试和内存TDG        535
    Testing the DB Gateways测试DbGatel\№y        536
    Using Other Patterns with Databases可以用于数据库的其他模式        539
    Conclusion结论        541
    Bibliography参考文献        541
C hapter 35"Visitor VI S ITO R模式        543
    VISITOR VI S ITO R模式        544
    Acyclic Visitor ACYCLI C VI SITOR模式        548
    U ses of VISITOR使用VISITOR模式        552
    Decorator D ECO RATOR模式        560
    Extension Obj ect EXTE N S IO N O BJ ECT模式        565
    Conclusion结论        576
    Bibliography参考文献        577
Chapter 36:State STATE模式        579
    Nested Swi tch/Case Statements嵌套switch/case语句        580
    The Internal Scope State Variable内部作用域的状态变量        583
    Testing the Actions测试动作        583
    Costs and Benefits代价和收益        583
    Transition Tables迁移表        584
    Using Table Interpretation使用表解释        585
    Costs and Benefits代价和收益        586
    The State Pattern STATE模式        586
    State versus Strategy STATE模式和STRATEGY模式        589
    Costs and Benefits代价和收益        590
    T]he State Machine Compiler(SMCl状态机编译器        591
    Turnstile.CS Generated by SMC.and Other Support Files
    SMC生成的Turns t i l e.C S以及其他支持文件        593
    Costs and Benefits代价和收益        598
    Classes of State Machine Application状态机应用的场合        598
    High—Level Application Policies for GUIs作为GUI中的高层应用策略        599
    GUI Interaction Controllers GUI交互控制器        600
    Distributed Processing分布式处理        601
    C onclusion结论        602
    Bibliography参考文献        602
Chapter 37  The Payroll Case Study'.The Database
    薪水支付案例研究:数据库        603
    Building the Database构建数据库        604
    A Flaw in the Code Design一个代码设计缺陷        605
    Adding an E mployee增加雇员        607
    Transactions事务        618
    Loading an E mployee加载Employee对象        623
    What Remains?还有什么工作        636
Chapter 38  The Payroll User Interface"Model View
Presenter薪水支付系统用户界面:Model—View—P resente r        637
    The Interface界面        639
    Implementation实现        640
    Building a Window构建窗口        650
    The Payroll Window Payroll窗口        657
    The Unveiling真面目        669
    Conclusion结论        670
    Bibliography参考文献        670
Appendix A:A Satire of Two C ompanies双公司记        671
  Rufus Inc.:Proj ect Kickoff Rufus公司:“日落”项目        671
  Rupert Industries'.Proj ect Alpha Rupert工业公司:“朝晖”项目        671
Appendix B:What Is Software?什么是软件        687
Index索引        699

猜您喜欢

读书导航