Automatic extraction of object-oriented component interfaces 论文

2002ACM SIGSOFT Software Engineering Notes引用 259
Software Engineering ResearchAdvanced Software Engineering MethodologiesSoftware Testing and Debugging Techniques

详细信息

发表期刊/会议
ACM SIGSOFT Software Engineering Notes
发表日期
2002-07-01
发表年份
2002

关键词

Software Engineering ResearchAdvanced Software Engineering MethodologiesSoftware Testing and Debugging Techniques

摘要

Component-based software design is a popular and effective approach to designing large systems. While components typically have well-defined interfaces, sequencing information---which calls must come in which order---is often not formally specified.This paper proposes using multiple finite statemachine (FSM) submodels to model the interface of a class. A submodel includes a subset of methods that, for example, implement a Java interface, or access some particular field. Each state-modifying method is represented as a state in the FSM, and transitions of the FSMs represent allow able pairs of consecutive methods. In addition, state-preserving methods are constrained to execute only under certain states.We have designed and implemented a system that includes static analyses to deduce illegal call sequences in a program, dynamic instrumentation techniques to extract models from execution runs, and a dynamic model checker that ensures that the code conforms to the model. Extracted models can serve as documentation; they can serve as constraints to be enforced by a static checker; they can be studied directly by developers to determine if the program is exhibiting unexpected behavior; or they can be used to determine the completeness of a test suite.Our system has been run on several large code bases, including the joeq virtual machine, the basic Java libraries, and the Java 2 Enterprise Edition library code. Our experience suggests that this approach yields useful information.