This Article 
 Bibliographic References 
 Add to: 
Specifying Dynamic Analyses by Extending Language Semantics
May-June 2012 (vol. 38 no. 3)
pp. 694-706
O. Nierstrasz, Software Composition Group, Univ. Bern, Bern, Switzerland
T. Girba, Software Composition Group, Univ. Bern, Bern, Switzerland
A. Lienhard, Software Composition Group, Univ. Bern, Bern, Switzerland
Dynamic analysis is increasingly attracting attention for debugging, profiling, and program comprehension. Ten to twenty years ago, many dynamic analyses investigated only simple method execution traces. Today, in contrast, many sophisticated dynamic analyses exist, for instance, for detecting memory leaks, analyzing ownership properties, measuring garbage collector performance, or supporting debugging tasks. These analyses depend on complex program instrumentations and analysis models, making it challenging to understand, compare, and reproduce the proposed approaches. While formal specifications and proofs are common in the field of static analysis, most dynamic analyses are specified using informal, textual descriptions. In this paper, we propose a formal framework using operational semantics that allows researchers to precisely specify their dynamic analysis. Our goal is to provide an accessible and reusable basis on which researchers who may not be familiar with rigorous specifications of dynamic analyses can build. By extending the provided semantics, one can concisely specify how runtime events are captured and how this data is transformed to populate the analysis model. Furthermore, our approach provides the foundations to reason about properties of a dynamic analysis.

[1] B. Cornelissen, A. Zaidman, A. van Deursen, L. Moonen, and R. Koschke, "A Systematic Survey of Program Comprehension through Dynamic Analysis," IEEE Trans. Software Eng., vol. 35, no. 5, pp. 684-702, Sept./Oct. 2009.
[2] A. Lienhard, S. Ducasse, and T. Gîrba, "Taking an Object-Centric View on Dynamic Information with Object Flow Analysis," J. Computer Languages, Systems and Structures, vol. 35, no. 1, pp. 63-79, 2009.
[3] A. Lienhard, T. Gîrba, and O. Nierstrasz, "Practical Object-Oriented Back-in-Time Debugging," Proc. 22nd European Conf. Object-Oriented Programming, pp. 592-615, 2008.
[4] J. Quante and R. Koschke, "Dynamic Object Process Graphs," J. Systems and Software, vol. 81, no. 4, pp. 481-501, 2008.
[5] J. Quante and R. Koschke, "Dynamic Object Process Graphs," Proc. 10th European Conf. Software Maintenance and Reeng., pp. 81-90, 2006.
[6] C. Flanagan, S.N. Freund, and J. Yi, "Velodrome: A Sound and Complete Dynamic Atomicity Checker for Multithreaded Programs," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 293-303, 2008.
[7] C. Flanagan and S.N. Freund, "FastTrack: Efficient and Precise Dynamic Race Detection," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 121-133, 2009.
[8] C. Flanagan and S.N. Freund, "Adversarial Memory for Detecting Destructive Races," Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation, pp. 244-254, 2010.
[9] N.R. Cameron, S. Drossopoulou, J. Noble, and M.J. Smith, "Multiple Ownership," Proc. 22nd Ann. ACM SIGPLAN Conf. Object Oriented Programming Systems and Applications, pp. 441-460, 2007.
[10] D. Clarke and S. Drossopoulou, "Ownership, Encapsulation and the Disjointness of Type and Effect," Proc. 17th ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications, pp. 292-310, 2002.
[11] S. Drossopoulou, A. Francalanza, P. Müller, and A. Summers, "A Unified Framework for Verification Techniques for Object Invariants," Proc. 22nd European Conf. Object-Oriented Programming, pp. 412-437, July 2008.
[12] B.M. Cantrill, M.W. Shapiro, and A.H. Leventhal, "Dynamic Instrumentation of Production Systems," Proc. Ann. Technical Conf., pp. 15-28, 2004.
[13] W. De Pauw, D. Kimelman, and J. Vlissides, "Modeling Object-Oriented Program Execution," Proc. European Conf. Object-Oriented Programming, M. Tokoro and R. Pareschi, eds., vol. 821, pp. 163-182, July 1994.
[14] G. Pothier, E. Tanter, and J. Piquer, "Scalable Omniscient Debugging," Proc. 22nd Ann. SCM SIGPLAN Conf. Object-Oriented Programming Systems, Languages and Applications, pp. 535-552, 2007.
[15] D. Rayside and L. Mendel, "Object Ownership Profiling: A Technique for Finding and Fixing Memory Leaks," Proc. 22nd IEEE/ACM Int'l Conf. Automated Software Eng., pp. 194-203, 2007.
[16] S. Pheng and C. Verbrugge, "Dynamic Data Structure Analysis for Java Programs," Proc. 14th IEEE Int'l Conf. Program Comprehension, pp. 191-201, 2006.
[17] G. Plotkin, "A Structural Approach to Operational Semantics," technical report, Univ. of Aarhus, Denmark, 1981.
[18] A.K. Wright and M. Felleisen, "A Syntactic Approach to Type Soundness," Information and Computation, vol. 115, no. 1, pp. 38-94, 1994.
[19] G. Pothier and É. Tanter, "Back to the Future: Omniscient Debugging," IEEE Software, vol. 26, no. 6, pp. 78-85, Nov./Dec. 2009.
[20] D. Walker, S. Zdancewic, and J. Ligatti, "A Theory of Aspects," ICFP '03: Proc. Eighth ACM SIGPLAN Int'l Conf. Functional Programming, pp. 127-139, 2003.
[21] M. Wand, G. Kiczales, and C. Dutchyn, "A Semantics for Advice and Dynamic Join Points in Aspect-Oriented Programming," ACM Trans. Programming Languages and Systems, vol. 26, no. 5, pp. 890-910, 2004.
[22] K. Klose and K. Ostermann, "A Classification Framework for Pointcut Languages in Runtime Monitoring," Proc. 47th Int'l Conf. Objects, Components, Models, and Patterns, pp. 289-307, 2009.
[23] C. Allan, P. Avgustinov, A.S. Christensen, L. Hendren, S. Kuzins, O. Lhoták, O. de Moor, D. Sereni, G. Sittampalam, and J. Tibble, "Adding Trace Matching with Free Variables to AspectJ," Proc. 20th Ann. ACM SIGPLAN Conf. Object-Oriented Programming Systems and Applications, pp. 345-364, 2005.
[24] "AspectJ home page," http://eclipse.orgaspectj/, 2011.
[25] I.D. Craig, Virtual Machines. Springer Verlag, 2005.
[26] N. Belblidia and M. Debbabi, "A Dynamic Operational Semantics for JVML," J. Object Technology, vol. 6, no. 3, pp. 71-100, 2007.

Index Terms:
programming language semantics,formal specification,program debugging,program profiling,dynamic analysis specification,program debugging,memory leaks detection,ownership properties,garbage collector performance,complex program instrumentations,formal specifications,textual descriptions,informal descriptions,language semantics extending,program comprehension,Semantics,Runtime,Arrays,Context,Analytical models,Performance analysis,Syntactics,debugging.,Dynamic analysis,formal definitions and theory,tracing
O. Nierstrasz, T. Girba, A. Lienhard, "Specifying Dynamic Analyses by Extending Language Semantics," IEEE Transactions on Software Engineering, vol. 38, no. 3, pp. 694-706, May-June 2012, doi:10.1109/TSE.2011.38
Usage of this product signifies your acceptance of the Terms of Use.