|Authors||D. Falessi, G. Cantone, R. Kazman and P. Kruchten|
|Title||Decision-Making Techniques for Software Architecture Design: a Comparative Survey|
|Afilliation||Software Engineering, Software Engineering|
|Publication Type||Journal Article|
|Year of Publication||2011|
|Journal||ACM Computing Surveys|
The architecture of a software intensive system can be defined as the set of relevant design decisions that affect the qualities of the overall system functionality; therefore, architectural decisions are eventually crucial to the success of a software project. The software engineering literature describes several techniques to choose among architectural alternatives, but it gives no clear guidance on which technique is more suitable than another, and in which circumstances. As such, there is no systematic way for software engineers to choose among decision-making techniques for resolving tradeoffs in architecture design. In this paper, we provide a comparison of existing decision-making techniques, aimed to guide architects in their selection. Results show that there is no “best” decision-making technique; however, some techniques are more susceptible to specific difficulties. Hence, architects should choose a decision-making technique based on the difficulties that they wish to avoid. This paper represents a first attempt to reason on meta-decision-making, i.e., the issue of deciding how to decide.