Another issue that has to be addressed in the fu-
ture is the complexity of transition conditions. We
have concentrated on states and transition structure so
far. However, transition conditions are also important
for understanding. The conditions that result from the
extraction process are usually extremely complex and
not understandable for humans. Also, reducing the
number of states obviously makes state machine mod-
els more understandable. However, the information
that was previously contained in the state invariants
will not get lost, but it will move into the transitions,
which may make those more complex. We are cur-
rently investigating approaches for reducing this com-
plexity. For example, not all information in these con-
ditions is relevant. This could lead to another interac-
tive extension.
Other opportunities for future research include ad-
ditional interactions, automated identification of ef-
fective constraints, and runtime optimization for the
SMT solver. We also want to apply similar interac-
tions to extraction of other kinds of models that can
support developers in reengineering tasks.
In summary, adding interaction to state machine
mining appears to be a promising approach towards
practically usable support for program comprehen-
sion and migration towards model-based develop-
ment.
REFERENCES
Abadi, M. and Feldman, Y. A. (2012). Automatic recovery
of statecharts from procedural code. In Int’l Conf. on
Automated Software Engineering, pages 238–241.
Ammons, G., Bodík, R., and Larus, J. R. (2002). Mining
specifications. In Proc. 29th Symp. on Principles of
Programming Languages, pages 4–16.
Broy, M., Kirstan, S., Krcmar, H., Schätz, B., and Zimmer-
mann, J. (2013). What is the benefit of a model-based
design of embedded software systems in the car indus-
try? Software Design and Development: Concepts,
Methodologies, Tools, Applications, pages 310–334.
Corbett, J. C., Dwyer, M. B., Hatcliff, J., Laubach, S.,
Pasareanu, C. S., Robby, and Zheng, H. (2000). Ban-
dera: extracting finite-state models from Java source
code. In Proc. of 22nd ICSE, pages 439–448.
Eisenbarth, T., Koschke, R., and Vogel, G. (2005). Static
object trace extraction for programs with pointers.
Journal of Systems and Software, 77(3):263–284.
Fjeldstad, R. K. and Hamlen, W. T. (1984). Application pro-
gram maintenance study: Report to our respondents.
In Proc. GUIDE 48.
Godefroid, P., Klarlund, N., and Sen, K. (2005). DART:
directed automated random testing. In Proc. of PLDI,
pages 213–223.
Hoffmann, A., Quante, J., and Woehrle, M. (2016). Ex-
perience report: White box test case generation for
automotive embedded software. In Proc. of 9th Int’l
Conf. on Software Testing, Verification and Validation
Workshops, TAIC-PART Workshop, pages 269–274.
Jiresal, R., Makkapati, H., and Naik, R. (2011). Statechart
extraction from code – an approach using static pro-
gram analysis and heuristics based abstractions. In
Proc. of 2nd India Workshop on Reverse Engineering.
King, J. C. (1976). Symbolic execution and program test-
ing. Journal of the ACM, 19(7):385–394.
Kung, D. C., Suchak, N., Gao, J. Z., Hsia, P., Toyoshima,
Y., and Chen, C. (1994). On object state testing. In
Proc. of 18th Int’l Computer Software and Applica-
tions Conference (COMPSAC), pages 222–227.
Miranda, D., Genero, M., and Piattini, M. (2005). Empirical
validation of metrics for UML statechart diagrams. In
Camp, O., Filipe, J. B. L., Hammoudi, S., and Piattini,
M., editors, Enterprise Information Systems V, pages
101–108. Springer Netherlands.
Nejmeh, B. A. (1988). NPATH: A measure of execution
path complexity and its applications. Communications
of the ACM, 31(2):188–200.
Prywes, N. and Rehmet, P. (1996). Recovery of software
design, state-machines and specifications from source
code. In Proc. of 2nd Int’l Conf. on Engineering of
Complex Computer Systems, pages 279–288.
Quante, J. (2016). A program interpreter for arbitrary ab-
stractions. 16th Int’l Working Conference on Source
Code Analysis and Manipulation, pages 91–96.
Roehm, T., Tiarks, R., Koschke, R., and Maalej, W. (2012).
How do professional developers comprehend soft-
ware? In Proc. of 34th ICSE, pages 255–265.
Sen, T. and Mall, R. (2016). Extracting finite state repre-
sentation of Java programs. Software & Systems Mod-
eling, 15(2):497–511.
Somé, S. S. and Lethbridge, T. (2002). Enhancing program
comprehension with recovered state models. In 10th
Int’l Workshop on Program Comprehension (IWPC),
pages 85–93.
Walkinshaw, N., Bogdanov, K., Ali, S., and Holcombe, M.
(2008). Automated discovery of state transitions and
their functions in source code. Softw. Test. Verif. Re-
liab., 18(2):99–121.
Walkinshaw, N. and Hall, M. (2016). Inferring computa-
tional state machine models from program executions.
In Proc. of Int’l Conf. on Software Maintenance and
Evolution (ICSME), pages 122–132.
Wang, S., Dwarakanathan, S., Sokolsky, O., and Lee, I.
(2012). High-level model extraction via symbolic exe-
cution. Technical report, Univ. Pennsylvania, Dept. of
Computer and Information Science. MS-CIS-12-04.
Weiser, M. (1981). Program slicing. In Proc. of 5th Int’l
Conf. on Software Engineering, pages 439–449.
Xie, T., Martin, E., and Yuan, H. (2006). Automatic ex-
traction of abstract-object-state machines from unit-
test executions. In Proc. 28th ICSE, pages 835–838.
MODELSWARD 2018 - 6th International Conference on Model-Driven Engineering and Software Development
128