User:NcsuOO517
Agile Software Development Methodology
Many software development teams are adopting the relatively new Agile process of development.
Purpose
"Agile is set up to strongly support garnering feedback and guiding the customer toward better understanding what they want and need"
"Both Scrum and XP suit similar kinds of projects: a small, co-located team; an on-site or available customer representative; an emphasis on coding and testing early; and frequent feedback into updated requirements"
Common Practices
- Iterative, incremental development cycle
- Extreme Programming (XP)
- SCRUM - short, daily meetings held by all members of the team, in which each team member answers three questions: 1) What did I do yesterday? 2) What do I plan to do today? 3) What obstacles are standing in my way?
- Retrospectives - held at every iteration meeting, this practice involves each team member writing on an index card. On one side they write what they think went well during the iteration; on the other, they write what they think did not go well. The cards are then passed around and read by each other member of the team, which leads to a discussion about what was said.
- Test-driven development
- Requirements analysis
- User stories - a story represents a feature that can be completed in one iteration.
- Planning Poker - a practice held at each iteration meeting. Each team member holds a set of "poker" cards that have numbers on them, typically 1, 2, 3, 5, 8, 13, 20, 40, and 100. Team members use the cards to present their estimation of how many story points each user story will take to complete - 8 represents a full iteration. If there is disagreement in estimations, team members discuss why they chose the number they did, and a re-vote is taken. The process continues until the team members agree on an estimation number.
- Team velocities - represent the number of story points a team is able to complete in one iteration. The team velociy is used to decide how many points to assign for the next iteration, based on the "Yesterday's Weather" concept, or the idea that a velocity will remain consistent for every iteration.
- Release planning
Disadvantages
- Lack of customer involvement made gathering requirements extremely difficult, leading to loss of productivity and rework. - Contract negotiation - customers want "fixed deadline, fixed price, and fixed scope" - meaning requirements are fixed. Agile embraces change, which you can't do w/ a fixed price project. - Design-intensive projects - Superficial documentation - Adaptation to changing requirements not always needed - Sometimes difficult to break down complication development into small user stories - Distributed teams had difficulty carrying out some team collaboration tasks
Other Software Development Methodologies
Waterfall
Waterfall vs. Agile
Spiral
Spiral vs. Agile
Iterative
Iterative vs. Agile
Rapid Application Development (RAD)
RAD vs. Agile
Rational Unified Process (RUP)
RUP vs. Agile
Conclusion
References
[1] Hoda, Rashina et al. "Agility in Context." Proceedings of the ACM international conference on Object oriented programming systems languages and applications (2010): 74-88. ACM DL.