Main Article Content
The benefits offered by software architectures include providing an improved understanding of high-level relationships amongst systems components and facilitating in making principled decisions between alternatives. A vast majority of architectural decisions are focused on realising functional requirements and often ignore the nonfunctional requirements (quality attributes) altogether or include them as an afterthought. This has a negative impact on the overall acceptance of the software system by its intended users. Moreover, these architectures are specified using diagrammatic notations such as boxes and lines as connectors between them. As a result, such semiformal representations lack precision in their definitions and may lead to misinterpretations of the architecture resulting in errors being introduced at later stages of development. Although several Architectural Description Languages (ADLs) exist for the formalisation of systems architectures, few are designed for formalising nonfunctional requirements. Since ADLs concentrate on component-level representations and not on the system as a whole, their support of non-functional requirements is limited. Additionally, as each ADL normally supports one quality attribute, multiple ADLs are required to cater for various quality attributes. This articles aims to address the challenges of inadequacies of specifying quality attributes in software systems in a manner that is both formal and applicable to a wider range of quality attributes. To achieve this goal, this paper present a process model that assists in formalising the non-functional requirements of a service-based software system and eliminates the need for multiple ADLs. It demonstrates the practicability of the proposed model by applying it to one quality attribute, namely “availability”, using the general purpose Z specification language.