Agile Software Development: The Way to Revolutionize the Software Industry
“Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. Agile methods or Agile processes generally promote a disciplined project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices intended to allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals” — Agile Manifesto (2001)
A lot of you might be wondering why agile software development currently is so popular among youngsters. At the moment, almost every startup that engages in software development all over the world is using the agile method to develop their products. Turns out, the agile software development method has quite some history back then.
According to Beck, K., Beedle, M., Van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., … & Kern, J (2001), on February 11th–13th 2001, Representatives from Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, FeatureDriven Development, Pragmatic Programming, and others sympathetic gathered to sign an Agile ‘Software Development’ Manifesto. They called themselves “The Agile Alliance”.
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a planThat is, while there is value in the items on
the right, we value the items on the left more.
Why do we need this manifesto?
On 2001, QSM Associates’ Michael Mah has studied over 200 software development projects. He found out that at the end of the project, most of the project teams studied did not even meet half of the requirements stated in the beginning. Instead, the requirements changed for the purpose of satisfying the customers. There were major changes with the requirement that occurred within the project lifespan.
Back then, the traditional approach suggested that we could anticipate the complete set of requirements early and reduce cost by eliminating change (Highsmith, J., & Cockburn, A. (2001)). This approach cannot be implemented anymore, because today, eliminating change early means being unresponsive to business conditions and this will cause business failure. There are changes that require people to adapt quickly, for example from the external environmental changes. However, the new method is also required not just for accommodating change, but also for embracing it. The market demands and expects innovative, high-quality software that meets its needs — and soon.
This is why people gathered around to a manifesto to change their methodology for software development and to set the rules and terms.
Basic Principle
The Agile methodology focuses on two main things: the real working code and the effectiveness of the teamwork. Real working code is the thing that is deliverable to show to the developers and sponsors, while the effective teamwork will lead to cost-savings, great maneuverability, and great speed.
According to Highsmith, J., & Cockburn, A. (2001), there are some rules that have to be followed in order to correctly implement an agile method in software development:
- Produce the first delivery in weeks, to achieve an early win and rapid feedback
- Invent simple solutions, so there is less to change and making those changes is easier
- Improve design quality continually, making the next story less costly to implement
- Test constantly, for earlier, less expensive, defect detection.
There are two main purposes for applying the agile method according to Cockburn, A., & Highsmith, J. (2001):
- Reduce the cost of moving information between people
- Reduce the elapsed time between making a decision to seeing the consequences of that decision.
The Effectiveness
A survey of agile and rigorous methodologies conducted by the Cutter Consortium in 2001, responded by nearly 200 people all over the world found out that by implementing the agile method, they have a slightly better delivery performance than rigorous methodologies in terms of business performance, customer satisfaction, and quality. They also found out that the agile method boosted the employees’ morale.
On the recent study, Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2017) found that despite the high interest in the subject, agile method is not necessarily suitable for all individuals (Naur 1993) or settings (Baskerville et al. 1992). For this reason, e.g. Humphrey (1995) calls for the development of a personal process for each software developer.
Conclusion
Agile software development method is a methodology for software development based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. It was founded in 2001, marked by the signing of the Agile Manifesto. The agile method focuses on two main things: the real working code and the effectiveness of the teamwork. There are many positive outcomes because of the implementation of this method, although it is also stated that this method may not be suitable for everyone.
How this connects to the project we’ve been doing?
We try to implement Scrum method as the subcategory from the agile software development method.
These are some roles in our project, each person has a role in the continuity of the project:
- Product Owner: is a person who represents the business or user community and is responsible for working with the user group to determine what features will be in the product release. In this project, the product owner is the one who proposes the topic.
- Scrum Master: is the person who ensures the team keeps to the values and practices of Scrum, sort of like a coach. They remove impediments, facilitate meetings and work with product owners. In this project, the Scrum Master is a member of the teaching assistant team.
- Development team: is everyone works together to do whatever it takes to complete tasks they’ve all agreed on for a sprint. Our development team contains 6 people, who are the students of Software Development Project class.
There are some events of Scrum that we have been following:
- Initiation phase: In this phase, all the roles of the Scrum team (product owner, scrum master, and development team) meet. After gathering the requirements from the product owner, the development team makes the mock-up of the software wanted and then set up the environment to make the software.
- Sprint planning: In this phase, the development team estimate points from user stories (with Fibonacci point system) while being monitored by the scrum master. After that, the development team breakdowns user stories to a smaller task, that will be taken by members of the development team as an individual task. Then, the team listens to the product owner to get the information about the sprint goal. Finally, the development group chooses the sprint backlog and each individual from the development team choose stories that are related to the sprint goal.
- Sprint / Implementation phase: The development team uses GITLAB to document their code. There is a daily standup meeting twice a week to update the scrum board and to know about the group progress.
- Sprint Review: All the team (product owner, scrum master, and development team) gathers to grade the software deliverable product. In this activity, we presented what we have done throughout the sprint phase to the product owner. Then, the product owner gave us comments about if the product we made satisfied their requirements. The product owner could accept or reject our product. If the product owner rejects it, we would have to do it again.
- Sprint Retrospective: The development team gathers to discuss lessons learned from the sprint that has just done and then do peer review. We discussed the things that we are satisfied and unsatisfied about our group performance. After that, we made an experimental improvement to be implemented in the next sprint. We also talked about whether the method we had been doing in the last sprint correct or incorrect.
References:
- Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2017). Agile software development methods: Review and analysis. arXiv preprint arXiv:1709.08439.
- Beck, K., Beedle, M., Van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M., … & Kern, J. (2001). Manifesto for agile software development.
- Cockburn, A., & Highsmith, J. (2001). Agile software development: The people factor. Computer, (11), 131–133.
- Highsmith, J., & Cockburn, A. (2001). Agile software development: The business of innovation. Computer, 34(9), 120–127.
- Martin, R. C. (2002). Agile software development: principles, patterns, and practices. Prentice Hall.