Agile principles, patterns, and practices in C
โ Scribed by Martin, Micah; Martin, Robert Cecil
- Publisher
- Prentice Hall
- Year
- 2006;2007
- Tongue
- English
- Leaves
- 767
- Series
- Robert C. Martin series
- Category
- Library
No coin nor oath required. For personal study only.
โฆ Synopsis
With the award-winning bookAgile 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.
โฆ Table of Contents
Cover......Page 1
Contents......Page 6
Forewords......Page 20
Preface......Page 24
Acknowledgments......Page 32
About the Authors......Page 34
Section I: Agile Development......Page 36
Chapter 1: Agile Practices......Page 38
The Agile Alliance......Page 39
Principles......Page 43
Conclusion......Page 45
Bibliography......Page 46
Chapter 2: Overview of Extreme Programming......Page 48
The Practices of Extreme Programming......Page 49
Bibliography......Page 57
Chapter 3: Planning......Page 58
Initial Exploration......Page 59
Iteration Planning......Page 60
Task Planning......Page 61
Iterating......Page 62
Tracking......Page 63
Bibliography......Page 64
Chapter 4: Testing......Page 66
Test-Driven Development......Page 67
Acceptance Tests......Page 71
Serendipitous Architecture......Page 72
Conclusion......Page 73
Bibliography......Page 74
Chapter 5: Refactoring......Page 76
A Simple Example Of Refactoring: Generating Primes......Page 77
Conclusion......Page 88
Bibliography......Page 89
Chapter 6: A Programming Episode......Page 90
The Bowling Game......Page 91
Conclusion......Page 133
Overview of the Rules of Bowling......Page 134
Section II: Agile Design......Page 136
Chapter 7: What Is Agile Design?......Page 138
Design Smells......Page 139
Why Software Rots......Page 142
The Copy Program......Page 143
Conclusion......Page 148
Bibliography......Page 149
Chapter 8: The Single-Responsibility Principle (SRP)......Page 150
Defining a Responsibility......Page 152
Conclusion......Page 154
Bibliography......Page 155
Chapter 9: The Open/Closed Principle (OCP)......Page 156
Description of OCP......Page 157
The Shape Application......Page 159
Conclusion......Page 167
Bibliography......Page 168
Chapter 10: The Liskov Substitution Principle (LSP)......Page 170
Violations of LSP......Page 171
Factoring Instead of Deriving......Page 183
Heuristics and Conventions......Page 185
Bibliography......Page 186
Chapter 11: The Dependency-Inversion Principle (DIP)......Page 188
Layering......Page 189
A Simple DIP Example......Page 192
The Furnace Example......Page 195
Conclusion......Page 196
Bibliography......Page 197
Interface Pollution......Page 198
Separate Clients Mean Separate Interfaces......Page 200
Class Interfaces versus Object Interfaces......Page 201
The ATM User Interface Example......Page 204
Conclusion......Page 209
Bibliography......Page 210
Chapter 13: Overview of UML for C# Programmers......Page 212
Class Diagrams......Page 215
Object Diagrams......Page 217
Collaboration Diagrams......Page 218
State Diagrams......Page 219
Bibliography......Page 220
Why Model?......Page 222
Making Effective Use of UML......Page 224
Iterative Refinement......Page 229
When and How to Draw Diagrams......Page 235
Conclusion......Page 237
Chapter 15: State Diagrams......Page 238
The Basics......Page 239
Using FSM Diagrams......Page 243
Conclusion......Page 244
Chapter 16: Object Diagrams......Page 246
A Snapshot in Time......Page 247
Active Objects......Page 248
Conclusion......Page 252
Chapter 17: Use Cases......Page 254
Writing Use Cases......Page 255
Diagramming Use Cases......Page 257
Bibliography......Page 258
Chapter 18: Sequence Diagrams......Page 260
The Basics......Page 261
Advanced Concepts......Page 267
Conclusion......Page 276
Chapter 19: Class Diagrams......Page 278
The Basics......Page 279
An Example Class Diagram......Page 282
The Details......Page 284
Bibliography......Page 293
Chapter 20: Heuristics and Coffee......Page 294
The Mark IV Special Coffee Maker......Page 295
OOverkill......Page 314
Bibliography......Page 327
Section III: The Payroll Case Study......Page 328
Rudimentary Specification of the Payroll System......Page 329
Use Case 2: Deleting an Employee......Page 330
Use Case 6: Changing Employee Details......Page 331
Use Case 7: Run the Payroll for Today......Page 332
Chapter 21: Command and Active Object: Versatility and Multitasking......Page 334
Simple Commands......Page 335
Transactions......Page 337
Undo Method......Page 339
Active Object......Page 340
Bibliography......Page 345
Chapter 22: Template Method and Strategy: Inheritance versus Delegation......Page 346
Template Method......Page 347
Strategy......Page 354
Bibliography......Page 359
Facade......Page 360
Mediator......Page 362
Bibliography......Page 364
Chapter 24: Singleton and Monostate......Page 366
Singleton......Page 367
Monostate......Page 371
Bibliography......Page 378
Description......Page 380
Bibliography......Page 383
Chapter 26: The Payroll Case Study: Iteration 1......Page 384
Rudimentary Specification......Page 385
Analysis by Use Cases......Page 386
Reflection: Finding the Underlying Abstractions......Page 395
Bibliography......Page 398
Chapter 27: The Payroll Case Study: Implementation......Page 400
Transactions......Page 401
Main Program......Page 443
The Database......Page 444
About This Chapter......Page 446
Bibliography......Page 447
Section IV: Packaging the Payroll System......Page 448
Chapter 28: Principles of Package and Component Design......Page 450
Packages and Components......Page 451
Principles of Component Cohesion: Granularity......Page 452
Principles of Component Coupling: Stability......Page 455
Conclusion......Page 470
Chapter 29: Factory......Page 472
A Dependency Problem......Page 475
Static versus Dynamic Typing......Page 476
Substitutable Factories......Page 477
Using Factories for Test Fixtures......Page 478
Importance of Factories......Page 479
Bibliography......Page 480
Chapter 30: The Payroll Case Study: Package Analysis......Page 482
Component Structure and Notation......Page 483
Applying the Common Closure Principle (CCP)......Page 485
Applying the Reuse/Release Equivalence Principle (REP)......Page 487
Coupling and Encapsulation......Page 489
Metrics......Page 490
Applying the Metrics to the Payroll Application......Page 492
The Final Packaging Structure......Page 498
Bibliography......Page 500
Chapter 31: Composite......Page 502
Composite Commands......Page 504
Conclusion......Page 505
Chapter 32: Observer: Evolving into a Pattern......Page 506
The Digital Clock......Page 507
The Observer Pattern......Page 526
Conclusion......Page 528
Bibliography......Page 529
Chapter 33: Abstract Server, Adapter, and Bridge......Page 530
Abstract Server......Page 531
Adapter......Page 533
Bridge......Page 538
Conclusion......Page 540
Bibliography......Page 541
Chapter 34: Proxy and Gateway: Managing Third-Party APIs......Page 542
Proxy......Page 543
Databases, Middleware, and Other Third-Party Interfaces......Page 561
Table Data Gateway......Page 563
Using Other Patterns with Databases......Page 574
Bibliography......Page 576
Chapter 35: Visitor......Page 578
VISITOR......Page 579
Acyclic Visitor......Page 583
Decorator......Page 595
Extension Object......Page 600
Conclusion......Page 611
Bibliography......Page 612
Chapter 36: State......Page 614
Nested Switch/Case Statements......Page 615
Transition Tables......Page 619
The State Pattern......Page 621
Classes of State Machine Application......Page 633
Bibliography......Page 637
Chapter 37: The Payroll Case Study: The Database......Page 638
Building the Database......Page 639
A Flaw in the Code Design......Page 640
Adding an Employee......Page 642
Transactions......Page 653
Loading an Employee......Page 658
What Remains?......Page 671
Chapter 38: The Payroll User Interface: Model View Presenter......Page 672
The Interface......Page 674
Implementation......Page 675
Building a Window......Page 685
The Payroll Window......Page 692
The Unveiling......Page 704
Bibliography......Page 705
Rupert Industries: Project Alpha......Page 706
Appendix B: What Is Software?......Page 722
A......Page 734
B......Page 736
C......Page 737
D......Page 741
E......Page 743
F......Page 745
G......Page 746
I......Page 747
L......Page 749
M......Page 750
O......Page 752
P......Page 753
R......Page 757
S......Page 758
T......Page 762
U......Page 765
V......Page 766
Z......Page 767
โฆ Subjects
Computer Science;Programming;Software;Technical;Science;Technology;Nonfiction;Reference;Coding;Computers;Unfinished
๐ SIMILAR VOLUMES
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
<P>Written <I>by</I> a software developer for software developers, this book is a unique collection of the latest software development methods. The author includes OOD, UML, Design Patterns, Agile and XP methods with a detailed description of a complete software design for reusable programs in C++ a
For courses in Object-Oriented Design, C++ Intermediate Programming, and Object-Oriented Programming. Written for software engineers in the trenches, this text focuses on the technology-the principles, patterns, and process-that help software engineers effectively manage increasingly complex operati
For courses in Object-Oriented Design, C++ Intermediate Programming, and Object-Oriented Programming.Written for software engineers "in the trenches," this text focuses on the technology-the principles, patterns, and process-that help software engineers effectively manage increasingly complex operat