Problem: Maintaining customer satisfaction
Context:
A quality assurance function exists, and needs input to drive its work.
Forces:
Developers used to be called "loose cannons on deck."
Requirements changes occur even after design reviews are complete and coding as started.
Missing customer requirements is a serious problem.
Customers are traditionally not part of the mainstream development, which makes it difficult to discover and incorporate their insights.
Trust relationship between managers and coders.
Solution:
Resulting Context:
The new context supports requirements discovery from the customer, as required by the pattern Scenarios Define Problem, and the pattern Prototype. Other patterns like Firewalls and unspecified also build on this pattern.
Design Rationale:
QPW. Also, see [Floyd] and in particular the works of Reisin and Floyd therein.
Some processes and methods are founded on customer engagement, such as IBM's Joint Application Development. Other methods are conducive to customer engagement, such as Beck's CRC design technique. Other methods, particularly many CASE-based methods, are indifferent or harmful to customer engagement.
The pattern is "Engage Customers", in the plural, to support a domain view and to avoid being blind-sided by a single customer.
The project must be careful to temper interactions between Customer and Developer, using the patterns mentioned in the Resulting Context.
Note that "maintaining product quality" is not the problem being solved here. Product quality is only one compo- nent of customer satisfaction. Studies have shown that customers leave one company for another when they feel they are being ignored (20% of the time), or because the attention they receive was rude or unhelpful (50% of the time). For customers having problems that cost over $100 to fix, and the company does not fix it, only 9% would buy again. 82% would do business with the company again if the problem was quickly resolved after they complained. (The source for the former pair is The Forum Corporation; for the latter pair, Traveler's Insurance Company [Zuckerman].)
Maranzano notes that this pattern probably should come earlier in the language. However, it is important that the project roles be defined first--particularly those that interact with the customer, and those that are driven by customer input (such as QA). Said in another way, the organization exists to serve the customer, so the organization should be in place before the customer is fully engaged.
Next: Group Validation