Introduction


Extreme Programming is a combination of simple, common-sense practices stressing communication, teamwork, requirements, and customer satisfaction. It is based on these values:
Communication - in order to successfully create and deliver a software product on time, there must be constant and thorough communication between members of the development team.
Feedback - Customer involvement and feedback are essential for customer satisfaction.
Simplicity - XP stresses the need to keep things as simple as possible while meeting the requirements laid out for the project.
Courage - Developers must have the courage and confidence to bring change and produce quality results






Core concepts in XP



Pair Programming


XP assumes that people work best in pairs so that they complement each other's strengths and weaknesses and so that knowledge can be spread between members of the team. The benefits as far as design, bug elimination, etc., can make two programmers at one computer be much more effective than they would be if they were each at separate computers.






Benefits of pair programming.






Economics, Satisfaction, Design quality, Continuous Reviews. Problem solving.Learning. Team Building and Communication.Staff and Project Management.











Stories and Test/Requirement-Driven Development











A project's requirements are laid out as individual stories. These stories have test cases. A test case includes the test and the desired results which, if met, indicate that that story is complete.



The project is done in iterations. At the end of an iteration, the next iteration is planned out in an iteration planning meeting. The customer (with the developers' guidance, of course) decides what stories are to be implemented in the next iteration, based on what is most important to them, and what is most practical to implement next.







It is important that each iteration takes just as long as all the others in a given project. The time that it took to complete a given story is recorded so that the programmers get a good feel for how much effort it takes to do that type of work.







The stories are broken down into tasks, which are the steps needed to implement a given user story. Developers then sign up to do those tasks.







On the completion of an iteration, acceptance tests are done to ensure that the test cases defined in that story have been met. The acceptance tests include both automated unit testing, and customer testing. This makes sure that all requirements are reached because the development is based around those requirements and there are definite indicators on whether a given requirement is met. It also breaks down the project into reachable goals rather than having programmers work away forever on an ever-expanding megalith.







Continuous Integration


Continuous integration eliminates the headaches of working with outdated code and trying to integrate fragmented or diverging code into the system.

Leave a Reply

Subscribe to Posts | Subscribe to Comments

About This Site

Howdy! My name is Suersh Rohan and I am the developer and maintainer of this blog. It mainly consists of my thoughts and opinions on the technologies I learn,use and develop with.

Blog Archive

Powered by Blogger.

- Copyright © My Code Snapshots -Metrominimalist- Powered by Blogger - Designed by Suresh Rohan -