Extreme Programming (XP) is a discipline of software development based on values of simplicity, communication, feedback, and courage. In XP, every contributor to the project is an integral part of the “Whole Team“. The team forms around a business representative called “the Customer”, who sits with the team and works with them daily. XP teams use a simple form of planning and tracking to decide what should be done next and to predict when the project will be done. Focused on business value, the team produces the software in a series of small fully-integrated releases that pass all the tests the Customer has defined. Extreme Programmers work together in pairs and as a group, with simple design and obsessively tested code, improving the design continually to keep it always just right for the current needs.
Rational Unified Process (RUP) is an iterative software development process framework, originally developed by Rational Software, and now available from IBM. The RUP has determined a project lifecycle consisting of four phases: Inception, Elaboration, Construction and Transition. These phases allow the process to be presented at a high level in a similar way to how a waterfall styled project might be presented, although in essence the key to the process lies in the iterations of development that lie within all of the phases. Also, each phase has one key objective and milestone at the end that denotes the objective being accomplished. Within each iteration, the tasks are categorized into nine disciplines, which six are engineering disciplines and three supporting disciplines. The engineering disciplines are: Business Modeling, Requirements, Analysis and Design, Implementation, Test, Deployment. The three supporting disciplines are: Configuration and Change Management, Project Management, Environment.
Scrum is an iterative, incremental framework, which contains sets of practices and predefined roles. The main roles in Scrum are: the ScrumMaster, who maintains the processes; the Product Owner, who represents the stakeholders; and the Team, who do the actual analysis, design, implementation, testing, etc. During each sprint, the team creates a potentially shippable product increment. The set of features that go into a sprint come from the product backlog, which is a prioritized set of high level requirements of work to be done. Which backlog items go into the sprint is determined during the sprint planning meeting. During this meeting, the Product Owner informs the team of the items in the product backlog that he wants completed. The team then determines how much of this they can commit to complete during the next sprint. During a sprint, no one is allowed to change the sprint backlog, which means that the requirements are frozen for that sprint.
Test-driven development (TDD) is a software development technique that uses short development iterations based on pre-written test cases that define desired improvements or new functions. Each iteration produces code necessary to pass that iteration's tests. Finally, the programmer or team refactors the code to accommodate changes. The TDD Cycle consist of five steps: add a test, run all tests and see if the new one fails, write some code, run the automated tests and see them succeed, refactor code.