10.5 Future Research
This chapter raises more questions than the one it set out to explore, namely, "What is the relationship between heuristics and patterns?" I have shown that heuristics can be viewed as a motivation for transforming one design pattern into another, where the latter is an improvement over the former. I have also shown that these design transformation patterns possess interesting properties of transitivity and reflexivity. However, many interesting questions remain to be answered, and some interesting projects need to be carried out. These projects/questions include the following:
Over 60 design heuristics are available. All of their design transformation patterns need to be found, documented, and cataloged. Given that some heuristics could motivate more than one design transformation pattern, there are probably many of these design patterns.
Is there a good category science for these patterns? It may be possible to break them up based on the relationship (e.g., inheritance, containment) or the area of the object-oriented paradigm (e.g., analysis, domain analysis, physical design) with which they deal. Within these categories, they could be topologically sorted based on their property of transitivity. I have used the category notion for illustrating design heuristics, so it makes sense that this would apply to design transformation patterns as well.
Are there any other interesting relationships between, or properties of, design transformation patterns?
When a new-use case (i.e., scenario, requirement, business rule) is added to an existing object-oriented design, we know that it impacts the design. Are there patterns that capture this impact, and if so, what are the inputs/outputs of these patterns? I suspect they exist since, in many cases, designers get a "feel" for how much impact a given use case will have, which use case is going to be the most difficult to integrate, etc.
Karl Lieberherr  and the Demeter team at Northeastern University have done much research in mapping grammars into object-oriented designs. Are there interesting patterns in grammars, and if so, how do they relate to design transformation patterns? I suspect that there is much interesting work to be done in this area. One part of the Demeter team's research included reducing grammars into various minimalistic grammars in order to find a prototyping growth plan for an object-oriented design. As a grammar was allowed to become more complex, the object-oriented design also grew linearly more complex. Their latest work is in the area of adaptive software models, which is clearly related to design patterns.
Once a large number of design transformation patterns have been found, is it possible to automate the design optimization process? That is, can we develop a tool that would guide the user from a bad design to a better one? Such a tool would almost certainly require a scaling of properties of the design (e.g., flexibility, portability, efficiency, software/hardware constraints, importance of class minimization).