Scrum Process with XP Engineering Practices
The phrase Scrum process with XP engineering practices refers to the use of Scrum to manage the steps taken to develop software, in conjunction with the use of XP to ensure the quality of the software.
These are the Scrum processes that were used for Project X:
Sprints and Sprint planning meetings. Sprints are iterations of approximately 30 days. A Sprint is initiated by holding a Sprint planning meeting, at which the goal of the Sprint is defined and the Sprint backlog is started.
Daily Scrums. These are daily meetings in which the project team discusses what work is currently in progress, in addition to any impediments.
Product backlog and product owner. The product backlog is the prioritized list of products that is owned by the product owner.
Sprint backlog. The Sprint backlog is the list of work that's currently assigned to the Sprint, and the amount of work remaining to complete an item of work. It's owned by the project team and is updated on a daily basis.
ScrumMaster. The ScrumMaster is the unfortunate individual who has been charged with removing any impediments that the team may have.
Figure 1 Scrum and extreme programming.
These are the XP engineering practices that were used for Project X:
Simple system design. An emphasis was placed on designing only what was needed to support the functionality being implemented.
Test-first coding. Unit tests were written prior to the construction of code. This practice forces developers to understand the interface and expected functionality of a class. The tests accumulate over the duration of a project, providing a library of regressions tests.
Continuous integration. The Open Source product Cruise Control was installed and configured to run every five minutes. This process would automatically check out all code from the repository, build the code, and run the library of tests. By continuously building and testing the code, the project team could ensure that the base software was stable and of a high quality.
Refactoring. Refactoring allows for the incremental improvement of the design and class structure to support new functionality.
Pair programming. The project team took pair programming to the extreme, doing all work in small groups of either two or three. This included activities such as analyzing data and creating the data model, in addition to programming.