Page369
Agile Software Development
Agile Software Development evolved as a reaction to rigid software development models such as the Waterfall Model. Agile methods include Scrum and Extreme Programming (XP). The Agile Manifesto (see http://agilemanifesto.org/) states:
"We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan" [11]
Agile embodies many modern development concepts, including more flexibility, fast turnarounds with smaller milestones, strong communication within the team, and more customer involvement.
Scrum
The Scrum development model (named after a scrum in the sport of rugby) is an Agile model first described in "The New New Product Development Game" by Hirotaka Takeuchi and Ikujiro Nonaka in relation to product development; they said “Stop running the relay race and take up rugby” [12]. The “relay race” is the waterfall, where teams hand work off to other teams as steps are completed. They suggested: “Instead, a holistic or ‘rugby’ approach—where a team tries to go the distance as a unit, passing the ball back and forth—may better serve today’s competitive requirements” [12].
Peter DeGrace (of Sashimi fame) described (and named) Scrum in relation to software development. Scrums contain small teams of developers, called the Scrum Team. The Scrum Master, a senior member of the organization who acts like a coach for the team, supports the Scrum Team. Finally, the Product Owner is the voice of the business unit.
Extreme Programming (XP)
Extreme Programming (XP) is an Agile development method that uses pairs of programmers who work off a detailed specification. There is a high level of customer involvement. *“Extreme Programming improves a software project in five essential ways; communication, simplicity, feedback, respect, and courage. Extreme Programmers constantly communicate with their customers and fellow programmers. They keep their design simple and clean. They get feedback by testing their software starting on day one. They deliver the system to the customers as early as possible and implement changes as suggested” [13]. XP core practices include:
- Planning: specifies the desired features, which are called the User Story. They are used to determine the iteration (timeline) and drive the detailed specifications.
- Paired programming: programmers work in teams.
- Forty-hour workweek: the forecasted iterations should be accurate enough to forecast how many hours will be required to complete the project. If programmers must put in additional overtime, the iteration must be flawed.
- Total customer involvement: the customer is always available, and carefully monitors the project.
- Detailed test procedures: they are called Unit Tests [13].
Note
The XP development model is not to be confused with Microsoft Windows XP: Extreme Programming’s use of the acronym “XP” predates Microsoft’s use.