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.
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.
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: