Classification is a key ontology reasoning task. Several highly-optimised OWL reasoners are designed for different fragments of OWL 2. Combining these delegate reasoners to classify one ontology gives potential benefits, but these may be... more
Classification is a key ontology reasoning task. Several highly-optimised OWL reasoners are designed for different fragments of OWL 2. Combining these delegate reasoners to classify one ontology gives potential benefits, but these may be offset by overheads or redundant subsumption tests. In this paper, we show that with the help of the atomic decomposition, a known ontology partition approach, these redundant subsumption tests can be avoided. We design and implement our classification algorithms and empirically evaluate them.
In this paper, an interpreter design and implementation for a small subset of Python Language using software engineering concepts are presented. This paper reinforces an argument for the application of software engineering concepts in the... more
In this paper, an interpreter design and implementation for a small subset of Python Language using software engineering concepts are presented. This paper reinforces an argument for the application of software engineering concepts in the area of interpreter design but it also focuses on the relevance of the paper to undergraduate computer science curricula. The design and development of the interpreter are also important to software engineering. Some of its components form the basis for different engineering tools. Also, it is important to mention that, this language is based on the Bangla language. English speaker might be unknown with some terms.
One of the main advantages of declarative languages is their clearly established formal semantics, that allows programmers to reason about the properties of programs and to establish the correctness of tools. In particular, declarative... more
One of the main advantages of declarative languages is their clearly established formal semantics, that allows programmers to reason about the properties of programs and to establish the correctness of tools. In particular, declarative debugging is a technique that analyses the proof trees of computations to locate bugs in programs. However, in the case of commercial declarative languages such as the functional language Erlang, sometimes the semantics is only informally defined, and this precludes these possibilities. Moreover, defining semantics for these languages is far from trivial because they include complex features needed in real applications, such as concurrency. In this paper we define a semantics for Core Erlang, the intermediate language underlying Erlang programs. We focus on the problem of concurrency and show how a medium-sized-step calculus, that avoids the details of small-step semantics but still captures the most common program errors, can be used to define an algorithmic debugger that is sound and complete.
The fault debugging progress is influenced by various factors all of which may not be deterministic in nature such as the debugging effort, debugging efficiency and debuggers skill, and debugging methods and strategies. In order to... more
The fault debugging progress is influenced by various factors all of which may not be deterministic in nature such as the debugging effort, debugging efficiency and debuggers skill, and debugging methods and strategies. In order to address these realistic factors that influencing the debugging process we propose an integrated no homogeneous Poisson process (NHPP) based software reliability model. The integrated modelling approach incorporates the effect of imperfect fault debugging environment, fault debugging complexity and learning debuggers’ phenomenon. The debugging phase is assumed to be composed of three processes namely, fault detection, fault isolation and fault removal. The software faults are categorized into three types namely, simple, hard and complex according to their debugging complexity.As the debugging progresses, the fault removal rate changes to capture learning process of the debuggers. In order to relax the ideal debugging environment, two types of imperfect deb...
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no... more
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". This is a draft manuscript dated 1/11/2004. Send comments and errata to
Software debugging is the process of finding and fixing incorrect statements in programs. The process of debugging takes a lot of time and is challenging. Therefore, the field of automated debugging, which is focused on automating the... more
Software debugging is the process of finding and fixing incorrect statements in programs. The process of debugging takes a lot of time and is challenging. Therefore, the field of automated debugging, which is focused on automating the discovery and correction of a failure's underlying cause, has made huge progress in the past. By applying automated approaches to identify and correct any erroneous statements in a program, the cost of producing software may be significantly decreased while also improving the quality of the final product. The purpose of this paper is to shed light on the application of automated debugging in the current market scenario. Techniques like Delta Debugging, Path-based Weakest Preconditions, Fault Localization, and Program Slicing have been demonstrated to be quite effective in dealing with the identification and resolution of inconsistencies. This paper also aims to examine the question, "Is Automated Debugging still a dream? ". Key Words: Aut...
Data races represent the most notorious class of concurrency bugs in multithreaded programs. To detect data races precisely and efficiently during the execution of multithreaded programs, the epoch-based FastTracktechnique has been... more
Data races represent the most notorious class of concurrency bugs in multithreaded programs. To detect data races precisely and efficiently during the execution of multithreaded programs, the epoch-based FastTracktechnique has been employed. However, FastTrackhas time and space complexities that depend on the maximum parallelism of the program to partially maintain expensive data structures, such as vector clocks. This paper presents an efficient algorithm, callediFT, that uses only the epochs of the access histories. Unlike FastTrack, our algorithm requiresO(1)operations to maintain an access history and locate data races, without any switching between epochs and vector clocks. We implement this algorithm on top of the Pin binary instrumentation framework and compare it with other on-the-fly detection algorithms, including FastTrack, which uses a state-of-the-art happens-before analysis algorithm. Empirical results using the PARSEC benchmark show thatiFT reduces the average runtime...
Data races represent the most notorious class of concurrency bugs in multithreaded programs. To detect data races precisely and efficiently during the execution of multithreaded programs, the epoch-based FastTracktechnique has been... more
Data races represent the most notorious class of concurrency bugs in multithreaded programs. To detect data races precisely and efficiently during the execution of multithreaded programs, the epoch-based FastTracktechnique has been employed. However, FastTrackhas time and space complexities that depend on the maximum parallelism of the program to partially maintain expensive data structures, such as vector clocks. This paper presents an efficient algorithm, callediFT, that uses only the epochs of the access histories. Unlike FastTrack, our algorithm requiresO(1)operations to maintain an access history and locate data races, without any switching between epochs and vector clocks. We implement this algorithm on top of the Pin binary instrumentation framework and compare it with other on-the-fly detection algorithms, including FastTrack, which uses a state-of-the-art happens-before analysis algorithm. Empirical results using the PARSEC benchmark show thatiFT reduces the average runtime...
Detection and analysis of faults in parallel applications is a difficult and tedious process. Existing tools attempt to solve this problem by extending traditional debuggers to inspect parallel applications. This technique is limited... more
Detection and analysis of faults in parallel applications is a difficult and tedious process. Existing tools attempt to solve this problem by extending traditional debuggers to inspect parallel applications. This technique is limited since it must connect to each computing processes and will not scale to next generation systems running on hundreds of thousands of processors. Additionally, existing techniques for monitoring programs and collecting runtime information can scale but are unable to provide enough interaction to find complex software faults. This paper describes a novel parallel application debugger that combines parallel application debugging and a programmable interface with runtime event gathering and automated offline analysis. This debugger is shown to diagnose several common parallel application faults through offline event analysis.
Bugs vary in their root causes and their revealed behaviors; some may cause a crash or a core dump, while others may cause an incorrect or missing output or an unexpected behavior. Moreover, most bugs are revealed long after their actual... more
Bugs vary in their root causes and their revealed behaviors; some may cause a crash or a core dump, while others may cause an incorrect or missing output or an unexpected behavior. Moreover, most bugs are revealed long after their actual cause. A variable might be assigned early in the execution, and that value may cause a bug far from that last assigned place. This often requires users to manually track heuristic information over different execution states. This information may include a trace of specific variables’ values and their assigned locations, functions and their returned values, and detailed execution paths. This chapter introduces Dynamic Temporal Assertions (DTA) into the conventional source-level debugging session. It extends a typical gdb-like source-level debugger named UDB with on-the-fly temporal assertions. Each assertion is capable of: (1) validating a sequence of execution states, named temporal interval, and (2) referencing out-of-scope variables, which may not...
Debugging and profiling are probably the two most important things, besides writing code, for which you can use Apache NetBeans. Debugging is the art of figuring out problems and their root causes. Apache NetBeans provides a very... more
Debugging and profiling are probably the two most important things, besides writing code, for which you can use Apache NetBeans. Debugging is the art of figuring out problems and their root causes. Apache NetBeans provides a very feature-rich debugging environment from multiple sessions to multiple languages. If debugging makes your code right, profiling will make it run fast. Apache NetBeans contains one of the most advanced profiling engines for memory and CPU profiling based on the JFluid technology developed by Sun Microsystems. Although Apache NetBeans supports debugging for a lot of different programming languages and project types, the following chapter focuses on support for the JVM and the Java Language.
Background/Objective Since testing consumes more than 50% of the total resources for software development, software reliability growth models (SRGMs) are utilized during system testing phase to check attainment of the target reliability.... more
Background/Objective Since testing consumes more than 50% of the total resources for software development, software reliability growth models (SRGMs) are utilized during system testing phase to check attainment of the target reliability. While there is a plethora of continuous time SRGMs, there are only a few discrete models, and hence there is a need for further research in this area to model datasets from modern projects.
Decompiling is often used in conjunction with recovering lost source code, or in reverse-engineering code when we do not have access to the source. Here we describe a novel use: places where accurate position reporting, even in the... more
Decompiling is often used in conjunction with recovering lost source code, or in reverse-engineering code when we do not have access to the source. Here we describe a novel use: places where accurate position reporting, even in the presence of optimized code or where source code is not available, could be helpful. Examples include tracebacks, debuggers, core dumps and so on. Also new is using decompilation to assist debugging at runtime. We show how more conventional methods of source-code reporting are vague and ambiguous. Although effecting a pervasive change in a compiler is arduous and error-prone, a decompiler can be developed somewhat independently. However, for the vast number of programming languages, decompilers do not exist. This is true even for dynamic interpreted languages where there is little going on in the way of “compilation.” Traditionally, decompilers are labor intensive and ad hoc, and their construction might also be unfamiliar. So this paper shows how to ameli...
This paper describes a study of Java program debugging using a multiple window software debugging environment (SDE). In this study we have replicated an earlier study by Romero et al.(2002a, 2002b, 2003), but with the difference of using... more
This paper describes a study of Java program debugging using a multiple window software debugging environment (SDE). In this study we have replicated an earlier study by Romero et al.(2002a, 2002b, 2003), but with the difference of using both the Restricted Focus Viewer and the eye tracking equipment to track the visual attention of the subjects. The study involved ten subjects debugging short Java programs using the SDE. The SDE included three different representations of the Java programs, those of the program source ...
This paper describes a study of Java program debugging using a multiple window software debugging environment (SDE). In this study we have replicated an earlier study by Romero et al.(2002a, 2002b, 2003), but with the difference of using... more
This paper describes a study of Java program debugging using a multiple window software debugging environment (SDE). In this study we have replicated an earlier study by Romero et al.(2002a, 2002b, 2003), but with the difference of using both the Restricted Focus Viewer and the eye tracking equipment to track the visual attention of the subjects. The study involved ten subjects debugging short Java programs using the SDE. The SDE included three different representations of the Java programs, those of the program source ...
Detection and analysis of faults in parallel applications is a difficult and tedious process. Existing tools attempt to solve this problem by extending traditional debuggers to inspect parallel applications. This technique is limited... more
Detection and analysis of faults in parallel applications is a difficult and tedious process. Existing tools attempt to solve this problem by extending traditional debuggers to inspect parallel applications. This technique is limited since it must connect to each computing processes and will not scale to next gen- eration systems running on hundreds of thousands of processors. Additionally, existing techniques for monitoring programs and collecting runtime information can scale but are unable to provide enough interaction to find complex software faults. This paper describes a novel parallel application debugger that combines parallel application debugging and a programmable interface with runtime event gathering and automated offline analysis. This debugger is shown to diagnose several common parallel application faults through offline event analysis.