In recent years, agile development has been born in a way that compensates for the disadvantages of waterfall development, which is a conventional development method. This time, I compared the features and differences of each. We will also touch on “hybrid development,” which is a combination of agile and waterfall development, and explain in detail.
table of contents
- 1. What is the difference between agile development and waterfall development? Comparison
- 2. How do you use agile and waterfall properly?
- 3. How to use agile and waterfall together / hybrid development?
- 4. Summary
1. What is the difference between agile development and waterfall development? Comparison
What is the difference between agile development and waterfall development?
In conclusion, waterfall development divides each process based on the specifications and proceeds with development, while agile development tests and implements in a short period of time so that the specifications can be changed flexibly. It is a development method that repeats.
I will explain the differences in detail.
Agile for agile development means “quick,” “agile ,” and “quick . ” Agile development is one of the methods in system and software development, and it is a development method in which tests and implementations are repeated in small units rather than dividing the system into large units .
Compared to the conventional development method, there are various merits such as “development efficiency is shortened”, “man-hours required for correction can be reduced”, and “customers can try out the screens and functions that actually move”. In order to enhance the expected effects of agile development, a guideline called “Agile Software Development Declaration” has been created with an emphasis on understanding the ideas and principles.
Source:Â How to read the Agile Software Development Declaration | IPA Information-technology Promotion Agency
The guidelines state that you must adapt to change in order to improve your software development. The characteristic of agile development is to improve development efficiency so that it can respond to the rapid changes of the times .
If you want to know more about agile development, please read this article as well.
1.1.1 Main processes of agile development
The main process of agile development can be divided into three parts.
- User story
- Release plan
- Iteration (sprint)
“User story” is a concept used in agile development instead of “requirements” .
“Release plan” is a process to manage the entire project, “Which function can be released by when” . Prioritize “project goals,” “iteration length,” and “user stories.”
“Iteration (sprint)” has the same meaning as “sprint” in Scrum development. Simply put , development in a short period of time is repeated many times .
1.1.2 Advantages and Disadvantages of Agile Development
The advantage of agile development is that it can respond flexibly and flexibly, and the development speed is fast .
Since implementation and testing are repeated for each function, development efficiency can be improved and the time and effort required for modification can be reduced. It is also important for customers to easily see the progress of development because they proceed with development while communicating with each other.
The disadvantage of agile development is that the schedule is set for each specification / requirement, so it is difficult to see the overall project image and there is a possibility that there will be a large deviation from the original schedule.
1.2 What is waterfall development?
Waterfall development has the property of determining the specifications of software functions at the initial planning stage . Engineers assigned to each process such as “planning”, “design”, “implementation”, and “testing” are in charge. Is it a shape like “compensation for puzzle pieces”?
It is not good if any one of them is missing, and we will proceed while carefully managing each process to see if there are any omissions.
Since we conduct interview surveys with customers and proceed to the detailed design phase based on the basic design after defining the requirements, we cannot proceed if there is a defect in the previous process.
1.2.1 Main processes of waterfall development
Divide development into multiple processes and create deliverables at the end of each process. It is named because the process progresses like “water flows down”, and development is done so that it flows from the upstream process to the downstream process. The waterfall development process can be subdivided into 10 processes.
- Requirements definition (requirements definition)
→ Hearing with customers - External design
→ Selection of functions required for customer’s system - Internal design
→ More detailed system design based on external design - Programming
→ Actually implemented using programming - Unit test
→ Test for each module - Integration test
→ Combine and test each module - System (comprehensive) test
→ Check if the specifications required by the customer, such as processing speed and mass access, are met. - Operation test
→ Check if there is any problem under system operation - System migration (release)
→ Release confirmation - Operation / Maintenance
→ Confirmation / response after release
If you compare it to the construction of a house, creating a blueprint is requirement definition-internal design, and the actual work stage is programming-operation / maintenance.
1.2.2 Advantages and disadvantages of waterfall development
The advantage is that the processes are clearly separated, so the engineer in charge of each process can concentrate on the development work of the “assigned process”. Therefore, even relatively inexperienced engineers can easily participate in development, and it can be said that it is an easy method to educate new engineers.
The disadvantage is that it is not possible to return to the previous process due to the specifications, so if the specifications need to be changed or modified in the subsequent process, development may be significantly delayed. Also, because the processes are clearly separated, it is often difficult for customers to understand what they are doing.
2. How do you use agile and waterfall properly?
How should I use agile and waterfall properly? Each development method is not suitable. I will explain in detail.
2.1 Prerequisites / orientation / unsuitability are different for each
Waterfall has the advantage of easy planning management and is vulnerable to specification changes. Agile is resistant to specification changes, and although the system can be released in stages, it is difficult to manage the overall schedule and progress, and it is difficult to see the “completion”. Keep in mind that each has its own development prerequisites, orientations, and unsuitability.
2.1.1 Waterfall is rational if specifications, issues, and goals are clear
Customer requirements and system specifications. Technical challenges. If the goal is clear, waterfall development is the simplest development model and is rational. However, the man-hours increase at once when the requirements change on the way or when technical issues that cannot be foreseen in advance arise. Even if rework occurs, it is important to keep it within the expected range, and hybrid development is expanding as described later.
2.1.2 Agile if predictability is low and “specifications change”
Agile is suitable when technical issues cannot be foreseen, specification changes are expected in the future, or customer requests are fluid and the requirements are not yet settled . You can continue to brush up while submitting deliverables to customers in a short span, which will be especially useful in midstream processes.
3. How to use agile and waterfall together / hybrid development?
Generally, it is not preferable to use both together. In order to develop a hybrid, it is necessary to understand each concept and process and utilize it in the field.
3.1 In the case of combined / hybrid development of waterfall precedent type
I want to clarify the management and specifications of the overall development plan in advance, but if it is expected that specifications will be changed or functions will be added in actual development, the upstream process will be done in a waterfall and the middle process will be done in agile. Hybrid development would be good.
It is easy to adopt when the technical issue is clear to some extent and the project is highly predictable, but you want to be prepared for unforeseen circumstances + the client wants continuous function additions and repairs.
3.2 In the case of combined / hybrid development of agile precedent type
Agile if the latest framework, language, technology is required, the predictability is low and there are many uncertainties, the technical issues are not clear, the client’s requirements are still vague, and the requirements and specifications cannot be finalized. There is also a hybrid that starts in advance and switches to the waterfall type when the specifications and design are clarified, and makes it to the end with a one-way type.
It is effective as a means to greatly reduce the risk of partial introduction of agile + waterfall specification change in cases where in-house engineers have long development experience of waterfall or many inexperienced engineers are enrolled.
4. Summary
This time, I talked about the difference between agile development and waterfall development and the suitability of each. In addition, I touched on “hybrid development,” which is a combination of both.
Rather than deciding which is better, it is necessary to understand the orientation of each and use the optimal development method for each site. By referring to this article and clarifying which method is suitable, you will be able to lead the project to success.