Functional Angels and Quality Devils: Incorporating Quality Scenarios into Functional Scenarios for Software-intensive System Architecture
International Journal of Computer & Software Engineering
comfort, aerodynamic design and more. These are selected according to the quality attributes expected from the car, such as performance, safety, usability, availability, cost of operation, etc. Considering quality attributes during the architectural design process and incorporating them into the architecture can improve significantly the quality of the constructed architecture and to increase stakeholders' satisfaction. In this paper, we introduce a two-phase systematic approach to
... ach to software-intensive architecture design, which incorporates both functional requirements and quality attributes (i.e. non-functional requirements) into a functional architecture which satisfies both. In the first stage we show how to systematically derive all the views of an initial functional architecture from the defined functional scenarios. In the second phase we revisit the functional scenarios, but now as "Devil's Advocates" 1 , investigating cases where the functional scenario may fail according to an undesired event. These events are directly related to the violation of quality attributes, such as performance, availability, security, safety, etc. Abstract Software architecture design is intended to propose a software-intensive architectural solution for a required system. As such, the architecture needs to address all the required functionality while satisfying all the required quality attributes, which are usually referred to as the non-functional requirements. Therefore, a major concern of the software architecture is its behavior, besides its structure. Softwareintensive system specifications tend to be functional in nature, focusing on its behavior, i.e. what is expected to be done by the system, whereas quality attributes, which usually describe other properties of the system (e.g. performance, availability, safety, etc.) are, in many cases, described in general terms, and sometimes even being overlooked. The immediate result is that the software architecture, both behavioral and structural, fails to address quality issues -whose absence is discovered only in late stages of system verification, validation or operation. This paper introduces a two-phase process by which a software-intensive architecture is constructed, satisfying both functional and non-functional requirements. In the first phase an initial architecture is constructed, comprising its physical, functional, combined and behavioral views. In the second phase a systematic approach is introduced to discover overlooked quality attributes of a system which might be violated during its operational (functional) scenarios. In this approach, quality attributes play the role of "devil's advocates", challenging the functionality by suggesting what can go wrong while the system performs its functional scenarios. Such challenges yield two results: (1) new "quality scenarios", which describe how the system should behave in order to prohibit a fault from causing a failure, and (2) modifications to the entire architecture needed to support the newly-derived functionality.