Popular Posts

Monday, June 18, 2012

Architecture of Open Source Software



Authors of over four dozen open source applications explain the architecture of their software and their design decisions, in a set of two books that are freely available under a Creative Commons license. Find them here: "The Architecture of Open Source Applications".   

In the introductory chapter, Amy Brown and Greg Wilson explain the intent of the books: 

"Building architecture and software architecture have a lot in common, but there is one crucial difference. While architects study thousands of buildings in their training and during their careers, most software developers only ever get to know a handful of large programs well. And more often than not, those are programs they wrote themselves. They never get to see the great programs of history, or read critiques of those programs' designs written by experienced practitioners. As a result, they repeat one another's mistakes rather than building on one another's successes."

"This book is our attempt to change that. Each chapter describes the architecture of an open source application: how it is structured, how its parts interact, why it's built that way, and what lessons have been learned that can be applied to other big design problems..."

Sunday, December 18, 2011

Bredemeyer's Software Architecture Links

A comprehensive set of links on software architecture: http://www.bredemeyer.com/links.htm.  

Sunday, September 04, 2011

Design approaches

Does you head spin when someone talks about design approaches such as responsibility driven design (RDD), behavior driven design (BDD), domain driven design (DDD) or model driven design (MDD)? Here is Rebecca J. Wirfs-Brock's article to the rescue. 

Thursday, June 23, 2011

Preserving architectural design in code

Eoin Woods advices on writing code that preserves the initial architectural design using conventions, dependency analysis, module systems, augmenting the code & checking rules, and language extensions.: InfoQ: Where Did My Architecture Go?

Sunday, May 29, 2011

Amazon Dynamo and its design

Here is a seminal paper released by Amazon describing Dynamo, Amazon's proprietary highly available key-value based data store used for it's own data storage needs.

Many philosphies described in this paper coincide with those of other NoSql data stores. For example, consistent hashing for determining which partition to store data, hinted handoffs to ensure read/write operations do not get affected when nodes or parts of network go down temporarily, and so on.  As such, this paper is a great reading material for anyone wanting to understand some of the key design considerations regarding NoSql DBs.


Friday, January 07, 2011

Understanding Weak references in Java

Here's a nice article from Ethan Nicholas on Weak References - a topic that eludes many Java developers.

Friday, November 26, 2010

A list of refactorings

Developers often encounter a need for refactoring code that has existed for a long time. This is because software tends to get complex and unmaintainable over time, unless time and effort is spent on preserving the modular structure of the software and its simplicity in the face of evolving needs.

Martin Fowler defines refactoring as "... a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior". [Src]

A list of "refactorings" both from the original book by Fowler and some later sources, is available here.