Finite-state models are extensively used for discrete systems and they have also been adopted for the analysis and verification of concurrent systems. programs that have a repetitive cycle, such as event-driven server...
详细信息
Finite-state models are extensively used for discrete systems and they have also been adopted for the analysis and verification of concurrent systems. programs that have a repetitive cycle, such as event-driven servers and controllers, lend themselves to finite-state modeling. In this article, we use the termmodel extractionto refer to the construction of a finite-state model from an executiontrace of a Java program and a set of key attributes, that is, a subset of the fields of the objects in the programexecution. By choosing different sets of attributes, different finite-state models (or views) of the execution can be obtained. Such models aid program comprehension and they can also be used in debugging a program. We present algorithms for model extraction and also formodel abstractionin order to reduce the size of the extracted models so that they are amenable to visualization. For long executions, we show how to minimize the overhead of executiontrace collection through a bytecode instrumentation technique;and, for large models, which are not amenable to visualization, we show how key properties of the extracted model can be checked against declarative specifications. We have implemented our techniques in the context of JIVE, an Eclipse plugin that supports runtime visualization and analysis of Java programexecutions. We illustrate our techniques through a collection of case studies of varying size and complexity, from classic problems of concurrency control to a medium-size protocol for authorization (OAuth2.0 protocol) to a large-scale software that underlies web applications (Apache Tomcat server).
Developing an understanding of control structures is one of the important tasks in introductory programming courses. To facilitate active learning with immediate feedback, we developed a constraint-based tutor, "...
详细信息
ISBN:
(纸本)9781450383974
Developing an understanding of control structures is one of the important tasks in introductory programming courses. To facilitate active learning with immediate feedback, we developed a constraint-based tutor, "How it Works: Algorithms," that asks students to build an executiontrace of the given algorithm and provides explanatory feedback about the mistakes the student made. The reasons for the student's faults are determined by an inference engine, using a set of rules describing the subject domain. Teachers can create exercises using a simple visual block-based interface and sending them to students as permanent links.
学位级别:M.S.E., Master of Science in Engineering/Education
Profiling mechanisms are an important dynamic analysis approach for source code learners and maintainers to understand the functions, the dynamic behavior, and the purpose of method calls in the hierarchical abstracti...
详细信息
Profiling mechanisms are an important dynamic analysis approach for source code learners and maintainers to understand the functions, the dynamic behavior, and the purpose of method calls in the hierarchical abstraction of the program. However, the output provided by program profilers can be verbose, making the mapping between source code and program behavior time-consuming. This paper presents a new approach for processing and visualizing program execution trace to speed up the understanding process, making profilers' output more intuitive to users. This approach first identifies similar execution phases using the tree edit distance (TED) measure and then visualizes the methods and the phases detected based on the flame graph. Compared with other similar studies, our approach reduces the preprocessing time of the profiler's output and presents the execution phases of the software at various levels of abstraction to the user while maintaining the invocation time and the order of the methods in an execution. To verify the effectiveness of this technique, we also conducted case studies on three different Java programs (Jackson, iText, and FingBugs). The results demonstrate that our approach can process the profiler output and detect similar execution phases in a short time. Users can also locate the position of phases in the execution process by finding similar shapes and simple operations in the visualization.
暂无评论