Common development models in software development

Software development model refers to the structural framework of all processes, activities and tasks of software development. Software development includes phases such as requirements, design, coding, testing, and sometimes maintenance. The software development model can express the whole process of software development clearly and intuitively, clearly defines the main activities and tasks to be completed, and is used as the basis for software project work. For different software systems, different development methods can be used, different programming languages ​​and people with different skills can be used to work, different management methods and means can be used, and different software tools and different software engineering methods can be used. environment.

waterfall model

The waterfall model requires that software development be carried out in strict accordance with 计划 → 需求分析 → 设计 → 编码 → 测试 → 运行维护the stages, and each stage can define clear outputs and verification criteria. The waterfall model can organize relevant reviews and verifications after each stage is completed, and only after the reviews are passed can the next stage be entered.
Features:

  1. The activities of software development are carried out strictly in a linear fashion.
  2. The current activity accepts the work result of the previous activity.
  3. The work results of the current activity need to be validated.

shortcoming:

  1. Since the development model is linear, the risk of development is increased.
  2. Early bugs may not be discovered until later stages of development.
  3. generate a lot of documentation

rapid prototyping model

The rapid prototyping model requires the rapid construction of a working software prototype in order to understand and clarify problems, so that developers and users can reach a consensus, and ultimately develop a customer-satisfying software product based on the identified customer needs. The rapid prototyping model allows preliminary but not complete analysis and definition of software requirements in the requirements analysis stage, and rapidly designs and develops a prototype of the software system, which shows the user all or part of the functions and performance of the software to be developed; The prototype is tested and evaluated, and specific improvement suggestions are given to enrich and refine the software requirements; developers modify and improve the software accordingly, until the user is satisfied and approved, the complete implementation, testing and maintenance of the software.
Features:

  1. Realize the interaction between the customer and the system.
  2. Further refine the software requirements to be developed.
  3. Developers can determine what the real needs of customers are.

shortcoming:

  1. Long development cycle.
  2. Development can be affected by requirements in various ways.

Spiral model

First of all, the spiral model follows the waterfall model. The spiral model is an evolutionary software development process model that takes into account the iterative characteristics of rapid prototyping and the systematic and rigorous monitoring of the waterfall model. The biggest feature of the spiral model is that it introduces risk analysis that other models do not have, so that the software has the opportunity to stop when major risks cannot be excluded to reduce losses. At the same time, building prototypes at each iterative stage is the way the spiral model is used to reduce risk. The spiral model is more suitable for large and expensive system-level software applications.
The six steps of the spiral model:

  1. Decide on goals, alternatives and constraints.
  2. Identify and address project risks.
  3. Evaluate technical options and alternative solutions.
  4. Develop the deliverables for this iteration and verify the correctness of the iteration outputs.
  5. Plan the next iteration.
  6. Submit steps and scenarios for the next iteration.

Features:

  1. Spiral model is a combination of waterfall model and rapid prototyping model.
  2. Emphasizes risk analysis overlooked by other models.
  3. Each spiral consists of 4 steps: planning, risk analysis, implementation engineering, and customer assessment.

shortcoming:

  1. It is difficult to convince users that the outcome of this evolutionary approach is controllable.
  2. The construction period is long.

Agile development

It is the most development mode used by some small companies. Agile development takes the evolution of users' needs as the core, and adopts an iterative and step-by-step approach to software development. In agile development, a software project is divided into multiple sub-projects at the early stage of construction, and the results of each sub-project have been tested and have the characteristics of visibility, integration and operation. In other words, it is to divide a large project into multiple small projects that are connected with each other but can also run independently, and complete them separately. During this process, the software is always in a usable state.
Features:

  1. Short cycle development.
  2. Incremental development.
  3. Automated tests written by programmers and testers to monitor development progress.
  4. Communicate the structure and intent of the system through verbal communication, testing, and source code.
  5. Write test code before writing code. Also called test first.

shortcoming:

  1. Team formation is difficult and the demands on each member are high.
  2. Testers are required to fully master various scripting language programming and unit testing.

Incremental model

The incremental model is to modularize the software system to be developed, treat each module as an incremental component, and analyze, design, code and test these incremental components in batches. The software development process using the incremental model is an incremental process. Compared with the waterfall model, the incremental model is used for development, and developers do not need to submit the entire software product to the user at one time, but can submit it in batches.
Features:

  1. By modularizing the software system to be developed, software products can be submitted in batches, so that users can keep abreast of the progress of software projects.
  2. Developing in units of components reduces the risk of software development. A bug in a development cycle does not affect the entire software system.
  3. The development sequence is flexible. Developers can prioritize the implementation order of components, and complete core components with stable requirements first. When the priority of components changes, the implementation order can also be adjusted in time.

shortcoming:

  1. It is easy to degenerate into changing the model while doing, so that the control of the software process loses its integrity. 
  2. If there is an intersection between incremental packages and it is not handled well, a full system analysis must be done.
  3. The interface requirements are very high.

fountain model

Fountain model is an object-driven model driven by user needs, which is mainly used to describe the object-oriented software development process. The model considers that the stages of the bottom-up cycle of the software development process are mutually iterative and gapless.
Features:

  1. The fountain model is not like the waterfall model, which requires the design activity to start after the analysis activity is completed, and the coding activity to start after the design activity is completed.
  2. The various stages of the model have no clear boundaries, and developers can develop simultaneously.
  3. It can improve the development efficiency of software projects, save development time, and adapt to the object-oriented software development process.

shortcoming:

  1. Since the fountain model is overlapping in various development stages, it requires a large number of developers during the development process, which is not conducive to the management of the project.
  2. In addition, this model requires strict management of documents, which makes auditing more difficult, especially in the face of various information, requirements and materials that may be added at any time.

Scope of application

Waterfall Model: Requirements do not change or rarely change during development time. Analysis designers are very familiar with this area. low risk projects. The user uses a stable environment (such as system software, tool software).
Rapid prototyping model: requirements are unclear or complex systems. Users cannot put forward application requirements independently.
Spiral Model: The system is large and the risk is high. Requirements are less clear.
Incremental model: The system is easy to split. Development manpower is relatively small. Especially suitable for commercial software.
Fountain Model: . Object-Oriented Software Development Process.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325312416&siteId=291194637