Abstract
This paper presents a technique for reverse engineering, a software system generated from a concurrent unified modeling language state machine implementation. In its first step, a primitive sequential finite-state machine (FSM) is deduced from a sequence of outputs emitted from black box tests applied to the systems’ input interface. Next, we provide an algorithmic technique for decomposing the sequential primitive FSM into a set of concurrent (orthogonal) primitive FSMs. Lastly, we show a genetic programming machine learning technique for discovering local variables, actions performed on local and non-binary output variables, and two types of intra-FSM loops, called counting-loops and while-loops.
Similar content being viewed by others
Notes
The initial state of the primitive FSM is the only state that is not induced by outputs of a one constituent FSM within the UML statechart, but rather is induced by outputs of all constituent FSMs.
Row and column numbers are 1-based.
The test is actually black box in terms of the original SUT, because the SUT’s internal structure or behavior is not assumed to be known a priori. However, after deducing its constituent internal FSMs such a test is white-box with respect to each such FSM.
References
Angluin D (1987) Learning regular sets from queries and counterexamples. Inf Comput 75(2):87–106
Amalfitano D, Fasolino AR, Tramontana P (2008) Proceedings of the 15th working conference on reverse engineering, Antwerp, Belgium, Oct 15–18, 2008
Brutscheck M (2009) Systematic analysis of unknown integrated circuits. Ph.D. dissertation, Dublin Institute of Technology
Brutscheck M, Franke M, Schwartzbacher A, Becker S (2008) Investigation and implementation of test vectors for efficient IC analysis. In: Signals and systems conference. Becker
Brutscheck M, Schmidt B, Franke M, Schwartzbacher A, Becker S (2010) Identification of deterministic sequential finite state machines in unknown cmos ICs. In: International solid state circuits conference. Becker
Drusinsky-Yoresh D (1991) A state assignment for single-block implementation of statecharts. IEEE Trans Comput Aided Des Integr Circuits Syst 10(12):1569–1575
Genetic programming. http://geneticprogramming.com/
Koza J, A genetic programming tutorial. http://geneticprogramming.com/tutorial/
Kumar A (2008) A novel technique to extract Statechart representations of FSMs. Master thesis, Department of Computer Science and Engineering, Indian Institute of Technology Kharagpur
Yang M, Michaelson GJ, Pooley RJ (2008) Formal action semantics for a UML action language. J Univers Comput Sci 14(21):3608–3624
Genetic programming. https://en.wikipedia.org/wiki/Genetic_programming
Drusinsky D (2006) Modeling and verification using UML statecharts. Elsevier, Amsterdam ISBN: 978-0-7506-7949-7
Smith J, Oler K, Miller C, Manz D (2017) Reverse engineering integrated circuits using finite state machine analysis. In: 50th Hawaii international conference on system sciences, pp 2906–2914
Spinke V (2013) An object-oriented implementation of concurrent and hierarchical state machines. Inf Softw Technol 55:1726–1740
Author information
Authors and Affiliations
Corresponding author
Additional information
This research was funded by a Grant from the Office of Naval Research (ONR). The views expressed in this document are those of the author and do not reflect the official policy or position of the Department of Defense or the U.S. Government.
Rights and permissions
About this article
Cite this article
Drusinsky, D. Reverse engineering concurrent UML state machines using black box testing and genetic programming. Innovations Syst Softw Eng 13, 117–128 (2017). https://doi.org/10.1007/s11334-017-0299-9
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11334-017-0299-9