Printer Friendly
The Free Library
14,634,800 articles and books
Member login
User name  
Password 
 
Join us Forgot password?

Principles of Extreme Programming.


Communication, Feedback, Simplicity & Courage

Extreme Programming works by creating rich channels of communication between programmers and customers, by requiring customers to select the most valuable features, by mandating ultra-simple system design, by delivering system increments early and often, and by testing the system exhaustively throughout development.

XP incorporates customer feedback into the system throughout development. It uses changing system requirements To be used efficiently, all computer software needs certain hardware components or other software resources to be present on a computer system. These pre-requisites are known as (computer) system requirements and are often used as a guideline as opposed to an absolute rule.  to evolve the system into what customers really want.

XP programmers work in tightly-knit teams that practice TDD (Time Division Duplexing) A transmission method that uses only one channel for transmitting and receiving, separating them by different time slots. No guard band is used. Contrast with FDD. See also TDD/TTY.

TDD - Telecommunications Device for the Deaf
, program in pairs, share all the source code, keep the design ultra-simple, refactor mercilessly, and integrate continuously. A good XP team can produce an astonishing a·ston·ish  
tr.v. as·ton·ished, as·ton·ish·ing, as·ton·ish·es
To fill with sudden wonder or amazement. See Synonyms at surprise.
 amount of robust software per week. XP also requires courage, high discipline, and accountability of all team members.

The Mechanics of On-Time Projects

So how do the practices work, in general terms? Agile methods like XP were designed by industry veterans who, after suffering project failures time after time, finally devised practices that prevent that failure. We've summarized the key practices below.

Bite-Sizing

Too many projects try to eat the whole cow in one bite, and choke (jargon) choke - To fail to process input or, more generally, to fail at any endeavor.

E.g. "NULs make System V's "lpr(1)" choke." See barf, gag.
 to death. Studies such as the famous Standish CHAOS Report show conclusively that the longer the project, and the more function points it addresses the likelier it is to fail. The decline in failure rates from 31% in the 1994 CHAOS report to 25% in the 2000 report are largely credited to smaller shorter projects and smaller teams. Another large case study "showed that defects rise non-linearly as project size grows." Yet another study showed that the percentage of useful code increased as project size decreased. In short, there is plenty of evidence to support dividing projects into smaller, more manageable iterations.

Timeboxed Iterations & Adaptive Planning

Several studies failed to correlate project success with waterfall-style predictive planning, in which scope is nailed down up-front. No matter how hard we try to predict detailed project scope at the outset, it is not possible to do. Instead, in XP you plan and build a discrete system A discrete system or discrete-time system, as opposed to a continuous-time system, is one in which the signals are sampled periodically. It is usually used to connote an analog sampled system, rather than a digital sampled system, which uses quantized values.  increment To add a number to another number. Incrementing a counter means adding 1 to its current value.  in each closed-end iteration One repetition of a sequence of instructions or events. For example, in a program loop, one iteration is once through the instructions in the loop. See iterative development.

(programming) iteration - Repetition of a sequence of instructions.
, letting its scope slip but not the date. At the end of the iteration, you compare metrics metrics Managed care A popular term for standards by which the quality of a product, service, or outcome of a particular form of Pt management is evaluated. See TQM.  on predicted progress vs. actual progress, and use any discrepancy to plan the next iteration. You use the data from the first few iterations to arrive at a concrete estimate for final system scope.

Delivering Finished Increments

Two studies showed large rates of requirements change during projects. Another study found that iterative it·er·a·tive  
adj.
1. Characterized by or involving repetition, recurrence, reiteration, or repetitiousness.

2. Grammar Frequentative.

Noun 1.
, incremental Additional or increased growth, bulk, quantity, number, or value; enlarged.

Incremental cost is additional or increased cost of an item or service apart from its actual cost.
 delivery "appears to contribute to both a lower defect rate and higher productivity."

The best practice is to iterate it·er·ate  
tr.v. it·er·at·ed, it·er·at·ing, it·er·ates
To say or perform again; repeat. See Synonyms at repeat.



[Latin iter
 and deliver incrementally, treating each iteration as a closed-end "mini-project," including complete requirements, design, coding, integration, testing, and internal delivery. On the iteration deadline, deliver the (fully-tested, fully-integrated) system thus far to internal stakeholders Stakeholders

All parties that have an interest, financial or otherwise, in a firm-stockholders, creditors, bondholders, employees, customers, management, the community, and the government.
. Solicit their feedback on that work, and fold that feedback into the plan for the next iteration.

Test-Driven Development Test-Driven Development (TDD) is a software development technique consisting of short iterations where new test cases covering the desired improvement or new functionality are written first, then the production code necessary to pass the tests is implemented, and finally the  and Refactoring

Cralo Larman's latest book quotes studies showing that "broadly, defect reduction comes from avoiding defects before they occur and from feedback" such as tests and evaluations. One study showed that as the time lag between coding and testing decreased, defect rates likewise decreased. Test-Driven Development together with refactoring, effectively eliminate the sad tradition of open-ended debugging (programming) debugging - The process of attempting to determine the cause of the symptoms of malfunctions in a program or other system. These symptoms may be detected during testing or use by real users. , replacing it with "pre-bugging": finding and eliminating bugs at inception. The practice of continuous integration is also credited by Larman and others with lowering defect rates and increasing productivity.

Risk-Driving

Several studies correlate project failure with failure to tackle integration soon enough. The best practice is to address high-risk and high-business-value issues as early as possible. For example, program and test the core architecture, and integrate its major components, in early iterations. This way when you encounter big unanticipated problems, you still have time to address them.

Building Features in Priority Order

In XP, you rank all features by business value. In each iteration, you plan to build the highest-priority remaining features. The finished system consists only of high-ROI features. And should the project be cancelled early, the system is robust and fully integrated, and may contain the enough business-critical functionality to pay back your development investment so far.

Loosely-Coupled Design

Responding quickly to unanticipated requirements change requires keeping the system extensible. In turn, this requires understanding and applying the principles and patterns of object-oriented design Transforming an object-oriented model into the specifications required to create the system. Moving from object-oriented analysis to object-oriented design is accomplished by expanding the model into more and more detail. . Don't let unhealthy dependencies develop between components. Continually refactor the design, so that it can accommodate arbitrary change at any point in its lifecycle.

Conclusion: XP Works

Refactoring

Software refactoring can be seen as the object-oriented equivalent of restructuring. It can be considered as a specific kind of software evolution.

We can distinguish between two kinds of refactoring:

- Program refactoring deals with the refactoring of source code (i.e., programs). It is a specific kind of program transformation that preserves the external behaviour of the program.

Model refactoring deals with the refactoring of models (e.g. design models). In a certain sense, Model refactoring encompasses Program refactoring, at least for those who take the view that a program is nothing but a special kind of (very detailed) model. Model Refactoring is a special kind of Model Transformation, namely a model transformation that preserves the behaviour of the model, however behaviour is defined.
COPYRIGHT 2006 A.P. Publications Ltd.
No portion of this article can be reproduced without the express written permission from the copyright holder.
Copyright 2006, Gale Group. All rights reserved. Gale Group is a Thomson Corporation Company.

 Reader Opinion

Title:

Comment:



 

Article Details
Printer friendly Cite/link Email Feedback
Title Annotation:EXTREME PROGRAMMING
Publication:Software World
Geographic Code:1USA
Date:Jan 1, 2006
Words:867
Previous Article:FortiMail secure messaging appliance.(Security Extra)
Next Article:Design patterns in software engineering.(SOFTWARE ENGINEEERING)
Topics:



Related Articles
Gravity games are alternative of extreme sports.(includes related article on the renewed international vigor of wrestling)
Agile Modeling: Effective Practices for extreme Programming and the Unified Process. (Reviewers Choice).
Creativity proves extreme versatility.(Business)(Eugene-based firm turns 'great ideas' into real technological solutions)
The top five reasons software projects fail (and how Extreme Programming mitigates them).(WorldWatch)
Re Fr. Stephen Somerville: a perspective.(Letters To The Editor)(Letter to the Editor)
History: the Agile Manifesto.(SOFTWARE INTELLIGENCE)
Addison-Wesley.(Effective C#: 50 Specific Ways to Improve Your C#)(Effective XML: 50 Specific Ways To Improve Your XML)(eXtreme .NET : Introducing...
SMU's Cox School of Business looks to the future with extreme networks.(Advertisement)
eXtreme Project Management.

Terms of use | Copyright © 2009 Farlex, Inc. | Feedback | For webmasters | Submit articles