Recommendations: Patterns in Software

Last modified on   About this page

Patterns in Software

Working Effectively with Legacy Code by Michael Feathers
Working Effectively with Legacy CodeThis book shows you how to apply patterns and refactorings to the task of untangling legacy code so that you can apply effective techniques like test driven development as you change the code. Since there will always be legacy code, this is a very practical book. The author emphasises the role of testing as a change enabler in a way that echos the the ideas in the SCM Patterns book.

Related books

Fearless Change: Patterns for Introducing New Ideas by Mary Lynn Manns and Linda Rising
Fearless Change: Patterns for Introducing New IdeasThe material in this book is excellent, having been developed over a number of years. In addition to wonderful, well written, patterns that advise you on how to spread ideas, this books is full of stories that help you to understand how to use the patterns effectively to influence people, overcome roadblocks, and spread new ideas. Anyone who has new ideas to share will benefit from this book including: Managers and Team members, Professionals and Volunteers, people in industry and those in community organizations.

Related books

Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans
Domain-Driven Design: Tackling Complexity in the Heart of SoftwareDeveloping a language to enable communication between team memembers and with domain experts seems like a common enough idea. Most teams do not do this and start their application by solving technology problems. This book describes the utility of a domain-driven approach to building systems and shows you how to apply this approach effectively. This book makes excellent use of patterns to demonstrate how design, architecture and development practices such as continuous integration interact with each other to determine how good your application will be. Like all good patterns books, the information in this book seems obvious once you read it. But it is material most people overlook. Buy this books to understand the value of a domain driven approach, or if you already understand that, use it as a guide for teaching others.


Organizational Patterns of Agile Software Development by James O. Coplien and Neil B. Harrison
Organizational Patterns of Agile Software DevelopmentPeople build software systems in organizations, and the interesting problems often occur at the places where technology issues and people issues intersect. An understanding of how software organizations work is essential to building good software systems. Coplien and Harrison are two of the pioneers in writing patterns about software organizations, and this book is a useful guide to helping you understand how to build effective software development organizations.

Related books

Design Patterns in C# by Steven John Metsker
Design Patterns in C#This book will serve you well whether you know Patterns and are trying to learn C# or know C# and are trying to understand Patterns better. It is not a replacement for the Design Patterns Book or a good C+ reference, but it is an excellent companion for both.


Software Architecture: Organizational Principles and Patterns by David M. Dikel, David Kane and James R. Wilson
Software Architecture: Organizational Principles and PatternsThis is one of the most useful books on software architecture that I have read. It discusses the qualities of a good architecture, and how the organization and process relates to the architecture.


Test Driven Development: By Example by Kent Beck
Test Driven Development: By ExampleThrough examples and a collection of patterns, this book explains what test driven development is, and what it is for. Every agile developer should read this book.

Related books

Beyond Software Architecture: Creating and Sustaining Winning Solutions by Luke Hohmann
Beyond Software Architecture: Creating and Sustaining Winning SolutionsAll you ever wanted to know about product management, but were afraid to ask. This book discusses the relationship between technical-architecture and marketing-architecture. This is an oft-neglected subject, but it is important as marketing and technology are both important for a successful product. This is a great book to read if you design software systems, or are involved in product management.


Writers' Workshops & the Work of Making Things: Patterns, Poetry... by Richard Gabriel
Writers' Workshops & the Work of Making Things: Patterns, Poetry...This is a unique book. It tells you about the writers workshop process. The writers workshop process has its origins in the creative writing community, and has been used in the software patterns community. Richard Gabriel explains how the process can also be used in other domains where creative effort is involved, such as reviewing marketing materials. I book for two reasons. First it provide great insight into the creative process (as applied to anything) and the values that are used in the writers workshop can benefit anyone who creates things, even if they don't use the workshop process. Second, if you do want to use writers workshops, this book explains the hows and whys of them. I had been involved in workshopping software patterns since 1995, and I though that I pretty much understood what they were about. I learned a lot reading this book. I recommend this book for anyone who involved in the creative process(of any sort): Software engineers, writers, teachers, and students.


Software Configuration Management Patterns: Effective Teamwork, Practical Integration by Steve Berczuk (with Brad Appleton )
Software Configuration Management Patterns: Effective Teamwork, Practical IntegrationThis book describes Essential SCM practices. Developers, team leaders and those just learning about software configuration management should find this book useful.

Related books

Patterns of Enterprise Application Architecture by Martin Fowler with David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee and Randy Stafford
Patterns of Enterprise Application ArchitectureThis book is an excellent collection of tools to have available when designing and building enterprise or web applications. This is more of a patterns collection or pattern catalog, than a pattern language, but the author ties the patterns together in a way that makes it possible to compare and contrast the various approaches. This is also a very readable book. Get a copy, skim through it to get familiar with what is there, and keep it on your shelf for ready reference.


Analysis Patterns by Martin Fowler.
Analysis PatternsPatterns on how to model business and systems and organizations. This book will save you from heading into a lot of dead ends if you walk into a system when you need to model a business process. A book which covers similar material, but from a database modeling point of view is Data Model Patterns by David Hay. While these are "patterns" in the more conventional sense (recurring structures, but not broken down into Problem/Context/Solution), this book will tell you a lot about database design.


Design Patterns by the "Gang of Four" (Gamma, Helm, Johnson & Vlissides).
Design PatternsThis the one book everyone who talks about patterns has should read. It collects the basic software design idioms everyone doing object-oriented software development should know.


Pattern Hatching by the John Vlissides .
Pattern HatchingUsing Design Patterns in more detail. This book discusses some of the fine points of the Patterns in Design Patterns . This is a well written book that is based on a series of columns from C++ Report . Unlike many compilations of columns, this book reads like a coherent book.


A System of Patterns by Buschmann, Meunier, Rohnert, Sommerlad, Stal.
A System of PatternsThis book has system level patterns than design patterns. It also uses a lot of examples from distributed systems.


Refactoring: Improving the Design of Existing Code by Martin Fowler
Refactoring: Improving the Design of Existing CodeThis book describes what to do to change code that has gotten messy with time, and how to proceeed to make the changes. If you've been doing Object-Oriented programming for a while you probably know much of what is in here, but it is worth reading anyway, both as a reminder, and as a way to explain the techniques to others. Fowler describes the refactorings very clearly, with guidelines on when to use each technique. Like Design Patterns, this book provides a vocabulary for the important techniques you use to change code. The examples are in Java, but the techniques can be adapted to any OO language, such as C++ quite readily.


Pattern Languages of Programs Design 1 by Edited by Coplien & Schmidt
Volume 1 of the PLoPD series, A compilation of the "Best of" the PLoP and EuroPLoP conferences. Not as handy for reference material as some of the other patterns books, but good to have on your shelf because people in the patterns community will often reference the patterns here (and some may very well address your problem):


Pattern Languages of Programs Design 2 by Edited by Vlissides, Colpien & Kerth
Volume 2 of the PLoPD series, A compilation of the "Best of" the PLoP and EuroPLoP conferences. Not as handy for reference material as some of the other patterns books, but good to have on your shelf because people in the patterns community will often reference the patterns here (and some may very well address your problem):


Pattern Languages of Programs Design 3 by Edited by Martin, Riehle & Buschmann
Volume 3 of the PLoPD series, A compilation of the "Best of" the PLoP and EuroPLoP conferences. Not as handy for reference material as some of the other patterns books, but good to have on your shelf because people in the patterns community will often reference the patterns here (and some may very well address your problem):


Pattern Languages of Programs Design 3 by Edited by Neil Harrison, Brian Foote & Hans Rohner
Volume 4 of the PLoPD series, A compilation of the "Best of" the PLoP and EuroPLoP conferences. Not as handy for reference material as some of the other patterns books, but good to have on your shelf because people in the patterns community will often reference the patterns here (and some may very well address your problem):