Abstract

Architecture based refinement is an important technique for ensuring efficiency, effectiveness and correctness in the practical design of complex computer based systems. With a few exceptions, current methods of architectural refinement focus on functional behaviour and fail to address nonfunctional requirements throughout the refinement process. A best practices approach to refinement would address both functional and nonfunctional requirements such that the refinement of an abstract into a concrete (implementation) architecture ensures that both sets of requirements are met. We propose a method that focuses on the nonfunctional requirements while still addressing the functional requirements throughout refinement. The method has a formal underpinning in abstract data types (based on term rewriting) which are used to represent the architectures throughout the refinement process and to place pre and post conditions on the refinements. In addition to this, the method uses nonfunctional requirement calculators to check the nonfunctional qualities of the architecture as refinement proceeds. Reflection on the practice of the method suggests that it may be possible to extend the architectural style idea to provide reusable refinement schema for the design of certain nonfunctional qualities into architectural patterns. The example considers reliability and performance in the refinement of a client server architectural pattern. The method does not aim to replace or fully automate the work of the designer. It aims to augment the design process and aid the designer in performing their tasks. It seeks to provide certain guidance for the designer that will help them make the right design decisions, and correct certain classes of errors.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call