Dynamic Reverse Engineering of Graphical User Interfaces

This paper presents a dynamic reverse engineering approach and a tool, ReGUI, developed to reduce the effort of obtaining models of the structure and behaviour of a software applications Graphical User Interface (GUI). It describes, in more detail, the architecture of the REGUI tool, the process followed to extract information and the different types of models produced to represent such information. Each model describes different characteristics of the GUI. Besides graphical representations, which allow checking visually properties of the GUI, the tool also generates a textual model in Spec# to be used in the context of model based GUI testing and a Symbolic Model Verification model, which enables the verification of several properties expressed in computation tree logic. The models produced must be completed and validated in order to ensure that they faithfully describe the intended behaviour. This validation process may be performed by manually analysing the graphical models produced or automatically by proving properties, such as reachability, through model checking. A feasibility study is described to illustrate the overall approach, the tool and the results obtained.

[1]  Thomas A. Standish An Essay on Software Reuse , 1984, IEEE Transactions on Software Engineering.

[2]  Jesse James Garrett Ajax: A New Approach to Web Applications , 2007 .

[3]  Kamran Sartipi,et al.  Dynamic Analysis of Software Systems using Execution Pattern Mining , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[4]  Kenneth L. McMillan,et al.  Symbolic model checking , 1992 .

[5]  Thomas Ball,et al.  The concept of dynamic analysis , 1999, ESEC/FSE-7.

[6]  Stefan Staiger Static Analysis of Programs with Graphical User Interface , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[7]  Chao Liu,et al.  Data Mining for Software Engineering , 2009, Computer.

[8]  Rob Haverty New accessibility model for Microsoft Windows and cross platform development , 2005, ASAC.

[9]  Hausi A. Müller,et al.  Reverse engineering: a roadmap , 2000, ICSE '00.

[10]  Gerardo Canfora,et al.  Achievements and challenges in software reverse engineering , 2011, Commun. ACM.

[11]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[12]  David Lee,et al.  Principles and methods of testing finite state machines-a survey , 1996, Proc. IEEE.

[13]  Ana C. R. Paiva,et al.  Specification-Based Testing of User Interfaces , 2003, DSV-IS.

[14]  Lucian Voinea,et al.  Architecting an open system for querying large C and C++ code bases , 2008, South Afr. Comput. J..

[15]  Lionel C. Briand,et al.  Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software , 2006, IEEE Transactions on Software Engineering.

[16]  M. G. Rekoff,et al.  On reverse engineering , 1985, IEEE Transactions on Systems, Man, and Cybernetics.

[17]  Ana C. R. Paiva,et al.  Reverse Engineered Formal Models for GUI Testing , 2007, FMICS.

[18]  Atif M. Memon,et al.  Test case generator for GUITAR , 2008, ICSE Companion '08.

[19]  Fabio Paternò,et al.  Integrating Model Checking and HCI Tools to Help Designers Verify User Interface Properties , 2000, DSV-IS.

[20]  Nikolai Tillmann,et al.  A Model-to-Implementation Mapping Tool for Automated Model-Based GUI Testing , 2005, ICFEM.

[21]  Margus Veanes,et al.  Model-Based Testing of Object-Oriented Reactive Systems with Spec Explorer , 2008, Formal Methods and Testing.

[22]  Porfirio Tramontana,et al.  Reverse Engineering Finite State Machines from Rich Internet Applications , 2008, 2008 15th Working Conference on Reverse Engineering.

[23]  Atif M. Memon,et al.  GUI ripping: reverse engineering of graphical user interfaces for testing , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[24]  Ana C. R. Paiva,et al.  Reverse engineering of GUI models for testing , 2010, 5th Iberian Conference on Information Systems and Technologies.

[25]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[26]  João Saraiva,et al.  The GUISurfer tool: towards a language independent approach to reverse engineering GUI code , 2010, EICS '10.

[27]  Erhard Plödereder,et al.  Bauhaus - A Tool Suite for Program Analysis and Reverse Engineering , 2006, Ada-Europe.

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

[29]  James R. Cordy,et al.  Automated Reverse Engineering of UML Sequence Diagrams for Dynamic Web Applications , 2009, 2009 International Conference on Software Testing, Verification, and Validation Workshops.

[30]  James R. Cordy,et al.  A verification framework for access control in dynamic web applications , 2009, C3S2E '09.

[31]  João Pascoal Faria,et al.  Reverse Engineering of Graphical User Interfaces , 2011, ICSEA 2011.

[32]  Jonathan I. Maletic,et al.  A survey and taxonomy of approaches for mining software repositories in the context of software evolution , 2007, J. Softw. Maintenance Res. Pract..

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

[34]  Tarja Systä,et al.  Static and Dynamic Reverse Engineering Techniques for Java Software Systems , 2000 .

[35]  David W. Binkley,et al.  Source Code Analysis: A Road Map , 2007, Future of Software Engineering (FOSE '07).

[36]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[37]  Ted J. Biggerstaff,et al.  The concept assignment problem in program understanding , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[38]  Stefan Kowalewski,et al.  Reverse Engineering of Mobile Application Lifecycles , 2011, 2011 18th Working Conference on Reverse Engineering.

[39]  Christof Lutteroth Automated Reverse Engineering of Hard-Coded GUI Layouts , 2008, AUIC.

[40]  Kai Koskimies,et al.  Automated Support for Modeling OO Software , 1998, IEEE Softw..

[41]  Eldad Eilam,et al.  Reversing: Secrets of Reverse Engineering , 2005 .

[42]  Christof Lutteroth,et al.  User interface layout with ordinal and linear constraints , 2006, AUIC.

[43]  Hausi A. Müller,et al.  Understanding software systems using reverse engineering technology perspectives from the Rigi project , 1993, CASCON.