Software design

Definition
Software design is

"the process of defining the software architecture (structure), components, modules, interfaces, test approach, and data for a software system to satisfy specified requirements."