- Uncovering Software Development Problems
- Controlling Risk with XP
- Improving Quality with XP
- Managing Change with XP
- Summary
- Q&A
- Workshop
Improving Quality with XP
XP is very strong at producing high-quality software. What is quality? Quality is ultimately subjective and depends on the situation. A high-quality medical software product has a completely different set of expectations and requirements from, say, a consumer-marketed software game. To define what quality is we need to think of it from each stakeholder's point of view. Table 3.3 lists the common stakeholders with a software product and their definition of quality.
Table 3.3 Stakeholder Definitions of Quality
Stakeholder |
Definition of Quality |
User |
The person who directly interacts with the software product. As the end user of the product he has concerns about functionality, robustness, performance, usability, and reliability. They need their application to ease their workload and can be trusted to operate consistently. |
Customer |
The person or department that purchases the software (these are often NOT users). They might be the project owners and define the functional requirements of the system. They are not concerned about usability and to a lesser extent, performance. Customers consider costs, supportability, availability, and manageability. |
Investor |
Investors in a product development scenario and those stakeholders that fund the complete product cycle. They are concerned about service costs (the overheads required to support the product) and intellectual property. They expected that the software might be reusable or perhaps form the start of a new product line. Their vision is more long term than other stakeholders. |
Developer |
Developer includes all those people actively involved in the core software development of the product. They are concerned with defect rates, conformance to internal standards, performance, and technical quality. |
Quality, then, is in the eye of the beholder and means different things to each stakeholder. There are, however, some key attributes that we can use to explain quality. Table 3.4 lists some of these quality attributes and details about how XP enables quality.
Table 3.4 Attributes of Quality Showing How XP Enables Quality
Attribute |
Description |
XP Practice(s) |
Usability |
The ease of use of the system from the end user's point of view |
On-site customer |
Scalability |
The capability of the software to handle increasing capacity (users, amount of data, and so on) |
Testing Continuous Integration |
Availability |
The percentage of time the system is available for use by the users |
Simple Design Refactoring Testing |
Maintainability |
The measure of how economic the costs of repairing defects is |
Testing Collective Ownership Code Standards Pair Programming |
Supportability |
How easy the system is to upgrade or patch while running |
Simple Design Testing Continuous Integration |
Functionality |
How close the system's features meet the customer's requirements |
On-site customer stories Metaphor |
Extendibility |
The ease at which new features can be added to the system |
Simple Design Small Releases Continuous Integration |
Mean Time Between Failure (MTBF) |
A measure of system reliability the average time between failures |
Testing Collective Ownership Code Standards Pair Programming |
Users of XP achieve quality software products (covering all the aspects of quality) with the combination of its 12 practices.