01 Software lifecycle

The software life cycle refers to the time from the beginning of the idea of a software product to the end of the software when it is no longer in use.

Software life cycle is divided into six stages, namely requirements analysis, planning, design, coding, testing, operation and maintenance. Test interview guide

02 Waterfall Model

The Waterfall model is one of the earliest software development models and is the basic framework for all other software development models. Unlike the software life cycle, it lacks the software operation and maintenance phase.

** Description: ** Each phase is executed only once and is therefore a linear sequential software development model.

Because each phase is performed only once, the previous requirements analysis and design is particularly important.

Advantages:

  • Provides phase-specific checkpoints for projects, emphasizing phases of development.

  • Emphasize early planning and needs investigation.

  • Emphasize product testing.

Disadvantages:

  • There is very little feedback between stages.

  • Results are only seen later in the project cycle, so risks are often not revealed until later in the testing phase, thus missing out on early corrective processes.

  • Single process, the lessons learned in development can not be fed back into the process of this product.

** Applicable projects: ** Projects with clear requirements and few changes.

03 Screw Model

Generally in the early stage of software development requirements are not very clear, the use of progressive development model. Spiral model is one of the representatives of progressive development model.

Description: ** Rotates on a spiral based on the prototype, with each turn going through the process of planning/risk analysis/implementation/evaluation to get the corresponding new version, and several spirals to get the final version.

The spiral model goes through several iterations along the spiral, and the four quadrants in the figure represent the following activity: test interview bible

(1) Plan making: determine software objectives, select implementation plans and clarify the restrictions of project development;

(2) Risk analysis: analyze and evaluate the selected scheme, and consider how to identify and clarify risks;

(3) Implementation engineering: software development and verification;

(4) Customer evaluation: evaluate the development work, put forward suggestions for revision, and make the next plan.

Iterative development mode brings new requirements to software testing, it does not allow a period of independent testing time and stage, testing must follow the development of iteration and iteration, so regression testing is very important.

Advantages:

  • Strict risk analysis is emphasized, but it is not easy for many customers to accept, believe and respond to such analysis. Therefore, this model is often suitable for projects with large scale and large risks.

  • Emphasize quality at all stages of development.

  • This development pattern provides an opportunity to explore whether the project is worth continuing.

Disadvantages:

  • Due to the introduction of very strict risk identification, risk analysis and risk control, it will greatly consume manpower and resources. If the profit of the project is seriously affected, risk analysis will be meaningless.

  • Software developers should be good at looking for possible risks and accurately analyzing them, otherwise there will be greater risks.

  • The software construction cycle is long, but the software technology develops relatively fast, so there may be a big gap with the current technical level, unable to meet the current user needs.

** Suitable projects: ** For recent development and unclear requirements, spiral model is suitable for development to facilitate risk control and requirements change.

04 Iterative Model

A development iteration is a complete process through all workflows :(at a minimum) requirements workflows, analysis and design workflows, implementation workflows, and test workflows. In essence, an iterative model is like a small waterfall project.

Each iteration produces a releasable product that is a subset of the final product.

Description:

  • An iterative process encompasses all software development processes.

  • Each iteration produces a releasable product.

  • This product is a subset of the final product.

Applicable projects: Suitable for multi-phase development projects where all requirements of the product cannot be fully defined in advance.

05 Incremental model

Description:

  • Use linear sequences that stagger over time.

  • Each sequence produces a publishable increment.

  • Each increment produces an actionable product.

  • The first increment is the core product.

Advantages: There is no need to invest a lot of human resources at the beginning, the core products can be launched in advance to stabilize users, and technical risks can be managed in a planned way.

Disadvantages: Requires an open architecture, which can lead to poor design and inefficient development.

Suitable for projects: Software development processes where requirements often change.

Differences between incremental and iterative models:

Incremental is the concept of building block by block, for example: to draw a figure painting, we can draw the head, then the body, then the hands and feet… .

Iteration is the concept of repeated refinement, for example: the same is painting figure painting, we can first draw the overall outline, outline the basic prototype, and then refine, coloring… .

06 Agile Model

Agile model is a lightweight, efficient, low-risk, more emphasis on team collaboration and communication development, suitable for small and medium-sized development teams, customer needs are vague or changeable.

Features:

  • Emphasize interpersonal communication.

  • Document light (weaken documents, but not eliminate them)

  • Customers need to be fully involved

  • Demand can vary test interview treasure book