Agile Principles, Patterns, and Practices in C#
26%
off

Agile Principles, Patterns, and Practices in C#

4.31 (610 ratings by Goodreads)
By (author)  , By (author) 

Free delivery worldwide

Available. Dispatched from the UK in 3 business days
When will my order arrive?

Description

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 understanding



Agile 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 project

Whether 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.
show more

Product details

  • Hardback | 768 pages
  • 193 x 242 x 46mm | 1,380g
  • Prentice Hall
  • Upper Saddle River, United States
  • English
  • 0131857258
  • 9780131857254
  • 66,690

Back cover copy

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 understanding Agile 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 project

Whether 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.
show more

Table of contents

Forewords xixPreface xxiiiAcknowledgments xxxiAbout the Authors xxxiiiSection I: Agile Development 1Chapter 1: Agile Practices 3The Agile Alliance 4

Principles 8

Conclusion 10

Bibliography 11

Chapter 2: Overview of Extreme Programming 13The Practices of Extreme Programming 14

Conclusion 22

Bibliography 22

Chapter 3: Planning 23Initial Exploration 24

Release Planning 25

Iteration Planning 25

Defining "Done" 26

Task Planning 26

Iterating 27

Tracking 28

Conclusion 29

Bibliography 29

Chapter 4: Testing 31Test-Driven Development 32

Acceptance Tests 36

Serendipitous Architecture 37

Conclusion 38

Bibliography 39

Chapter 5: Refactoring 41A Simple Example of Refactoring: Generating Primes 42

Conclusion 53

Bibliography 54

Chapter 6: A Programming Episode 55The Bowling Game 56

Conclusion 98

Overview of the Rules of Bowling 99

Section II: Agile Design 101Chapter 7: What Is Agile Design? 103Design Smells 104

Why Software Rots 107

The Copy Program 108

Conclusion 113

Bibliography 114

Chapter 8: The Single-Responsibility Principle (SRP) 115Defining a Responsibility 117

Separating Coupled Responsibilities 119

Persistence 119

Conclusion 119

Bibliography 120

Chapter 9: The Open/Closed Principle (OCP) 121Description of OCP 122

The Shape Application 124

Conclusion 132

Bibliography 133

Chapter 10: The Liskov Substitution Principle (LSP) 135Violations of LSP 136

Factoring Instead of Deriving 148

Heuristics and Conventions 150

Conclusion 151

Bibliography 151

Chapter 11: The Dependency-Inversion Principle (DIP) 153Layering 154

A Simple DIP Example 157

The Furnace Example 160

Conclusion 161

Bibliography 162

Chapter 12: The Interface Segregation Principle (ISP) 163Interface Pollution 163

Separate Clients Mean Separate Interfaces 165

Class Interfaces versus Object Interfaces 166

The ATM User Interface Example 169

Conclusion 174

Bibliography 175

Chapter 13: Overview of UML for C# Programmers 177Class Diagrams 180

Object Diagrams 182

Collaboration Diagrams 183

State Diagrams 184

Conclusion 185

Bibliography 185

Chapter 14: Working with Diagrams 187Why Model? 187

Making Effective Use of UML 189

Iterative Refinement 194

When and How to Draw Diagrams 200

Conclusion 202

Chapter 15: State Diagrams 203The Basics 204

Using FSM Diagrams 208

Conclusion 209

Chapter 16: Object Diagrams 211A Snapshot in Time 212

Active Objects 213

Conclusion 217

Chapter 17: Use Cases 219Writing Use Cases 220

Diagramming Use Cases 222

Conclusion 223

Bibliography 223

Chapter 18: Sequence Diagrams 225The Basics 226

Advanced Concepts 232

Conclusion 241

Chapter 19: Class Diagrams 243The Basics 244

An Example Class Diagram 247

The Details 249

Conclusion 258

Bibliography 258

Chapter 20: Heuristics and Coffee 259The Mark IV Special Coffee Maker 260

OOverkill 279

Bibliography 292

Section III: The Payroll Case Study 293Rudimentary Specification of the Payroll System 294

Exercise 295

Chapter 21: Command and Active Object: Versatility and Multitasking 299Simple Commands 300

Transactions 302

Undo Method 304

Active Object 305

Conclusion 310

Bibliography 310

Chapter 22: Template Method and Strategy: Inheritance versus Delegation 311Template Method 312

Strategy 319

Conclusion 324

Bibliography 324

Chapter 23: Facade and Mediator 325Facade 325

Mediator 327

Conclusion 329

Bibliography 329

Chapter 24: Singleton and Monostate 331Singleton 332

Monostate 336

Conclusion 343

Bibliography 343

Chapter 25: Null Object 345Description 345

Conclusion 348

Bibliography 348

Chapter 26: The Payroll Case Study: Iteration 1 349Rudimentary Specification 350

Analysis by Use Cases 351

Reflection: Finding the Underlying Abstractions 360

Conclusion 363

Bibliography 363

Chapter 27: The Payroll Case Study: Implementation 365Transactions 366

Main Program 408

The Database 409

Conclusion 411

About This Chapter 411

Bibliography 412

Section IV: Packaging the Payroll System 413Chapter 28: Principles of Package and Component Design 415Packages and Components 416

Principles of Component Cohesion: Granularity 417

Principles of Component Coupling: Stability 420

Conclusion 435

Chapter 29: Factory 437A Dependency Problem 440

Static versus Dynamic Typing 441

Substitutable Factories 442

Using Factories for Test Fixtures 443

Importance of Factories 444

Conclusion 445

Bibliography 445

Chapter 30: The Payroll Case Study: Package Analysis 447Component Structure and Notation 448

Applying the Common Closure Principle (CCP) 450

Applying the Reuse/Release Equivalence Principle (REP) 452

Coupling and Encapsulation 454

Metrics 455

Applying the Metrics to the Payroll Application 457

The Final Packaging Structure 463

Conclusion 465

Bibliography 465

Chapter 31: Composite 467Composite Commands 469

Multiplicity or No Multiplicity 470

Conclusion 470

Chapter 32: Observer: Evolving into a Pattern 471The Digital Clock 472

The Observer Pattern 491

Conclusion 493

Bibliography 494

Chapter 33: Abstract Server, Adapter, and Bridge 495Abstract Server 496

Adapter 498

Bridge 503

Conclusion 505

Bibliography 506

Chapter 34: Proxy and Gateway: Managing Third-Party APIs 507Proxy 508

Databases, Middleware, and Other Third-Party Interfaces 526

Table Data Gateway 528

Using Other Patterns with Databases 539

Conclusion 541

Bibliography 541

Chapter 35: Visitor 543VISITOR 544

Acyclic Visitor 548

Decorator 560

Extension Object 565

Conclusion 576

Bibliography 577

Chapter 36: State 579Nested Switch/Case Statements 580

Transition Tables 584

The State Pattern 586

Classes of State Machine Application 598

Conclusion 602

Bibliography 602

Chapter 37: The Payroll Case Study: The Database 603Building the Database 604

A Flaw in the Code Design 605

Adding an Employee 607

Transactions 618

Loading an Employee 623

What Remains? 636

Chapter 38: The Payroll User Interface: Model View Presenter 637The Interface 639

Implementation 640

Building a Window 650

The Payroll Window 657

The Unveiling 669

Conclusion 670

Bibliography 670

Appendix A: A Satire of Two Companies 671Rufus Inc.: Project Kickoff 671

Rupert Industries: Project Alpha 671

Appendix B: What Is Software? 687Index 699
show more

About Robert C. Martin

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.
show more

Rating details

610 ratings
4.31 out of 5 stars
5 50% (306)
4 35% (215)
3 11% (70)
2 3% (16)
1 0% (3)
Book ratings by Goodreads
Goodreads is the world's largest site for readers with over 50 million reviews. We're featuring millions of their reader ratings on our book pages to help you find your new favourite book. Close X