The interview was asked which development models do you know? It is enough to read this article

foreword

The software development model refers to the structural framework of the entire process, activities and tasks of software development. It generally includes stages such as requirements, design, coding and testing, and even the maintenance stage. The software development model clearly stipulates the main activities and tasks to be completed in the software development process, and is used to guide the work in the entire development process. For different systems, different software development models can be selected according to the characteristics of the software and the participation methods of project members. As a test engineer, the work content of the test is closely related to the software development model. In different development models, the tasks and functions of the test will be different. Below, we will introduce several common development models.

1. Waterfall model

As the earliest software development model, the waterfall model provides the basic framework of software development and lays the foundation for subsequent development models. Since it was proposed by Winston Royce in 1970, it has been widely used until the early 1980s.

This mode has clear stage activities, which are divided into 6 stages: planning→requirement analysis→software design→coding→testing→operation and maintenance. The order of the stages is fixed, from top to bottom, connected with each other, like a waterfall of water falling step by step. This is also the origin of the name of the waterfall model.

The essence of the waterfall model is one pass, that is, each activity is executed only once, and finally a software product is obtained, which is also called "linear sequential model" or "traditional life cycle model". The process is to "flow" to the next stage after the output of the previous stage is completed and approved; otherwise, it returns to the previous stage, or even the previous stage activities.

shortcoming:

1) The division of each stage is completely fixed, and a large number of documents are generated between stages, which greatly increases the workload.

2) Since the development model is linear, a single process, and irreversible, users can only see the development results until the end of the entire process, which increases development risks.

3) Testing is only one of the stages, lacking the idea of ​​testing in the whole process. Early errors may not be discovered until later in the development testing phase, and the later the problem is found, the higher the cost

4) In the stage of software requirements analysis, it is difficult to fully determine all the needs of users, and it cannot cope with projects with constantly changing requirements.

advantage:

1) Provides checkpoints by phase for the project.

2) After the previous stage is completed, you only need to focus on the subsequent stage.

Applicable project scope:

1) Software development projects with clear requirements;

2) No or little change in requirements during development time;

3) Analysis designers should be familiar with the application field;

4) Low-risk projects (very familiar with the target and environment);

5) The user environment is very stable;

2. Rapid prototyping model

The rapid prototyping model is contrary to the waterfall model. In the early stage of the project, a working system prototype is quickly built according to the needs of users, and then it is shown to the users, and the users review and give opinions, and then gradually enrich the project requirements. When the requirements are really determined, the project development will be formally carried out.

advantage:

Helps to meet the real needs of users; the prototype system has been verified through interaction with users, and the resulting specification documents can correctly describe user needs.

shortcoming:

Developers are required to quickly prototype.

Applicable project scope:

Suitable for software projects with unclear requirements.

3. Incremental model

Also known as an iterative model or an evolutionary model, it splits a complete software into different components, and then develops and tests each component, and presents each completed component to the customer, allowing the customer to confirm whether the function and performance of this component meet the customer's requirements. Requirements are finalized and components are integrated into the software architecture. The entire development work is organized as a series of short-term, simple small projects, called a series of iterations, and each iteration needs to go through the process of requirements analysis→software design→coding→testing.

advantage:

1) The cost and time required for the first deliverable version of the software is small

2) It can adapt to changes in customer needs. When the needs change, only a certain component needs to be modified.

shortcoming:

1) If there is no overall plan for the change of user needs, it may change to the "development while doing" mode.

2) When the various components are finally integrated, there may be a risk of integration failure.

Applicable project scope:

It is suitable for relatively complex software projects with tight schedules and functions that can be divided. Software engineers must have a high technical level and be able to design an open software architecture.

4. Spiral model

This model combines the waterfall model and the rapid prototyping model, and was proposed by Barry Boehm in 1988. The biggest feature of this model is the introduction of risk analysis that other models do not have. The spiral model divides the development process into several spiral cycles, and each spiral cycle is roughly in line with the waterfall model, and risk analysis is performed before the start of each cycle. In each stage, first build a software prototype, complete this iterative process according to the rapid prototyping model, and produce a final and perfect product, and then enter the next stage. Similarly, a risk assessment must be carried out before the next stage starts, and the cycle repeats until all are completed. stage tasks.

There are four quadrants in this model, and the meaning of each quadrant is as follows:

1. Formulate a plan: determine the software goal, formulate an implementation plan, and list the constraints of project development.

2. Risk analysis: Evaluate the implementation plan formulated, identify risks and eliminate risks.

3. Implementation engineering: develop products and verify them.

4. Customer evaluation: The customer reviews and evaluates the product, puts forward correction suggestions, and formulates the next step plan.

advantage:

1) The emphasis on alternatives and constraints is conducive to the reuse of existing software, and also helps to regard software quality as an important goal of software development;

2) Reduce the risk of over-testing or under-testing;

3) In a spiral model maintenance is just another cycle of the model and there is no essential difference between maintenance and development.

shortcoming:

The spiral model is risk-driven, so software developers must have extensive risk assessment experience and expertise in this area

Applicable project scope:

It is suitable for large-scale software developed internally (software projects with a long development cycle and relatively susceptible to social factors), and software developers have rich knowledge and experience in risk assessment.

5. V model

The V model is also called the RAD (Rapid Application Development) model, which is an important model in the software development process. Because its model composition resembles the letter V, it is called the V model of software testing. The V model can be roughly divided into the following steps: customer needs analysis, software requirements analysis, general design, detailed design, software coding, unit testing, integration testing, system testing, and acceptance testing.

advantage:

The development phase includes low-level testing (unit testing) and high-level testing (system testing); each phase of development and testing is clearly identified; each phase has a clear division of labor, which facilitates the control of the overall project.

shortcoming:

The top-down sequence leads to the fact that the testing work must be carried out after coding, resulting in errors that cannot be corrected in time; in actual work, the requirements are often changed, resulting in repeated execution of the v-model steps, a large amount of rework, and low flexibility.

Applicable project scope:

It is generally applicable to the development of some traditional information system applications, and when some high-performance and high-risk systems, Internet software, or a system are difficult to be modularized, it is more difficult to make various components required by the V model, and more Emphasize an iterative development model or an agile development model.

6. Agile model

Agile model is a software development model that emerged in the 1990s. In the development of modern society, due to frequent and rapid changes in business, it is often impossible to obtain detailed and complete development requirements before software development. Without complete development requirements, traditional software development models cannot be applied. The agile development model was proposed to solve this problem. The model is developed with an iterative, step-by-step approach, centered on the needs of the client.

At the initial stage of construction, a software project will be split into multiple interrelated and independent sub-projects, and then iteratively complete each sub-project. When the customer's requirements change, the agile model can quickly modify a sub-project to meet the customer's needs. During this process, the software is always in a usable state.

advantage:

1. Users can quickly see a baseline architecture version of the product

2. Agile pays attention to the rapid response ability of the market and communicates with customers face to face

3. Changes can be accepted at any time

shortcoming:

1. Pay attention to personnel communication and need better teamwork

2. Ignoring the importance of documentation requires experienced people in the project

3. If the flow of project personnel is too large, it will increase the difficulty of project maintenance

Applicable project scope:

It is suitable for products with complex products, changing needs, difficult to predict, and long-term realization cycles.


 

What model does your company generally use?

Guess you like

Origin blog.csdn.net/a448335587/article/details/130603916