askvity

What is Object Design?

Published in Software Design 4 mins read

Object design is a critical phase in the software development lifecycle, bridging the gap between initial problem understanding and concrete implementation. At its core, object design is the process of adding details to the requirements analysis and making implementation decisions. This phase is where the conceptual model from analysis is refined and prepared for coding.

According to the provided reference, the key activities involve adding details to the requirements analysis and making implementation decisions. The ultimate goal for the object designer is to choose among different ways to implement the analysis model with the goal to minimize execution time, memory and other measures of cost. This means considering various technical options and selecting those that lead to an efficient and performant system.

The Role of the Object Designer

The object designer takes the high-level descriptions and object models created during the analysis phase and translates them into a more concrete, technical blueprint. This involves several key responsibilities:

  • Refining Classes and Objects: Adding details such as attributes (with specific data types), methods (with signatures and logic outlines), and defining relationships (like inheritance, association, aggregation) with greater precision.
  • Choosing Data Structures: Deciding how object data will be stored (e.g., using arrays, lists, maps, databases) based on performance requirements.
  • Selecting Algorithms: Determining the specific step-by-step procedures that methods will use to perform their tasks, aiming for efficiency.
  • Optimizing Interactions: Designing how objects collaborate and communicate to ensure minimal overhead.
  • Considering Design Patterns: Applying established solutions to common design problems to create flexible and maintainable code.
  • Making Technology-Specific Decisions: Considering the constraints and capabilities of the target programming language, operating system, and other technologies.

Object Design vs. Requirements Analysis

It's helpful to see object design in contrast to the preceding analysis phase.

Feature Requirements Analysis Object Design
Focus What the system should do How the system will do it
Abstraction High-level, conceptual Detailed, implementation-oriented
Outputs Domain models, use cases, requirements Detailed class diagrams, interaction diagrams, data structure/algorithm choices
Concern User needs, problem domain Technical feasibility, performance, cost, implementation efficiency

Object design takes the findings of the analysis phase and adds the necessary technical how, ensuring the system can actually be built effectively.

Making Implementation Decisions

The reference highlights the need to choose among different ways to implement the analysis model. This implies trade-offs. For example:

  • Should a list of items be stored in an ArrayList or a LinkedList? The choice impacts performance for adding/removing elements vs. accessing elements by index.
  • Should searching for an item use a linear search or a binary search? This affects execution time significantly for large collections.
  • How should objects persist their state? Using simple file I/O, a relational database, or a NoSQL database involves different design considerations and costs.

The goal is always to minimize execution time, memory and other measures of cost. This requires the designer to have a strong understanding of data structures, algorithms, system architecture, and the specific constraints of the project.

Practical Considerations

During object design, designers often consider:

  • Performance: How fast will operations run? How much memory will be consumed?
  • Scalability: Can the design handle increased load or data volume in the future?
  • Maintainability: Is the design easy to understand, modify, and extend?
  • Reusability: Can components of the design be used in other parts of the system or other projects?
  • Robustness: How well does the design handle errors and unexpected situations?

By making deliberate choices about implementation details, object design lays the groundwork for a successful and efficient software system.

Related Articles