I have just completed reading Agile Principles, Patterns and Practices in C# by Robert C. Martin and Micah Martin. I learned a lot while reading this book, particularly about patterns. This book contains a lot of information with its’ 38 chapters and 700 pages, but it is written in a easy to read language and have plenty of figures and code examples. I think that everyone involved in software development will benefit from reading this book, particularly developers and solution architects.
Section 1 in this book focuses on agile development covering practices, Extreme programming, planning, testing, refactoring and a case study.
Section 2 is about agile design with principles and UML diagrams. Principles taught: The Single Responsibility Principle, The Open/Closed Principle, The Liskov Substitution Principle, The Dependency-Inversion Principle and the Interface Segregation Principle.
Section 3 is a case study where patterns are taught through a Payroll case. Patterns: Command, Template method, Strategy, Facade, Mediator, Singleton, Monostate and Null Object. This section also explains how create simple use cases from user stories, find underlying abstractions and implement the use cases.
Section 4 is about packaging systems with component design. Key words: Factory, Package analysis, Composite, Observer, Abstract Server, Adapter, Bridge, Proxy, Gateway, Visitor and State. This section also looks at how to build/implement the database and how to use the Model View Presenter pattern for the Payroll User Interface.
I recommend this book for everyone that is interested in software architecture and agile development.