An Approach to Identify and Classify State Machine Changes from Code Changes

During the software development process, various types of artifacts are created representing different views in different levels of abstraction. Among these artifacts, UML Behavioral State Machine (SM) is one of the most used models to represent the software behavior. Due to the changes that occur in the source code of the software, updates are also required in the entire set of the produced artifacts, demanding time and effort. In this work, we propose an approach to identify and classify changes on SMs according to the source code changes. This approach is composed of (i) a taxonomy for changes on SMs; (ii) a mapping from source code changes to SM changes; and (iii) an algorithm that automatically classifies SM changes caused by code changes. Two studies with real and open source projects were carried out: a survey to evaluate the taxonomy and an experiment to evaluate the algorithm effectiveness. The results have shown that source code changes can cause changes on SM and that it was possible to establish a mapping between both kind of changes. The experiment assessed a precision of 65, 60% and a recall of 50, 80% to the algorithm. With the proposed approach, we hope to reach a reduction of the effort and time required to keep SM updated and in compliance with the source code, as well as to provide a way to better comprehend the software evolution.

[1]  David Lo,et al.  Learning extended FSA from software: An empirical assessment , 2012, J. Syst. Softw..

[2]  Djoerd Hiemstra,et al.  A probabilistic justification for using tf×idf term weighting in information retrieval , 2000, International Journal on Digital Libraries.

[3]  Dávid Bedők Application of Petri-nets in object-oriented environment , 2016, 2016 IEEE 17th International Symposium on Computational Intelligence and Informatics (CINTI).

[4]  Leonardo Mariani,et al.  Automated Identification of Failure Causes in System Logs , 2008, 2008 19th International Symposium on Software Reliability Engineering (ISSRE).

[5]  Mathew Hall,et al.  Inferring Computational State Machine Models from Program Executions , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[6]  Bernard J. Jansen,et al.  The seventeen theoretical constructs of information searching and information retrieval , 2010, J. Assoc. Inf. Sci. Technol..

[7]  Leonardo Mariani,et al.  Automatic generation of software behavioral models , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[8]  Roland Groz,et al.  Revisiting AI and Testing Methods to Infer FSM Models of Black-Box Systems , 2018, 2018 IEEE/ACM 13th International Workshop on Automation of Software Test (AST).

[9]  M. Aggarwal,et al.  Test Case Generation from UML State Machine Diagram: A Survey , 2012, 2012 Third International Conference on Computer and Communication Technology.

[10]  Alain April,et al.  REquirements TRacing On target (RETRO): improving software maintenance through traceability recovery , 2007, Innovations in Systems and Software Engineering.

[11]  Jane Huffman Hayes,et al.  Tracing requirements to defect reports: an application of information retrieval techniques , 2005, Innovations in Systems and Software Engineering.

[12]  Amit M. Paradkar Plannable test selection criteria for FSMs extracted from operational specifications , 2004, 15th International Symposium on Software Reliability Engineering.

[13]  Gregorio Robles,et al.  An Extensive Dataset of UML Models in GitHub , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

[14]  Harald C. Gall,et al.  Classifying Change Types for Qualifying Change Couplings , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[15]  Harald C. Gall,et al.  Change Distilling:Tree Differencing for Fine-Grained Source Code Change Extraction , 2007, IEEE Transactions on Software Engineering.

[16]  John Derrick,et al.  Inferring extended finite state machine models from software executions , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[17]  L. Lengyel,et al.  Incremental Model Synchronization by Bi-Directional Model Transformations , 2008, 2008 IEEE International Conference on Computational Cybernetics.

[18]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[19]  Santosh K. Vishwakarma,et al.  Analysis of TF-IDF Model and its Variant for Document Retrieval , 2015, 2015 International Conference on Computational Intelligence and Communication Networks (CICN).

[20]  Karol Rástocný,et al.  Automated Change Propagation from Source Code to Sequence Diagrams , 2018, SOFSEM.

[21]  Leonardo Mariani,et al.  GK-Tail+ An Efficient Approach to Learn Software Models , 2017, IEEE Transactions on Software Engineering.

[22]  Taeshik Shon,et al.  Inferring State Machine Using Hybrid Teacher , 2016, 2016 IEEE International Conference on Internet of Things (iThings) and IEEE Green Computing and Communications (GreenCom) and IEEE Cyber, Physical and Social Computing (CPSCom) and IEEE Smart Data (SmartData).

[23]  Eladio Domínguez,et al.  A systematic review of code generation proposals from state machine specifications , 2012, Inf. Softw. Technol..

[24]  Zeeshan Pervez,et al.  JuiceGen: The JUnit test generation tool from the UML state machine diagram , 2014, The 8th International Conference on Software, Knowledge, Information Management and Applications (SKIMA 2014).