Friday, September 5, 2014

XP - Life Cycle

XP Life Cycle

 

XP teams perform nearly every software development activity simultaneously.  Analysis, Design, Coding, Testing, and even Deployment occur with rapid frequency.

That's a lot to do simultaneously.

 

XP does it by working in iterations: week-long increments of work.

Every week, the team does a bit of release planning, a bit of design, a bit of coding, a bit of testing, and so forth.

 

They work on stories: very small features, or parts of features, that have customer value.

Every week, the team commits to delivering four to ten stories. Throughout the week, they work on all phases of development for each story.

At the end of the week, they deploy their software for internal review.

(In some cases, they deploy it to actual customers.)

 

 

Planning - Planning Game

 

Every XP team includes several business experts—the on-site customers—who are responsible for making business decisions.

On-Site Customers point the project in the right direction by:

 

·         Clarifying Project Vision,

·         Creating Stories,

·         Constructing Release Plan, and

·         Managing Risks.

 

Programmers provide Estimates & Suggestions, which are blended with customer priorities in a process called the Planning Game.

Together, the team strives to create small, frequent releases that maximize value.

 

 

Analysis

 

Rather than using an upfront analysis phase to define requirements, on-site customers sit with the team full-time.

On-site customers are responsible for figuring out the requirements for the software.

Customers are responsible for organizing their work so they are ready when programmers ask for information.

They figure out the general requirements for a story before the programmers estimate it and the detailed requirements before the programmers implement it.

 

Some requirements are tricky or difficult to understand. Customers formalize these requirements, with the assistance of testers, by creating Customer Tests: detailed, automatically checked examples.

Customers and Testers create the customer tests for a story around the same time that programmers implement the story.

 

For the UI, customers work with the team to create sketches of the application screens.

In some cases, customers work alongside programmers as they use a UI builder to create a screen.

 

 

Design and Coding

 

XP uses Incremental Design And Architecture to continuously create and improve the design in small steps.

This work is driven by Test-Driven Development (TDD), an activity that inextricably weaves together testing, coding, design, and architecture.

 

To support this process, programmers work in pairs, and ensures that one person in each pair always has time to think about larger design issues.

Programmers are also responsible for managing their development environment. They use a version control system for configuration management and maintain their own automated build.

Programmers do continuous integration every few hours and ensure that every integration is technically capable of deployment.

To support this effort, programmers also maintain coding standards and share ownership of the code.

The team shares a joint aesthetic for the code, and everyone is expected to fix problems in the code regardless of who wrote it.

 

 

Testing

 

XP includes a sophisticated suite of testing practices.

Each member of the team—Programmers, Customers, And Testers—makes his own contribution to software quality.

Well-functioning XP teams produce only a handful of bugs per month in completed work.

 

Programmers provide the first line of defence with TDD. TDD produces automated Unit & Integration Tests.

In some cases, programmers may also create End-To-End Tests. These tests help ensure that the software does what the programmers intended.

Likewise, Customer Tests help ensure that the programmers intent matches customers expectations.

 

TDD and Customer Testing leads to a sophisticated suite of Automated Regression Tests.

 

Finally, testers help the team understand whether their efforts are in fact producing high-quality code.

They use Exploratory Testing to look for surprises and gaps in the software.

 

When the testers find a bug, the team conducts Root-Cause Analysis and considers how to improve their process to prevent similar bugs from occurring in the future.

Testers also explore the software non-functional characteristics, such as performance and stability. Customers then use this information to decide whether to create additional stories.

 

The team doesn’t perform any Manual Regression Testing. When bugs are found, programmers create automated tests to show that the bugs have been resolved. This suite is sufficient to prevent regressions. Every time programmers integrate (once every few hours), they run the entire suite of regression tests to check if anything has broken.

 

 

Deployment

 

XP teams keep their software ready to deploy at the end of any iteration. They deploy the software to internal stakeholders every week in preparation for the weekly iteration demo.

Deployment to real customers is scheduled according to business needs.

 

As long as the team is active, it maintains the software it has released. In cases, a separate support team may take over.

Similarly, when the project ends, the team may hand off maintenance duties to another team. In this case, the team creates documentation and provides training as necessary during its last few weeks.

 

 

Hope this helps.

 

Regards,

Arun

No comments:

Post a Comment