New English word? Translate any word using double click.
By Supriya Lala
Agile methodology has become extremely popular in the arena of software development due to its non-conventional and innovation based approach. Extreme programming is a method of the agile development model with focus on engineering mechanisms for software programming. This article explores the concept of extreme programming (XP) which lays emphasis on flexibility and return to investment .
More developers have realized that greater value can be delivered to the business as well as the concerned stakeholders. However, this is only when flexibility and change is incorporated in the software development process. The process termed as agile methodology focuses on a high degree of team collaboration, communication, and incremental release. This process is flexible to accommodate variation in requirements along the development and initiative within the team to innovate and remain self-motivated .(1)
A form of agile development methodology, extreme programming (XP), was developed by Kent Beck in the 1990s, and lays special focus on the engineering procedures. Kent has described extreme programming as a progression of idea which moves from broad and abstract values through a series of principles to a specific engineering practice. It differs from other agile processes which influence project management, continuous integration, paired programming, test driven development, and refactoring, all of which together aim to enhance code quality and reduce errors and defects in code .(2)
Paired programming focuses on collaboration for improving code quality through peer review. It also helps in knowledge sharing among new team members and enhances team accountability. Test driven development (TDD) aims to cover the codes in entirety for test automation and its scope is wider than the developer’s unit test. TDD is a continuous design mechanism as only the required feature as per changing requirement is added through incremental delivery. It prevents any loss of time and effort over unnecessary functionality development. Test driven development encourages good design. Refactoring aims to improve code structure without affecting the code nature. XP employs continuous integration and evaluates all codes centrally with test automation. This is employed for the entire system to ensure a high quality system in which the latest changes have been incorporated .(3)
Framework of Roles in Extreme Programming:(4)
Tracker reviews the issues of the programmers, listens to them, and takes the necessary steps to check things going awry. After that meetings are arranged between the various stakeholders (developer, customer, and coach) .
Customers should either be part of the development team or remain available for constant communication. The customer emphasizes business requirements, provides user stories, directs over functional tests, and prioritizes the features for release. The customer provides the acceptance tests that ensure the stories have been integrated into the system .
Extreme programmers make an estimation of the user stories in terms of time taken for task completion. They also define the engineering practices and implement the tasks and unit tests .
Testers carry test automation of features and functions and prepare the test result for feedback .
Coaches arrange and hold meetings related to the iteration plan, schedules, records, meeting minutes for future reference, and feedback. The coach collaborates with the tracker and act as a mentor for the team .
Core Values of Extreme Programming (5)
High level of communication and collaboration between the team enables speedy responses to changing requirements, ensuring a high quality project .
Continuous customer feedback to deliver as per customer requirements for high customer satisfaction.
Focus on software development as an evolving process .
Maintaining simplicity while meeting project requirements .
Ability to remain flexible and bring changes to the project and deliver high quality .
Maintain a sustainable pace and do not work over time to prevent team exhaustion. (The focus should be on moderation and not a hectic crowded schedule) .
Collective ownership of the code allows any team member to change the code. This should be effectively communicated to the rest of the team .
Issues and Advocacy Surrounding XP
Paired programming is deemed as a costly deployment of the programming staff that can otherwise be deployed for working individually in separate areas. The flexible and iterative nature of development, without thorough documentation and changes being applied by any developer makes it vulnerable. The code can be hacked and if changes are made to the code without the same being properly communicated to the team, issues might arise .
XP advocates stress that the various facets of engineering practices make it a highly disciplined approach. XP is focussed on delivering the maximum business value as per customer requirements. It also focuses on maintaining thorough code quality, which justifies the cost of the engineering practices.. Over the years extreme programming is being adopted and becoming popular. For greater adoption, success cases need to be highlighted along with proper coaching and mentoring of programming and business professionals who constitute the development teams .
(5)Clifto, Marc n and J. Dunlap. “What Is Extreme Programming?” 21 July 2003. Code project website. 10 March 2015
(2) Fowler, Martin. “Extreme Programming.” 11 July 2013. Martin Fowler website. 10 March 2015.
(4) Raman, Sanjeev. “eXtreme Programming The Methodology.” 02 April 2014. Info Q website. 10 March 2015
(1,3) Wright, Graham. “A lesson in extreme programming.” British Computer Society. 10 March 2015
One of the engineering technique deployed by Comnez for software development through Agile, extreme programming is a development technique that mainly focuses on the features that are going to be built, rather than creating detailed requirements specification at the beginning of a project. For storing and managing the requirements, the development team uses a stack for the validated, prioritized and estimated requirements which need to be implemented before the product is finished .