Agile model
Line 86: | Line 86: | ||
* At the end of the sprint, team delivers product functionality | * At the end of the sprint, team delivers product functionality | ||
− | [[File:SCRUM_scheme.png|right|SCRUM process]] | + | [[File:SCRUM_scheme.png|500px | right|SCRUM process]] |
==== Extreme Programming ==== | ==== Extreme Programming ==== |
Revision as of 19:21, 3 March 2022
Contents |
Abstract
Recently, the world has become much more complex and unpredictable, a special acronym has appeared to describe it, “VUCA”, which states for volatile, unpredictable, complex and ambiguous. [1]
The fast pace of changing technology and evolving markets, leads to the need of adaptative and flexible project management approaches. Agile is an iterative development process that consists of putting people first and focusing the project development on small iterations and feedback. Requirements and solutions evolve through collaboration between cross-functional teams. It encourages frequent inspection and adaptation for rapid delivery of high-quality solutions that are aligned with customer needs.
Agile first appeared in the early 1990s within the software development industry and is based on the Agile Manifesto [2] and its 12 principles. Since then, many Agile frameworks have emerged such as scrum, kanban, lean, and Extreme Programming (XP). Nowadays, Agile has become very popular within many organizations.
This article introduces the Agile concept and presents the principles and main values of the Agile Manifesto. Next, it describes the different Agile frameworks and its applications. On the other hand, it presents in which situations it is useful to follow Agile. The last part of the article mentions possible limitations of Agile.
Big idea
What is Agile model?
Agile methodology is a project management process that is based on splitting the project development into smaller iterations. It mainly focuses on the collaboration between the development team and their customers, and it requires adaptability and flexibility.
Agile aims to deliver fast solutions that will be tested with the customers in order to get their feedback. This feedback will allow the team to make changes and improvements through a following iteration. In Agile is very important to respond to changes during the process.
Specially, software industry is highly competitive because of the fast changing and continuously updates of the technology, so this means that developers need to constantly improve and evolve.
Mainly, the Agile process could be divided/break up into different phases:
- Concept. Scope. Defining the project scope, analyze concepts and define requirements.
- Plan. Organize teams and tools and planification of sprints.
- Iteration.
- Plan requirements
- Development
- Test
- Deliver
- Feedback
- Release
- Maintenance
Agile Manifesto
The publication of the Agile Manifesto in 2001 marks the birth of Agile as a methodology. It was created by a group of software developers who wanted a better approach to the traditional development process. It outlines 4 values and 12 principles that guide the Agile philosophy:
Main values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
and 12 principles:
- Satisfy the customer through early and continuous delivery of valuable software.
- Welcome and harness changes for the customer's competitive advantage, even late in development.
- eliver working software frequently, from a couple of weeks to a couple of months, with a preference for shorter timescales.
- Have daily collaboration between business people and developers throughout the project.
- Build projects around motivated individuals. Create the environment and support developers need, and trust them to get the job done.
- Prioritize face-to-face conversation as the most efficient and effective method of conveying information to and within a development team.
- Measure progress by the amount of working software completed.
- Maintain a constant and sustainable pace of development indefinitely.
- Enhance agility through continuous attention to technical excellence and good design.
- Keep it simple. Simplicity—the art of maximizing the amount of work not done—is essential.
- Recognize that the best architectures, requirements, and designs emerge from self-organizing teams.
- Regularly reflect and adapt behavior for continual improvement.
Application
There is a great variety of agile methods, but Scrum [5] and Extreme Programming (XP) are most popular. Recent studies also include Lean as one of the most used ones.
Agile methodologies
Scrum
SCRUM is an agile development method which concentrates specifically on how to manage tasks within a team-based development environment. In the teams there should be three main roles:
- Scrum master
- Product owner
- Scrum team
Other main concepts of scrum:
- Each iteration of a scrum is known as Sprint
- Product backlog is a list where all details are entered to get the end-product
- During each Sprint, top user stories of Product backlog are selected and turned into Sprint backlog
- Team works on the defined sprint backlog
- Team checks for the daily work
- At the end of the sprint, team delivers product functionality
Extreme Programming
Extreme Programming technique is very helpful when there is constantly changing demands or requirements from the customers or when they are not sure about the functionality of the system. It advocates frequent “releases” of the product in short development cycles, which inherently improves the productivity of the system and also introduces a checkpoint where any customer requirements can be easily implemented. The XP develops software keeping customer in the target.
There are 6 phases in the method:
- Planning
- Analysis
- Design
- Execution
- Wrapping
- Closure
Storyboards
Lean
Agile metrics
Limitations
References
- ↑ Bennis, Warren; Nanus, Burt (1987) "VUCA"
- ↑ Beck, K., et al (2001) "Manifesto for Agile Software Development"
- ↑ Pimonova S. (2020) Agile Methodology in Education of IT Students, Application of. In: Tatnall A. (eds) Encyclopedia of Education and Information Technologies. Springer, Cham. https://doi.org/10.1007/978-3-030-10576-1_214
- ↑ da Silva, Tiago Silva; Estácio, Bernardo (2017) Agile Methods. Springer International Publishing.
- ↑ Hamed AMM, Abushama H (2013) Popular agile approaches in software development: review and analysis. In: International conference on computing, electrical and electronics engineering (ICCEEE), pp 160–166