In this paper, we presented a formal model for capturing and reusing architectural
decision knowledge. Our approach extends existing proposals for retrospective
architectural decision capturing with a formal definition of architectural decision
models and modeling concepts for collaboration and reuse, e.g., levels, dependency
relations, integrity constraints, and production rules. We used this model to capture
389 SOA issues. Decision types such as executive decisions, pattern selection and
33
adoption decisions, technology selection and profiling decisions, asset selection and
configuration decisions appear in this model. Selected decisions from this SOA
decision model served us as examples.
The decision types introduced in Section 3, the relations defined in Section 4 and
the dependency patterns from Section 5 serve several purposes: First, they can help
knowledge engineers and software architects to detect design flaws (in reusable
assets, on individual development and integration projects). Furthermore, they have
educational character for consumers of architectural knowledge. Decision
identification, making, and enforcement tools can be built that guide decision makers
through their activities and verify integrity constraints along the way. Pruning can be
used to cut off alternatives and entire sub trees when a decision is made. This
simplifies the rather complex task of managing a complex decision model.
Future work concerns formalizing additional characteristics of tree-based
architectural decision models and the relationship between decision models and other
model types used to document the various views on software architecture such as
Kruchten’s 4+1 views [10]. The design fragments from Jansen and Bosch and the
SPEM integration from de Boer et al. can be leveraged to do so. Additional
constraints on various relations can be expressed. Finally, integrating SOAD with
natural controlled language such as Attempto Controlled English (ACE) [7] is another
promising area of future research: If SOAD decision drivers and related best practices
recommendations are articulated in a natural controlled language such as ACE, a
reasoning engine can analyze them and suggest certain alternatives to the architect.
We envision several advanced usage scenarios for the concepts presented in this
paper. Project managers can use decision models for planning purposes. Work
breakdown structures and effort estimation reports can be created, as open decisions
correspond to required activities. Health checking is another application area: If there
are many, frequent changes, or many questions are still unresolved in late project
phases, the project is likely to be troubled. Product selection decisions define which
software licenses are required, and on which hardware nodes the required software
has to be installed. Moreover, the outcome of product-specific asset configuration
decisions can serve as input to software configuration management. The model can
also serve enterprise architects; they can maintain a company-specific instance of the
decision model, consisting of a subset of issues and alternatives. Such an approach
authorizes solution architects on projects to make decisions (“freedom of choice”)
without sacrificing architectural integrity (“freedom from choice”). Finally, the
reusable decision model for SOA can be used as a supplemental design method for
SOA construction which complements and details existing service modeling methods.