Good design

Designing is a very important step of the process of creating software. Good design can ensure that the software has the expected functionality, is easily maintainable and can be extended in the future. Also, good design ensures there are no systemic flaws or bugs.