Software Architecture Design Patterns in Java by Partha Kuchana & Kuchana Kuchana