Design Principles and Patterns, Addison-Wesley Longman Publishing Co
in Java
Leveraging Application Frameworks
Automatically discovering design patterns and assessing concern separations for applications