What is Object Oriented Analysis & Design (OOAD) ? Explain with Key Concept.

Object-Oriented Analysis and Design (OOAD) is a software engineering methodology that involves analyzing and designing software systems using the principles of object-oriented programming (OOP). OOAD is a process that includes analyzing a problem, designing a solution, and developing a software system that meets the requirements of the problem.

OOAD has become the preferred methodology for software development because it enables software engineers to design and develop systems that are modular, extensible, and reusable. This methodology is based on the fundamental principles of object-oriented programming, including encapsulation, inheritance, and polymorphism.

In Others Words, Object-Oriented Analysis and Design (OOAD) is a software development methodology that is based on the principles of object-oriented programming (OOP). OOAD involves the analysis and design of software systems using the OOP paradigm, which is based on the concepts of objects, classes, encapsulation, inheritance, and polymorphism.

OOAD Key Concepts

The key concepts of OOAD are discussed below in detail:

1. Object: An object is a basic unit of object-oriented programming. An object is an instance of a class and represents a real-world entity or a concept. Objects have attributes (data) and behaviors (methods).

2. Class: A class is a blueprint for creating objects. A class defines the attributes and behaviors of an object. In OOAD, classes are used to represent the different entities in a problem domain.

3. Encapsulation: Encapsulation is a mechanism that hides the implementation details of an object from the outside world. Encapsulation ensures that the internal state of an object is not directly accessible from outside the object. This mechanism provides data security and helps prevent unauthorized access to data.

4. Inheritance: Inheritance is a mechanism that allows a new class to be based on an existing class. The new class inherits the attributes and behaviors of the existing class, and can add new attributes and behaviors. Inheritance facilitates code reuse and simplifies code maintenance.

5. Polymorphism: Polymorphism is a mechanism that allows objects of different classes to be treated as if they are of the same class. Polymorphism enables a single method to be implemented in different ways for different classes. This mechanism enables dynamic binding, where the method that is executed is determined at runtime.

6. Abstraction: Abstraction is a mechanism that focuses on the essential features of an object, while ignoring the non-essential features. Abstraction enables the programmer to create a simplified model of the problem domain. This mechanism facilitates communication between the different stakeholders involved in the software development process.

7. Association: Association is a relationship between two classes. An association represents a connection between two objects. The connection can be one-to-one, one-to-many, or many-to-many.

8. Aggregation: Aggregation is a relationship between two classes where one class contains the other class as a part. Aggregation is a type of association that represents a "has-a" relationship.

9. Composition: Composition is a relationship between two classes where one class is composed of one or more objects of the other class. Composition is a type of aggregation that represents a "contains-a" relationship.

10. Dependency: Dependency is a relationship between two classes where one class uses the other class, but the two classes are not related in any other way. Dependency represents a "uses-a" relationship.

OOAD (Object-Oriented Analysis and Design) is a software engineering approach that combines object-oriented programming concepts with a systematic approach to software development. The three primary aspects of OOAD are OOA, OOD, and OOP.

1. Object-Oriented Analysis (OOA): OOA is the process of analyzing a problem domain to identify objects and their relationships. The goal of OOA is to identify the requirements of the system and to define a model that represents the problem domain in terms of objects and their interactions. During OOA, the emphasis is on what the system does, rather than how it does it.

Example : modeling a library system

2. Object-Oriented Design (OOD): OOD is the process of designing a solution to the problem domain identified during OOA. The goal of OOD is to take the model created during OOA and transform it into an implementation that can be used to build the software (Transforming the OOA model into an implementation) . During OOD, the emphasis is on how the system does what it does, including the definition of classes, objects, methods, and other implementation details.

Example : designing classes and methods for the library system

3. Object-Oriented Programming (OOP): OOP is the implementation of OOD using a programming language that supports object-oriented concepts. OOP is a programming paradigm that uses objects to represent real-world entities and their interactions. OOP allows developers to create software that is more modular, flexible, and reusable than traditional procedural programming.

Example : Java, C++,  C# etc. 

OOAD (Object-Oriented Analysis and Design) is a software engineering approach that focuses on modeling a system as a collection of interacting objects. Here are some of the advantages and disadvantages of using OOAD:


  1. Reusability: The use of objects promotes reuse of code, since objects can be easily reused in other systems, reducing development time and cost.
  2. Modularity: The use of objects promotes modularity, since objects can be designed to perform specific tasks and can be easily combined to create larger systems.
  3. Maintainability: OOAD makes it easier to maintain the software because changes can be made to individual objects without affecting the entire system.
  4. Flexibility: OOAD provides flexibility in the design process, since changes can be made easily to the design without affecting the overall system.
  5. Scalability: OOAD provides scalability, since objects can be easily added or removed from a system without affecting the overall design.


  1. Complexity: OOAD can be complex, since it requires a lot of planning and design work up front, which can be time-consuming.
  2. Learning Curve: Learning OOAD can take some time, as it requires a good understanding of object-oriented concepts and principles.
  3. Over-engineering: There is a risk of over-engineering, where the design becomes too complex, which can lead to problems down the line.
  4. Difficulty in Implementation: OOAD can be difficult to implement in certain situations, such as real-time systems or systems with limited memory.
  5. Cost: The use of OOAD can be more expensive than other software engineering approaches, due to the need for specialized tools and training.