Software architecture in practice : Utilizing architecture analysis to aid software design decision-making - Lampikari, Joel (fi=Turun yliopisto|en=University of Turku|, 2018)
Software has an ever-growing place in our daily lives through the mobile, web, desktop and other applications we use and rely on day to day. With this abundance of software systems surrounding us, it is easy to take their underlying complexities for granted. The need for ever more sophisticated and interconnected software systems highlights the importance of good software design – systems like these cannot just be hacked together. Good software design starts at the architectural level and builds up from there. This thesis attempts to answer whether software architecture analysis methods could be used as feasible tools to aid software design decision-making in today’s software development culture. It is done through applying an analysis method in a practical case study, conducted in a real-world business case. To understand software architecture analysis, one has to first know what software architecture itself means. This thesis presents the basic principles of software architecture along with commonly used good practices, such as architectural patterns and ways to make architectural design decisions. With this knowledge, the most popular scenario-based software architecture analysis methods are presented in detail. Out of the presented analysis methods, Architecture Tradeoff Analysis Method (ATAM) is chosen for the case study. The method is slightly modified, however, to better fit the case company’s needs and resources. These modifications are documented in detail and the modified version is presented as “ATAM configured for practical use”. In the case study, the modified version of ATAM is successfully applied to rationalize a topical design choice within the architecture of the case company’s product family. As a result of the study, a design choice is made and prototyping work towards it is green-lighted. It is concluded, that the study is not comprehensive enough to give universally applicable results on software architecture analysis feasibility as a software design tool, but that in similar circumstances, a similarly applied method is viable and indeed useful.