Object-based requirement analysis and design concepts such as program abstraction, encapsulation, polymorphism, inheritance, generalization, and reusability. Object oriented system decomposition and class design. Use of an OO Modeling and design methodology such as UML or OMT. Implementation of a software system based on OO requirement and design analysis is required.