User:NcsuOO517

From Expertiza_Wiki
Jump to navigation Jump to search

Agile Software Development

Many software development teams are adopting the relatively new Agile process of development.

Purpose

The agile software development process is a relatively new process introduced in the 1990s [2]. The main purpose behind agile development is to address the inevitable changes that arise as the development process progresses. It consists of short iterations of development, encouraging feedback after each iteration so that requirements can be adjusted accordingly. "Agile is set up to strongly support garnering feedback and guiding the customer toward better understanding what they want and need" [1]. Consequently, the short iterations lead to lower risk and higher productivity in the development cycle [2].

"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

Some common practices that are incorporated into the agile development process include, but are not limited to:

  • Iterative, incremental development cycle
  • Extreme Programming (XP) - XP includes such practices as team continuity, shared code, and real customer involvement. More about XP
  • SCRUM - short, daily meetings held by all members of the team, in which each team member answers three questions:
    • What did I do yesterday?
    • What do I plan to do today?
    • 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.
  • Feature-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. OOPSLA Conference 2010: 74-88. ACM DL.

[2] Williams, Laurie. "A Survey of Agile Development Methodologies." 2007.