Midterm Material - Agile Software Development Flashcards
Why was agile introduced and when?
Agile was introduced in the 1990s with the aim of reducing the delivery time for software systems.
How does agile reduce delivery time?
Agile reduces overhead in the software process by limiting documentation and by making it faster to respond and make changes to requirements.
What are the four values from 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 are the 12 principles of agile methods?
- Customer satisfaction through early and continuous software development
- Welcome changing requirements, even late in delivery
- Frequent delivery of working software
- Collaboration between business stakeholders and developers daily through the project
- Support, trust, and motivate the people involved
- Enable face-to-face interactions
- Working software is the primary measure of progress
- Agile processes to support a consistent development pace
- Attention to technical detail and design enhances agility
- Simplicity - the art of maximizing the amount of work not done - is essential
- Self-organizing teams encourage great architectures, requirements, and design
- Regular reflections on how to become more effective
What is “extreme programming”?
Extreme programming is an agile method with a focus on intense development but not as much of the project management. New versions may be built several times per day and increments are delivered to customers every 2 weeks.
What are the stages of the extreme programming release cycle?
Select user stories for the release, break down stories into tasks, plan the release, develop, integrate, and test the software, release the software, evaluate the system.
What is the drawback of extreme programming?
It has a technical focus and is not easy to integrate with management practice at most organizations. Thus, extreme programming is not widely used but some practices from it are adopted.
What is a user story?
A user story is a representation of a user requirement for a particular part of the software. They are written on cards and broken down into implementation tasks.
What is refactoring and why is it important?
Refactoring is the process of making constant improvements to code throughout the development process. It is important because it helps to make changes easier when they need to be implemented.
How is refactoring done?
The programming team looks for any improvements that can be made within the code and implement them even if there is no immediate reason for it. In doing this, the code becomes much more understandable
What is test-first development?
Tests are created along with the rest of the software, not after it has been completed. Tests are made for every change that is made to the software product.
What is the drawback of test first development?
Since the test cases and test automation are created alongside the software they must pass the same quality control tests as the rest of the software even though they won’t be released.
What is test automation and why is it useful?
Test automation is when the tests are written as executable components before the task is implemented. This is useful because it means whenever we finish implementing a particular piece of the software we have many test cases ready to go.
What is pair programming?
Programmers literally working in pairs at the same machine to develop the software.
Why is pair programming useful?
Helps with spreading knowledge quickly across the team, serves as an informal review since more than one person is looking at the code, and encourages refactoring since all of the team members will benefit
How are pairs created in pair programming?
They are created dynamically so every programmer works with every other programmer at some point