@[toc]

Refer to the article

The introduction

Software process is the whole process of system development, operation and maintenance from the definition of software project requirements to the whole life cycle of software operation and maintenance. Software process model/software life cycle model is a development strategy that provides a set of norms for each phase of software engineering to make the project progress to the desired purpose. For software development of any size, we need to choose an appropriate software process model based on the nature of the project and application, the approach adopted, the controls required, and the characteristics of the product to be delivered

⭐️ Waterfall model/linear model/traditional life cycle model

Classic traditional

Waterfall model is a particularly classic and old-fashioned cycle model, which is generally divided into several stages, such as planning, requirement analysis, outline design, detailed design, coding, testing, operation and maintenance. The cycles of the waterfall model are interlocking. The interaction point in each cycle is a milestone. The end of the previous cycle requires the output of the work result of this activity, which will serve as the input of the next cycle. However, when uncontrollable problems occur in one phase, it can lead to rework to the previous phase or even delay the next phase. 💡 has written a project by oneself commonly, it is to go according to this process.

advantages

  • The development of the project is divided into several clear and clear stages, in a fixed order, from top to bottom.
  • Document-driven, reduce development costs.
  • Phases are sequential and dependent (both pros and cons).
  • Required documentation must be completed for each phase, with documentation reviews completed at the end of each phase and errors corrected early.

disadvantages

  • Actual projects rarely follow the rational order proposed by the waterfall model, and requirements can change.
  • It is often difficult for customers to clearly describe all requirements.
  • The customer needs to be patient and will not see the software developed until the project is completed.

The V model

Focus on test quality assurance

The V model is actually a variant of the waterfall model, and you can see that many of its steps are similar to the waterfall model. However, the V model divides testing into multiple stages and puts more emphasis on quality assurance in the development process.

advantages

  • The development and testing phases are clearly identified, including low-level (unit) and high-level (system) tests.
  • Refine gradually from top to bottom, clear division of labor at each stage, easy to control the overall project.

disadvantages

  • The top-down order causes the test work to not be modified in time after coding.
  • In actual work, the requirements often change, resulting in repeated execution of V model steps, a large amount of rework and low flexibility. The disadvantage is similar to the waterfall model

Rapid prototyping model

Quickly draw a prototype first

The first step of the rapid prototype model is to create a rapid prototype, so that developers and users can directly interact with each other through the prototype, and then fully discuss and analyze the requirements of the current system. Finally, based on the prototype, the product can be developed to satisfy the users.

Advantages:

  • Can quickly provide a user can see the prototype software. 💡 As just said, many times the user does not know their own needs, direct drawing is the most reliable way.
  • Can effectively respond to the uncertainty of demand, avoid waste of manpower.

disadvantages

  • Entire software may be built at random without consideration for overall software quality and long-term maintainability.
  • Some compromises were used to make the system run quickly, such as inappropriate operating systems, development languages, inefficient algorithms, etc. 💡 many small and medium-sized companies develop a project, find a template project set, and then simply go to the Internet to stick a few functional code, no matter reasonable or not, no matter how performance, as long as it can run up everything is ok, this is a typical rapid prototype development. 😓

Incremental model/incremental model/iterative model

Split incremental components

The iterative model abandons the traditional requirements analysis, design, code, test process and divides the entire lifecycle into sprints (also known as incremental builds). When developing software using an incremental model, the software product is designed, coded, integrated, and tested as a series of incremental artifacts. Each component consists of multiple modules that interact and perform specific functions. 💡 Personal understanding is to subdivide the function, one by one to develop, step by step on the product to add the function.

advantages

  • Deliver a product that does part of the job to the user in a short period of time.
  • Gradually add product features to give users more time to learn and adapt to the product, reducing the impact that a brand new software may bring to users.
  • Development can begin without too much human capital.
  • Can effectively manage technical risks.

disadvantages

  • Incremental models require more careful design than waterfall models and rapid prototyping models, and sometimes it is difficult for developers to give the right size incremental models. 💡 is very understandable, the first split is not good, maybe later development directly reversed.
  • On the one hand, software as a whole, on the other hand, software as a sequence of components, which requires developers to have a strong technical ability.

Refer to the article

The spiral model

Pay attention to risk and be cautious

The spiral model attaches particular importance to the risk analysis phase, especially suitable for large, complex, high-risk projects. A spiral model usually consists of four phases: planning, risk analysis, engineering implementation, and customer assessment. In the spiral model, the first model released may not even produce anything, and it may be a goal on paper, but with each release, each release moves toward a fixed goal, and eventually a better release. 💡 The spiral model is suitable for a high-risk and very large project, so it is important to analyze the risks carefully.

advantages

  • Support dynamic changes in user requirements.
  • Prototypes can be viewed as formal, executable requirements specifications that are easy for both users and developers to understand, serve as a basis for continued development, and facilitate user participation in all key decisions.
  • Special emphasis is placed on the extensibility and modifability of prototypes, which evolve throughout the software lifecycle, which will contribute to the adaptability of the target software.
  • It is convenient for project managers to adjust management decisions in time and reduce development risks

disadvantages

  • If each iteration is not efficient, having too many iterations will increase costs and delay delivery time.
  • The use of this model requires considerable experience and expertise in risk assessment and requires a high level of development team.

The fountain model

Boundaries are not clear and can be developed synchronously

Fountain model is a kind of user demand-driven and object-driven model, which is mainly used to describe the object-oriented software development process. Unlike the waterfall model, the fountain model needs to start the design activity after the analysis activity is finished and start the coding activity after the design activity is finished. There are no clear boundaries between the phases of the model and developers can develop in sync. 💡 in simple terms is to start each stage at will, regardless of the order, what needs to start immediately.

advantages

  • Improve development efficiency and save development time.

disadvantages

  • Due to overlapping development processes, a large number of developers may be required, which is not conducive to project management.
  • In addition, this model requires strict management of documents, which makes it more difficult to audit, especially when various information, requirements and data may be added at any time.

Improved fountain model