Software design

The activity of deciding how a system will be structured and how it will behave before and during construction.

Covers deciding how a system will be structured and behave, down to modules and interfaces. The fundamental high-level structure of a system is under Software architecture.

Scheme

Broader terms