Agile Development Flashcards
Define ‘stakeholder’ in the context of agile development
A stakeholder is anyone who has a vested interest in the system - most commonly used to describe customers, but can also refer to developers, users, etc.
Define a cross-functional team
A group of people with different functional expertise working toward a common goal.
What are some principles that Agile advocates for?
- adaptive planning
- evolutionary development
- early delivery
- continuous improvement
- rapid and flexible response to change
What are some ways Agile differs from traditional plan-driven development as stated in the Agile Manifesto?
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Why is Extreme Programming ‘extreme’?
It takes an extreme approach to iterative development
- new versions may be built several times a day
- increments are delivered every 2 weeks
- all tests must run for every build and the build is accepted only if tests run successfully
Define test-first development
Tests are written automatically for a new piece of a functionality before that functionality is implemented
Define pair programming
Developers work in pairs at a single computer, checking each others’ work as they go
Define collective ownership
The idea that by having all developers work on all areas of the system, each developer takes responsibility for all of the code - anyone can edit anything
Define a user story and explain how they are different from traditional requirements
User stories are stories written from the perspective of the user, detailing requirements for the system. They are then divided among small teams and these teams break them into implementation tasks that are used as a basis of schedule and cost estimates. The customer then chooses the stories for inclusion in the next release based on their priorities and schedule estimates.
Describe Extreme Programming’s take on refactoring
XP proposes constant code improvement instead of dedicated refactoring
Describe how XP employs test-first development
The program is tested after every change has been made. The tests are incrementally developed from scenarios and the user is involved in validation.
Automated tests run all components each time a new release is built.
How is the customer involved in verification in XP?
The customer helps develop acceptance tests for the user stories that are implemented in the next release of the system.
What is meant by ‘test automation’?
Tests are written as executable components before the task is implemented, that can be easily executed to verify each iteration.
What are some problems with test-first development?
- Developers prefer coding to testing and may take shortcuts when writing tests
- Some tests can be too complex to write incrementally
- It is difficult to judge the completeness of tests
Describe the difference between ‘scaling out’ and ‘scaling up’ agile methods
Scaling out is concerned with how agile method scan be introduced across a large organization.
Scaling up is concerned with using agile methods for developing large software that cannot be developed with a small team.