Agile software development refers to software development methodologies centered around the idea of iterative development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
What is Agile Software Development?
Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a “big bang” launch, an agile team delivers work in small, but consumable, increments. Requirements, plans, and results are evaluated continuously so teams have a natural mechanism for responding to change quickly. At Codelation we use the Scrum framework to implement Agile.
What is the Agile Lifecycle?
- Concept – Projects are envisioned and prioritized
- Inception – Team members are identified, funding is put in place, and initial environments and requirements are discussed
- Iteration/Construction – The development team works to deliver working software based on iteration requirements and feedback
- Release – QA (Quality Assurance) testing, internal and external training, documentation development, and final release of the iteration into production
- Production – Ongoing support of the software
- Retirement – End-of-life activities, including customer notification and migration
This view presents the full Agile lifecycle model within the enterprise. In any enterprise there may be projects operating simultaneously, multiple sprints/iterations being logged on different product lines, and a variety of customers, both external and internal, with a range of business needs.
The Agile Iteration Workflow
The Agile software development life cycle is dominated by the iterative process. Each iteration results in the next piece of the software development puzzle – working software and supporting elements, such as documentation, available for use by customers – until the final product is complete. Each iteration is usually two to four weeks in length and has a fixed completion time. Due to its time-bound nature, the iteration process is methodical and the scope of each iteration is only as broad as the allotted time allows.
Multiple iterations will take place during the Agile software development lifecycle and each follows its own workflow. During an iteration, it is important that the customers and business stakeholders provide feedback to ensure that the features meet their needs.
A typical iteration process flow can be visualized as follows:
- Requirements – Define the requirements for the iteration based on the product backlog, sprint backlog, customer and stakeholder feedback
- Development – Design and develop software based on defined requirements
- Testing – QA (Quality Assurance) testing, internal and external training, documentation development
- Delivery – Integrate and deliver the working iteration into production
- Feedback – Accept customer and stakeholder feedback and work it into the requirements of the next iteration