Lackwit: a program understanding tool based on type inference
ICSE '97 Proceedings of the 19th international conference on Software engineering
A specification matching based approach to reverse engineering
Proceedings of the 21st international conference on Software engineering
Symbolic execution and program testing
Communications of the ACM
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parametric shape analysis via 3-valued logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatic extraction of object-oriented component interfaces
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Fundamentals of Algebraic Specification I
Fundamentals of Algebraic Specification I
Houdini, an Annotation Assistant for ESC/Java
FME '01 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods for Increasing Software Productivity
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Strongest postcondition semantics as the formal basis for reverse engineering
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Dynamically inferring temporal properties
Proceedings of the 5th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Inferring Specifications to Detect Errors in Code
Proceedings of the 19th IEEE international conference on Automated software engineering
An overview of JML tools and applications
International Journal on Software Tools for Technology Transfer (STTT) - Special section on formal methods for industrial critical systems
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Automatically Identifying Special and Common Unit Tests for Object-Oriented Programs
ISSRE '05 Proceedings of the 16th IEEE International Symposium on Software Reliability Engineering
Tool-assisted unit-test generation and selection based on operational abstractions
Automated Software Engineering
What went wrong: explaining counterexamples
SPIN'03 Proceedings of the 10th international conference on Model checking software
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Abstraction refinement for termination
SAS'05 Proceedings of the 12th international conference on Static Analysis
DySy: dynamic symbolic execution for invariant inference
Proceedings of the 30th international conference on Software engineering
Universal symbolic execution and its application to likely data structure invariant generation
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
A comparative study of programmer-written and automatically inferred contracts
Proceedings of the eighteenth international symposium on Software testing and analysis
DETERMIN: inferring likely deterministic specifications of multithreaded programs
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Proceedings of the 33rd International Conference on Software Engineering
Understanding user understanding: determining correctness of generated program invariants
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Inferring method specifications from natural language API descriptions
Proceedings of the 34th International Conference on Software Engineering
Automatic inference of specifications using matching logic
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Loop invariants: Analysis, classification, and examples
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
Software specifications are of great use for more rigorous software development. They are useful for formal verification and automated testing, and they improve program understanding. In practice, specifications often do not exist and developers write software in an ad-hoc fashion. We describe a new way to automatically infer specifications from code. Our approach infers a likely specification for any method such that the method’s behavior, i.e., its effect on the state and possible result values, is summarized and expressed in terms of some other methods. We use symbolic execution to analyze and relate the behaviors of the considered methods. In our experiences, the resulting likely specifications are compact and human-understandable. They can be examined by the user, used as input to program verification systems, or as input for test generation tools for validation. We implemented the technique for .NET programs in a tool called Axiom Meister. It inferred concise specifications for base classes of the .NET platform and found flaws in the design of a new library.