Goals and Principles

Recall from Systems Theory that systems and components have an external/behavioral/functional view and an internal/structural view.

The specification of a system models its behavioral view, while the design models its structural view.

Design Goals

Three important design goals are correctness, efficiency, and maintainability.

Correctness means that the behavior of a system/component conforms to its specification.

Efficiency means that the system/component does not waste resources such as time and memory.

Maintainability means that repairing or enhancing the system/component is not needlessly difficult.

Design Principles

Following a design principle usually helps us to create systems/components that have a higher degree of maintainability. This is important because maintenance can be the most expensive phase of software development.

Here are a few important design principles:

The Resuability Principle

The Abstraction Principle

The Modularity Principle

The Open-Closed Principle

Mixed Domain Coupling