Sofware Architecture (SA) has emerged as an autonomous discipline, with growing interest by industry and academia, to provide a unifying infrastructural model on which to describe, analyse, and validate the overall structure of large and complex systems in various phases of the software life cycle. Although there has been comparatively little formal work in SA, it has focussed on single and well-limited aspects, e.g., the description of the components' behaviour. Therefore there is not yet a single, coherent, formal framework encompassing different concepts put forward by SA.
This project will integrate and extend previous work developed by the team during the past five years to build a unified framework based on categorical, logical, and rewriting techniques that addresses three important aspects for the development of reactive, open and evolvable software systems.
The first aspect are connectors, which coordinate interactions between the computational entities, the components. This separation facilitates the design and implementation of the system. The project will investigate which changes to CommUnity --- a Unity-like parallel program design language developed by the team to specify components and connectors --- are needed in order to formally define a catalog of commonly used connectors (e.g., remote procedure call). The team will also provide a connector calculus to systematically construct new connectors from existing ones, and use it to investigate how certain non-functional properties (like security and throughput) might be easily achieved by "superposing" special connectors on the functional connectors that establish the communications among components.
The second research direction is architectural views, which allow to describe the different aspects (e.g., behaviour, security) of a single system. This separation of concerns makes it easier for humans to cope with complexity. It also facilitates the description of the system because each view may use the most appropriate notation for the aspect at hand. The major issue is to ensure that the views are mutually consistent. The team will draw on the mathematical tools provided by Category Theory to relate different formalisms in order to develop an abstract framework to specify, integrate, and validate architectural views.
The third aspect is reconfiguration, a process in which components and connectors are added or deleted. This allows one to adapt architectures to new requirements and to describe transient interactions due to component mobility. The team will continue its work on the specification of reconfiguration and on logical approaches to describe the properties of such changes, in order to check whether the new architecture has the intended characteristics.
Finally, the research results will be implemented into a publicly available architectural design environment, CommUnity Workbench.