Evolvable Behavior Specifications Using Context-Sensitive Wildcards

The development and maintenance of today's software systems is an increasingly effort-consuming and error-prone task. A major cause of the effort and errors is the lack of human-readable and formal documentation of software design. In practice, software design is often informally documented, or not documented at all. There fore, (a) the design cannot be properly communicated between software engineers, (b) it cannot be automatically analyzed for finding and removing faults, (c) the conformance of an implementation to the design cannot be automatically verified, and (d) source code maintenance tasks have to be manually performed, although some of these tasks can be automated using formal documentation. In this thesis, we address these problems for the design and documentation of the behavior implemented in procedural programs. We present the following solutions each addressing the respective problem stated above: (a) A graphical language called VisuaL, which enables engineers to specify constraints on the possible sequences of function calls from a given procedural program, (b) an algorithm called Check-Design, which automatically verifies the consistency between multiple specifications written in VisuaL, (c) an algorithm called CheckSource, which automatically verifies the consistency between a given implementation and a corresponding specification written in VisuaL, and (d) an algorithm called TransformSource, which uses VisuaL specifications for automatically inserting additional source code at well-defined locations in existing source code. Empirical evidence indicates that CheckSource is beneficial during some of the typical control-flow maintenance tasks: 60% effort reduction, and prevention of one error per 250 lines of source code. These results are statistically significant at the level 0,05. Moreover, the combination of CheckSource and TransformSource is beneficial during some of the typical control-flow maintenance tasks: 75% effort reduction, and prevention of one error per 140 lines of source code. These results are statistically significant at the level 0,01. The main contribution of this thesis is the graphical language VisuaL with its formal underpinning Deterministic Abstract Recognizers (DARs), which defines a new family of formal languages called Open Regular Languages (ORLs). The key feature of VisuaL is the context-sensitive wildcard, which makes VisuaL specifications more evolvable (i.e. less susceptible to changes), and more concise.

[1]  Claes Wohlin,et al.  Experimentation in Software Engineering , 2000, The Kluwer International Series in Software Engineering.

[2]  Daniel R. Tauritz,et al.  Adaptive Information Filtering: Concepts and Algorithms , 2002 .

[3]  B. Shneiderman,et al.  Flowchart techniques for structured programming , 1973, SIGP.

[4]  Corrado Böhm,et al.  Flow diagrams, turing machines and languages with only two formation rules , 1966, CACM.

[5]  Yuanyuan Song,et al.  Information hiding interfaces for aspect-oriented design , 2005, ESEC/FSE-13.

[6]  Bahareh Badban,et al.  Verification Techniques for Extensions of Equality Logic , 2006 .

[7]  P. M. Melliar-Smith,et al.  An interval logic for higher-level temporal reasoning , 1983, PODC '83.

[8]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[9]  M. B. van der Zwaag,et al.  Models and logics for process algebra , 2002 .

[10]  Oege de Moor,et al.  Adding open modules to AspectJ , 2006, AOSD.

[11]  Nikolay Kavaldjiev,et al.  A run-time reconfigurable Network-on-Chip for streaming DSP applications , 2006 .

[12]  David S. Rosenblum Specifying concurrent systems with TSL , 1991, IEEE Software.

[13]  David Harel,et al.  Complexity Results for Two-Way and Multi-Pebble Automata and their Logics , 1996, Theor. Comput. Sci..

[14]  Anton Wijs,et al.  What to do next? Analysing and optimising system behaviour in time , 2007 .

[15]  Ryszard Janicki,et al.  Foundations of the Trace Assertion Method of Module Interface Specification , 2001, IEEE Trans. Software Eng..

[16]  Bastiaan Stephan Graaf,et al.  Model-Driven Evolution of Software Architectures , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[17]  Thomas Wolle,et al.  Computational aspects of treewidth : Lower bounds and network reliability , 2005 .

[18]  M. T. de Berg,et al.  Multi-functional geometric data structures , 2003 .

[19]  Thierry Jéron,et al.  A tool for the automatic synthesis of conformance test cases for non-deterministic reactive systems , 2005 .

[20]  H. A. deJong Flexible Heterogeneous Software Systems , 2007 .

[21]  Gabriele Lenzini,et al.  Integration of Analysis Techniques in Security and Fault-Tolerance , 2005 .

[22]  Bengt Jonsson,et al.  Probabilistic Process Algebra , 2001 .

[23]  Aad Mathssen,et al.  Logical Calculi for Reasoning with Binding , 2008 .

[24]  William G. Griswold,et al.  Automated assistance for program restructuring , 1993, TSEM.

[25]  Dmitri Jarnikov,et al.  QoS framework for video streaming in home networks , 2007 .

[26]  Thomas Schwentick,et al.  Finite state machines for strings over infinite alphabets , 2004, TOCL.

[27]  Rémi Douence,et al.  A Framework for the Detection and Resolution of Aspect Interactions , 2002, GPCE.

[28]  Cfj Christian Lange,et al.  Assessing and improving the quality of modeling : a series of empirical studies about the UML , 2007 .

[29]  N.J.M. van den Nieuwelaar,et al.  Supervisory machine control by predictive-reactive scheduling , 2004 .

[30]  Reinder J. Bril,et al.  Real-time scheduling for media processing using conditionally guaranteed budgets , 2004 .

[31]  Rémi Douence,et al.  Trace-Based Aspects , 2004 .

[32]  Louise E. Moser,et al.  Visual Specifications for Temporal Reasoning , 1994, J. Vis. Lang. Comput..

[33]  R Ronald Ruimerman,et al.  Modeling and remodeling in bone tissue , 2005 .

[34]  Joost Visser,et al.  Generic traversal over typed source code representations , 2003 .

[35]  Dimitra Giannakopoulou,et al.  Fluent model checking for event-based systems , 2003, ESEC/FSE-11.

[36]  Ling Cheung,et al.  Reconciling nondeterministic and probabilistic choices , 2006 .

[37]  Mariëlle Stoelinga,et al.  Alea jacta est : verification of probabilistic, real-time and parametric systems , 2002 .

[38]  Laura Brandán Briones,et al.  Theories for Model-based Testing: Real-time and Coverage , 2007 .

[39]  Cruz Filipe,et al.  Constructive real analysis : a type-theoretical formalization and applications , 2004 .

[40]  Ka Lok Man,et al.  Formal specification and analysis of hybrid systems , 2006 .

[41]  Rémi Douence,et al.  Composition, reuse and interaction analysis of stateful aspects , 2004, AOSD '04.

[42]  F. Bartels,et al.  On Generalised Coinduction and Probabilistic Specification Formats , 2004 .

[43]  Mohammad Ali Abam New data structures and algorithms for mobile data , 2007 .

[44]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[45]  Martijn Warnier,et al.  Language based security for Java and JML , 2006 .

[46]  Ferhat Khendek,et al.  Test Selection Based on Finite State Models , 1991, IEEE Trans. Software Eng..

[47]  David Lorge Parnas,et al.  Simulating the behaviour of software modules by trace rewriting , 1993, ICSE '93.

[48]  David Notkin,et al.  An empirical study of static call graph extractors , 1998, TSEM.

[49]  Ncwm Niels Braspenning Model-based integration and testing of high-tech multi-disciplinary systems , 2008 .

[50]  Marcel Kyas,et al.  Verifying OCL specifications of UML models: tool support and compositionakity , 2006 .

[51]  Dawson R. Engler,et al.  Using programmer-written compiler extensions to catch security holes , 2002, Proceedings 2002 IEEE Symposium on Security and Privacy.

[52]  David A. Wagner,et al.  MOPS: an infrastructure for examining security properties of software , 2002, CCS '02.

[53]  de Ism Ivo Jong Integration and test strategies for complex manufacturing machines , 2008 .

[54]  Martijn M. Schrage,et al.  Proxima: a presentation-oriented editor for structured documents , 2000 .

[55]  Maurice H. ter Beek,et al.  Team Automata: A Formal Approach to the Modeling of Collaboration Between System Components , 2003 .

[56]  David H. Lorenz,et al.  Coupling Aspect-Oriented and Adaptive Programming , 2004 .

[57]  M. de Jonge,et al.  To reuse or to be reused. Techniques for component composition and construction , 2003 .

[58]  Yang Meng Tan,et al.  LCLint: a tool for using specifications to check code , 1994, SIGSOFT '94.

[59]  Sebastián Uchitel,et al.  Fluent temporal logic for discrete-time event-based models , 2005, ESEC/FSE-13.

[60]  L. Delbeke Quasi-experimentation - design and analysis issues for field settings - cook,td, campbell,dt , 1980 .

[61]  Davide Sangiorgi,et al.  Communicating and Mobile Systems: the π-calculus, , 2000 .

[62]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[63]  T. Kuipers,et al.  Techniques for understanding legacy software systems , 2002 .

[64]  David Lorge Parnas,et al.  Precise description and specification of software , 1998 .

[65]  Louise E. Moser,et al.  A graphical interval logic for specifying concurrent systems , 1994, TSEM.

[66]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[67]  Daan Leijen,et al.  The λ Abroad - A Functional Approach to Software Components , 2003 .

[68]  P. Zoeteweij,et al.  Composing constraint solvers , 2005 .

[69]  Yee Wei Law,et al.  Key management and link-layer security of wireless sensor networks : Energy-efficient attack and defense , 2005 .

[70]  Matthew B. Dwyer,et al.  Using the Bandera Tool Set to Model-Check Properties of Concurrent Java Software , 2001, CONCUR.

[71]  Dawson R. Engler,et al.  Checking system rules using system-specific, programmer-written compiler extensions , 2000, OSDI.

[72]  I C M Ingrid Flinsenberg,et al.  Route Planning Algorithms for Car Navigation , 2009 .

[73]  Maria Eva Magdalena Lijding,et al.  Real-Time Scheduling of Tertiary Storage , 2003 .

[74]  Martin Bravenboer,et al.  Exercises in Free Syntax. Syntax Definition, Parsing, and Assimilation of Language Conglomerates , 2003 .

[75]  M. A. Valero Espada,et al.  Modal Abstraction and Replication of Processes with Data , 2005 .

[76]  Amir Pnueli,et al.  On the Development of Reactive Systems , 1989, Logics and Models of Concurrent Systems.

[77]  Martijn Hendriks,et al.  Model checking timed automata : techniques and applications , 2006 .

[78]  Wolter Pieters,et al.  La volonté machinale: understanding the electronic voting controversy , 2008 .

[79]  David Lorge Parnas,et al.  Using assertions about traces to write abstract specifications for software modules , 1978, ECI.

[80]  Y Yuechen Qian,et al.  Data synchronization and browsing for home environments , 2004 .

[81]  V Victor Bos,et al.  Formal specification and analysis of industrial systems , 2002 .

[82]  Wpaj Wil Michiels Performance ratios for the differencing method , 2004 .

[83]  Magiel Bruntink,et al.  Renovation of idiomatic crosscutting concerns in embedded systems , 2005 .

[84]  Jonathan Aldrich,et al.  Open Modules: Modular Reasoning About Advice , 2005, ECOOP.

[85]  Michel A. Reniers,et al.  Hybrid process algebra , 2005, J. Log. Algebraic Methods Program..

[86]  A. J. Markvoort Towards hybrid molecular simulations , 2006 .

[87]  Balachander Krishnamurthy,et al.  Yeast: A General Purpose Event-Action System , 1995, IEEE Trans. Software Eng..

[88]  Peter Linz,et al.  An Introduction to Formal Languages and Automata , 1997 .

[89]  M. T. Ionita,et al.  Scenario-based system architecting : a systematic approach to developing future-proof system architectures , 2005 .

[90]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[91]  Cheun Ngen Chong Experiments in rights control : expression and enforcement , 2005 .

[92]  Erika Ábrahám,et al.  An Assertional Proof System for Multithreaded Java - Theory and Tool Support , 2005 .

[93]  Ondrej Lhoták,et al.  Adding trace matching with free variables to AspectJ , 2005, OOPSLA '05.

[94]  Jurgen Vinju,et al.  Analysis and transformation of source code by parsing and rewriting , 2005 .

[95]  Mohammad Reza Mousavi,et al.  Structuring structural operational semantics , 2005 .

[96]  Peter C. Bates,et al.  Debugging heterogeneous distributed systems using event-based models of behavior , 1988, PADD '88.

[97]  Shari Lawrence Pfleeger,et al.  Preliminary Guidelines for Empirical Research in Software Engineering , 2002, IEEE Trans. Software Eng..

[98]  S. P. Luttik Choice quantification in process algebra , 2002 .

[99]  Stacy J. Prowell,et al.  Foundations of Sequence-Based Software Specification , 2003, IEEE Trans. Software Eng..

[100]  M. Torabi Dashti,et al.  Keeping Fairness Alive : Design and formal verification of optimistic fair exchange protocols , 2008 .

[101]  Ivan S. Zapreev Model checking Markov chains : techniques and tools , 2008 .

[102]  Goran Frehse,et al.  Compositional verification of hybrid systems using simulation relations , 2005 .

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

[104]  A. L. de Groot,et al.  Practical Automaton proofs in PVS , 2000 .

[105]  Cjf Cas Cremers Scyther : semantics and verification of security protocols , 2006 .

[106]  G. Rozenberg,et al.  Effective models for the structure of ð-calculus processes with replication , 2001 .

[107]  Juan Visente Guillen Scholten,et al.  Mobile Channels for Exogenous Coordination of Distributed Systems: Semantics, Implementation and Composition , 2007 .

[108]  Jeroen Eggermont,et al.  Data Mining using Genetic Programming : Classification and Symbolic Regression , 2005 .

[109]  M. Niqui,et al.  Formalising Exact Arithmetic. Representations, Algorithms and Proofs , 2004 .

[110]  Daniel Hoffman,et al.  Trace Specifications: Methodology and Models , 1988, IEEE Trans. Software Eng..

[111]  Peter Verbaan,et al.  The Computational Complexity of Evolving Systems , 2006 .

[112]  Anton Wijs,et al.  Silent steps in transition systems and Markov chains , 2007 .

[113]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[114]  Jjd Joep Aerts Random redundant storage for video on demand , 2003 .

[115]  Simona Orzan,et al.  On Distributed Verification and Verified Distribution , 2004 .

[116]  Ana Sokolova,et al.  Coalgebraic analysis of probabilistic systems , 2005 .

[117]  Dino Salvo Distefano,et al.  On model checking the dynamics of object-based software : a foundational approach , 2003 .

[118]  C.-B. Breunesse On JML: topics in tool-assisted verification of Java programs , 2006 .

[119]  Amnon Naamad,et al.  Statemate: a working environment for the development of complex reactive systems , 1988, ICSE '88.

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

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

[122]  Niklaus Wirth,et al.  An assessment of the programming language pascal , 1975, IEEE Transactions on Software Engineering.

[123]  AJ Arjan Mooij,et al.  Constructive formal methods and protocol standardization , 2006 .

[124]  RJ Roy Willemen,et al.  School timetable construction : algorithms and complexity , 2002 .

[125]  Ansgar Fehnker,et al.  Citius, Vilius, Melius : guiding and cost-optimality in model checking of timed and hybrid systems , 2002 .

[126]  EO Esko Dijk Indoor ultrasonic position estimation using a single base station , 2004 .

[127]  Jean-Marc Jézéquel,et al.  Making Components Contract Aware , 1999, Computer.

[128]  T. D. Vu,et al.  Semantics and applications of process and program algebra , 2007 .

[129]  G Giovanni Russello,et al.  Separation and adaptation of concerns in a shared data space , 2006 .

[130]  David Harel,et al.  Statecharts: A Visual Formalism for Complex Systems , 1987, Sci. Comput. Program..

[131]  Benjamin Livshits,et al.  Finding application errors and security flaws using PQL: a program query language , 2005, OOPSLA '05.

[132]  Alexander Aiken,et al.  Relational queries over program traces , 2005, OOPSLA '05.

[133]  Amnon Naamad,et al.  The STATEMATE semantics of statecharts , 1996, TSEM.

[134]  Matthew B. Dwyer,et al.  Tool-supported program abstraction for finite-state verification , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[135]  Dan Suciu,et al.  Typechecking for XML transformers , 2000, PODS '00.

[136]  H.M.A. van Beek,et al.  Specification and analysis of Internet applications , 2005 .

[137]  Bev Littlewood,et al.  Evaluating Testing Methods by Delivered Reliability , 1998, IEEE Trans. Software Eng..

[138]  R. Boumen,et al.  Integration and test plans for complex manufacturing systems , 2007 .

[139]  Martijn van Veelen,et al.  Considerations on modeling for early detection of abnormalities in locally autonomous distributed systems , 2007 .

[140]  Eelco Dolstra,et al.  The purely functional software deployment model , 2006 .

[141]  David F. Bacon,et al.  Fast and effective optimization of statically typed object-oriented languages , 1997 .

[142]  David Harel,et al.  Modeling Reactive Systems With Statecharts : The Statemate Approach , 1998 .

[143]  Roel Wieringa,et al.  A survey of structured and object-oriented software specification methods and techniques , 1998, CSUR.

[144]  Sebastian Maneth,et al.  Models of tree translation , 2004 .

[145]  Daniel Kroening,et al.  Decision Procedures for Equality Logic and Uninterpreted Functions , 2008 .

[146]  Pierre Wolper Temporal Logic Can Be More Expressive , 1983, Inf. Control..

[147]  John C. Mitchell,et al.  Concepts in programming languages , 2002 .

[148]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[149]  Bastiaan Heeren,et al.  Top quality type error Messages , 2005 .

[150]  Olivier Motelet,et al.  A Formal Definition of Crosscuts , 2001, Reflection.

[151]  Roel Wieringa,et al.  Requirements Engineering: Frameworks for Understanding , 1996 .

[152]  Bowen Alpern,et al.  Verifying temporal properties without temporal logic , 1989, TOPL.

[153]  Tac Tim Willemse Semantics and verification in process algebras with data and timing , 2003 .

[154]  Robert V. Binder,et al.  Testing Object-Oriented Systems: Models, Patterns, and Tools , 1999 .

[155]  Marius Adrian Marin,et al.  An Integrated System to Manage Crosscutting Concerns in Source Code , 2008 .

[156]  Hui Gao,et al.  Design and verification of lock-free parallel algorithms , 2005 .

[157]  Nissim Francez,et al.  Finite-Memory Automata , 1994, Theor. Comput. Sci..