Thursday, March 5, 2009

Extreme Programing

A Discipline of software development that follows a specific structure that is designed to simplify and expedite the process of developing new software. Kent Beck developed Extreme Programming to be used with small teams of developers who need to develop software quickly in an environment of rapidly-changing requirements.
XP teams design software for specific functionalities without adding any functionalities that are not specifically requested that may slow down the process, keeping the development course simple through systematic and regular testing and design improvements.
Extreme Programming is based on 12 principles:

  1. The Planning Process : The desired features of the software, which are communicated by the customer, are combined with cost estimates provided by the programmers to determine what the most important factors of the software are. This stage is sometimes called the Planning Game.
  2. Small Releases: The software is developed in small stages that are updated frequently, typically every two weeks.
  3. Metaphor; All members on an XP team use common names and descriptions to guide development and communicate on common terms.
  4. Simple Design: The software should include only the code that is necessary to achieve the desired results communicated by the customer at each stage in the process. The emphasis is not on building for future versions of the product.
  5. Testing : Testing is done consistently throughout the process. Programmers design the tests first and then write the software to fulfill the requirements of the test. The customer also provides acceptance tests at each stage to ensure the desired results are achieved.
  6. Refactoring: XP programmers improve the design of the software through every stage of development instead of waiting until the end of the development and going back to correct flaws.
  7. Pair Programming: All code is written by a pair of programmers working at the same machine.
  8. Collective Ownership: Every line of code belongs to every programmer working on the project, so there are no issues of proprietary authorship to slow the project down. Code is changed when it needs to be changed without delay.
  9. Continuous Integration: The XP team integrates and builds the software system multiple times per day to keep all the programmers at the same stage of the development process at once.
  10. 40-Hour Week: The XP team does not work excessive overtime to ensure that the team remains well-rested, alert and effective.
  11. On-Site Customer : The XP project is directed by the customer who is available all the time to answer questions, set priorities and determine requirements of the project.
  12. Coding Standard; The programmers all write code in the same way. This allows them to work in pairs and to share ownership of the code.

RUP

RUP -Rational Unified Process based on UML Software. RUP organises the development of software into four phases each consisting of one or more executable iterations of the software at that developement stage.
  1. Inception: Here the project business case is stated and the team deciedes if the project is worth doing or if it is even possible. It is important to the process to first formulate the scope of the project and also determine what resource will be needed
  2. Elaboration: In this stage, the developer take a closer look at the project to deterimine it architecture foundation and to evaluate the architecture in relation to the project. This stage is important to the RUP because it is here that the developers analyze the risks associated with changing the scope of the project or adding new techonolgies along the way.
  3. Construction: In this stage the development of the project is completed. The application design is finished and the source code is written. It is in this stage that the software is tested to determins if the project has met its goal laid out in the inception phase.
  4. Transit: In this stage any fine tuning is performed and final adjustments can be done based on users feedback, usability or installation issue.

RUP is similear in cocept to Extreme Programming in that only what is useful and required is produced and the development plan is updated throughtout the process. Both methods seek to develop a system of best practices in software development.