Thursday, 20 April 2017

XP – Extreme Programming

software development practice

Extreme Programming - XP is an agile technique of software development dedicated on providing the high customer value in the fastest possible way.

The traditional software development procedure is linear, with each stage of the development lifecycle requiring conclusion of the previous or the earlier stage. For instance, designing of the software starts only on completion of the entire program analysis, and coding starts only after end of the design. This concept of development works fine when customer requirements remain static throughout, but in practice, requirements change often and cause numerous editing of programs leading to mistakes and software ‘rot.’

Extreme Programming - XP shots the traditional software development procedure sideways. Rather than planning, analyzing, and designing in a linear manner, XP programmers carry out actions at a time throughout the software development Phase. The method stands resemblance to a puzzle with the development of many small iterations that make no sense independently, but making for a comprehensive package when combined. The biggest benefit of this methodology is the resilience it provides, permitting for easy integration of changes.

The Extreme Programming software development practice begins with planning, and all iterations consist of four basic stages in its lifecycle: Designing, Coding, Testing, and Listening.

The prevailing values that drives the Extreme Programming life cycle are frequent communication with the customer and among the team members, simplicity by simple understandable solution, everyday feedback through unit and acceptance testing, and the audacity to take on complications proactively and integrate testing and changes in the software development phase.

Planning

The first stage of Extreme Programming life cycle is Planning, where customers, clients or users meet with the software development team to build ‘user stories’ or requirements. The development team translates user stories into iterations that cover a minor part of the functionality or features required. A combination of iterations delivers the customer with the final completely functional product.
Programming team formulates the Plan, Time, and Costs to carry out the iterations, and individual software developer’s sign up for iterations.
One of the Planning method is the critical path method, grouping iterations essential for project progress in a lined fashion, and arranging for accomplishment of other iterations parallel to the critical path.

Designing

An iteration of Extreme Programming starts with Designing. The controlling principles of this phase are:
Emphasis on simplicity and not adding functionality in anticipation. Using systems symbol or standards on names, class names and methods, and approving on uniform styles and formats to safeguard compatibility amongst the different team member’s work.
Using Software Class Responsibilities and Collaboration Cards that permit for a parting from the traditional procedural approach and make probable object oriented technology. Such cards let all members of the project team to add ideas, and assemble the best ideas into the software design.
Building spike solutions or modest programs that explore probable solutions for a specific problem, discounting all other concerns, to mitigate risk.
Coding
Coding constitutes the most important phase in the Extreme Programming life cycle. XP programming gives priority to the actual coding over all other tasks such as documentation to ensure that the customer receives something substantial in value at the end of the day.
Standards linked to coding include:
Developing the code built on the agreed metaphors and standards, and adopting a policy of shared code ownership. Pair programming or mounting code by two programmers working together on a single device, aimed at creating higher quality code at the same or less cost.
Regular integration of the code to the dedicated repository, with only one pair assimilating at a time to prevent conflicts, and optimization at the end.
Testing
Extreme program incorporates testing with the development phase rather than at the end of the software development phase. All codes have unit tests to remove bugs, and the code passes all such unit tests before release.
Additional key test is customer acceptance tests, based on the customer conditions. Acceptance test run at the achievement of the coding, and the developers provide the customer with the consequences of the acceptance tests along with demonstrations.
Listening
The basis of extreme programming XP is a continuous scheme of customer involvement through continuous feedback during the development phase. Apart from the clients, the developer also obtains feedback from the project manager.
The basis of continuous feedback is the client acceptance tests. Each and every feedback of the client that specifies reviewed requirement becomes the base of a new design, and the lifecycle repeats itself. If the client remains satisfied with the test consequences the iteration ends there, and the design for the new iteration starts, which again trails the design-coding-testing-listening cycle.

References :