Software design is a process of problem-solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution. It includes low-level component and algorithm implementation issues as well as the architectural view.
The design concepts provide the software designer with a foundation from which more sophisticated methods can be applied.
There are also many aspects to consider in the design of a piece of software.