miliar to practitioners. This should help facilitate its
adoption as it does not require a steep learning curve
– one should be able to use it with minimal train-
ing. At the same time, it introduces connector con-
structs that are essentially (decentralized) algorithms
(as protocols are). So practitioners who have expe-
rienced the distinction between say C++ classes and
C++ generic algorithms should feel comfortable with
the distinction between components and connectors
as made here. Apart from π calculus’ ability to send
channels as messages, which we do not support, our
ADL should allow architects to express what they can
express now with ADLs based on process algebras.
All constraints in our ADL are local, expressed
on local component/role data and parameters. This
ensures realizability and makes reasoning about the
effects of actions easier. Data are encapsulated, so
there are no aliasing problems, and concurrency is
controlled through the ports – each port is a concur-
rent unit, thus ensuring that actions of a port are mu-
tually exclusive. As event emission/consumption and
method servicing (at provided ports) are atomic, ar-
chitects need only guarantee (and verify) that method
calling (at required ports) will not lead to data race
conditions.
The type of constraints an architect uses depends
on the tool support they have. If for example they ex-
press something like 0 ≤ x +y +z ≤ 25 then their tool
would probably need to use an SMT solver or theo-
rem prover and be helped by the architect whenever
it cannot prove or disprove a claim. However, we be-
lieve that in practice one can constrain the type of ex-
pressions used, so as to enable automated verification
through a model-checker, without losing much. The
aforementioned constraint can easily be expressed as
x ∈ [0, 25] ∧ y ∈ [0,25 − x] ∧ z ∈ [0,25 − x − y], which
makes it easy for a model-checker to establish, as it
introduces an order for selecting values for variables.
By constraining the form of expressions we enable
better tool support for practitioners and make it pos-
sible for these tools to be fully automated
3
.
5 CONCLUSIONS
This paper presents a new ADL that aims at resolving
three main problems in current ADLs: (i) advanced
formal notations used for specifying behaviours, (ii)
lack of support for complex connectors, and (iii) po-
tentially unrealizable designs.
In response to these problems, our ADL follows
a Design-by-Contract approach for specifying be-
3
Less is more.
haviour, using a JML-like syntax as much as pos-
sible. Thus, practitioners should be able to use it
with minimal training and find it not much differ-
ent to other languages that they might have used,
such as JML. Furthermore, architectural connectors
in our ADL can be used to specify either simple inter-
connection mechanisms or complex interaction pro-
tocols. So, large and complex systems can be spec-
ified at a high level as components interacting via
complex interaction protocols, like someone may use
C++ classes and C++ generic algorithms to structure
a system so as to avoid re-coding generic algorithm
fragments inside the classes. Finally, connectors are
specified as a set of decentralized, independent roles
assumed by the participating components. There is
no glue-like centralized element in connector speci-
fications or elsewhere – all constraints are expressed
on local state. This leads to architectural designs that
are realizable by construction and whose verification
is decidable (when restricted to a finite number of el-
ements) through model-checking.
ACKNOWLEDGEMENTS
This work has been partially supported by the EU
project FP7-257367 IoT@Work – “Internet of Things
at Work”.
REFERENCES
Allen, R. and Garlan, D. (1997). A formal basis for architec-
tural connection. ACM Trans. Softw. Eng. Methodol.,
6(3):213–249.
Alur, R., Etessami, K., and Yannakakis, M. (2003). Infer-
ence of message sequence charts. IEEE Trans. Soft-
ware Eng., 29(7):623–633.
Alur, R., Etessami, K., and Yannakakis, M. (2005). Realiz-
ability and verification of msc graphs. Theor. Comput.
Sci., 331(1):97–114.
Bergstra, J. A., Ponse, A., and Smolka, S. A., editors
(2001). Handbook of Process Algebra. Elsevier.
Bjørner, D. and Jones, C. B., editors (1978). The Vienna De-
velopment Method: The Meta-Language, volume 61
of Lecture Notes in Computer Science. Springer.
Canal, C., Pimentel, E., and Troya, J. M. (1999). Specifica-
tion and refinement of dynamic software architectures.
In Donohoe, P., editor, WICSA, volume 140 of IFIP
Conference Proceedings, pages 107–126. Kluwer.
Chalin, P., Kiniry, J. R., Leavens, G. T., and Poll, E. (2006).
Beyond assertions: Advanced specification and ver-
ification with JML and ESC/Java2. In FMCO’05 –
Formal Methods for Comp. and Obj., volume 4111 of
LNCS, pages 342–363. Springer.
TowardsaDesign-by-contractbasedApproachforRealizableConnector-centricSoftwareArchitectures
561