Software DeliveryA guide through working models in software development services
Software development is a standardized, complex process that goes through many stages over a sometimes long time. One of the most critical stages of the software lifecycle is the first step, namely, the selection of the development methodology and the correct planning of priorities at the start. The further success of the project largely depends on this choice. This article will help you choose the best option in most situations. The article describes the methodologies that we regularly encounter in Mobile Reality.
There are software development models. And there are methodologies. There is much contradictory information on the Internet about what is what and how to distinguish them. It can be difficult for a novice specialist to figure this out.
Stages of the software life cycle
Any software has a life cycle — the stages from the beginning of creation to the end of development and implementation. Most often, it is preparation, design, innovation, and support. Steps can be called differently and split into more miniature stages.
Let's consider these stages in the example of the life cycle of an online store.
Preparation. Ivan decided to launch an online bookstore and began analyzing which similar sites are already represented on the web. I collected information about their traffic and functionality.
Designing. Ivan chose a contractor company and discussed the architecture and design of the future online store with its specialists.
Creation. Ivan signed a contract with the developers. They started writing code, drawing the design and compiling documentation.
Support. Ivan signed the acceptance certificate, and the contractor placed the online store on the "combat" servers. Users began to visit it and report bugs to support, and programmers began to fix everything promptly.
The software development model describes what stages of the life cycle it goes through and what happens at each of them.
And the methodology includes a set of methods for managing development: these are the rules, techniques, and principles that make it more effective.
Basic software development models
- Code and fix — coding and error correction model;
- Waterfall Model — cascade model, or "waterfall";
- V-model — V-shaped model, development through testing;
- Incremental Model — incremental model;
- Iterative Model — iterative (or iterative) model;
- Spiral Model — spiral model;
- Chaos model — a model of chaos;
- Prototype Model — prototype model.
Of these models, five main ones are the most popular: cascade, V-shaped, incremental, iterative, and spiral. Let's analyze them in more detail.
Waterfall (cascade model, or "waterfall")
In this model, development is carried out in stages: each next step begins only after the previous one ends. If everything is done correctly, "waterfall" will be the fastest and simplest model. It has been used for almost half a century, since the 1970s.
Advantages of the Waterfall
- Development is easy to control. The customer always knows what programmers are doing right now and can manage deadlines and costs.
- The cost of the project is determined at the initial stage. All steps are planned already at the scene of the contract agreement. The software is written continuously "from and to."
- Hiring testers with serious technical training is optional. Testers will be able to rely on detailed technical documentation.
Disadvantages of the cascade model
- Testing begins at the last stages of development. If a mistake has been made in the product requirements, it will be expensive to fix. Testers will find it when the developer has already written the code, and technical writers will find the documentation.
- The customer sees the finished product at the end of development and only then can give feedback. There is a high probability that the result will not suit him.
- Developers write a lot of technical documentation, which delays the work. The more extensive the project documentation, the more changes need to be made, and it takes longer to coordinate them.
- The waterfall is suitable for developing projects in the medical and space industries, where an extensive database of documents (SNIPS and specifications) has already been formed, based on which you can write requirements for new software.
When working with a cascade model, the main task is to write detailed development requirements. At the testing stage, it should turn out that an error in them affects only some of the products.
V-shaped model (development through testing)
This is an advanced cascade model in which the customer and a team of programmers simultaneously draw up requirements for the system and describe how they will test it at each stage. The history of this model begins in the 1980s.
Advantages of the V-shaped model
- The number of errors in the software architecture is minimized.
Disadvantages of the V-shaped model
- If a mistake were made during the development of the architecture, then it would be expensive to go back and fix it, just like in the waterfall.
The V-model is suitable for projects where reliability is essential and the error cost is very high. For example, when developing airbags for cars or patient monitoring systems in clinics.
Incremental Model (incremental model)
This model of development in parts (increment in English — increment) has its roots in the 1930s. Let's take it as an example of creating a social network.
The customer decided to launch a social network and wrote a detailed technical task. The programmers proposed implementing the main functions — a page with personal information and a chat. And then test on users, "it will take off or not."
The development team shows the product to the customer and puts it on the market. If both the customer and the users like the social network, work on it continues, but in parts.
Programmers simultaneously create functionality for uploading photos, exchanging documents, listening to music, and other actions agreed upon with the customer. Increment by increment, they improve the product, approaching what is described in terms of reference.
Advantages of the incremental model
- No need to invest a lot of money at the initial stage. The customer pays for the creation of the main functions, receives the product, "rolls out" it to the market — and, based on feedback results, decides whether to continue development.
- You can quickly get feedback from users and promptly update the terms of reference. This reduces the risk of creating a product that no one needs.
- The error is cheaper. If a mistake were made during the architecture development, it would not cost as much to fix it as in the "waterfall" or V-shaped model.
Disadvantages of the incremental model
- Each team of programmers develops its functionality and can implement the product interface in its way. To prevent this from happening, it is essential to explain at the stage of discussing the technical task what it will be like so that all project participants have a common understanding.
- Developers will delay the completion of the main functionality and "cut small things." To prevent this, the project manager must control what each team is doing.
The incremental model is suitable for projects where the same technical task is already prescribed initially, and the product must quickly enter the market.
Iterative Model (iterative model)
This is a model in which the customer is not obliged to understand what product he wants and may wait to prescribe a detailed technical task.
Let's look at the example of creating a messenger and how this model works.
The customer decided that he wanted to create a messenger. The developers have made an application in which you can add a friend and start a chat for two.
The messenger was "rolled out" to the app store, and users started downloading it and actively using it. The customer realized that the product was popular and decided to refine it.
Programmers have added to the messenger the ability to watch videos, upload photos, and record audio messages. They are gradually improving the application's functionality and adapting it to market requirements.
Advantages of the iterative model
- The rapid release of a minimal product makes it possible to receive feedback from the customer and users quickly. This means focusing on the essential software functions and improving them by market requirements and customer wishes.
- Continuous testing by users allows you to detect and eliminate errors quickly.
Disadvantages of the iterative model
- Using databases or servers at the initial stage is difficult to scale, and the latter cannot withstand the load. You may have to rewrite most of the application.
- Lack of a fixed budget and deadlines. The customer needs to learn the final goal and when the development will end.
The iterative model is suitable for working on large projects with uncertain requirements or for tasks with an innovative approach when the customer is still determining the result.
Spiral Model (spiral model)
Using this model, the customer and the development team seriously analyze the project's risks and perform it in iterations. The next stage is based on the previous one, and at the end of each turn — the iteration cycle — a decision is made on whether to continue the project. This model began to be used in 1988.
Let's look at how this model functions, using the example of the development of the "Smart Home" system.
The customer decided he wanted to make such a system and ordered programmers to implement control of the kettle from the phone. They began to act according to the waterfall model: they listened to the idea, analyzed the offers on the market, discussed the system's architecture with the customer, decided how they would implement it, developed, tested, and "rolled out" the final product.
The customer assessed the result and the risks: how much users need the following product version — already with TV control. I calculated the deadlines and budget and ordered the development. The programmers acted on a cascade model and presented the customer with a more complex product developed based on the first one.
The customer thought it was time to create functionality for controlling the refrigerator from the phone. But analyzing the risks, I realized that it is difficult to embed a Wi-Fi module in the fridge, and manufacturers are not interested in cooperation on this issue. Consequently, the risks exceed the potential benefits. Based on the data received, the customer decided to stop developing and improve the existing functionality to understand how to create the Smart Home system eventually.
The spiral model is similar to the incremental one, but much more time is devoted to risk assessment here. With each new turn of the spiral, the process becomes more complicated. This model is often used in research projects where risks are high.
Advantages of the spiral model
- Much attention is paid to the study of risks.
Disadvantages of the spiral model
- There is a risk of getting stuck at the initial stage — endlessly improving the product's first version and not advancing to the next.
- Development takes a long time and is expensive.
Based on the iterative model, Agile was created — not a model and not a methodology, but rather an approach to development.
What is Agile?
Agile ("edge") translates from English as "flexible." It includes practices, approaches, and methodologies that help to create a product more efficiently:
- Extreme Programming (XP);
- Lean software development (Lean);
- Scrum project management framework;
- Feature-driven development (FDD);
- Test-driven development (TDD);
- Cleanroom Software Engineering methodology;
- Interactive-incremental development method (Open UP);
- Microsoft Solutions Framework (MSF) development methodology;
- Dynamic Systems Development Method (DSDM);
- Kanban development management method.
Today it is one of the most popular software development methodologies. The team works using a virtual whiteboard, divided into project stages. Each participant sees which tasks are in progress, which are stuck at one of the stages, and which have already reached his column and require attention.
Unlike scrum, in the canyon, you can immediately take urgent tasks into development without waiting for the start of the next sprint. Kanban is convenient to use at work and for personal purposes — to distribute your plans or family tasks for the weekend and visually track progress.
As seen from all of the above, each technique and model has its bright advantages and inevitable disadvantages, and each can work to achieve a specific range of tasks. In modern practice, software development models are multivariate. No one is accurate for all projects, starting conditions, and payment models. Even Agile, so beloved by many, can only be applied in some places due to the unavailability of some customers or the impossibility of flexible financing. The methodologies partially overlap in means and are partly similar to each other. Some other concepts were used only to promote their compilers and did not bring anything new into practice. You don’t have to waste your time learning all those working models though, you can leave all the work to professionals which will not only save your time but also money. Surprised? Talk about it with one of our experts in Mobile Reality.
Also, check out our blog for the latest software news, tips and tricks, and more.