Software architecture plays a vital role in the development of products since it enables ex-ante analysis and tackles fundamentals early. In fact, starting the development of a software product with a no-architectural approach makes future changes extremely hard and expensive, as it is difficult to guarantee the completeness of the solutions with respect to quality attributes required by design (for example, privacy, availability, modifiability, and so on). The information technology (IT) software architect is not an artist, but he is constantly following design patterns and models in a disciplined way. But what makes a “good” architecture, with respect to given quality requirements? Scientific literature addresses several evaluation methods, but it lacks controlled experiments showing the current scenario of models and patterns used by the software architecture community.
The authors perform an empirical experiment evaluating their own proposed evaluation method, quality-driven architecture derivation and improvement (QuaDAI), and the architecture tradeoff analysis method (ATAM). This latter method is used to “elicit and refine the architecture’s [main] quality goals” by performing scenario-based workshops with architects and stakeholders on well-documented architectures. On the other hand, QuaDAI is based on “a set of activities conducted by transformations [over the architectural model] to allow the automatic derivation, evaluation, and improvement of a product architecture.”
Four groups of participants attended the study (92 in total), including both undergraduate to master’s students at the University of Valencia (Spain) and the University of Basilicata (Italy). The students were trained before the experiment. The results of the hypotheses provide evidence that QuaDAI helps with higher quality architectures over ATAM; there is no evidence with regards to efficiency (whether QuaDAI is more efficient than ATAM); and partial evidence that architects may use QuaDAI more than ATAM in the future.
The paper tackles an important research area in analyzing and evaluating software architectures. In fact, the more complex the systems are, the more crucial the need for software architecture, even in agile settings.