An example proof of correctness for a collaboration-based design

Object-oriented designs often achieve flexible composition, efficiency, and extensibility by separating concerns into roles, implemented as objects which collaborate to solve a problem or compute a function. Unfortunately, rigorous theories and proof techniques for collaboration-based designs are not as mature as those for their functional counterparts. Moreover, experience shows that it can be difficult to “wrap your mind” around sophisticated collaborations to understand if and how they work. The key result of this paper is an example proof of corrrectness of a design abstraction, called an inference graph, that is used by the Amalia software-analyzer generator. An inference graph is a complex network of objects that collaborate to compute an analysis. The proof is novel because it is structured to conform to the collaborative nature of inference graphs.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Zohar Manna,et al.  The Temporal Logic of Reactive and Concurrent Systems , 1991, Springer New York.

[3]  Kathi Fisler,et al.  Verifying Component-Based Collaboration Designs , 2001 .

[4]  Yannis Smaragdakis,et al.  Implementing Layered Designs with Mixin Layers , 1998, ECOOP.

[5]  James M. Boyle,et al.  Do You Trust Your Compiler? , 1999, Computer.

[6]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[7]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[8]  Christoph Kreitz,et al.  Building reliable, high-performance communication systems from components , 2000, OPSR.

[9]  Charles N. Fischer,et al.  SPARE: A Development Environment For Program Analysis Algorithms , 1992, IEEE Trans. Software Eng..

[10]  R. E. Kurt Stirewalt,et al.  Lightweight analysis of operational specifications using inference graphs , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[11]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[12]  Patrick Borras,et al.  Centaur: the system , 1988, Software Development Environments.

[13]  Tommaso Bolognesi,et al.  Tableau methods to describe strong bisimilarity on LOTOS processes involving pure interleaving and enabling , 1994, FORTE.

[14]  Rance Cleaveland,et al.  Generic tools for verifying concurrent systems , 2002, Sci. Comput. Program..

[15]  R. E. Kurt Stirewalt,et al.  A component-based approach to building formal analysis tools , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[16]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.