The ASTOOT approach to testing object-oriented programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Executable object modeling with statecharts
Proceedings of the 18th international conference on Software engineering
Lackwit: a program understanding tool based on type inference
ICSE '97 Proceedings of the 19th international conference on Software engineering
Computing in Systems Described by Equations
Computing in Systems Described by Equations
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Design by Contract: The Eiffel Method
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
Dynamically discovering likely program invariants
Dynamically discovering likely program invariants
Towards the Reverse Engineering of UML Sequence Diagrams
WCRE '03 Proceedings of the 10th Working Conference on Reverse Engineering
Limits of the "algebraic" specification of abstract data types
ACM SIGPLAN Notices
Service-Oriented Computing: Key Concepts and Principles
IEEE Internet Computing
Object naming analysis for reverse-engineered sequence diagrams
Proceedings of the 27th international conference on Software engineering
Fundamentals of Algebraic Graph Transformation (Monographs in Theoretical Computer Science. An EATCS Series)
Automatic extraction of abstract-object-state machines from unit-test executions
Proceedings of the 28th international conference on Software engineering
Mining object behavior with ADABU
Proceedings of the 2006 international workshop on Dynamic systems analysis
Object distance and its application to adaptive random testing of object-oriented programs
Proceedings of the 1st international workshop on Random testing
Efficient recovery of algebraic specifications for stateful components
Ninth international workshop on Principles of software evolution: in conjunction with the 6th ESEC/FSE joint meeting
DySy: dynamic symbolic execution for invariant inference
Proceedings of the 30th international conference on Software engineering
Discovering Documentation for Java Container Classes
IEEE Transactions on Software Engineering
Automatic synthesis of behavior protocols for composable web-services
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Synthesizing adapters for conversational web-services from their WSDL interface
Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems
Behavior model based component search: an initial assessment
Proceedings of 2010 ICSE Workshop on Search-driven Development: Users, Infrastructure, Tools and Evaluation
Situvis: A sensor data analysis and abstraction tool for pervasive computing systems
Pervasive and Mobile Computing
The disappearing boundary between development-time and run-time
Proceedings of the FSE/SDP workshop on Future of software engineering research
Proceedings of the 33rd International Conference on Software Engineering
NFM'11 Proceedings of the Third international conference on NASA Formal methods
EAGLE: engineering software in the ubiquitous globe by leveraging uncErtainty
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Automatic cross validation of multiple specifications: a case study
FASE'10 Proceedings of the 13th international conference on Fundamental Approaches to Software Engineering
Runtime monitoring of functional component changes with behavior models
MODELS'11 Proceedings of the 2011th international conference on Models in Software Engineering
Self-adaptive software needs quantitative verification at runtime
Communications of the ACM
Inferring method specifications from natural language API descriptions
Proceedings of the 34th International Conference on Software Engineering
Behavioral validation of JFSL specifications through model synthesis
Proceedings of the 34th International Conference on Software Engineering
Runtime monitoring of component changes with Spy@Runtime
Proceedings of the 34th International Conference on Software Engineering
Asynchronous learning for service composition
ICSOC'11 Proceedings of the 2011 international conference on Service-Oriented Computing
Abstractions for validation in action
SFM'12 Proceedings of the 12th international conference on Formal Methods for the Design of Computer, Communication, and Software Systems: formal methods for model-driven engineering
Automatic synthesis of specifications for first order curry programs
Proceedings of the 14th symposium on Principles and practice of declarative programming
Automated inference of models for black box systems based on interface descriptions
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
Inferring semantic interfaces of data structures
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
TRSynth: a tool for automatic inference of term equivalence in left-linear term rewriting systems
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Automatic inference of specifications using matching logic
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Integration architecture synthesis for taming uncertainty in the digital space
Proceedings of the 17th Monterey conference on Large-Scale Complex IT Systems: development, operation and management
Enabledness-based program abstractions for behavior validation
ACM Transactions on Software Engineering and Methodology (TOSEM) - In memoriam, fault detection and localization, formal methods, modeling and design
Producing software by integration: challenges and research directions (keynote)
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Loop invariants: Analysis, classification, and examples
ACM Computing Surveys (CSUR)
A journey through SMScom: self-managing situational computing
Computer Science - Research and Development
Hi-index | 0.02 |
This paper describes an approach (SPY) to recovering the specification of a software component from the observation of its run-time behavior. It focuses on components that behave as data abstractions. Components are assumed to be black boxes that do not allow any implementation inspection. The inferred description may help understand what the component does when no formal specification is available. SPY works in two main stages. First, it builds a deterministic finite-state machine that models the partial behavior of instances of the data abstraction. This is then generalized via graph transformation rules. The rules can generate a possibly infinite number of behavior models, which generalize the description of the data abstraction under an assumption of “regularity” with respect to the observed behavior. The rules can be viewed as a likely specification of the data abstraction. We illustrate how SPY works on relevant examples and we compare it with competing methods.