What is a software design? What constraints are considered while making the software design? What techniques can be used for making a software design? How can quality of a software design be ensured? What is a design life cycle? What are the design methods?