2009 · 137 citations · 37 references
Software MaintenanceEngineeringObject-oriented ModelingVerificationSoftware EngineeringRuntime EventsApi Usage DocumentationObject OrientationFormal VerificationSoftware AnalysisData ScienceStatic CheckingAnalysis PatternFormal SpecificationRuntime VerificationAutomatic GenerationRuntime DataComputer ScienceStatic Program AnalysisRuntime SystemSoftware DesignProgram AnalysisSoftware TestingFormal MethodsSystem SoftwareObject ModelingData Modeling
Formal specifications are used to identify programming errors, verify the correctness of programs, and as documentation. Unfortunately, producing them is error-prone and time-consuming, so they are rarely used in practice. Inferring specifications from a running application is a promising solution. However, to be practical, such an approach requires special techniques to treat large amounts of runtime data. We present a scalable dynamic analysis that infers specifications of correct method call sequences on multiple related objects. It preprocesses method traces to identify small sets of related objects and method calls which can be analyzed separately. We implemented our approach and applied the analysis to eleven real-world applications and more than 240 million runtime events. The experiments show the scalability of our approach. Moreover, the generated specifications describe correct and typical behavior, and match existing API usage documentation.
37
Stephen M. Blackburn, Robin Garner, Chris Hoffmann et al. · 2006 · 1.6K citations · Full text
Performance Benchmarking, Engineering, Compiler Technology +21
Thomas Ball, Sriram K. Rajamani · 2002 · 919 citations
Complexity of automaton identification from given data
Eric Gold · Information and Control · 1978 · 763 citations