In the rapidly changing IT industry, the “agile type” method is becoming the mainstream, in which development is carried out in a short span and development is performed while flexibly responding to changes and additions of requirements.
In this article, I will explain the points to create value in agile development, including an overview of agile development, explanations of methods, and differences from other development methods.
table of contents
1. What is agile development?
1.1 Overview of
Agile Development 1.2 Principles of
Agile Development 1.3 What Systems Are Agile Development Suitable for?
2. Agile development method
2.1 Scrum
2.2 Extreme Programming (XP)
2.2.1 Extreme programming practices
3. Main development methods other than agile development
3.1 Waterfall development
3.2 Spiral development
3.2.1 Differences from similar “iterative” agile development
3.3 Prototype development
4. Key points for successful agile development
4.1 Clarification of purpose
4.2 Awareness of “possible changes caused by agile” throughout the organization
4.3 Close communication
5. Summary
1. What is agile development?
Agile development is, as the word “Agile = quick” means, to develop software quickly and build a system.
In addition, the emphasis is on setting goals while making little by little rather than making a plan for the entire system, which can be said to be a “think while making” method.
Behind the birth of agile development, in the IT industry, where competition is fierce and technological progress is remarkable, systems also need to flexibly respond to changes each time. For this reason, agile development is becoming the mainstream, in which
a system that meets customer needs is completed in the shortest possible time and flexibly responds to changes in requirements .
1.1 Overview of Agile Development
In agile development, the system is divided by function, and the functions with the highest priority in business are developed in order. Repeat “iteration” in which small functions are performed in the order of “design, development, and testing” in a short period of 1 to 2 weeks (up to 4 weeks) .
Prototypes that are determined to be releaseable at the end of the iteration will be released. In the next iteration, we will improve the completeness of the system while incorporating prototype verification and customer request changes.
1.2 Agile Development Principles
In 2001, the “Agile Software Development Declaration” , which was compiled as an official document of agile development, defines the definition of agile development and 12 principles based on it .
“We value dialogue with individuals rather than processes and tools, software that works
more than comprehensive documentation , collaboration with customers rather than contract negotiations, and response to change rather than following plans .”
(Source: From Agile Software Development Declaration )
From “Principles Behind the Agile Declaration” , we have summarized 12 principles based on the definition of agile development below.
1. Give top priority to customer satisfaction and provide valuable software quickly and continuously
2. Respond to changing requirements and increase customer competitiveness
3. Release working software at the shortest possible time intervals of 2-3 weeks to 2-3 months
4. Business people and developers work together daily throughout the project
5. Gather motivated people to form a project, provide environment and support, and build relationships of trust
6. Face-to-face to convey information efficiently and effectively6. Talk
7. Working software is the most important measure of progress
8. Agile processes promote sustainable development and enable continuous maintenance of a constant pace
9. Increase agility without neglecting technical excellence and good design
10. Simplicity (maximizing the amount that can be made without waste) is the essence
11. Produce the best architecture, requirements and design from a self-organizing team
12. Regularly review how your team can be more efficient and optimize your practices accordingly.
From the above principles, we can see that agile development is conceptually solid.
“Don’t just Do Agile, Be Agile” (be agile, not agile), as the words say, agile development is not just a development method, but like the principles above. It is believed that we should aim to be in a state.
1.3 What kind of system is agile development suitable for?
The characteristics of agile development include “progressing development little by little”, “flexible response to changes”, and “development in a short period of time”. As a system that can take advantage of this feature, it can be said that it is particularly suitable for the development of web services , web apps , and smartphone apps
that are prone to specification changes and require a lot of user opinions .
2. Agile development method
There are several agile development methods, but over 90% of the methods used are limited to the following two.
2.1 Scrum
It is a typical framework in agile development, and it is a method that iterates through the process step by step. It is decided how to form a team called
Scrum and proceed with the movement within it.
The product owner is responsible for the product, the scrum master supports the entire team, and the development team (about 3 to 9 people) actually develops. Stakeholders
who have an interest in the product other than the Scrum team then give feedback on the product.
Team members make plans and scrutinize development progress and product functional behavior for each sprint.
We will work together to develop the product while maintaining sufficient communication among the members.
2.2 Extreme Programming (XP)
Extreme Programming is different from the method of programming according to the specifications and design in advance, and changes and corrections are made even after the start of programming. it is premised that
Iterative development is a process of designing, developing, and testing small units of functions to improve the degree of perfection, and is used in combination with Scrum in agile development.
2.2.1 Extreme programming practices
There are various practices called “practices” to avoid the risk of problems .
Typical practices are listed below.
◆ Creating
a story Create a story card with a short sentence of the concept of how the function to be developed works from the customer’s side.
By discussing with the customer based on the story card, deciding the details of the function, and developing from the function with the highest priority, it is possible to prevent the development of unnecessary functions.
◆ Pair programming
Two people program in pairs.
By designing, developing, testing, etc. in pairs, one person develops and one person checks, the risk of problem occurrence is reduced, leading to shortening of development time and improvement of quality.
◆ Co-owned
source code The source code can be opened and viewed and modified by anyone on the team. Source code responsibilities are shared by everyone on the team. It can be expected to prevent development delays and expand the range of individual knowledge.
3. Main development methods other than agile development
Learn about other development techniques that are often compared to agile development in software development.
3.1 Waterfall development
It is a method of executing a series of processes from top to bottom in the order of “analysis-> design-> development-> test-> maintenance” .
Before the rise of agile development, this waterfall development was mostly used.
[Advantages]
◆ It is easy to grasp the whole picture of the system because the system is designed firmly first and the specifications are fixed.
◆ It is easy to manage the progress because the development is planned.
[Disadvantages]
◆ Since each work is carried out in order, it is difficult to make changes in the middle and lack flexibility.
◆ If customer requests change repeatedly after release, the needs of the system developed over several years may not be met.
3.2 Spiral development
The system is divided into functions and “design / development / testing” is performed.
After having the customer confirm and evaluate it at the stage where there is no quality assurance and analyze it, the next function is “designed, developed and tested”, and the customer confirms and evaluates it.
This is repeated to create a function unit, and the whole is created while improving the quality of the system.
Repeat this until the entire system is complete and release after completion.
[Advantages]
◆ There are few omissions of customer requests and opinions, and it is easy to reflect them in the system immediately
◆ It is easy to respond to changes in development schedules and specifications
[Disadvantages] ◆
It tends to cost more than the budget Because the system image is shared with the customer from the early stage of the
project , the request from the customer tends to increase, and the specifications may be unexpected and the cost may increase.
Functions are not completed within the time When a problem arises in the evaluation from the
customer , a correction is made each time, and the development work for dealing with it often swells and takes time.
3.2.1 Differences from similar “iterative” agile development
◆ Spiral development
We ask customers to confirm and evaluate the system when there is no quality assurance, improve the quality of the system, create the whole system, and finally release it.
◆ Agile development
Repeatedly release quality-guaranteed functions to improve overall system functions while developing the entire system.
In agile development, the system is divided by function and “design / development / testing” is repeated in a shorter period than spiral development.
Since the software is released each time it is determined that it can be released during the repetition of this function, the quality at the functional unit level is guaranteed when the customer confirms it.
We will repeat the release in a short period of time and develop the entire system while enhancing the functions of the system.
3.3 Prototype development
We make prototypes at an early stage of development and ask customers to check and evaluate them.
After that, after filling in the detailed specifications, we will carry out full-scale development and have the prototype evaluated again that reflects the customer’s request.
By repeating this, the completeness of the system will be improved.
[Advantages]
◆ Easy to get an image of the completed system You can get a concrete image of the system by making a
prototype and actually moving it
◆ You can create a high-quality system After evaluating the
prototype , incorporate or modify the request Since the development proceeds while proceeding, it is possible to prevent the misunderstanding between the customer and the development side.
[Disadvantages]
◆ Not
suitable for large systems It is difficult to manage the schedule of the development team in large-scale systems because prototypes are verified many times during development
◆ There is a risk that it will not be completed indefinitely
Customer requests are too detailed If there are too many, it may happen that the development side can not cope and the end of the project can not be seen.
4. Key points for successful agile development
The merit of “Agile” “development in a short period of time while flexibly responding to customer demands” is easy to hear, and it can be said that it is suitable development to win the competition with other companies in the rapidly changing software industry of today. ..
However, there is also the fact that many companies have introduced “agile-ish development” but have not achieved the desired results.
What should we be aware of in order to create something of solid value in agile development?
4.1 Clarification of purpose
At the beginning of the project, make a solid system design and clearly understand the purpose of the project and what kind of problems you want to solve.
Agile releases repeatedly in short spans, so it’s easy to lose track of the big picture of your project.
4.2 Awareness of “possible changes caused by agile” throughout the organization
When you do agile development, you tend to think of it as just the development site, but in reality it also involves the management team and the entire organization.
In particular, Agile is constantly changing in quantity and quality of deliverables and tasks, so it’s important that development teams and project settlers are always aware of the changes that can occur during a project.
4.3 Close communication
As the principle of agile development states that “business people and developers work together every day through the project”, it is necessary for both parties to maintain a relationship of trust and maintain close communication in order to proceed smoothly with the project. ..
In addition, since daily meetings, reviews, prototype verification, and response to specification changes are held within the development team, it is important for the entire team to exchange opinions, communicate firmly, and be conscious of connecting the system to success.
5. Summary
Agile development realizes development in a short period of time by utilizing methods such as Scrum and Extreme Programming, and is characterized by being easy to incorporate customer requests and highly flexible.
In recent years, it has become widely known, and the number of companies that give successful cases is increasing, and it is said that agile development will become more widespread in the future.
In order for a project to succeed through agile development, it is not just about adopting agile development methods, but it is necessary for everyone involved in the project to understand the essence of the principle and to create a team or framework to utilize the methods. Can be said to be important.