Books

Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software is a software engineering book describing recurring solutions to common problems in software design. The book is divided into two parts, with the first two chapters exploring the capabilities and pitfalls of object-oriented programming, and the remaining chapters describing 23 classic software design patterns. The book includes examples in C++ and Smalltalk.

Pattern Languages of Program Design 3

The third book in a series, Pattern Languages of Program Design 3 discusses how to catalog software patterns, which are reusable, higher-order designs. This volume presents over two dozen white papers on newly "discovered" patterns within a wide variety of contexts. The editors have grouped these patterns by topic so you can choose what interests you. Each pattern profile features a short introduction to show you what each pattern might be good for.

Pattern-Oriented Software Architecture Volume 1: A System of Pattern

This book represents the progression and evolution of the pattern approach into a system of patterns capable of describing and documenting large-scale applications.

Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects

Designing application and middleware software to run in concurrent and networked environments is a significant challenge to software developers. The patterns catalogued in this second volume of Pattern-Oriented Software Architectures (POSA) form the basis of a pattern language that addresses issues associated with concurrency and networking.

Patterns of Enterprise Application Architecture

The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned.

Refactoring: Improving the Design of Existing Code

Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests.

SOLID Principles

In object-oriented computer programming, SOLID is a mnemonic acronym for five design principles intended to make software designs more understandable, flexible and maintainable.