Title: Agile Requirements Methods
1Agile Requirements Methods
- CSSE 371 Software Requirements and Specification
- Mark Ardis, Rose-Hulman Institute
- October 26, 2004
2Outline
- Origin of Agile Methods
- Extreme Programming
- How could this work?
3I. Origin of Agile Methods
4Cartoon of the Day
5Spectrum of Methods
Source "Get ready for agile methods, with care"
by Barry Boehm, IEEE Computer, January 2002.
6Boehm's Risk Exposure Profile
Black curve Inadequate plans Red curve
Market share erosion
Source "Get ready for agile methods, with care"
by Barry Boehm, IEEE Computer, January 2002.
7Safety-Critical Profile
Black curve Inadequate plans Red curve
Market share erosion
Source "Get ready for agile methods, with care"
by Barry Boehm, IEEE Computer, January 2002.
8Agile Profile
Black curve Inadequate plans Red curve
Market share erosion
Source "Get ready for agile methods, with care"
by Barry Boehm, IEEE Computer, January 2002.
9Agile Manifesto
- 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
- That is, while there is value in the items on the
right, we value the items on the left more.
10II. Extreme Programming
11Twelve Practices
- Pair programming
- Collective ownership
- Continuous integration
- 40-hour week
- On-site customer
- Coding standards
- The Planning Game
- Small releases
- Metaphor
- Simple design
- Testing
- Refactoring
121. The Planning Game
- Business people decide
- scope
- priority
- release dates
- Technical people decide
- estimates of effort
- technical consequences
- process
- detailed scheduling
13The Planning Game
- Collect User Stories on cards
- Stories are written by customers
- Stories generate tests
14Estimating
- Be concrete
- No imposed estimates
- Feedback compare actuals to estimates
- Re-estimate periodically
15Scheduling
- Each story gets an estimate of effort
- Customers decide which stories are most important
- Programmers calculate how long each release will
take
162. Small Releases
- Every release should be as small as possible
- Every release has to completely implement its new
features
17Waterfall to XP Evolution
Source "Embracing change with extreme
programming" by Kent Beck,IEEE Computer, October
1999.
183. Metaphor
- Each XP project has its own metaphor
- naive
- system is a spreadsheet
- Metaphor replaces architecture as the view from
10,000 feet - Metaphor replaces vision statement
195. Testing
- Any feature without an automated test does not
exist. - Programmers need confidence in correct operation
- Customers need confidence in correct operation
- Develop test first, before code
20Tools for Testing
- Test harnesses for various programming languages
- Simplify job of creating and running the tests
219. Continuous Integration
- Integrate and test every few hours, at least once
per day - All tests must pass
- Easy to tell who broke the code
2211. On-Site Customer
- Real customer will use the finished system
- Programmers need to ask questions of a real
customer - Customer can get some other work done while
sitting with programmers
23III. How could this work?
241. The Planning Game
- You couldn't start with only a rough plan
- Unless
- customers did updating based on estimates of
programmers - short releases (2) revealed any mistakes in plan
- customer was sitting with programmers (11) to
spot trouble
252. Small Releases
- You couldn't release new versions so quickly
- Unless
- the Planning Game (1) helped work on the most
valuable stories - you were integrating continuously (9)
- testing (5) reduced defect rate
263. Metaphor
- You couldn't start with just a metaphor
- Unless
- you got feedback on whether metaphor was working
- your customer was comfortable talking about the
system in terms of the metaphor - you refactored continually (6) to refine
understanding
275. Testing
- You couldn't write all those tests
- Unless
- the design was as simple as possible (4)
- you were programming with a partner (7)
- you felt good seeing all those tests running
- your customer felt good seeing all those tests
running
289. Continuous Integration
- You couldn't integrate every few hours
- Unless
- you could run tests quickly (5)
- you programmed in pairs (7)
- you refactored (6)
2911. On-Site Customer
- You couldn't have a real customer sitting by the
programmers full-time - Unless
- they could produce value by writing functional
tests - they could produce value by making small-scale
priority and scope decisions