Software Design Principles in Software Engineering
Correctness: A good design should first of all be correct. That is, it should correctly implement all the functionalities of the system.
Understandability: A good design should be easily understandable. Unless a design solution is easily understandable, it would be difficult to implement and maintain it.
Efficiency: A good design solution should adequately address resource, time, and cost optimisation issues.
Maintainability: A good design should be easy to change. This is an important requirement since change requests usually keep coming from the customer even after product release.