Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

Extreme Programming in IT Industries

The traditional project management approaches are no longer


viable in the fast-paced environment of software engineering. That's
why focusing on existing incremental development techniques, the IT
industries use Agile project management so that the software
development becomes flexible, fast, and collaboration centred.

Extreme Programming was introduced in the 90s by Ken Beck with


the goal of finding ways to write high-quality software quickly and to
adapt to the changing requirements of customers.
Extreme Programming is one of the Agile frameworks which gives more
emphasis on technical aspects of software development.

XP is a set of engineering practices. Since the developers go


beyond their capabilities in these practices, it is called “extreme”.
XP framework involves five phases of development process that
iterates continuously.

Figure: Extreme Programming Lifecycle

1. Planning
At the first stage, the customer meets the development team and
presents the requirements in the form of user stories. The stories are
estimated by the software development team in order to create the
release plan by breaking it down into several iterations to deliver it part
by part. If one or more stories cannot be estimated, then further research
is required. The team mainly prepares the plan, time, and costs of
carrying out the iterations.

2. Designing
There are several principles in the designing phase. In this phase,
the team mainly focuses on simplicity by expressing a thing only once
and not adding any functionality in anticipation. They use metaphor or
standards on names, class names and methods, and decide on uniform
styles and formats to ensure the compatibility among the work of
different team members. In order to depart from the traditional mindset,
the team creates possible object oriented technology by using the
Software Class Responsibilities and Collaboration Cards (CRC). It allows
all members to contribute ideas, and portray best ideas into design. The
team members create the simple programs that do further research to
explore the potential solutions for a specific problem to mitigate the
risk.

3. Coding
In this phase, the actual code is created by maintaining coding
standards, pair programming, continuous integration, and collective
code ownership. XP mainly gives priority to the actual coding over all
other tasks such as documentation.
While writing the programs, the developers write codes based on agreed
metaphors and standards, and adopt a policy of collective code
ownership. In pair programming, two programmers work together on a
single machine in order to produce higher quality code at less cost. The
frequent integration of the codes to the dedicated repository is involved
with only one part integrating at a time to prevent the conflicts, and
optimization at the end.

4. Testing
It is an essential part of programming. It involves unit tests and
acceptance tests. On the one hand, the unit testing is done in order to
determine if the developed features work properly. All codes has unit
tests to eliminate bugs, and the code passes all such unit tests before
release.
On the other hand, acceptance testing helps to verify if the overall
system is created based on initial requirements. This test runs at the
completion of the coding, and the developers provide the customer with
the results of the acceptance tests along with demonstrations.

5. Listening
There should be constant communication between the team
members and the clients. The customers and project managers are
involved to describe the business logic and value. Apart from the
customers, the project managers also give feedback to the developers.
The feedback is based on the acceptance tests. Each feedback of the
customers makes the recursion of the process design-code-test-listen
cycle with new iterations until the final product is built according to the
requirement specifications.

There is a cooperation between several participants, each having


his or her own tasks and responsibilities. XP puts people in the centre of
the system giving more importance to social skills like communication,
cooperation, responsiveness and feedback.

The roles which are commonly associated with XP are listed below.

A. Customers
They are heavily engaged by creating user stories in the
development process, providing continuous feedback, and making
essential business decisions.

B. Programmers or developers
They are ones who actually develop the product. They are
heavily busy in implementing user stories and conducting user
tests.

C. Trackers or managers
These people organise the meetups, regulate discussions,
and keep track of important progress.

D. Coaches
They can be understood as the mentors with the
understanding of XP practices. They are usually an outside
assistant or external consultant who has experience in XP and can
help avoid mistakes.
Values of Extreme Programming
XP has 5 values to guide teamwork.
1. Communication
There is constant communication and understanding
between the team members and clients who work jointly to build a
good quality product.

2. Simplicity
The programmers try to write simple code that brings rich
value to the product which saves time and effort.

3. Feedback
The team members deliver software frequently in a
sequence and work accordingly based on the feedback given by the
project manager and the customers.

4. Respect
Every person assigned to a project contributes to a common
goal.

5. Courage
Without any excuses, the programmers objectively evaluate
their own results and work accordingly to deliver the good
software to the customers.

Principles of Extreme Programming


The principles of XP are listed below.
1. Rapid Feedback
The given feedback is delivered and the team members react
to it quickly.

2. Assumed Simplicity
The developers focus on the job that is important at the
moment and follow YAGNI and DRY principles.
3. Incremental Changes
The small changes made sequentially work better than the
whole product built at once.

4. Embracing Changes
The programmers should support the decision of the client
if they want some changes and implement the new requirements.

5. Quality Work
If the team works well following all the principles, they build
a valuable product.

Extreme Programming Practices


XP practices are a set of specific rules and methods that
distinguishes it from other methodologies. It is followed in order
to mitigate the risks of the development process, and lead to the
expected high-quality result. There are 12 XP practices which are
listed below.

1. Test Driven Development


The quality of software becomes high by receiving frequent
valuable feedback. It comes from good testing. Test Driven
Development entails writing automated unit tests before the code.
According to this approach, every piece of code must pass the test
to be released.

2. The Planning Game


This is the meeting that occurs at the beginning of the
iteration cycle. The customer and the development team gather
and discuss the product features, plans for upcoming iteration and
release, assigning tasks for each of them.

3. On-site Customer
In XP practice, there is the presence of on-site customers
who fully participate in the development. The customer should be
present all the time to answer the questions asked by the
development team, set priorities and resolve the disputes.
4. Pair Programming
In pair programming, two programmers work jointly on a
single machine in order to maintain the high quality product and
reduce the overall cost. While the first developer focuses on
writing, the other one reviews the code, suggests improvements,
and fixes mistakes. It is good for long-term projects even if it
takes more time than the regular development process.

5. Code Refactoring
The goal of code refactoring is to improve the code
continuously. It is about removing redundancy, unnecessary
functions, increasing code coherency, and decoupling elements.
The code should be clean, simple,comprehensible and modifiable
when required.

6. Continuous Integration
The systems are always kept fully integrated and the
development team always does continuous delivery. The reusable
codes are discussed and shared by the programmers. It helps to
know which functionality is needed for development which in turn
eliminates the integration problems. The automated testing also
allows the developers to detect and fix errors before deployment.

7. Small Releases
As discussed earlier, XP suggests releasing the MVP and
developing the product by making small incremental updates. It
allows users to receive frequent feedback, detect bugs and monitor
how the product works in production. It can be done by following
continuous integration practice.

8. Simple Design
The right design of the software should pass all the tests,
have no duplicate code, and contain the fewest possible methods
and classes. The design of the features which needs to be
implemented should be done rather than writing it in advance for
future features. It should clearly reflect the programmers’ intent.
The code should be refactored incrementally to implement the
new understanding and design.
9. Coding Standards
The team must have common coding practice or
standard;for instance, same formats and styles for code writing.
The applications following standards allows all the team members
to read, share and refactor code with ease and track who worked
on certain pieces of code.

10. Collective Code Ownership


As the whole team is responsible for the design of the
system, they can review and update code . The practice helps to
reduce the chance of code duplication, encourages to cooperate
more and feel free to bring new ideas. The team members will not
be confused where to put the new features when they have access
to the code.

11. System Metaphor


A simple design with certain qualities is the system
metaphor. The design and the structure must be comprehensible.
The developers’ thinking time should be reduced while examining
specifications. The naming of classes and methods should be
coherent so that developers can predict as it already existed.

12. 40-Hour Week


As the developers require to work fast, be efficient, and
sustain the product's quality, they should maintain their health.
The work-life balance prevents professionals from burnout. In XP,
the optimal number of work hours must not exceed 45 hours a
week.

Advantages and Disadvantages of XP:


There are several advantages and disadvantages of XP which can
be listed separately.

Advantages
The advantages of using XP are listed below.
1. The developers team have close contact with the customer.
2. There is no unnecessary programming work in XP.
3. Since it involves continuous testing, the software developed is
stable.
4. It helps in error avoidance through continuous testing.
5. Since the work time is fixed, the team works at their own pace and
there’s no overtime.
6. The changes in the software can be made at short notice.
7. The code is clear and comprehensible at all times.

Disadvantages
There are some disadvantages of XP which are listed below.
1. There is always some additional work.
2. The customer must participate in the software development
process.
3. It requires a relatively large time investment.
4. It requires relatively high costs.
5. It requires version management in every release.
6. It requires self-discipline to practice.

You might also like