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.