An Exploratory Study of Evaluation and Documentation of Software Architectures in Software Companies
Software Architecture. Architectural evaluation. Performance. Architectural documentation. Non-Functional Requirements
Usually, the software architect responsible for the software architecture definition and evaluation cannot rank which non-functional requirements must be prioritized during the development of their systems. Because of that, failures may happen during the system execution requiring more time and resources to fix it. In many cases, due to the inexperience of architects or the need for rapid deployment of a system, the non-functional requirements are not considered in the software architecture definition phase and the its documentation is absent or incomplete, making the software architecture difficult to be accessed and understood by others team members and also more difficult the maintenance of its components/modules and relationships. This work raises with public and private software companies which are their main strategies used to define software architecture in terms of its documentation and to ensure it is suitable for non-functional requirements of interest. Our study had the participation of 17 software architects to answer the survey. With the completion of the survey we identified that the non-functional requirements for performance and reliability are the most important to be addressed by the architecture and even with the existence of some approaches to evaluation architectures, they do not seem to be well disseminated and / or used among architects. Besides that, we propose a guide to help software architects in the task of achieving such non-functional requirements during the evolution of software systems. The proposed guide prioritizes the non-functional requirement of performance.