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:
- Define system context and modes of use.
- Design system architecture.
- Identify principal system objects.
- Develop design models.
- 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.