This document discusses object-oriented analysis and design and the six best practices of software engineering. It introduces the six best practices as developing iteratively, managing requirements, using component architectures, modeling visually with UML, continuously verifying quality, and managing change. It then provides more details on each best practice and how the Rational Unified Process (RUP) incorporates these practices.