Development models and software design methods

For the engineering approach to the design of software, models for its development were proposed. The first and the most popular is the waterfall method. This model idealizes the design process, assuming that each stage of the project is completed before the next stage of the project and no return to the previous stage is performed (Figure 1). Considering the importance for the further development of the first stages of design, and the cost of correcting the mistakes made at these stages is the highest, the waterfall method has been improved by the introduction of temporary prototypes. For example, prototypes of the interface, the analysis of which by the user can give additional information before the development of the basic software designs of the following stages.

For the engineering approach to the design of software, models for its development were proposed

Fig. 1. 1 - Requirements analysis, specification, 2 - architectural design, 3 - detailed design, 4 - coding, 5 - testing, 6 - creation of temporary prototypes.

Another model of the life cycle is a spiral model of risk management (Figure 2). In this model, the software life cycle does not end, but its modernization continues. The risk analysis consists in determining the costs, in case of errors made at the first stage. To reduce risks, additional work is proposed, for example, the creation of temporary prototypes.

Another model of the life cycle is a spiral model of risk management

Fig. 2. 1 - Definition of objectives, alternatives and constraints, 2 - risk analysis, 3 - development and verification, 4 - next cycle planning.

One of the most popular methods of software engineering is the method of top-down design. It assumes a consistent decomposition of the general data processing function into simple functional elements. The result is a hierarchical model that reflects the composition and subordination of individual functions. This scheme is called the functional structure of the algorithm (FSA) of the application. The disadvantage of the FSA is that each of its levels is a single entity and can not be developed in parallel by a team of developers.

The following method is modular design. This method involves splitting the original data processing function into a number of software modules that are characterized by the following parameters:

  1. one input and one output thread of data;
  2. all the operations necessary to convert the input stream to the output stream are performed inside the module;
  3. the output of the module depends only on the input stream and does not depend on the work of other modules.
  4. the composition and type of software modules by a significant measure is determined by the development tools.

Both of these methods relate to a software design strategy, called structural design or design based on data flows. This strategy did not take into account the essence and connections of objects in the domain. It is characterized by the transformation of input information into output methods that do not take into account the physical essence of the domain model.

In the early 80's there was a new approach that was based on modeling the real world from the inside out, that is, by modeling all the elements of the system and the connections between them, we obtain a domain model that converts information in the same way as in a real simulated system. This approach was named object-oriented programming (OOP). At OOP at the first stage real-world objects, their properties and actions are revealed, on the following - these objects and their behavior are displayed on program objects.

Tools