Research on software architectures has been active since the early nineties, leading
to a number of different architecture description languages (ADL). Given their importance
in facilitating the communication of crucial system properties to different
stakeholders and their analysis early on in the development of a system this is understandable.
However, practitioners rarely use ADLs, and, instead, they insist on
using the Unified Modelling Language (UML) for specifying software architectures.
I attribute this to three main issues that have not been addressed altogether by the
existing ADLs. Firstly, in their attempt to support formal analysis, current ADLs
employ formal notations (i.e., mostly process algebras) that are rarely used among
practitioners. Secondly, many ADLs focus on components in specifying software architectures,
neglecting the first-class specification of complex interaction protocols as
connectors. They view connectors as simple interaction links that merely identify
the communicating components and their basic communication style (e.g., procedure
call). So, complex interaction protocols are specified as part of components, which
however reduce the re-usability of both. Lastly, there are also some ADLs that do
support complex connectors. However, these include a centralised glue element in
their connector structure that imposes a global ordering of actions on the interacting
components. Such global constraints are not always realisable in a decentralised
manner by the components that participate in these protocols.
In this PhD thesis, I introduce a new architecture description language called XCD
that supports the formal specification of software architectures without employing a
complex formal notation and offers first-class connectors for maximising the re-use of
components and protocols. Furthermore, by omitting any units for specifying global
constraints (i.e., glue), the architecture specifications in XCD are guaranteed to be
realisable in a decentralised manner.
I show in the thesis how XCD extends Design-by-Contract (DbC) for specifying (i)
protocol-independent components and (ii) complex connectors, which can impose only
local constraints to guarantee their realisability. Use of DbC will hopefully make it
easier for practitioners to use the language, compared to languages using process algebras.
I also show the precise translation of XCD into SPIN's formal ProMeLa language
for formally verifying software architectures that (i) services offered by components
are always used correctly, (ii) the component behaviours are always complete, (iii)
there are no race-conditions, (iv) there is no deadlock, and (v) for components having
event communications, there is no overflow of event buffers. Finally, I evaluate XCD
via five well-known case studies and illustrate XCD's enhanced modularity, expressive
DbC-based notation, and guaranteed realisability for architecture specifications. |