Product developmentTesting approaches and practical techniques

Software development models

9 minutes read

To have a good understanding of the processes, you need to study this topic thoroughly. A software lifecycle model describes how the development process works. It is the model that describes the stages that software goes through, from the birth of an idea to the end of the product's use. It is very important to understand that the model is first and foremost the stages of development and their sequence.

Waterfall model

The hallmark of the waterfall model is that all stages of the life cycle are carried out sequentially. In this model, it is impossible to start the next stage without completing the previous one. The characteristics of this model are as follows:

  • Costs and timescales are defined.

  • A lot of documentation.

  • Sequential stages.

  • Testing in the final stages of development.

The most important feature is that once we move to the next stage, we cannot easily go back, as it would be very difficult and expensive. This is because all details, stages, and requirements are pre-negotiated and documented with the client.

Advantages of the waterfall model:

  • Stable, clearly defined requirements before development begins.

  • Fixed order of stages, which allows for quality development planning.

  • Each stage has a clear, verifiable outcome.

  • The team is doing one type of work at a time.

Disadvantages of the waterfall model:

  • The main disadvantage of the cascade model is the late start of testing, which explicitly prevents timely feedback from both the testers in the verification phase and the end users. This significantly increases the cost of an error in the development process.

Below is an example of what the cost of a defect can be, depending on the time it takes to discover it:

Waterfall model

If testing had started at the requirements stage, the cost of fixing a bug would be much lower, because it is much cheaper and easier to fix a bug in the requirements than in the code already written by the programmers.

Pros of the waterfall model

Cons of the waterfall model

  • easy to learn

  • easy to control the development process

  • can be used by technically untrained teams or inexperienced staff

  • early prediction of project cost and schedule

  • late delivery of deliverables

  • documentation may be redundant

  • late defect detection

  • late presentation of results to client

  • difficulty or inability to go back to previous steps

  • lack of user feedback

  • complexity of changes and high impact of these changes on project time and cost

V-model

The V-model is outdated and is no longer used in real projects. Essentially it is an improved waterfall model. The main feature is that testing is planned at the very beginning, and each development phase corresponds to a separate testing phase. The whole point is that test plans for further testing are made at the design and requirements stage.

At the stage of writing the business requirements, a set of tests or a test plan for acceptance testing is formed. The phase of writing the system architecture corresponds to the phase of writing the integration tests or the test plan. The development phase corresponds to the phase of writing unit tests or a test plan.

Pros of the V-model

Cons of the V-model

  • ease of use

  • planning and design at an early stage of development

  • difficulty in making changes

  • no risk analysis stage

  • other "waterfall" problems

Iterative and incremental models

The incremental model is a phased and timed strategy in which different parts of the system are developed at different times and at different rates. When one part is ready, it is integrated into the system immediately, or all parts of the system are developed and then the entire code is integrated at once.

An iterative model is a change strategy that focuses on an initial, simplified implementation of the product, which then gradually increases in complexity and feature set until the final system is complete. This model involves redesigning and fixing existing system components. After each iteration, the output is a new version of the product. This model can jeopardize the project as the number of iterations can potentially go on indefinitely due to constant rework, fixes, etc. As a result, the budget for the project will simply run out.

The difference between these models is shown in the picture below:

Iterative and incremental models

Iterative-incremental model

It is the foundation of the modern software development approach. This approach consists of dividing the process into separate stages – iterations. The result of an iteration is an improvement of the product – increment. The word "iteration” or “iterativity" emphasizes the fact that actions in this model are repeated. An iteration is a short period of time that includes the stages inherent in the waterfall model. An increment is a part, an increment of new functionality.

The essence of this model can be summed up in two points:

  • In terms of the processes that take place, the model is iterative, i.e. all actions in this model are repeated.

  • From a product development point of view, the model is incremental, i.e. after each iteration there is an increment of useful functionality.

This allows the customer to see the product at the end of each iteration, so testing can be applied from the start and throughout the development period. Unlike previous models, where we received the final and finished product at the end of the lifecycle, here the release of the product can be just the beginning.

Iterative-incremental model

Let's look at a simple example:

  1. The customer has decided to launch a social network and has written a detailed technical specification. The programmers suggested implementing the basic features – a page with personal information and a chat room. And then test it on users to see if it "takes off" or not.

  2. The development team shows the product to the customer and releases it to the market. If both the customer and the users like the social network, work continues, but in bits and pieces.

  3. In parallel, programmers create functionality for uploading photos, sharing documents, listening to music, and other activities agreed upon with the customer. Step by step they improve the product and get closer to what is described in the terms of reference.

Pros of the iterative-incremental model

Cons of the iterative-incremental model

  • early product prototyping

  • easy to manage iterations

  • break the project into manageable iterations

  • lack of flexibility within iterations

  • difficulty in fixing problems missed in the early stages of the project

Spiral model

The spiral model is a type of iterative and incremental model. At each turn of the spiral, the minimal finished version of the planned product is achieved. This means that the demonstration of the product to the customer, and therefore the feedback from the customer, is from the beginning to the end of development. The spiral model has proven to be effective in terms of increased attention to risk in projects with unstable requirements that may change during the project.

All phases of the lifecycle in the spiral model proceed in spirals, with design, coding, construction, testing, etc. occurring at each spiral. Such a process reflects the essence of the name: you go through one turn (cycle) of the spiral to get to the end result. And it is not necessarily the case that the same set of processes is repeated from turn to turn. But the results of each turn lead to the main goal.

In this way, as we gradually move up the spiral, we get the product ready for the customer.

Spiral model

Working with this model involves the following stages:

  • Goal elaboration.

  • Risk analysis and prototyping.

  • Development of an interim version of the product.

  • Planning the next turn.

Pros of the spiral model

Cons of the spiral model

  • high level risk analysis

  • prototype appears early

  • suitable for large projects

  • the result is achieved in the shortest possible time

  • if requirements change, you don't have to start from scratch

  • high cost

  • difficult to apply to small projects

  • high reliance on quality risk analysis

Conclusion

The software development model depends on the project and the end goals. Material, intellectual, and other resources influence the choice of model. This is reflected in the workflows of the test team and other departments with their advantages and disadvantages.

9 learners liked this piece of theory. 0 didn't like it. What about you?
Report a typo