This book provides both the components and the expertise for developing reusable software—the components are reusable software modules which cover some of the fundamental patterns of software development across application areas; the expertise will help readers not just to use these modules properly, but also to develop their own libraries and make sure they are successful.