Total votes: 0
Print: Print Article
Please login to rate or to leave a comment.
Published: 30 Sep 2007
Review of the book: Patterns of Enterprise Application Architecture (PoEAA).
Written by: Martin Fowler
Publisher: Addison Wesley
Without a doubt, patterns play a fundamental role in designing robust software that is easy to develop and maintain. The concept of pattern (as a core solution for a recurring problem in application design) gained most of its fame thanks to the Gang of Four's book. Patterns have proven to be an invaluable aid for choosing development strategies that are less error prone and faster to implement and test.
Many of the books written by Martin Fowler are dedicated to patterns. The book that I'm going to review deals with patterns for building enterprise applications.
Martin Fowler defines an enterprise application as a data-centric application that is required to scale very well. Often, enterprise applications have a web-based User Interface and use a database as the data store. For a quick example of an enterprise application, you can browse to Amazon (http://amazon.com).
The book is logically structured in two parts. In the first one, Fowler introduces us to patterns and explains why they must be part of the skills of any programmer who's going to face the design and development of an enterprise application. In the second part, the author presents a vast catalog of patterns for the architecture of an enterprise application.
Let's see if this book meets the high quality standards that Martin Fowler is used to achieving with his books. I will evaluate both the quality of his research and the way the results are presented on paper.
If you've read some of the books written by Martin Fowler, you are already aware of the great contribute they provide to the research in the object-oriented programming field. PoEAA is one of the milestones.
In the first part of the book, Fowler discusses enterprise applications in general terms, underlining the importance of layering and focusing on the three main areas where architects have to make the most important choices: the User Interface (or Presentation), the Business Logic and the Data Source. Before delving into patterns, Fowler covers some of the most common scenarios in enterprise applications: domain logic, data mapping, concurrency, statefulness and distributed applications. This great introduction - which spans the first 8 chapters - is a complete overview of the requirements of large applications.
Next, the author dissects the architecture by providing patterns for layered enterprise applications. Patterns are catalogued using a very compact and scannable schema. After the pattern's name (which, as stressed by the author, is important to acquire a correct terminology) follows a definition and a brief description of the task that the pattern tries to solve. When needed, UML diagrams are used to clarify the entities involved in the most complex patterns. Finally, a discussion on a potential implementation follows. Since patterns are not algorithms but rather strategies, don't expect to find a list of steps to perform. Instead, you'll find a well structured discussion on how to implement the correct strategy that leads to an elegant solution. Code samples are provided in Java and, for some of the patterns, in C#. Since the whole concept of patterns is mainly technology-agnostic, code is based on simple examples that can be understood by every developer, independently from their language of choice.
Despite what Fowler says, the patterns presented in this book can be appreciated also by developers who aren't going to develop enterprise applications. I believe reading this book can be a really enlightenment experience for many architects and developers that want to understand how modern applications (even the small ones) can be well designed. Many of the patterns presented in this book are recurring in web applications and in web server technologies such as ASP.NET. Furthermore, these patterns can be of great help in gaining a deep understanding of the code that we read and write every day. This book is a must-have for architects and I highly recommend it to any developers. Five stars out of five.
Alessandro "Garbin" Gallo is a Microsoft MVP in the Visual ASP/ASP.NET category and a .NET developer/consultant. He is a contributor for the Ajax Control Toolkit project, owned by Microsoft. Alessandro won the Grand Prize at the "Mash-it-up with ASP.NET AJAX" contest held by Micr...
This author has published 23 articles on DotNetSlackers. View other articles or the complete profile here.
Please login to rate or to leave a comment.