Agile Extreme Programming Flashcards
Define Extreme Programming (XP)
It is an agile software development framework that aims to produce higher quality software and higher quality of life for the development team.
What are the origins of Extreme programming?
Developed in the 1990s to address specific software development requirements in the face of vague or changing requirements. (Beck at the Chrysler Corp)
Describe the Extreme Programming Mindset.
Kent Beck described the following as a minimal set of effective practices:
- Very Short Iterations (Planning Game)
- Continuous Code Reviews (Pair Programming)
- Extensive Testing (Test-Driven Approach)
- Automating builds (Continuous Integration)
- Constant design improvement (Refactoring)
- Continuous architecture refinement (Metaphor)
Describe the XP tenets
XP aims to flatten the cost of change curve by applying XP values, roles and practices.
What are the five XP Values
Communication
Feedback
Simplicity
Respect
Courage
Describe the XP Value of Communication.
Software development requires communication to transfer knowledge. Most problems can be traced back to a lack of communication.
XP employs communication in the area of fine scale feedback, (e.g., Paired programming, Planning game, Test-driven Development, and Whole team) and Shared Understanding (e.g., Coding standards, collective coed ownership, simple design and system metaphor).
What is the responsibility of the XP Coach?
To notice poor communication and to facilitate effective information exchange.
Describe the XP value of simplicity.
It is the quality or condition of being easy to understand, do or uncomplicated in design. Avoids waste. (What is the simplest thing that will work). (Remember the KISS mentality).
It means doing a simple thing today, even if it means we pay a little more to change it tomorrow, by addressing only the known requirements without trying to predict future requirements.
Describe the relationship between simplicity and communication.
Simplicity and communication have a mutually supporting relationship, in that when there is more communication, there is clearer understanding of what is needed, and the higher the confidence level on what doesn’t need to be done. As well, the simpler the solution, the less communication required.
Define the XP value of feedback.
Constant feedback about previous efforts means that teams can identify area for improvement and revise their practices. Feedback also supports simple design.
Define the XP value of Courage.
It is effective action in the face of fear and is required to raise organizational issues that reduce the project teams effectiveness, allows the opportunity to stop something that does not work and try something else or to accept and act on feedback.
Define the XP value of Respect.
Builds on the other four values of communication, simplicity, feedback and courage, respect means respecting ones thoughts, feelings, abilities, qualities or achievements.
It is demonstrated by programmers that never commit changes that break compilation, that make existing tests fail, or that otherwise delay the work of their peers. Team members strive for high quality and seek the best design.
What are the four roles and one optional role of the XP team?
- Customer
- Programmer
- Tester
- Coach
- Optional: Tracker
Define the role of Customer
Commonly includes:
- Driving project goals and features.
- making business decisions.
- participating in the planning game.
- Acceptance tests.
- Representing business/Sponsor interests.
- Prioritizing
- Ideally a single voice.
Define the programmer role.
Commonly includes:
- collaborating to create customer solutions.
- pair programming
- Programming testing
- Applying designs, coding standards and refactoring.
- collective code ownership.
Define the Tester role.
Areas commonly include:
- Helping the customer choose/write functional tests.
- Running functional and integration tests.
- Supporting programmers.
- Setting up the test landscape.
- Post testing reports.
- Validating and confirming defect resolution.
Define the Coach role.
Areas commonly include:
- Optimizing use and veneifits of applied XP practices.
- Demonstrating XP values.
- Noticing team process.
- Ensuring focus on project objectives/iterations.
- suggesting improvements in XP practices.
- resolving team conflicts.
- Serving as an intermediary.
- mentor and train.
Define the optional role of the tracker.
Commonly includes:
- tracking project schedule.
- capturing progress.
- supporting a sustainable pace.
- identifying ration of passing to failing tests.
Logging and resolving issues.
What are the four XP activities?
- Listening
- Designing.
- Coding.
- Testing.
What are the four agile principles that are connected to Fine Scale Feedback.
- Pair programming.
- Planning Game
- Test-driven development.
- Whole team (customer)
Describe Paired Programming.
Two programmers are better than one. This allows for continuous review and quicker response to problems. One programmer will be the driver, and one will be the reviewer/observer.
What is the purpose/objective of the planning game?
To effectively steer and guide the project activities in order to meet both business value and technical feature objectives.
What are the advantages of Test-driven development?
- increases confidence in the code and system stability.
- promotes simpler, more independent less-coupled code.
- clarifies functional requirements.
- Facilitates final acceptance.
What is the “Whole Team” and the objective?
The whole team refers to** a cross-functional group of people **with the necessary roles for a product that form a single team. The objective is to ensure what is developed is what is needed and adds business value.
What are the three agile principles connected to “Continuous Process”
- Continuous integration.
- Refactoring (design improvement)
- Small Releases.
What is continuous integration and the objective?
Continuous integration is about automating processes for a team to continuously build and test software, many times a day. The objective is to ensure stable code base to deliver a suitable version for release at any moment.
What is refactoring, and what is the objective?
Refactoring represents a set of guidelines for a specific programming language that recommend programming style, practices, and methods. The objective is to **increase cohesion **of the code while lowering the coupling.
Describe the key advantages of small releases.
- providing business value early.
- reduce the risk and scope variance.
- Improving communication and feedback from customers and end-users.
What are the four agile principles connected to Shared Understanding?
- Coding standards.
- Collective code ownership.
- simple design.
- System metaphor.
What are coding standards and their advantages?
Coding standards represent a set of guidelines for a specific programming language that recommend programming style, practices, and methods. The advantages are to:
- support collective ownership.
- enhance reading and interpretation of base code.
- reduce the amount of time spent reformatting other’s code.
What is “collective code ownership” and the main objective?
Anybody who sees an opportunity to add value to any portion of the code is required to do so. The objective is that everybody takes responsibility for the whole code base and system.
What are the advantages of simple design?
- Avoids redundant, duplicated or copies of information or logic.
- Promotes the successful running of all necessary tests.
- Ensures the result states the important intention of the programmers.
- Prevents the mentality of implement for today, design for tomorrow.
What is the System metaphor and the objective?
Provides a guiding vision and definition of an XP project complementing what is commonly referred to as the system architecture. It’s objective is to establish a common mental model and descriptive language of a system an how it is intended to perform.