Iterative Refinement of Reverse-Engineered Models by Model-Based Testing

This paper presents an iterative technique to accurately reverse engineer models of the behaviour of software systems. A key novelty of the approach is the fact that it uses model-based testing to refine the hypothesised model. The process can in principle be entirely automated, and only requires a very small amount of manually generated information to begin with. We have implemented the technique for use in the development of Erlang systems and describe both the methodology as well as our implementation.

[1]  Alexander L. Wolf,et al.  Discovering models of software processes from event-based data , 1998, TSEM.

[2]  Barak A. Pearlmutter,et al.  Results of the Abbadingo One DFA Learning Competition and a New Evidence-Driven State Merging Algorithm , 1998, ICGI.

[3]  William G. Griswold,et al.  Dynamically discovering likely program invariants to support program evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[4]  Neil Walkinshaw,et al.  Computing the Structural Difference between State-Based Models , 2009, 2009 16th Working Conference on Reverse Engineering.

[5]  Dana Angluin,et al.  Learning Regular Sets from Queries and Counterexamples , 1987, Inf. Comput..

[6]  Joe Armstrong,et al.  Programming Erlang: Software for a Concurrent World , 1993 .

[7]  E. Mark Gold,et al.  Language Identification in the Limit , 1967, Inf. Control..

[8]  Neil Walkinshaw,et al.  Evaluation and Comparison of Inferred Regular Grammars , 2008, ICGI.

[9]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.

[10]  K. H. Bennett,et al.  Journal of software maintenance : research and practice , 1989 .

[11]  Neil Walkinshaw,et al.  Reverse Engineering State Machines by Interactive Grammar Inference , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[12]  Neil Walkinshaw,et al.  Improving dynamic software analysis by applying grammar inference principles , 2008, J. Softw. Maintenance Res. Pract..

[13]  Sebastián Uchitel,et al.  Behaviour model elaboration using partial labelled transition systems , 2003, ESEC/FSE-11.

[14]  Tsun S. Chow,et al.  Testing Software Design Modeled by Finite-State Machines , 1978, IEEE Transactions on Software Engineering.

[15]  Pierre Dupont,et al.  THE QSM ALGORITHM AND ITS APPLICATION TO SOFTWARE BEHAVIOR MODEL INDUCTION , 2008, Appl. Artif. Intell..

[16]  Jerome A. Feldman,et al.  On the Synthesis of Finite-State Machines from Samples of Their Behavior , 1972, IEEE Transactions on Computers.

[17]  Neil Walkinshaw,et al.  Automated discovery of state transitions and their functions in source code , 2008, Softw. Test. Verification Reliab..

[18]  Michael D. Ernst Static and dynamic analysis: synergy and duality , 2003 .

[19]  Jeffrey D. Ullman,et al.  Introduction to automata theory, languages, and computation, 2nd edition , 2001, SIGA.

[20]  Michael D. Ernst,et al.  ICSE workshop on dynamic analysis (WODA 2003) , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[21]  Neil Walkinshaw,et al.  Inferring Finite-State Models with Temporal Constraints , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

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