Authors:
Wasim Said
1
;
Jochen Quante
2
and
Rainer Koschke
3
Affiliations:
1
Robert Bosch GmbH and University of Bremen, Germany
;
2
Robert Bosch GmbH, Germany
;
3
University of Bremen, Germany
Keyword(s):
Model-driven Engineering, Program Comprehension, Software Analysis, Reverse Engineering, Model Mining.
Related
Ontology
Subjects/Areas/Topics:
Domain-Specific Modeling and Domain-Specific Languages
;
Languages, Tools and Architectures
;
Model Transformation
;
Model-Driven Architecture
;
Model-Driven Software Development
;
Models
;
Paradigm Trends
;
Software Engineering
Abstract:
State machines are an established formalism for specifying the behavior of a software component. Unfortunately,
such design models often do not exist at all, especially for legacy code, or they are lost or not kept up to
date during software evolution – although they would be very helpful for program comprehension. Therefore,
it is desirable to extract state machine models from code and also from legacy models. The few existing approaches
for that – when applied to real-world systems written in C – deliver models that are too complex for
being comprehensible to humans. This is mainly because C functions are typically much longer than object
oriented methods, for which these approaches were originally intended.
In this paper, we propose and investigate different measures to reduce the complexity of such mined models
to an understandable degree. Since the code alone does not contain all required information for abstraction,
user interaction is essential. Also, different users
will be interested in different aspects of the code. Therefore,
we introduce several possibilities for influencing the state machine extraction process, such as providing
additional constraints for reducing the state space. We show the effectiveness of these interactions in several
case studies. The combination of these interactions gives the user a rich set of possibilities for exploring the
functionality of the software.
(More)