Takashi Ishio

Learn More
Embedded software frequently uses interrupts for timer or I/O processing. If a memory area is used by both an interrupt handler and other routines at the same time, the embedded system has the potential to fail because of unexpected data in the memory. To detect the race conditions of memory, this paper proposes a method of interrupt testing on a CPU(More)
Aspect-oriented programming (AOP) introduces a new software module unit named aspect to encapsulate crosscutting concerns. While AOP modularizes crosscutting concerns to improve maintainability and reusability, AOP introduces a new factor of complexity. It is difficult to find defects caused by an aspect modifying or preventing the behavior of other objects(More)
Visualizing collaborations of objects is important for developers understanding and debugging an object-oriented program. Many techniques and tools are proposed to visualize dynamic collaborations involved in an execution trace of a system, however, an execution trace may be too large to be transformed into a single diagram. In this paper, we propose a(More)
One of the issues in software evolution is debugging. Debugging large and complex software systems evolved requires a lot of effort since it is very difficult to localize and identify faults. Therefore, reducing the effort of debugging process is an important step towards efficient software evolution. Program slicing, especially dynamic slicing, has been(More)
Code clone detection tools may report a large number of code clones, while software developers are interested in only a subset of code clones that are relevant to software development tasks such as refactoring. Our research group has supported many software developers with the code clone detection tool CCFinder and its GUI front-end Gemini. Gemini shows(More)
A software system is changed many times. When we try to change software, we must understand how the software is implemented, especially the functions to be modified. However, such repeated changes may cause situations in which there is no document which reflects the changes and represents the behavior of the software correctly. So, it is important to(More)
With the popularity of open source library (re)use in both industrial and open source settings, `trust' plays vital role in third-party library adoption. Trust involves the assumption of both functional and non-functional correctness. Even with the aid of dependency management build tools such as Maven and Gradle, research have still found a latency to(More)
Visualizing an execution trace of an object-oriented system as sequence diagrams is effective to understand the behavior of the system. However, sequence diagrams extracted from an execution trace are too large for developers to inspect since a trace involves a large number of objects and method calls. To support developers to understand extracted sequence(More)
Amida is a toolkit to record an execution trace of a Java program and visualize the trace as a sequence diagram. Amida supports our novel approach to efficiently detecting phases; the algorithm precisely divides a long execution trace into a series of smaller diagrams corresponding to features (or tasks to achieve a feature) without deep knowledge on a(More)
A functional concern is often implemented by collaborative software modules. When developers modify or reuse the implementation of a concern, they need to find the module units contributing to the concern and understand how the units collaborate with one another. Although program slicing is an automatic method to extract relationship among program elements(More)