An in Depth Look at the Agile Software Development Life Cycle
Choosing a software development lifecycle for your project can be a daunting process, as there are infinite requirements which demand different needs. Each development methodology has its perks and downfalls, so narrowing it down is overwhelming. While many feel safe with more traditional models, such as the waterfall, it is good to understand the roots and nuances of newer models like Agile.
In 2000, 17 “thought leaders,” including Jon Kern, Kent Beck, Ward Cunningham, Arie van Bennekum, and Alistair Cockburn, met first at a resort in Oregon where they discussed the problems of software development models and results, such as the time lag between business requirements and the delivery of solutions to those problems. A year later they met again, this time in Utah. It was at this meeting that the Agile Manifesto was born.
Here are the main points of the Agile Manifesto
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
Almost 30 years later, the Agile model has evolved. Here are some of the main aspects of today’s Agile
- It is iterative and incremental: Agile development cycle breaks down the project into increments, called sprints, each which have traditionally lasted from 2 to 4 weeks but are now more often lasting from 7 to 10 working days. Regardless of duration, each includes a fixed completion time.
- It is focused on adaptability to changing product requirements: Agile focuses on incorporating dynamic changes in the product development cycle so that they can be done at any time.
- Rapid delivery: Because of Agile’s time-bound nature, the sprint process is methodical, and its scope is only as broad as the allotted time allows. With this model, emphasis is given to the quick and sustained development of product features, as opposed to spending more time during the initial project planning.
- Client participation: In the Agile model, clients, stakeholders, and the product owner are involved in the development process from the beginning. This ensures that everyone knows what is going on every step of the way so that there are no surprises in the end, and so that everyone is accountable.
- Self-organization: Self-origination is valued over hierarchy. Although team members enter with titles, they are encouraged to involve themselves with the project in whatever way they see most fit. There is no team leader, nor any real delegation of tasks.
- Cross-functional: The Agile team is cross-functional, with varying levels of experience in designing, coding, testing, and quality acceptance, amongst others.
- Strong feedback loop: Constant feedback is encouraged in the Agile model. Meetings are held to discuss past, present, and future progress, and results are integrated carefully into the project.
- Strong leadership: the leadership philosophy of Agile encourages teamwork, self-organization, and accountability.
- Alignment of the development process with customer goals: The role of the product owner is to make sure that the development process is working with the customer goals in mind.
The Agile Process Flow
- Concept: The projects are envisioned and prioritized, with requirements based on the product backlog, sprint backlog, and stakeholder feedback.
- Inception: The team is assembled, funding is put in place, and initial requirements are discussed.
- Sprints: The development team begins developing working software, based on iteration requirements and feedback.
- Release: After quality assurance testing, internal and external training, and documentation development, the iteration is released.
- Production: Ongoing support of the software.
- Retirement: End-of-life activities, including customer notification and migration.
The Team
- The development team: The development team has a lot of autonomy in the Agile model. Team members decide at the beginning of each sprint what can be accomplished during that sprint. They integrate themselves into the project how they see fit.
- Product owner: The product owner represents all of the stakeholders and is responsible for ensuring that the product is being developed by the client and the market in mind.
- Scrum Master: The scrum master facilitates the work of the development team, does his or her best to insulate the development team from outside distractions, and to help the team stay focused so that they can complete the sprint, and deliver software iterations on a regular basis.
>> Learn about Scrum Management in Software Development
The Process
As stated, less time is spent during the planning stages of the initial project. Instead, product features are developed in a quick, sustained manner through iterative cycles known as sprints. During each sprint, the feature set goes from idea to completion, or potentially shippable increments, meaning that the features will be coded, tested, and integrated into the system. Product analysis, product feature designing, functionality development, and testing are also carried out during the sprints. In the most often used subset of Agile — Scrum integrates daily 15-minute meetings to discuss the day before, the present day, and the following day’s work — calculating how much work is left, and ensuring that the team is on schedule.
At the end of each sprint, a working, “shippable” product feature that can be readily deployed is presented to the product owner for verification. Once the product owner verifies, it is sent to any other stakeholders. The opinions of all stakeholders (and the product owner) are noted and evaluated, after which they are integrated into the further development of the product, providing a valuable feedback loop.
Agile has helped many organizations find success in meeting the changes in customer needs by using the iterative approach to software development. Agile embraces constant change during the development cycle which, in turn, allows teams to break down the lengthy requirements, build, and test phases into smaller divisions so that they can quickly deliver high-quality software.
Many teams are moving away from the traditional, predictive models to adaptive methodology such as Agile. While predictive models follow a strict phase schedule, which does not deviate from the original requirements, adaptive does just that. Traditional models spend lengthy amounts of time trying to plan the entire project from the start, without the available foresight of what will change, how it will change, and how best to adapt to those changes, while Agile allows a flow within which the project can take place as this information becomes available.
Originally published at blog.bydrec.com.