Open In App

Object Oriented Paradigm in Object Oriented Analysis & Design(OOAD)

Last Updated : 14 Mar, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

There are two important steps in creating such software. Object-Oriented Analysis (OOA) and Object-Oriented Design (OOD). These steps are like the building blocks for creating software.

Object Oriented Analysis

Object-Oriented Analysis (OOA) is the first step. It’s like solving a puzzle. We start by figuring out what the problem is and what we need to solve it. OOA helps us understand what different pieces are needed and how they fit together. We draw a picture or a map (using something called Unified Modeling Language) to show what the software needs to do.

Object-Oriented Design

Object-Oriented Design (OOD) comes in. This step is like drawing the plans for the house before it’s built. OOD takes the picture from OOA and decides how to make it real. It works out how different parts of the software will talk to each other and how they’ll work. OOD helps make sure everything is organized and works well together before the actual building (or coding) starts.

Historical Context

The concepts of OOA and OOD were popularized in the 1980s and 1990s:

  • 1960s-1970s: Early software development largely focused on procedural programming. However, as systems became more complex, the need for better approaches to manage software development arose.
  • Late 1970s-1980s: Grady Booch, Ivar Jacobson, and James Rumbaugh, among others, developed methodologies that formed the basis of OOA and OOD. Their work culminated in the creation of Unified Modeling Language (UML) in the 1990s.
  • 1990s-2000s: UML became the industry standard for visualizing, specifying, constructing, and documenting software systems, incorporating the principles of OOA and OOD.

Today, OOA and OOD remain crucial, evolving alongside new technologies and methodologies, such as agile an DevOps, to address the growing complexities of software development. They continue to provide a structured approach to design and analyze software systems.

Object-Oriented Analysis (OOA)

Object-Oriented Analysis is the initial phase of the software development process, where the primary focus is on understanding the problem domain, capturing and modeling the requirements, and defining the system’s behavior. OOA is all about abstracting real-world concepts and entities into a software model, and it involves the following key aspects:

  • Problem Domain Understanding: During OOA, the software engineer works closely with domain experts and stakeholders to understand the problem that the software it intended to solve. This involves gathering requirements, identifying stakeholder’s needs, and understanding the business processes.
  • Use Case Modeling: Use cases are used to define the interactions between various actors (people, others systems, etc.) and the system. Use case diagrams are a common tool to represent these interactions, helping to capture the system’s external behavior.
  • Domain Modeling: Domain modeling involves identifying and defining the core concepts, objects, and entities in the problem domain. It typically results in the creation of class diagrams, which represent the relationship and attributes of these entities.
  • Analysis of Behavior: OOA also considers the behavior of the system, often through activity diagrams, sequence diagrams, and state diagrams. These diagrams help depict how objects interact and the flow of information and control in the system.
  • Identifying Constraints: Constraints, both technical and non-technical, are important to consider during OOA. These may include performance constraints, regulatory requirements, and technology limitations.
  • Non-Functional Requirements: During OOA, non-functional requirements such as performance, scalability, security, and maintainability are identified and documented.
  • Documentation: All the analysis work is documented, which may include various UML diagrams, use cases, textual descriptions, and other artifacts to ensure that the system’s requirements are well-understood.

Object-Oriented Design (OOD)

Object-Oriented Design (OOD) is the phase that follows OOA and is focused on creating a software solution that meets the requirements. During OOD, you transform the analysis model into a design model that can be implemented using a specific programming language. Key aspects of OOD include:

  • System Architecture: The high-level system architecture is defined during OOD. This involves deciding on the overall structure of the software, the major components, and their interactions.
  • Class Design: The analysis model is refined, and the class diagrams are further developed to include detailed class definitions, attributes, methods and their relationships. Inheritance, encapsulation, and polymorphism are key principles that guide class design.
  • Object Collaboration: Collaboration and communication between objects are a critical part of OOD. This is often represented through sequence diagrams or interaction diagram, showing how objects interact to accomplish specific tasks.
  • Design Patterns: OOD often involves the use of design patterns, which are proven solutions to common design problems. These patterns help ensure the design is more efficient and maintainable.
  • Identifying Interfaces: Interfaces are defined to specify the contracts that classes must adhere to. This enforces a level of abstraction and modularity in the design.
  • Data Structures and Algorithms: OOD includes designing data structures and algorithms necessary for implementing the software. This involves decisions regarding data storage, retrieval, and processing.
  • Testing Strategies: The design phase also encompasses planning for testing, including unit testing, integration testing, and system testing. Test cases and testing environments are considered.
  • Documentation: Comprehensive design documentation is crucial for communication with developers and stakeholders, ensuring that the design is well-documented and understandable.

Object-Oriented Analysis (OOA) vs Object-Oriented Design (OOD)

Object-Oriented Analysis (OOA)

Object-Oriented Design (OOD)

Concerned with understanding the problem and its requirements.

Focuses on transforming requirements into a detailed design.

Involves gathering and defining what the software should do.

Involves how the software will do what is needed.

Emphasizes capturing real-world concepts into a software model.

Emphasizes translating the captured model into a technical solution.

Primarily uses techniques like use cases, class diagrams, and behavior diagrams to understand the problem domain.

Involves architecture, detailed class design, object interactions, and design patterns.

Identifies entities, their relationships, and their interactions in the problem domain.

Refined identified entities into detailed classes, their attributes, methods, and interactions.

Focuses on stakeholder’s needs, domain understanding, and requirements gathering.

Focuses on implementation details, coding strategies, and testing plans.

Provides the foundation for creating a model of the problem domain.

Provides the foundation for the implementation and coding of the solution.

Conclusion

In conclusion, Object-Oriented Analysis and Design are integral parts of the software development process. OOA focuses on understanding the problem domain and capturing requirements, while OOD involves transforming those requirements into a concrete software design. These processes are essential for creating maintainable, scalable, and efficient software systems. The use of UML diagrams, design patterns, and good software engineering practices are key components of successful OOA and OOD.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads