Page 199 -
P. 199
184 BARBER AND GRASER
appropriate technique for both reducing coupling under the “Reduce class coupling . . .” heuristic
and reducing message passing under the “Reduce I/O performance bottlenecks . . .” heuristic.
Strategies may be triggered based on the stage of the DRA during the derivation process. For
example, “Collect classes into subsystems” may be executed after DRACs have been defined and
functionality allocated. Strategies are also triggered by certain structural arrangements detected in
the DRA, based on the value of related metrics. For example, “Redistribute services . . .” under
the “Reduce class coupling . . .” heuristic could be triggered, in part, by an unsatisfactory value
for metric “Coupling Between Objects.”
To express the intentions for a particular architecture being derived, the architect selects and
prioritizes goals from the RARE KB prior to initiation of the derivation process (step 1 in the Plan-
Generation phase Figure 10.5). To enable customization, the architect is provided with a working
copy of the goals selected and may modify any portion of the associated heuristics, metrics, or
strategies. Modifications may include (step 2 in the Plan-Generation phase Figure 10.5):
• pruning heuristics,
• adjusting heuristic weights,
• pruning metrics,
• adjusting metric weights,
• adjusting acceptable ranges for metric values, and
• pruning strategies.
Managing Strategy Conflicts and Identifying Potential Strategy Problems
During Derivation
Given that there are often inherent conflicts leading to tradeoffs between high-level architectural
quality attributes, conflicts will naturally arise between suggested architectural transformations
during the derivation process. While it is not uncommon for multiple strategies to be suggested
during a particular stage of derivation (i.e., during a Derivation Plan Entry), a conflict arises when
the projected effects of different strategies will likely drive the derivation process into opposing
directions or stagnate the derivation progress altogether. For example, a strategy associated with
one goal may suggest combining services into a single class, while another strategy may become
active that suggests further dividing the existing classes into smaller classes.
During Plan-Generation, RARE detects conflicts based on explicit strategy-to-strategy conflict
declarations in strategy definitions. Regardless of the rationale for selecting a particular strategy
for a given heuristic, the strategy itself describes a deterministic transformation of the DRA’s
structure and content (e.g., combining classes, splitting classes, allocating functionality, allocat-
ing data); therefore, conflicts can be explicitly encoded at the strategy level because it is readily
apparent that two strategy transformations will likely interfere with each other (e.g., combining
DRACs vs. splitting DRACs). Nonetheless, due to the relationship between strategies and their
associated heuristics and goals, such strategy conflicts also suggest conflicts between respective
goals and heuristics. Correspondingly, RARE attempts to resolve these conflicts during “static
strategy evaluation” by suggesting to the architect that selected strategies be pruned based on their
associated goal priorities and heuristic weights.
After RARE generates a Derivation Plan based on the goal priorities and heuristic weights set
by the architect, it is highly likely that conflicts will exist between strategies based on the conflict
declarations in each strategy. RARE resolves strategy conflicts by suggesting that certain strategies
be pruned, retaining only strategies with higher priorities (i.e., where strategy priority is a function