Object-Oriented Analysis and Design with Applications. Grady Booch.