This 1998 book conveys the essence of object-oriented programming and software building through the Unified Modeling Language.
The author provides concise but in-depth pieces on structural issues, dynamic issues, business rules, object complexity, object aggregation, design templates, and the process of objects.