Object-Oriented Analysis and Design (Undergraduate Topics in Computer Science)