In our past
material, we wrote about software development methodologies that help streamline workflows. Then it was about Scrum, Kanban and extreme programming. Today we will talk about Waterfall, FDD and Lean - we will evaluate the pros and cons of the approaches and take a look at the experience of the organizations that use them to help your companies optimize their processes.
/ Flickr / Hamza Butt / CCWaterfall
Waterfall, or cascade model, is a traditional methodology that has
existed since 1970. In it, the development of a project is divided into stages: from the analysis of system requirements to the release of a product.
')
Each step is a separate software development phase, and the team
must complete one phase before moving on to the next. In the “clean” implementation of Waterfall, it is forbidden to return to the previous stage - you can “go only with the flow” to complete the full development cycle. Quora users
compare this model with a train that moves from station to station and cannot turn back.
Initially, Waterfall author Winston Royce (Winston Royce)
cited a cascading model as an example of an inefficient software development method that leads to errors and low-quality products. However, later in his
article he brought the “to the mind” methodology, noting feedback and transitions from testing to writing code, etc.
According to a
PMI study, 12% of companies use the Waterfall methodology on an ongoing basis, and 40% of respondents say that they are often approached. And according
to LiquidPlanner, a cascade model is used by 25% of organizations.
The number of stages in Waterfall varies from company to company, but the general approach is
as follows :
- Creating a concept. The first phase of the software development life cycle ( SDLC ) includes a cost-benefit analysis and an assessment of the scope of the project.
- Training. Recruitment team, the definition of goals and objectives.
- Analysis. Study the scope of work and requirements.
- Design. Creation of a prototype and its coordination with the customer.
- Develop / write code. Creating software based on an approved prototype.
- Testing. The finished product is tested.
- Implementation. The product enters the market.
- Maintenance. Elimination of identified deficiencies and support.
Among the advantages of the methodology can be
identified clear structure and predictable workflow. This makes it easy to estimate costs and estimate deadlines before the project starts. Residents of Quora
argue that such subtleties are important for financial and insurance companies or companies that develop hardware.
In addition, the model involves documenting each stage. This helps to create a base for future projects. Also, a large number of statements allows you at any time to show the customer or management at what stage the product is.
However, there are disadvantages. Clients often do not know what they really want until they look at the prototype. And by Waterfall you need to determine all the requirements in advance, so there is a risk to miss something. The study of the development process of the site of the company Ericsson AB
showed that the cascade model led to confusion, and 26% of the initial requirements were useless.
However, the main drawback of Waterfall is making changes. The product is tested at the end of its life cycle, and it may be too late to edit anything. It was the cost of making changes that prompted Toyota to think about switching to another development methodology.
According
to Satoshi Ishii (Satoshi Ishii), the chief project manager of the company, the correction of defects found after production
costs 1,000-1,000,000 times more. Therefore, Toyota decided to abandon Waterfall and go to Lean, which we will look at next.
Lean
The term
means "lean development." Its roots
go deep into the history of Toyota and its approaches to solving problems. Companies make only those changes that are beneficial, cost-effective and take up no more than 30% of the planned time. This helped the Japanese company learn to switch conveyors to the production of another model in a matter of hours, while other automakers needed weeks.
The Lean methodology was applied to the development of Mary (Mary Poppendieck) and Tom Poppendieck. They wrote the
book "Lean Software Development". Additional information can also be found on their Lean
website .
According to a
PMI study, 8% of companies constantly use Lean principles, and 26% often refer to them.
Principles of Lean:
- Elimination of the superfluous: that which does not benefit.
- Emphasis on learning: cyclical development, customer feedback.
- Decisions are made on the basis of facts, not forecasts.
- Integrity in everything: from informing the customer to refactoring.
- Full-scale vision: it is important to evaluate the project as a whole, and not in parts.
Among the advantages of the methodology distinguish quick release of the product. Joe Foley, manager of Intel Fab Operations in Leixleep,
says that it took 14 weeks for the company to start producing new chips. Thanks to the principles of Lean, this process now takes 10 days.
At the same time, when the team follows the principles of lean development, it does not just perform the tasks, but
seeks to make the product with the least amount of errors. In its
study , the Air Force company found that Lean increases software development speed by 37% and reduces the number of bugs by 24%.
Also, according to a Lean Business Report
study , one of the ten advantages of the approach is a reduction in the cost of projects - 27% of IT companies reduced costs by introducing Lean principles.
However, they are not suitable for everyone. The GlobalLuxSoft team
notes that lean development should be applied only if experienced developers are connected to the project, as learning on the go is impossible and puts the creation of a product at risk.
All decisions must be supported by analytical data and monitoring results of processes, otherwise the team runs the risk of plunging into too many changes and forgetting about the main goal of the project. Here you can refer to the experience of Toyota: tight control from the side
does not allow developers to deviate from priorities.
/ Flickr / Sebastian Sikora / CCFeature Driven Development
Feature driven development (FDD) is a methodology that unites best practices and focuses developers on functional elements (features) that are useful from a client’s point of view.
This link can be used to find an approximate FDD development algorithm. According to
research , 11% of companies constantly use Feature Driven Development, and 31% use this methodology from time to time.
The creator of FDD, Jeff de Luca (Jeff De Luca), first
proposed the methodology in 1997, when he was looking for the best solution for developing software for a bank in Singapore. Then he provided a combination of 5 processes:
- Development of a general model. The development team is divided into groups creates models for individual tasks. Then one of the proposed models or their combination is selected.
- Creating a list of functions . When the team has developed a common model, it identifies the features that are beneficial to the client.
- Planning. Here it is important to take into account the load on the group, risks and other aspects to prevent the occurrence of critical problems.
- Design and development. Based on the data of the first process, the project manager selects a group of functions that the team must implement in a certain period of time.
- Implementation. After the team has developed and tested the code and modules, it proceeds to create software. At this and the previous stage takes 75% of the efforts of the development team.
The success of the project depends on the experience and knowledge of the lead programmer. In FDD, he plays all the main roles: leader, mentor, analyst, and so on. At the same time, the methodology was
created for long-term projects, therefore, as residents of Stack Overflow
note , it makes no sense to use it for small tasks.
However, there are pluses. Continuous reporting on progress at all levels
helps to track progress and results. This allows you to regularly update the project, identify errors and provide the client with information at any time. And one of the residents of Stack Overflow
claims that the main plus of FDD is the ability to assess at any time whether a project is behind schedule or moving faster.
As already noted, FDD is used in large-scale projects, since at the first stage, a common model is being developed to understand the product. The same property helps to attract new developers to work. At the same time, a deeper understanding of the project requirements and customer expectations
reduces the risk of unwanted “surprises”.
PS What else do we write in our corporate blog: