Interface specification methods for software components

This report presents an interface specification language developed as a part of the LIME-project (LightweIght formal Methods for distributed component-based Embedded systems) and a tool implementation to support it. The intention is to provide a methodology that is lightweight and complementary to the existing means of quality assurance in a software process. The specification language provides a mechanism for specifying both external usage of a software component, as well as the internal behavior of a one. The former is referred to as interface specification, and the latter to as library specification. Should the interface specification be breached between two interacting components, the calling component is incorrect. Likewise, if the called component does not obey library specification, it will be the one to take the blame. Both types of specification can be written using either propositional linear temporal logic (PLTL) or by regular expressions, and may contain claims about the component’s state or the currently executing method. Java has been used as the implementation language on the approach because of the preexisting metadata mechanism (Java annotations) and good tool support. The tool implementation relies on aspect-oriented programming developed by Gregor Kiczales and his team at Xerox PARC in the late 90s. It employs annotation-guided generation of temporal safety aspects to synthesize the defined properties as behavioral invariants to the runtime execution of the program. The aspects simulate finite state automata which keep track of the state of the interaction and signal an exception in case of an error in it is observed.

[1]  Sriram K. Rajamani,et al.  Thorough static analysis of device drivers , 2006, EuroSys.

[2]  Amir Pnueli,et al.  Temporal Logic for Scenario-Based Specifications , 2005, TACAS.

[3]  George S. Avrunin,et al.  Patterns in property specifications for finite-state verification , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[4]  A. Hyvärinen Hyvärinen Approaches to Grid-Based SAT Solving , 2009 .

[5]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[6]  Jorma Laaksonen,et al.  Tkk Reports in Information and Computer Science Techniques for Image Classification, Object Detection and Object Segmentation Tkk Reports in Information and Computer Science Techniques for Image Classification, Object Detection and Object Segmentation , 2022 .

[7]  Andrew W. Appel,et al.  Modern Compiler Implementation in Java, 2nd edition , 2002 .

[8]  Grigore Rosu,et al.  Synthesizing Monitors for Safety Properties , 2002, TACAS.

[9]  Kari Kähkönen Automated test generation for software components , 2009 .

[10]  Sami Hanhijärvi Multiple Hypothesis Testing in Pattern Discovery , 2011, Discovery Science.

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

[12]  Thomas A. Henzinger,et al.  INTERFACE-BASED DESIGN , 2005 .

[13]  Grigore Rosu,et al.  An Overview of the Runtime Verification Tool Java PathExplorer , 2004, Formal Methods Syst. Des..

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

[15]  David Harel,et al.  From multi-modal scenarios to code: compiling LSCs into aspectJ , 2006, SIGSOFT '06/FSE-14.

[16]  Volker Stolz,et al.  Temporal Assertions using AspectJ , 2006, Electron. Notes Theor. Comput. Sci..

[17]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[18]  Orna Kupferman,et al.  An Improved Algorithm for the Membership Problem for Extended Regular Expressions , 2002, MFCS.

[19]  Tommi Mikkonen,et al.  Run-time monitoring of architecturally significant behaviors using behavioral profiles and aspects , 2006, ISSTA '06.

[20]  Viktor Schuppan,et al.  Linear Encodings of Bounded LTL Model Checking , 2006, Log. Methods Comput. Sci..

[21]  Timo Latvala,et al.  Efficient Model Checking of Safety Properties , 2003, SPIN.

[22]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[23]  Jussi Lahtinen Model checking timed safety instrumented systems , 2008 .

[24]  Grigore Rosu An Effective Algorithm for the Membership Problem for Extended Regular Expressions , 2007, FoSSaCS.

[25]  Marco Roveri,et al.  Formal analysis of hardware requirements , 2006, 2006 43rd ACM/IEEE Design Automation Conference.

[26]  Ramnivas Laddad,et al.  Aspectj in Action: Practical Aspect-Oriented Programming , 2003 .

[27]  Grigore Rosu,et al.  Efficient monitoring of safety properties , 2004, International Journal on Software Tools for Technology Transfer.

[28]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[29]  Antti Huima,et al.  Implementing Conformiq Qtronic , 2007, TestCom/FATES.

[30]  Ilkka Niemelä,et al.  The LIME Interface Specification Language and Runtime Monitoring Tool , 2009, RV.

[31]  Grigore Rosu,et al.  Towards Monitoring-Oriented Programming: A Paradigm Combining Specification and Implementation , 2003, RV@CAV.

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

[33]  Roland Kindermann Testing a Java Card applet using the LIME Interface Test Bench : a case study , 2009 .

[34]  Z. Manna,et al.  Tools and rules for the practicing verifier , 1990 .

[35]  Michael D. Ernst,et al.  An overview of JML tools and applications , 2003, International Journal on Software Tools for Technology Transfer.

[36]  Timo Honkela,et al.  BIBLIOGRAPHY OF SELF-ORGANIZING MAP (SOM) PAPERS: 2002-2005 ADDENDUM , 2009 .

[37]  Marco Roveri,et al.  From PSL to NBA: a Modular Symbolic Encoding , 2006, 2006 Formal Methods in Computer Aided Design.

[38]  Christos H. Papadimitriou,et al.  Elements of the Theory of Computation , 1997, SIGA.

[39]  Samuel Kaski,et al.  Two-Way Grouping by One-Way Topic Models , 2009, IDA.

[40]  Orna Kupferman,et al.  Model Checking of Safety Properties , 1999, Formal Methods Syst. Des..

[41]  Renaud Pawlak,et al.  Spoon: Program Analysis and Transformation in Java , 2006 .

[42]  George S. Avrunin,et al.  Property specification patterns for finite-state verification , 1998, FMSP '98.

[43]  Leslie Lamport,et al.  "Sometime" is sometimes "not never": on the temporal logic of programs , 1980, POPL '80.

[44]  Ilkka Niemelä,et al.  Partitioning Search Spaces of a Randomized Search , 2009, AI*IA.

[45]  A. Prasad Sistla,et al.  Safety, liveness and fairness in temporal logic , 1994, Formal Aspects of Computing.

[46]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[47]  Joseph Sifakis,et al.  Model checking , 1996, Handbook of Automated Reasoning.

[48]  Tommi A. Junttila,et al.  Symbolic model checking of hierarchical UML state machines , 2008, 2008 8th International Conference on Application of Concurrency to System Design.