On software development model

Keywords: software testing


There are five software development models: waterfall model, spiral model, iterative model, incremental model and agile model.

1, Waterfall model

1.1 process

1.2 advantages and disadvantages

advantage:

Emphasize the stage of development; 
Emphasize early planning and demand survey; 
Emphasize product testing.

Disadvantages:

Relying on the only demand survey conducted in the early stage, it can not adapt to the change of demand; 
As it is a single process, the experience and lessons in development cannot be fed back and applied to the process of this product;
The risk is often revealed later than the later test stage, so the opportunity to correct it early is lost.

1.3 applicability

It is suitable for projects with stable requirements because the best time to correct errors is lost.
The project cycle is short. The requirements are predictable and the software implementation method is mature;

2, Spiral model

2.1 applicability

It is suitable for projects with large scale, high complexity and high risk. This mode of iterative development brings new requirements to software testing. It does not allow an independent testing time and stage. Testing must follow the iteration of development.

2.2 advantages and disadvantages

advantage:

Emphasize strict whole process risk management. 
Emphasize the quality of each development stage. 
Provide an opportunity to review the value of the project and continue.

Disadvantages:

–The introduction of very strict risk identification, risk analysis and risk control will improve the skill level of risk management
 Put forward high requirements. This requires the investment of personnel, capital and time.

3, Incremental model

3.1 general

Incremental model is also called incremental model. When using incremental model to develop software, software products are designed, coded, integrated and tested as a series of incremental components. Each component is composed of multiple interacting modules and can complete specific functions.
When using incremental model, the first incremental component often realizes the basic requirements of software and provides the most core functions.
Incremental model decomposes the whole software product into many incremental components, and gradually submits products to users in batches.

3.2 features

The sequential characteristics of waterfall model are combined with the iterative characteristics of rapid prototyping method
 The software is regarded as a series of interrelated increments, and one increment is completed each time in each iteration of the development process

3.3 advantages and disadvantages

advantage:

Be able to submit products that can complete part of the work to users in a short time
 Modularize the software system to be developed, and submit software products in batches, so that users can know the progress of software projects in time
 Developing with components as a unit reduces the risk of software development. Errors in a development cycle will not affect the whole software system
 The development sequence is flexible. Developers can prioritize the implementation order of components and complete the core components with stable requirements first.
When the priority of components changes, the implementation order can be adjusted in time

Disadvantages:

Since each component is gradually incorporated into the existing software architecture, the added component must not destroy the constructed system part,
This requires the software to have an open architecture
 In the development process, the change of requirements is inevitable. The flexibility of incremental model can greatly improve its ability to adapt to this change
 It is better than waterfall model and rapid prototyping model, but it is also easy to degenerate into changing model while doing, which leads to the loss of integrity of software process control
 If there is an intersection between incremental packages and it is not handled well, a comprehensive system analysis must be carried out. This model refines the functions and separates them
 The development method is more suitable for the software development process with changing requirements

3.4 applicability

Projects with changing requirements and insufficient developers

4, Iterative model

4.1 General

Development iteration is a process that completely passes through all workflow: (at least) requirements workflow, analysis and design workflow, implementation workflow and test workflow. In essence, the iterative model is similar to a small waterfall project.
Each iteration will produce a product that can be released, which is a subset of the final product.

4.2 applicable items

It is suitable for projects that cannot completely define all the requirements of the product in advance and plan multi-phase development.

4.3 advantages and disadvantages

advantage:

Better adapt to changes in demand
 Reduces the risk of spending on an incremental basis
 By identifying risks early in development, risks can be addressed as early as possible
 Speed up the progress of the whole development work

Disadvantages:

It needs high-quality project managers to lead and high-level development team

5, Agile model

5.1 source

Derived from the Agile Manifesto, emphasizing:

Individuals and interactions are more important than processes and tools
 Available software is more important than complete documentation
 Customer collaboration is more important than contract negotiation
 Responding to change is more important than following the plan
 In each comparison pair, the latter is not worthless, and the former is more valued.

5.2 general

Agile development takes user requirements as the core and adopts an iterative and step-by-step method for software development. It emphasizes adaptability rather than predictability, and emphasizes people-centered rather than process centered. In agile development, the software project is divided into several sub projects at the initial stage of construction. The results of each sub project are tested and have the characteristics of visualization, integration and operation. In other words, a large project is divided into several interrelated but independent small projects and completed separately. During this process, the software is always available. The Manifesto of agile development is to deliver valuable software as soon as possible and continuously to satisfy customers.

5.3 principles

(1)Achieve customer satisfaction through early and continuous delivery of valuable software. Welcome changing needs, (2) even in the late stage of project development. We should be good at using demand changes to help customers gain competitive advantage.
(3)Continuously deliver available software, usually in a few weeks, the shorter the better.
(4)During the project, business people and developers must work together.
(5)Projects must be built around individuals with internal motivation who should be trusted.
(6)Face to face conversation is the best way to communicate.
(7)Availability is the main indicator of progress.
(8)Advocate sustainable development and maintain a stable rate of progress.
(9)Constantly pay attention to whether the technology is excellent and the design is good.
(10)Simplicity is essential to minimize unnecessary work.
(11)The best architecture, requirements and design come from spontaneous understanding within the team.
(12)The team should regularly reflect on how to be more effective and adjust accordingly.

5.4 features

1.Fast iteration
 The complex problem decomposition method is adopted to make the requirements, development and testing of small versions easier and faster.

2.Involve testers and developers in requirements discussions
 Demand discussion is most efficient in the form of discussion groups. The workshop group needs to include testers and developers, so that testable requirements can be more easily defined, grouped and prioritized. At the same time, this method can also make full use of the complementary characteristics among team members. The needs identified in this way are often more efficient, more active and more participatory than the needs discussion conference.

3.Write testable requirements documents
 Start with "user story"( user story)This method allows us to focus on requirements rather than solutions and implementation technologies. Mentioning technology implementation solutions too early will reduce our attention to requirements.

4.Communicate more and minimize documents

Communication is a common problem in any project. Good communication is a prerequisite for agile development, and the importance of efficient communication is emphasized. The team should ensure daily communication, and face-to-face communication is more effective than email. It is emphasized that the product of software development is software, not documents. Documents serve software development, not the main body of development.

5.Responding to change is better than following the plan
 In the process of developing software with agile method, receive the change of requirements, anticipate the change of system requirements, respond quickly to the change, design the system to adapt to the change, and actively adapt to the change rather than predict

6.Consider testing early
 Early consideration of testing is very important in agile development. In traditional software development, test cases are mostly written last, which leads to late discovery of problems in requirements and high improvement cost. If you start writing test cases earlier, acceptable test cases are basically completed at the same time when the requirements are completed.

5.5 advantages and disadvantages

advantage:

It is a very realistic software development method.
Promote teamwork and cross training.
Functions can be rapidly developed and proven.
Minimum resource requirements.
Suitable for fixed or variable requirements
 Provide solutions for early part of the work.
A good model for a stable and changing environment.
Minimal rules, easy-to-use documents.
Realize concurrent development and delivery in the overall planning environment.
Little or no planning is required.
Easy to manage.
Provide flexibility for developers.

Disadvantages:

It is not suitable for dealing with complex dependencies.
Sustainability, maintainability and scalability are at greater risk.
Master plan, agile leader and agile PM Practice is necessary. Without it, it will not work.
Strict delivery management determines the scope, the functions to be delivered and the adjustment to meet the deadline.
Much depends on customer interaction, so if the customer is not clear, the team may be pushed in the wrong direction.
There is a very high personal dependency due to the minimum number of documents generated.
Technology transfer to new team members can be challenging due to lack of documentation.

This blog is shared here. If there are deficiencies, please correct them!

Posted by billabong0202 on Tue, 28 Sep 2021 19:09:30 -0700