Software development history: From waterfall to Agile to DevOps
As a popular software development model in the 1970s and 1980s, waterfall connects the whole software life cycle through six processes: planning, requirement analysis, software design, programming, testing, and operation and maintenance. The six processes are in strict sequence, and the following process cannot start until the current one has finished. This top-down flow resembles the fall of a waterfall, hence the name waterfall model.
Advantages of waterfall model
1. There are straightforward points of intersection
Whether planning, requirements analysis, or even software testing, there is a clear starting point and development process -- where the following begins after the last one has finished.
2. Have a clear sense of responsibility
The developers are all in their place, and the collaboration process is reasonable and transparent.
3. Accurately trace the source of the problem
During the development process, if there is any missing link, the person in charge can accurately locate the root cause of the problem and find the optimal solution.
4. Clear process division
Because the development process is interlocking, there are no multiple processes working simultaneously.
5. Timely feedback
Before the end of each process, the content of the process should be audited so as to find errors in the software development process as early as possible and correct errors in time.
Disadvantages of the waterfall model
1. Single feedback result
Since the feedback form of the waterfall model only applies to the currently completed stage, it cannot give macro feedback to the whole process, so the feedback results at each intersection point are not accurate.
2. The customer does not participate in the development process
First, customers are not allowed to participate in the development process until new requirements are proposed after the initial requirements are made. Second, customers only see the results later in the development process.
3. Disrupt the release rhythm
As mentioned above, the waterfall model has a strict sequence, and only after the completion of the previous stage can the next stage be entered. Therefore, in the whole process, the addition of new requirements will cause the current task to stop and return to requirements analysis, software design, etc. The subsequent process will need to be redone.
4. Waste of human resources
The waterfall model requires the process to be interlocking, so that while software development is still in the previous stage, the people behind the process are in a state of inactivity. And because waterfall development requires people to do their jobs, when there is a shortage of people at one stage, it can only be extended, resulting in some people being overworked and others being idle.
5. The cycle is long
This software development model presents a step-by-step approach to each phase and is, therefore, not suitable for projects that need to be delivered immediately.
6. The process rigidity
Managers control the process state by specifying the completion time and intersection points of each stage. This standardized model does not add a little flexibility, which ultimately leads to the rigidity and rigidity of the process.
The Manifesto of Agile
The increasing popularity of the Internet requires software development to be closer to People's Daily use, and at the same time, waterfall development is under the impact of the rising "agile development".
In 2001, seventeen originators and practitioners of agile methods came together to issue the agile Software Development Manifesto. They stress that agile can develop software in a more concise, sustainable, short-cycle, and efficient way, and hope that collaboration in the form of the Agile Alliance will help others in the industry to think about software development, methodology, and organizational structures in a new and more agile way.
Agile development emphasizes:
- Individuality and interaction over processes and tools
- Working software trumps detailed documentation
- Customer cooperation trumps contract negotiation
- Response changes are more significant than compliance plans
To put it simply, Agile uses "iterative development", which divides software project requirements into multiple iterations, and the results of each iteration can be delivered after completion of development, testing, feedback, and so on. That is, any tested subproject in the development process can run independently before the customer delivers the software.
Advantages of the Agile model
1. Emphasis on "responding to change"
After a development plan is made, the plan is not the only guide to follow. The development process will change due to the change of customer needs. At this time, the product manager needs to update the product requirements constantly, and members of the development team take the initiative to cooperate so that the iterative process can be flexibly adjusted according to the change of requirements.
2. Maximize resource utilization
Waterfall development requires everyone to do their job, but agile development requires everyone to trust each other, help each other, and work together. When a position is vacant, someone else can temporarily replace it, maximising resource utilisation efficiency.
3. Feedback on time
Agile delivers runnable results after each iteration, in contrast to waterfall development, where feedback comes later in the lifecycle. Whether the team is testing the iteration results or getting feedback from the customer, the feedback is immediate.
4. Short cycle
Each iteration is a cycle, so deliverables are significantly more efficient.
5. Customer involvement
At the end of each iteration, the results of iteration can be delivered to customers, who can timely track the latest product status and participate in product development.
Disadvantages of the Agile model
1. Ignore the importance of documentation
Agile development regards working software as more important than detailed documentation. While focusing on communication between members, it ignores the importance of documentation too much, which will produce unnecessary and tedious communication links when adding new members to the team.
2. Development Cost
Because agile development is iterative, with a small, complete development process in each iteration, development costs are high.
3. Demand analysis error
In the demand analysis stage, once there is a problem in the demand analysis, it will lead to the deviation in the direction of the following work and development process.
Agile development dramatically improves the speed of software development, but it pays more attention to the software development stage than to the operation and maintenance stage. Agile values and principles are not reflected in the transition between developers and operations, so there is still a lack of necessary collaborative efficiency between development and operations.
This is where DevOps comes in. DevOps promotes efficient collaboration between development, operations, and testing, enabling continuous software delivery to fix and resolve problems faster.
The advantage of DevOps
1. Promote efficient cross-functional collaboration
Continuous development, continuous testing, integration, deployment, and monitoring are carried out in the whole software development life cycle, which solves the problem of low cooperation efficiency among development, operation and maintenance and testing.
2. Wider range
It is not limited to the development process, but integrated with development, operation and maintenance, testing, and extended to the complete life cycle of software.
3. Process Automation
Automate workflows, for example, automated test systems can identify errors or bugs in code and ensure that functionality does not suffer from defects or bugs.
4. More Security
Automated testing to continuously check the quality and deliverable standards of the delivered product, or continuous monitoring to make the product safer.
5. The period is short
DevOps can develop high-quality software in a short period.
In the software life cycle, both the waterfall model and the agile development and DevOps that companies are actively transforming are generated in the continuous development of the software industry and meet the needs of the industry development.
In the transition process, agile or DevOps are faced with many difficulties. They can encounter many anti-patterns if they are not careful, which requires teams within the company not just to be formalistic but to take bold steps to take the first step.