In the software design it is decided for what purpose are creating the software, which will be done and how it will look and what steps you are going to follow or methodologies. This would be the second step to follow in the software life cycle.
Envelops solve problems and plan a solution. Some serious considerations:
Compatibility
extensibility
security
usability
portability
performance.