What exactly is software design?
When does the design phase begin and when does it end? These are all relevant questions to ask yourself when considering what software design is. The way you think about software design undoubtedly influences your approach to software development and, ultimately, the final product.
Design is one of those schematic areas where everyone agrees on an idea, but not necessarily in the form that it appears. However, there are many different models for design and development. At one stage or another, someone questions current models to create new ones.
For example, the waterfall model limits the design or each phase of work to a specific phase of the software lifecycle model. However, the prototype model starts with a new design (and thus a new phase) for each prototype (prototype disposal).
Having an understanding of how to choose a design powerful concept is often overlooked while creating it. Why? Many programmers don’t know why they designed something like this, they just do it.
Conditioned over the years to finally do the same. You learn object-oriented design concepts and then apply them to problems, often without rhyme or reason. So you learned that inheritance is important for code re-use and design patterns to enforce structure and order.