As the period from development to release tends to be shorter, agile development has become popular instead of the waterfall development method. Shortening the development period means that not only design and implementation but also measures for quality assurance will be shortened, but is it possible to achieve both shortening of development lead time and quality assurance?
This time, we will introduce the difference between agile development and conventional waterfall development, the main methods of agile development, and the way of testing according to it.
What is agile development?
Agile Software Development is one of the system and software development methods, and it is a method of developing by repeating implementation and testing in a short period (iteration) and making corrections and improvements. By communicating closely with each other and repeating development, verification, and feedback daily, we place great importance on responding flexibly to realize the needs of our customers.
Differences between agile development and waterfall development
Agile development has different characteristics than traditional waterfall development. Let’s see the difference between them.
Waterfall development is a development method in which each development process is carried out in order without backtracking so that the water in the waterfall flows down. We will systematically develop in the specified period and order.
In the case of waterfall development, there is an advantage that it is easy to manage the progress of the project and secure development personnel because the development phase is advanced in order of requirement definition, design, implementation, and testing. On the other hand, it has the disadvantages that it takes time to define requirements, design, and prepare documents, and it is difficult to respond to specification changes during the project.
Agile development creates prototypes in a short span and improves them based on feedback and verification. By repeating a short development cycle many times and sometimes using demos to evaluate, we will be able to respond flexibly to specification changes. It has been said that agile development is suitable for small-scale development, but recently it seems that agile development may be done by forming multiple small teams.
Agile development method
There are many different methods of agile development. The features of each method are described below.
Scrum is a management framework named after Rugby’s Scrum to help teams efficiently develop agile. Scrum team members are given one of the following roles:
 Product owner
As the person in charge of the product to be developed, I will compile the opinions of customers and users. The product owner is not involved in coding but plays the role of project managers, such as project progress, budget management, and decision-making when changing policies.
 Scrum Master
As an intermediary between the product owner and the development members, he is in charge of managing the progress of development and coordinating the business content. It is also the role of the Scrum Master to consult with development members and solve problems that the development team has.
 Development members
It is a member who develops Scrum. In Scrum development, the roles of design and testing are not divided, and one member may be in charge of multiple developmental processes.
XP (Extreme Programming)
XP (Extreme Programming) is a development method that shares the following four values with a team and emphasizes both coding and testing from the early stages of development.
- Communication (emphasis on smooth communication between stakeholders)
- Simplicity (only the minimum required design)
- Feedback (emphasis on feedback from frequent tests)
- Courage (to face bold design changes)
FDD (User Function Driven Development)
FDD (Feature-Driven Development) is a development method whose basic work unit is a function (user function) that is valuable to the customer. Since teams plan, design, and code for each user function of the product, it can also be applied to large-scale development by multiple teams.
Agile development flow
In general agile development, we proceed based on a “release plan” that manages the entire project and an “iteration plan” that manages each development period called an iteration of several weeks. The release plan is designed to reflect the user’s intentions and requests called the “user story”. The iteration plan determines the goals, detailed plans, and tasks of the iteration to be performed.
Planning in agile development isn’t just about fulfilling the original schedule, it’s about sharing how the team is going to develop now with the team and all the people involved, and as a basis for determining how much change is acceptable. It seems that it is often used.
How to assemble tests and quality control in agile development
Agile development is characterized by short-term implementation, verification, and improvement, which makes it difficult to manage to reach the target quality. Countermeasures, in this case, include the introduction of TDD (Test-Driven Development), the automation of tests common to each iteration, and the introduction of tests based on user stories.
In a situation where defects are likely to occur, such as repetitive repairs without clearly separating the development process and the test process, it is suitable to repeatedly implement and refactor the test with TDD. If unit-level tests are created and automated based on the requirements of the module method defined at the beginning, the response to specification changes will be smooth.
Compared to conventional waterfall development, agile development has the feature of being more flexible and easier to incorporate the user’s point of view, and by selecting an appropriate method from methods such as Scrum and XP, it can be done in a short period. System development can be realized.
Regarding the quality of software that influences customer satisfaction, it is important to maintain the target quality before the start of development by making full use of test methods such as automation and test-driven development in cooperation with test teams and test companies.
If you ever want to know about similar things, check out the Facebook page Maga Techs