Results 1 -
8 of
8
Multithreaded Dependence Graphs for Concurrent Java Programs
- In Proceedings of 1999 International Symposium on Software Engineering for Parallel and Distributed Systems
, 1999
"... Understanding program dependencies in a computer program is essential for many software engineering activities including program slicing, testing, debugging, reverse engineering, and maintenance. In this paper, we present a dependence-based representation called multithreaded dependence graph, which ..."
Abstract
-
Cited by 12 (1 self)
- Add to MetaCart
Understanding program dependencies in a computer program is essential for many software engineering activities including program slicing, testing, debugging, reverse engineering, and maintenance. In this paper, we present a dependence-based representation called multithreaded dependence graph, which extends previous dependence-based representations, to represent program dependencies in a concurrent Java program. We also discuss some important applications of a multithreaded dependence graph in a maintenance environment for concurrent Java programs. 1 Introduction Java is a new object-oriented programming language and has achieved widespread acceptance because it emphasizes portability. Java has multithreading capabilities for concurrent programming. To provide synchronization between asynchronously running threads, the Java language and runtime system uses monitors. Because of the nondeterministic behaviors of concurrent Java programs, predicting, understanding, and debugging a conc...
Dependence Analysis of Java Bytecode
- In IEEE Annual International Computer Software and Applications Conference
, 2000
"... Understanding program dependencies in a computer program is essential for many software engineering tasks such as program understanding, testing, debugging, reverse engineering, and maintenance. In this paper, we present an approach to dependence analysis of Java bytecode, and discuss some applicati ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
Understanding program dependencies in a computer program is essential for many software engineering tasks such as program understanding, testing, debugging, reverse engineering, and maintenance. In this paper, we present an approach to dependence analysis of Java bytecode, and discuss some applications of our technique, which include Java bytecode slicing, understanding, and testing. 1 Introduction Java is a new object-oriented programming language and has achieved widespread acceptance because it emphasizes portability [1]. In Java, programs are being compiled into a portable binary format call bytecode. Every class is represented by a single class file containing class related data and bytecode instructions (Figure 1 shows a simple Java class Test and its corresponding bytecode instructions). These files are loaded dynamically into an interpreter, i.e., the Java Virtual Machine (JVM) [14] and executed. Recently, more and more Java applications are routinely transmitted over the int...
A Dependence-Based Representation for Concurrent Object-Oriented Software Maintenance
- In Procedings of the 2nd Euromicro Conference on Software Maintenance and Reengineering
, 1998
"... Software maintenance is a costly process because of the reason that each modification to a program must take into account many complex dependence relationships in the existing software. An understanding of program dependences is therefore an inevitable step to efficient software change. In this pape ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
Software maintenance is a costly process because of the reason that each modification to a program must take into account many complex dependence relationships in the existing software. An understanding of program dependences is therefore an inevitable step to efficient software change. In this paper we propose a dependence-based representation named the system dependence net (SDN), which extends previous dependence-based representations to represent various program dependences in concurrent object-oriented programs. An SDN of a concurrent object-oriented program consists of a collection of dependence graphs each representing a main procedure, a free standing procedure, or a method in a class of the program. It also consists of some additional arcs to represent direct dependences between a call and the called procedure /method and transitive interprocedural data dependences. An SDN can be used to represent either object-oriented features or concurrency issues in a concurrent object-ori...
A Coherent Family of Analyzable Graphical Representations for Object-Oriented Software
, 1996
"... Many software engineering tools and techniques rely on graphical representations of software, such as control flow graphs, program dependence graphs, or system dependence graphs. To apply these tools and techniques to object-oriented software, we cannot necessarily use existing graphical representat ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Many software engineering tools and techniques rely on graphical representations of software, such as control flow graphs, program dependence graphs, or system dependence graphs. To apply these tools and techniques to object-oriented software, we cannot necessarily use existing graphical representations of procedural software. Representations of object-oriented software, like those for procedural software, must depict individual procedures (methods) and entire programs; however, they must also depict classes and their interactions, and account for the effects of inheritance, polymorphism, and aggregation. These representations should facilitate the use of existing program analysis tools and techniques, rather than requiring us to create new techniques. A system for constructing and managing these representations should take advantage of the code reuse inherent in object-oriented software, by reusing representational components. In this paper, we describe a coherent family of graphical ...
Transformation-based diagnosis of student programs for programming tutoring systems
- IEEE Transactions on Software Engineering
, 2003
"... Abstract: A robust technology that automates the diagnosis of students ’ programs is essential for programming tutoring systems. Such technology should be able to determine whether programs coded by a student are correct. If a student’s program is incorrect, the system should be able to pinpoint err ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Abstract: A robust technology that automates the diagnosis of students ’ programs is essential for programming tutoring systems. Such technology should be able to determine whether programs coded by a student are correct. If a student’s program is incorrect, the system should be able to pinpoint errors in the program as well as explain and correct the errors. Due to the difficulty of this problem, no existing system performs this task entirely satisfactorily, and this problem still hampers the development of programming tutoring systems. This paper describes a transformation-based approach to automate the diagnosis of students ’ programs for programming tutoring systems. Improved control-flow analysis and data-flow analysis are used in program analysis. Automatic diagnosis of student programs is achieved by comparing the student program with a specimen program at the semantic level after both are standardized. The approach was implemented and tested on 525 real student programs for nine different programming tasks. Test results show that the method satisfies the requirements stated above. Compared to other existing approaches to automatic diagnosis of student programs, the approach developed here is more rigorous and safer in identifying student programming errors. It is also simpler to make use of in practice. Only specimen programs are needed for the diagnosis of student programs. The techniques of program standardization and program comparison developed here may also be useful for research in the fields of program understanding and software maintenance.
Contextual Def-Use Associations for Object Aggregation
, 2001
"... This paper presents a novel formulation of de nitions, uses, and def-use associations for objects in object-oriented programs by exploiting the relations that occur between classes and their instantiated objects due to aggregation. Contextual def-use associations are computed bygenerating a partial ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
This paper presents a novel formulation of de nitions, uses, and def-use associations for objects in object-oriented programs by exploiting the relations that occur between classes and their instantiated objects due to aggregation. Contextual def-use associations are computed bygenerating a partial call sequence for each def and use based on object aggregation relations. By extending an escape points-to graph representation of the program, we have developed and implemented three strategies for achieving di erent levels of context for contextual def-use associations. Our experiments reveal that with all three strategies, multiple unique contextual def-use associations related to the same traditional (context-free) association are often generated. Contextual def-use associations are particularly useful for increasing test coverage and focusing the testing on critical method invocation sequences of object-oriented programs.
Understanding novice errors and error paths in Object-oriented programming through log analysis
- In Proceedings of Workshop on Educational Data Mining at the 8th International Conference on Intelligent Tutoring Systems (ITS 2006
, 2006
"... programming through log analysis ..."
Automated tutoring for novices in object-oriented programming
, 2009
"... This thesis is the result of my own work, except where explicitly acknowledged in the text. Marie-Helene Nienaltowski, September 2009 The best way to learn programming is to write programs. For novices, however, it can be daunting to solve their rst programming exercises, and discouraging when they ..."
Abstract
- Add to MetaCart
This thesis is the result of my own work, except where explicitly acknowledged in the text. Marie-Helene Nienaltowski, September 2009 The best way to learn programming is to write programs. For novices, however, it can be daunting to solve their rst programming exercises, and discouraging when they are unable to progress any further and cannot get help immediately. Oneon-one tutoring could provide the necessary support and motivation for novices to persevere and ultimately acquire the necessary skills but it is usually unavailable due to resource constraints. This dissertation introduces a novel methodology for identifying students ' intentions and providing automated feedback. It presents the design and implementation of a prototype computer tutor that assists novices in their rst steps in Object-Oriented Programming. The Intention Matching and Feedback Generation methodology identi es the student's intention, to e ectively diagnose errors and guide the student in solving the task. The intended bene ts

