1/22
Flashcards for reviewing key concepts in Agile Software Development.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
What is the primary focus of agile methods?
Focus on the code rather than the design
What is the ultimate goal of agile methods?
Reduce overheads and quickly respond to changing requirements
Name 4 values of 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
What is incremental delivery?
The software is developed in increments with the customer specifying the requirements to be included in each increment.
What is the embrace change principle?
Expect the system requirements to change and so design the system to accommodate these changes.
What is the maintain simplicity principle?
Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.
What are some problems with agile methods?
Difficult to keep customer interest, Team members may be unsuited, Prioritizing changes can be difficult, Maintaining simplicity requires extra work, Contracts may be a problem
What is plan-driven development?
A plan-driven approach to software engineering is based around separate development stages with the outputs to be produced at each of these stages planned in advance.
What are 3 issues to consider when deciding between plan-driven and agile?
Importance of detailed specification, Feasibility of incremental delivery, Size of the system
What is extreme programming?
An agile method that takes an ‘extreme’ approach to iterative development.
What is test-first development?
An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented.
What is refactoring?
All developers are expected to refactor the code continuously as soon as possible code improvements are found. This keeps the code simple and maintainable.
What is pair programming?
Developers work in pairs, checking each other’s work and providing the support to always do a good job.
What is collective ownership?
The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers take responsibility for all of the code. Anyone can change anything.
What is continuous integration?
As soon as the work on a task is complete, it is integrated into the whole system. After any such integration, all the unit tests in the system must pass.
What is on-site customer?
A representative of the end-user of the system (the customer) should be available full time for the use of the XP team. In an extreme programming process, the customer is a member of the development team and is responsible for bringing system requirements to the team for implementation.
In XP, how are user requirements expressed?
User requirements are expressed as scenarios or user stories.
What is the purpose of refactoring?
To make changes easier when they have to be implemented.
What is test automation?
Tests are written as executable components before the task is implemented
What is the Scrum approach?
A general agile method but its focus is on managing iterative development rather than specific agile practices.
What are Sprints?
Fixed length cycles, normally 2-4 weeks, corresponding to a release of the system.
What is scaling up?
Using agile methods for developing large systems that cannot be developed by a small team.
What is scaling out?
Introducing agile methods across a large organization with many years of software development experience.