Performance concerns can also impact the backward compatibility of a modified system. To explore this issue, let's again consider a service returning customer data for a phone company.
Almost all large enterprises that have thousands or millions of customers categorize these customers into different groups. The best customers gain certain privileges: there might be special bonus programs to bind them to the company, or they might be routed to more experienced call center agents because their problems tend to be more complicated or they required better service. Historically, a typical categorization of customers was whether they were business clients or private customers. But this distinction didn't work well for the company in question, because some private customers generated high call volumes while some business clients generated very low volumes. In addition, it was not clear how to treat freelancers and self-employed customers.
For these reasons, the company started to introduce a more specific categorization based on the volume of calls generated by each customer. In accordance with this volume each customer was assigned a value between 1 and 10, which in a sense represented the customer's value to the company. The plan was to extend the usual services that returned customer data by a simple integer attribute so that external systems could process the new customer values.
All the analysts, designers, and solution managers expected that the ...