Design – What do we mean by “design” in software engineering

Architecturedesigndevelopment-methodologiesdevelopment-process

I have been reading about different software methodologies. Every method has a design phase to some extent, more or less.

I am not clear on what we mean by designing. Does this mean writing your thought process on how you will code the feature? Or it is a way of saying what you have coded or will code.

The point where I am most confused is the real world, which is different than putting your thoughts in documents and saying it will work. Since coding details can change, I don't know what's the point of having a design before coding.

Best Answer

First of all, the design is, in my opinion, a process of preparing / thinking over the project / software / application, so it is consistent, fulfilling the goals, meeting the requirements. Design also helps making the software production process more efficient (because it is about some really basic things in the project, how they should work etc.).

Wikipedia says:

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.

Which means that you make a plan before building the structure (in this case: software).

And why do we first design, then implement, even if many things change? Please see the following picture (source: http://www.agilemodeling.com/essays/costOfChange.htm) that clarifies this the best (at least I think so):

enter image description here

Related Topic