A Language-based Approach to Specification and Enforcement of Architectural Protocols

Abstract : Software architecture research has proposed using protocols for specifying the interactions between components through ports. Enforcing these protocols in an implementation is difficult. This paper proposes an approach to statically reason about protocol conformance of an implementation. It leverages the architectural guarantees of the ArchJava programming language. The approach allows modular reasoning about implementations with callbacks, recursive calls, and multiple instances of component types. It uses a dataflow analysis to check method implementations and a summary-based interprocedural analysis to reason modularly about component composition. The approach is limited to static architectures but can handle multiple instances for component types and arbitrary nesting of components. We tested the implementation on a case study, and the results suggest that the approach can be scaled to large software applications.

[1]  Orna Grumberg,et al.  Model checking and modular verification , 1994, TOPL.

[2]  Thomas A. Henzinger,et al.  Lazy abstraction , 2002, POPL '02.

[3]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[4]  Ivar Jacobson,et al.  Unified Modeling Language Reference Manual, The (2nd Edition) , 2004 .

[5]  Dimitra Giannakopoulou,et al.  Behaviour Analysis of Software Architectures , 1999, WICSA.

[6]  Corina S. Pasareanu,et al.  Learning Assumptions for Compositional Verification , 2003, TACAS.

[7]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[8]  Eran Yahav,et al.  Effective typestate verification in the presence of aliasing , 2006, TSEM.

[9]  Sriram K. Rajamani,et al.  Automatically validating temporal safety properties of interfaces , 2001, SPIN '01.

[10]  Robert DeLine,et al.  Enforcing high-level protocols in low-level software , 2001, PLDI '01.

[11]  Frank Pfenning,et al.  Tridirectional typechecking , 2004, POPL.

[12]  Jonathan Aldrich,et al.  Lightweight object specification with typestates , 2005, ESEC/FSE-13.

[13]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

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

[15]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[16]  Martin Gogolla Unified Modeling Language , 2009, Encyclopedia of Database Systems.

[17]  Howard Barringer,et al.  Assumption generation for software component verification , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[18]  Alexander Aiken,et al.  Flow-sensitive type qualifiers , 2002, PLDI '02.

[19]  Ivar Jacobson,et al.  Unified Modeling Language , 2020, Definitions.

[20]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[21]  K. Rustan M. Leino,et al.  Verification of Object-Oriented Programs with Invariants , 2003, J. Object Technol..

[22]  Robert DeLine,et al.  Typestates for Objects , 2004, ECOOP.

[23]  Sorin Lerner,et al.  ESP: path-sensitive program verification in polynomial time , 2002, PLDI '02.

[24]  Thomas A. Henzinger,et al.  Interface automata , 2001, ESEC/FSE-9.

[25]  Viktor Kuncak,et al.  Generalized Typestate Checking for Data Structure Consistency , 2005, VMCAI.

[26]  Jonathan Aldrich,et al.  Modular typestate checking of aliased objects , 2007, OOPSLA.

[27]  Deepak Goyal,et al.  Deriving specialized program analyses for certifying component-client conformance , 2002, PLDI '02.

[28]  David C. Luckham,et al.  An Event-Based Architecture Definition Language , 1995, IEEE Trans. Software Eng..

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

[30]  Anna Philippou,et al.  Tools and Algorithms for the Construction and Analysis of Systems , 2018, Lecture Notes in Computer Science.

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

[32]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[33]  David Notkin,et al.  Architectural Reasoning in ArchJava , 2002, ECOOP.

[34]  Marwan Abi-Antoun,et al.  A Case Study in Incremental Architecture-Based Re-engineering of a Legacy Application , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[35]  Kathi Fisler,et al.  Modular verification of collaboration-based software designs , 2001, ESEC/FSE-9.

[36]  Marwan Abi-Antoun,et al.  A case study in re-engineering to enforce architectural control flow and data sharing , 2007, J. Syst. Softw..

[37]  David Garlan,et al.  Formal modeling and analysis of the HLA component integration standard , 1998, SIGSOFT '98/FSE-6.

[38]  Benjamin Livshits,et al.  DynaMine: finding common error patterns by mining software revision histories , 2005, ESEC/FSE-13.

[39]  Dawson R. Engler,et al.  A system and language for building system-specific, static analyses , 2002, PLDI '02.

[40]  Gerald Baumgartner,et al.  Compiler and tool support for debugging object protocols , 2000, SIGSOFT '00/FSE-8.

[41]  Alex Groce,et al.  Modular verification of software components in C , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[42]  Corina S. Pasareanu,et al.  Assume-guarantee verification of source code with design-level assumptions , 2004, Proceedings. 26th International Conference on Software Engineering.