Introduction to eXtreme Programming(XP)

What is XP :-

eXtreme Programming is a software development methodology which belongs to the “Agile Software Development” family. It advocates frequent releases of software involving short development cycles. The intent is to improve productivity, quality and accommodate changing customer requirements by using checkpoints.

Values of XP :-

The five values of XP are communication, simplicity, feedback, courage, and respect and are described in more detail below.

Communication

Software development is inherently a team sport that relies on communication to transfer knowledge from one team member to everyone else on the team. XP stresses the importance of the appropriate kind of communication – face to face discussion with the aid of a white board or other drawing mechanism.

Simplicity

Simplicity means “what is the simplest thing that will work?” The purpose of this is to avoid waste and do only absolutely necessary things such as keep the design of the system as simple as possible so that it is easier to maintain, support, and revise. Simplicity also means address only the requirements that you know about; don’t try to predict the future.

Feedback

Through constant feedback about their previous efforts, teams can identify areas for improvement and revise their practices. Feedback also supports simple design. Your team builds something, gathers feedback on your design and implementation, and then adjust your product going forward.

Courage

Kent Beck defined courage as “effective action in the face of fear” (Extreme Programming Explained P. 20). This definition shows a preference for action based on other principles so that the results aren’t harmful to the team. You need courage to raise organizational issues that reduce your team’s effectiveness. You need courage to stop doing something that doesn’t work and try something else. You need courage to accept and act on feedback, even when it’s difficult to accept.

Respect

The members of your team need to respect each other in order to communicate with each other, provide and accept feedback that honors your relationship, and to work together to identify simple designs and solutions.

Practices in XP :-

XP methodology suggests to use many great software engineering practices across the development cycle. These practices collectively or individually improves software deliveries and quality. These practices also help the development team mark the checkpoints required for delivery. These practices are time tested and worked very well in software development delivery model in the past. These famous 12 practices are described in detail below.

  1. Whole team:
    • The whole team practice is the idea that all the contributors to an XP project sit together in the same location, as members of a single team.
    • XP emphasizes the notion of generalizing specialist, as opposed to role specialists.

2. Planning Games:

XP has two primary planning Activities:

  • Releases are push of new functionality all the way to the production user.
  • Iterations are the short development cycles within a release that scrums call “sprints”

3. Small releases:

Frequent, small releases to a test environment are encouraged in XP, both at the iteration level, to demonstrate progress and increase visibility to the customer, and at the release level, to rapidly deploy working software to the end-users.

4. Customer Test:

The customer describes one or more test criteria that indicate the software is working as intended, then the team builds automated tests to prove themselves and the customer that the software has met those criteria.

5.Collective Code Ownership:

Pair of developers can improve any code it means multiple people will work on all the code, which results in increased visibility and broader knowledge of the code base.

6. Code Standards:

  • Although collective code ownership allowing anyone to amend any code can result in issues if the team members take different approaches to coding.
  • to address this risk, XP teams follow a consistent coding standard so that all the code looks as if it has been written by a single, knowledgeable programmer.

7. Metaphor(Poetically calling things something else):

XP uses it to explain designs and create a shared vision. these descriptions establish comparisons that all the stakeholders can understand to help explain how the system should work.

8. Continuous Integration:

XP employs continuous integration, which means every time a programmer checks in code to the code repository, integration tests are run automatically.

9. Test-Driven Development:

XP often use the practice of test-driven development. In TDD once requirement freezes, developer writes Test cases based on the requirement and creates code to pass the Unit Test. It helps in zero defect deliveries.

The cycle of TDD is:

  1. writetest2.testfails3.thenagainwritecode4.ifthetestpasses5.thenrefactorwritetest2.testfails3.thenagainwritecode4.ifthetestpasses5.thenrefactor

10. Refactoring:

  • Refactoring is the process of improving the design of existing code without altering its external behaviour or adding new functionality.
  • It’s focusing on removing duplicated code, lowering coupling, and increasing cohesion.

11. Simple design:

XP team can develop code quickly and adapt it as necessary. The design is kept appropriate for what the project currently requires. then revisited iteratively and incrementally to ensure it remains appropriate.

12. Pair Programming:

In XP, the production code is written by two developers working as a pair. while one person writes the code, the other developers review the code as it is being written and the two change roles frequently.

Author: Aditya Bhuyan

I am an IT Professional with close to two decades of experience. I mostly work in open source application development and cloud technologies. I have expertise in Java, Spring and Cloud Foundry.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s