Software Design · Software Engineering

Goals of Good Software Design

Watch lectures

Goals of Good Software Design

Definition

Software Design is the process of transforming requirements (from the SRS) into a blueprint for constructing the software — deciding the architecture, components, interfaces, and data for the system to be built. The goals of good design are the quality attributes a design should achieve to be considered "good."

Key Goals

1. Correctness

The design must satisfy all requirements specified in the SRS — nothing missing, nothing incorrect.

2. Efficiency

The design should use resources (time, memory, CPU) optimally — good algorithms and data structures.

3. Simplicity / Understandability

A good design should be as simple as possible — easy for other developers to read, understand, and reason about.

4. Modularity

The system should be divided into well-defined, independent modules, each handling a specific responsibility (ties into Coupling and Cohesion).

5. Maintainability

The design should make future changes/bug-fixes easy without breaking other parts of the system.

6. Reusability

Components should be designed so they can be reused in other parts of the system or future projects.

7. Flexibility / Extensibility

The design should accommodate future growth and new features with minimal rework.

8. Reliability

The design should minimize the chance of failure, and handle errors gracefully.

9. Portability

The design shouldn't be tightly bound to one specific platform/environment, where portability is a requirement.

Two Fundamental Design Principles (underlying all goals above)

  • High Cohesion — elements within a module should be closely related
  • Low Coupling — modules should be as independent from each other as possible

Why These Goals Matter

Achieving these goals directly reduces long-term cost: about 60–80% of software cost occurs in the maintenance phase, and a well-designed system is dramatically cheaper to maintain, extend, and debug.


Exam tip: List and briefly explain 6–8 goals (Correctness, Efficiency, Simplicity, Modularity, Maintainability, Reusability, Flexibility, Reliability, Portability) — this is a very common opening question for the Design module.

Student FinanceWeb Platform

Pocketly — Personal Finance for Students

Keep your hostel and college expenses under control. Track accounts, log spending in seconds, and stay within your monthly budget.

← All Software Engineering modules