Agile Principles, Patterns, and Practic... | WHSmith Books
Agile Principles, Patterns, and Practices in C#

Agile Principles, Patterns, and Practices in C#

By: Micah Martin (author), Robert C. Martin (author)Hardback

Up to 2 WeeksUsually despatched within 2 weeks

£47.19 RRP £58.99  You save £11.80 (20%) With FREE Saver Delivery


With the award-winning book Agile Software Development: Principles, Patterns, and Practices, Robert C. Martin helped bring Agile principles to tens of thousands of Java and C++ programmers. Now .NET programmers have a definitive guide to agile methods with this completely updated volume from Robert C. Martin and Micah Martin, Agile Principles, Patterns, and Practices in C#.This book presents a series of case studies illustrating the fundamentals of Agile development and Agile design, and moves quickly from UML models to real C# code. The introductory chapters lay out the basics of the agile movement, while the later chapters show proven techniques in action. The book includes many source code examples that are also available for download from the authors' Web site.Readers will come away from this book understandingAgile principles, and the fourteen practices of Extreme Programming Spiking, splitting, velocity, and planning iterations and releases Test-driven development, test-first design, and acceptance testing Refactoring with unit testing Pair programming Agile design and design smells The five types of UML diagrams and how to use them effectively Object-oriented package design and design patterns How to put all of it together for a real-world projectWhether you are a C# programmer or a Visual Basic or Java programmer learning C#, a software development manager, or a business analyst, Agile Principles, Patterns, and Practices in C# is the first book you should read to understand agile software and how it applies to programming in the .NET Framework.

About Author

Robert C. Martin has been a software professional since 1970 and an international software consultant since 1990. He is founder and president of Object Mentor, Inc., a team of experienced consultants who mentor their clients in the fields of C++, Java, OO, Patterns, UML, Agile Methodologies, and Extreme Programming.Micah Martin works with Object Mentor as a developer, consultant, and mentor on topics ranging from object-oriented principles and patterns to agile software development practices. Micah is the cocreator and lead developer of the open source FitNesse project. He is also a published author and speaks regularly at conferences.


Forewords xixPreface xxiiiAcknowledgments xxxiAbout the Authors xxxiiiSection I: Agile Development 1Chapter 1: Agile Practices 3The Agile Alliance 4Principles 8Conclusion 10Bibliography 11Chapter 2: Overview of Extreme Programming 13The Practices of Extreme Programming 14Conclusion 22Bibliography 22Chapter 3: Planning 23Initial Exploration 24Release Planning 25Iteration Planning 25Defining "Done" 26Task Planning 26Iterating 27Tracking 28Conclusion 29Bibliography 29Chapter 4: Testing 31Test-Driven Development 32Acceptance Tests 36Serendipitous Architecture 37Conclusion 38Bibliography 39Chapter 5: Refactoring 41A Simple Example of Refactoring: Generating Primes 42Conclusion 53Bibliography 54Chapter 6: A Programming Episode 55The Bowling Game 56Conclusion 98Overview of the Rules of Bowling 99Section II: Agile Design 101Chapter 7: What Is Agile Design? 103Design Smells 104Why Software Rots 107The Copy Program 108Conclusion 113Bibliography 114Chapter 8: The Single-Responsibility Principle (SRP) 115Defining a Responsibility 117Separating Coupled Responsibilities 119Persistence 119Conclusion 119Bibliography 120Chapter 9: The Open/Closed Principle (OCP) 121Description of OCP 122The Shape Application 124Conclusion 132Bibliography 133Chapter 10: The Liskov Substitution Principle (LSP) 135Violations of LSP 136Factoring Instead of Deriving 148Heuristics and Conventions 150Conclusion 151Bibliography 151Chapter 11: The Dependency-Inversion Principle (DIP) 153Layering 154A Simple DIP Example 157The Furnace Example 160Conclusion 161Bibliography 162Chapter 12: The Interface Segregation Principle (ISP) 163Interface Pollution 163Separate Clients Mean Separate Interfaces 165Class Interfaces versus Object Interfaces 166The ATM User Interface Example 169Conclusion 174Bibliography 175Chapter 13: Overview of UML for C# Programmers 177Class Diagrams 180Object Diagrams 182Collaboration Diagrams 183State Diagrams 184Conclusion 185Bibliography 185Chapter 14: Working with Diagrams 187Why Model? 187Making Effective Use of UML 189Iterative Refinement 194When and How to Draw Diagrams 200Conclusion 202Chapter 15: State Diagrams 203The Basics 204Using FSM Diagrams 208Conclusion 209Chapter 16: Object Diagrams 211A Snapshot in Time 212Active Objects 213Conclusion 217Chapter 17: Use Cases 219Writing Use Cases 220Diagramming Use Cases 222Conclusion 223Bibliography 223Chapter 18: Sequence Diagrams 225The Basics 226Advanced Concepts 232Conclusion 241Chapter 19: Class Diagrams 243The Basics 244An Example Class Diagram 247The Details 249Conclusion 258Bibliography 258Chapter 20: Heuristics and Coffee 259The Mark IV Special Coffee Maker 260OOverkill 279Bibliography 292Section III: The Payroll Case Study 293Rudimentary Specification of the Payroll System 294Exercise 295Chapter 21: Command and Active Object: Versatility and Multitasking 299Simple Commands 300Transactions 302Undo Method 304Active Object 305Conclusion 310Bibliography 310Chapter 22: Template Method and Strategy: Inheritance versus Delegation 311Template Method 312Strategy 319Conclusion 324Bibliography 324Chapter 23: Facade and Mediator 325Facade 325Mediator 327Conclusion 329Bibliography 329Chapter 24: Singleton and Monostate 331Singleton 332Monostate 336Conclusion 343Bibliography 343Chapter 25: Null Object 345Description 345Conclusion 348Bibliography 348Chapter 26: The Payroll Case Study: Iteration 1 349Rudimentary Specification 350Analysis by Use Cases 351Reflection: Finding the Underlying Abstractions 360Conclusion 363Bibliography 363Chapter 27: The Payroll Case Study: Implementation 365Transactions 366Main Program 408The Database 409Conclusion 411About This Chapter 411Bibliography 412Section IV: Packaging the Payroll System 413Chapter 28: Principles of Package and Component Design 415Packages and Components 416Principles of Component Cohesion: Granularity 417Principles of Component Coupling: Stability 420Conclusion 435Chapter 29: Factory 437A Dependency Problem 440Static versus Dynamic Typing 441Substitutable Factories 442Using Factories for Test Fixtures 443Importance of Factories 444Conclusion 445Bibliography 445Chapter 30: The Payroll Case Study: Package Analysis 447Component Structure and Notation 448Applying the Common Closure Principle (CCP) 450Applying the Reuse/Release Equivalence Principle (REP) 452Coupling and Encapsulation 454Metrics 455Applying the Metrics to the Payroll Application 457The Final Packaging Structure 463Conclusion 465Bibliography 465Chapter 31: Composite 467Composite Commands 469Multiplicity or No Multiplicity 470Conclusion 470Chapter 32: Observer: Evolving into a Pattern 471The Digital Clock 472The Observer Pattern 491Conclusion 493Bibliography 494Chapter 33: Abstract Server, Adapter, and Bridge 495Abstract Server 496Adapter 498Bridge 503Conclusion 505Bibliography 506Chapter 34: Proxy and Gateway: Managing Third-Party APIs 507Proxy 508Databases, Middleware, and Other Third-Party Interfaces 526Table Data Gateway 528Using Other Patterns with Databases 539Conclusion 541Bibliography 541Chapter 35: Visitor 543VISITOR 544Acyclic Visitor 548Decorator 560Extension Object 565Conclusion 576Bibliography 577Chapter 36: State 579Nested Switch/Case Statements 580Transition Tables 584The State Pattern 586Classes of State Machine Application 598Conclusion 602Bibliography 602Chapter 37: The Payroll Case Study: The Database 603Building the Database 604A Flaw in the Code Design 605Adding an Employee 607Transactions 618Loading an Employee 623What Remains? 636Chapter 38: The Payroll User Interface: Model View Presenter 637The Interface 639Implementation 640Building a Window 650The Payroll Window 657The Unveiling 669Conclusion 670Bibliography 670Appendix A: A Satire of Two Companies 671Rufus Inc.: Project Kickoff 671Rupert Industries: Project Alpha 671Appendix B: What Is Software? 687Index 699

Product Details

  • ISBN13: 9780131857254
  • Format: Hardback
  • Number Of Pages: 768
  • ID: 9780131857254
  • weight: 1380
  • ISBN10: 0131857258

Delivery Information

  • Saver Delivery: Yes
  • 1st Class Delivery: Yes
  • Courier Delivery: Yes
  • Store Delivery: Yes

Prices are for internet purchases only. Prices and availability in WHSmith Stores may vary significantly