Agile Methodology
Agile methods are system development methodologies that propose incremental implementations, respond to rapidly changing requirements, and reduce the emphasis on rigorous requirements.
- E.g., Scrum and extreme programing
- rooted in the Manifesto for Agile Software Development
- 4 basic premises:
- Individuals and interactions are more important than processes and tools
- Working software is preferable to comprehensive documentation
- Customer collaboration replaces contract negotiation
- Responding to change is key, rather than following a plan
- 4 basic premises:
- tends to break work up into smaller units
- done more quickly and with less up-front planning
- focuses on adapting to needs rather than predicting them
- major milestones are subject to change as project advances
- work is broken up into short working sessions
- called sprints
- can last days to a few weeks

12 Agile Principles
- Ensure customer satisfaction via early and continuous delivery of software
- Welcome changing requirements, even late into the development process
- Deliver working software frequently (in weeks rather than months)
- Ensure daily cooperation between developers and business people
- Projects should be built around motivated individuals who get the support, trust, and environment they need to succeed
- Face-to-face conversations are the most efficient way to convey information inside the development team
- Progress is measured by having working software
- Development should be done at a sustainable pace that can be maintained on an ongoing basis
- Pay continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- The best architectures, requirements, and designs emerge from self-organizing teams
- Teams should reflect on how to become more effective and then implement that behavior at regular intervals
Specialized Agile Terms
- Backlogs are lists of features or tasks that are required to complete a project
- Sprint retrospective are held at the end of sprints to discuss what went well and what didn’t and what can be improved for the next sprint
- Planning poker is a tool for estimation and planning used in Agile development processes
- estimators are given cards with values for the amount of work required for a task
- estimators are asked to estimate, and each reveals their “bid” on the task
- this is done until agreement is reached
- goal is to have estimators reach the same estimate through discussion
- Timeboxing describes the use of timeboxes, which is a previously agreed-upon time that a person or team uses to work on a specific goal
- limits time to work on a goal to the timeboxed time
- rather than until completion
- once over, the work is assessed to see what should occur next
- limits time to work on a goal to the timeboxed time
- User stories are collected to describe high-level user requirements
- Velocity tracking is conducted by adding up the estimates for the current sprint’s effort and then comparing to what was completed
- tells the team if they are on track
Types of Agile Methodologies
Scrum
Scrum is a hands-on system consisting of simple steps:
- The system owner makes a prioritized wish list.
- The scrum team selects an item toward the top of the wish list and plans the implementation during an event called “sprint.”
- The team completes the list of objectives while assessing progress in daily meetings called scrums.
- The sprint ends with the system ready to be released.
- A new sprint starts, using another item on the wish list.
- This process continues until the prioritized wish list is clear.
Extreme Programming (XP)
Systems are developed by a team of fewer than a dozen individuals working in a communal workspace, where they freely share ideas and assist each other in the development project.
- system is developed incrementally by repeated daily cycles
- informal processes
- regular system updates
What are the benefits of Agile methodology?
- Quick
- increases customer satisfaction
- values employees
- reduces rework