Object oriented design (OOD) involves dividing a software system into modules (objects or classes) to deal with complexity. The key activities in OOD are problem analysis, program design, coding, documentation, testing, and maintenance. Successful OOD produces software with a clean internal structure to simplify tasks like testing, porting, and maintenance. This is achieved by properly characterizing classes and their relationships, operations, dependencies, and interfaces.