Found a great must-read article by raganwald. What a simple and intuitive way to look at software design!