The design process begins with the recognition of a problem, triggered by a particular adverse circumstance or a set of random circumstances that arise simultaneously, for example, a system is too slow, costly or inefficient.
The problem will then need to be clearly specified. Definition of the problems include all the specifications for the system that is to be designed, for example, the input, output, characteristics, GUI (Graphical User Interfaces), costs and speeds. There are also implied specifications which result from either the designers' particular environment or from the nature of the problem itself, for example, the systems available, tools, company practices, field and condition of its use or existing prototype which has to be developed with modifications.
Design concepts are then developed. Conceivable design concepts are prepared in schematic skeletal form then select the best alternative. Synthesis is the next step, synthesis cannot occur without analysis because the system needs to be determined if it complies with specifications. If it does not comply, synthesize again. We may synthesize several components of a system, analyze and optimize there and return to synthesis to see what effect this has on the remaining parts of the system. Fill in the skeleton with substance - concrete parameters with the use of systematic design methods.
Analysis, experimentation and optimization requires that a model be constructed, amenable to analytical or empirical evaluation. Then, create a d esign oriented experiment if analysis is not feasible. Analyze/test the model to establish adequacy over the entire range of operating conditions. Optimization must determine : first, what criteria or combination of criteria should be optimized; second , which parameter can be manipulated; and what are the limits of these parameters. Finally, communicate to those who will utilize it and those who will develop it.
Software design means the design of programs and systems that is computer based. To design software, a designer need to acquire a set of tools consisting of mathematics and computer science amongst others. It involves a great deal of information proces sing, too; therefore, another useful tool is the various algorithms, and data structures. Software design also requires a basic understanding of a few typical software design methodologies such as structured systems analysis and structured design, Jackson System Development, structured analysis and design technique, Warnier-Orr approach and structured system analysis and design method. All these constitute the foundation for the practice of software design.