Agility & Extreme Programming Flashcards
Agile Development
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile Development Principles
Agile development is a mindset, not a framework. Key principles include:
1. Satisfy customers with early, continuous delivery.
2. Embrace changing requirements.
3. Frequently deliver working software.
4. Build around motivated individuals.
5. Keep it simple.
XP - Practices: Planning game
- Customers decide the scope and timing of releases based on estimates made by programmers
- Programmers implement only functionally demanded by stories in this iteration
XP - Practices: Small releases and short release cycles
- Working system early
- Releases anywhere from daily to monthly
XP - Practices: Metaphor
A story that customers, programmers, and managers can tell about how the system works
XP - Practices: Test driven development
- Programmers write unit tests
- Customers write functional tests
XP - Practices: Refactoring
- System evolves though transformations of existing designs
- A change that leaves system behavior unchanged, but enhances its quality
XP - Practices: Pair programming
All code is written by two people at one screen, keyboard, mouse
XP - Practices: Continuous integration
Not more than one day between code integration
XP - Practices: On-site customer
A customer sits with the team full-time
XP - Practices: Collective ownership
Every programmer improves any code anywhere in the system at any time if he sees the opportunity
XP - Practices: Coding standards
Sign up to follow team rules
XP - Practices: 40-hour weeks
No one can work a consecutive week overtime
XP - Benefits
- Changing requirements are handled
- A useful system version is developed early
XP - Problems
- Lack of central and important documents
- Requirement specification, system design:
a) Are test cases able to substitute requirements
b) The architecture is only in the heads of the architects - Traceability
- Changing requirements and new design decisions imply modified and new test cases - Test cases have to be maintained very well
- expensive!