Architecting Software Systems with Process Algebras

Correct software components can give rise to architectural mismatches when assembled together in order to form a complex software system. The causes of architectural mismatches leading to system blocks can be different: incompatibility between two components due to a single interaction, incompatibility between two components due to the combination of several interactions, or lack of interoperability among a set of components forming a cyclic topology. A formal description of the architecture of a complex software system helps to detect the presence of mismatches that can arise when assembling its software components together. In this paper we develop an architectural description language inspired by Wright that provides a uniform, process algebraic framework in which all the causes of architectural mismatch above can be dealt with by means of standard observational equivalences. We begin with the first two causes by introducing an architectural compatibility check based on observational equivalences, which ensures the absence of deadlock within a set of components interacting with a given component and guarantees the absence of deadlock for a whole architecture in case of acyclic topology. The adequacy of our architectural compatibility check is assessed on a compressing proxy system. We subsequently concentrate on the third cause by defining an architectural interoperability check based on observational equivalences, which guarantees the absence of deadlock within a set of interacting components forming a cyclic topology. The adequacy of our architectural interoperability check is assessed on a cruise control system. Our process algebra based architectural description language also addresses the problem of formalizing and analyzing architectural styles, as they convey codified principles and experience that help the construction of complex software systems with high levels of efficiency and confidence. As a step towards the formal representation of architectural styles while preserving the effectiveness of the architectural compatibility and interoperability checks in our framework, we introduce the intermediate abstraction of architectural type and we present an architectural conformity check based on observational equivalences, which efficiently verifies whether an architecture is an instance of an architectural type.

[1]  Paola Inverardi,et al.  Proving Deadlock Freedom in Component-Based Programming , 2001, FASE.

[2]  Gregory D. Abowd,et al.  Formalizing style to understand descriptions of software architecture , 1995, TSEM.

[3]  Marc Davio,et al.  Kronecker products and shuffle algebra , 1981, IEEE Transactions on Computers.

[4]  Henrik Reif Andersen,et al.  Partial model checking , 1995, Proceedings of Tenth Annual IEEE Symposium on Logic in Computer Science.

[5]  David Garlan,et al.  A case study in architectural modeling: the AEGIS system , 1996, Proceedings of the 8th International Workshop on Software Specification and Design.

[6]  Marco Bernardo,et al.  Architectural Types Revisited: Extensible And/Or Connections , 2002, FASE.

[7]  Jeff Magee,et al.  Exposing the Skeleton in the Coordination Closet , 1997, COORDINATION.

[8]  Paola Inverardi,et al.  Static checking of system behaviors using derived component assumptions , 2000, TSEM.

[9]  David Garlan,et al.  A formal basis for architectural connection , 1997, TSEM.

[10]  Paola Inverardi,et al.  Formal Specification and Analysis of Software Architectures Using the Chemical Abstract Machine Model , 1995, IEEE Trans. Software Eng..

[11]  James R. Cordy,et al.  A Syntactic Theory of Software Architecture , 1995, IEEE Trans. Software Eng..

[12]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[13]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975 .

[14]  Naranker Dulay,et al.  Specifying Distributed Software Architectures , 1995, ESEC.

[15]  Paolo Ciancarini,et al.  On the formalization of architectural types with process algebras , 2000, SIGSOFT '00/FSE-8.

[16]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[17]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[18]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[19]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[20]  Edmund M. Clarke,et al.  Compositional model checking , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[21]  Marco Bernardo,et al.  Exogenous and Endogenous Extensions of Architectural Types , 2002, COORDINATION.

[22]  Paolo Ciancarini,et al.  ÆMPA: a process algebraic description language for the performance analysis of software architectures , 2000, WOSP '00.

[23]  Xiaolei Qian,et al.  Correct Architecture Refinement , 1995, IEEE Trans. Software Eng..

[24]  Mary Shaw,et al.  Abstractions for Software Architecture and Tools to Support Them , 1995, IEEE Trans. Software Eng..

[25]  Stephen S. Lavenberg,et al.  Computer Performance Modeling Handbook , 1983, Int. CMG Conference.

[26]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[27]  Paolo Ciancarini,et al.  Detecting architectural mismatches in process algebraic descriptions of software systems , 2001, Proceedings Working IEEE/IFIP Conference on Software Architecture.