Design

3 min read Last updated Tue Jun 09 2026 03:05:56 GMT+0000 (Coordinated Universal Time)

The process of identifying components of a software system and their relationships from requirements. Creative activity. Design and implementation activities are inter-leaved.

COTS systems can substitute custom development. The design process focuses on configuring the system to meet requirements rather than building from scratch.

Object-Oriented Design Process

A structured approach to OO design that produces multiple system models. High overhead — cost-effective only for large systems. Models serve as a communication mechanism across teams.

The process has five stages, each covered below:

  1. Define system context and modes of use.
  2. Design system architecture.
  3. Identify principal system objects.
  4. Develop design models.
  5. Specify object interfaces.

System Context

Relationships between the software being designed and its external environment. Determines required functionality and communication structure. System boundaries are established here — defines which features belong to the system and which to associated systems.

2 model types used:

  • System context model
    structural; shows other systems in the environment.
  • Interaction model
    dynamic; shows how the system interacts with its environment during use.

Architectural Design

Follows context and interaction analysis. Identifies major components and their interactions. Components are organized using an architectural pattern — e.g., layered or client-server.

Example (weather station): independent subsystems communicate by broadcasting on a shared communication link. Subsystems: Fault Manager, Configuration Manager, Power Manager, Communications, Data Collection, Instruments.

Object Class Identification

No formula for object identification. Relies on designer skill, experience, and domain knowledge. Identification is iterative.

Approaches:

  • Grammatical
    Parse natural language description; nouns → objects.
  • Tangible things
    Base identification on real-world entities in the domain.
  • Behavioural
    Identify objects by participation in system behaviours.
  • Scenario-based
    Extract objects, attributes, and methods from each use case scenario.

Design Models

Static Model

Describe static structure.

Class models, generalization models, and association models are examples.

Dynamic Model

Describe runtime interactions between objects.

Sequence diagrams and state diagrams are examples.

Subsystem Model

Logical groupings of objects into coherent subsystems. Actual runtime organization may differ.

UML packages are used to represent subsystem models.

Interface Specification

Object interfaces must be specified before parallel development can proceed. Internal representation is hidden and only the interface is exposed. Objects may expose multiple interfaces.

Design Patterns

Reusable solution template for a recurring design problem. Described abstractly; instantiated in specific contexts. Elements: Name · Problem description · Solution description (template, not concrete) · Consequences.

Common patterns:

  • Observer
    Separates display of object state from the object itself. All registered displays notified on state change. Use when multiple displays of state are needed.
  • Façade
    Provides a simplified interface to a set of related objects.
  • Iterator
    Provides a standard way to access collection elements sequentially.
  • Decorator
    Extends class functionality at run-time by wrapping the object.

Covered extensively in Design Patterns - Semester 2.

Was this helpful?