Software design is a creative process that cannot be reduced to a routine procedure.
This process, however, need not be totally unstructured.
Design work generally starts by reviewing the product's purpose, gathering relevant data, producing an overview design, and then filling in the details.
These steps are not isolated sequential tasks, however, but are often highly iterative parallel activities.
Design in yolves discovery and invention, and it frequently requires intuitive leaps from one abstraction level to another.