
Toshihiro Kamiya- Ph.D Eng.
- Professor at Shimane University
Toshihiro Kamiya
- Ph.D Eng.
- Professor at Shimane University
About
70
Publications
15,258
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
2,726
Citations
Introduction
Toshihiro Kamiya currently works at the Department of Mathematics and Computer Science, Shimane University. Toshihiro does research in Program Analysis, Software Engineering.
Skills and Expertise
Current institution
Additional affiliations
Education
April 1996 - March 2001
Graduate School, Osaka University
Field of study
- Software Engineering
Publications
Publications (70)
The diversity of programming languages is growing, making the language extensibility of code clone detectors crucial. However, this is challenging for most existing clone detection detectors because the source code handler needs modifications, which require specialist-level knowledge of the targeted language and is time-consuming. Multilingual code...
In this retrospective article of our TSE paper ’CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code’[24], we revisit the reasons why we became deeply involved in code clone research, and explore what has driven its frequent citation in many studies. Furthermore, we reflect on why not only our own lab, but...
For various reasons, programming languages continue to multiply and evolve. It has become necessary to have a multilingual clone detection tool that can easily expand supported programming languages and detect various code clones is needed. However, research on multilingual code clone detection has not received sufficient attention. In this study,...
Investigating the code fragments of code clones detected by code clone detection tools is a time-consuming task, especially when a large number of reference source files are available. This paper proposes (i) a method for clustering a clone class, which is detected by code clone detection tools using syntactic similarity, based on topic similarity...
CCFinderX is a successor tool that advances the concepts of CCFinder (2002) and Gemini (2002), and is a standalone environment for code clone detection and analysis. CCFinderX is designed as an interactive analysis environment that allows users to switch between views of scatter plot, file, metrics, and source text, for applying to large code bodie...
Understanding modifications to a software product is essential in software maintenance. To help programmers understand modifications, especially how code changes in a refac-toring, this paper presents a semi-automated dynamic analysis to compare two revisions of a product. The approach basically detects "similar but different" sub-tree pairs betwee...
This paper presents topics introducing “parameter
sensitivity” in a dynamic code-clone detection. First, this paper
briefly describes a dynamic code-clone detection method and
possible implementation of parameter sensitivity in the method.
Second, this paper describes three topics of parameter sensitivity:
untangling clones, introducing value seman...
Including two files:
* codeskip.py: A new implementation to extract code skip data from a svn repository.
* skip-data-of-svnmirror-base-r179637.txt.gz: A result which apply the tool to a [BSD OS repository](http://challenge.softwareprocess.es/svnmirror-base-r179637.tbz2).
This paper presents a code-clone detection and its analysis method, based on an execution-semantic and arbitrary-granularity model[8] of code fragments The principal goal of introducing the proposed detection method is to provide a code-clone detection method suitable for programming languages, where software developers can define their own " contr...
This paper presents a code-search method, which includes an algorithm of keyword code-search and a prototype implementation. In this paper, a query is a set of keywords and a search result is a set of execution paths fulfilling the query, that is, each of the execution paths includes all of the keywords. Here, an execution path represents one of al...
This paper presents a clone-detection method/tool currently under devel- opment. This tool is useful as a code-clone search through the entire lifecycle of a software product; The tool searches code examples and analyzes of code clones in both preventive and postmortem ways[LRHK10]. The approach is based on a sequence equivalence on execution paths...
Agec is a semantic code-clone detection tool from Java bytecode, which (1) applies a kind of abstract interpretation to bytecode as a static analysis, in order to generate n-grams of possible execution traces, (2) detects the same n-grams from distinct places of the bytecode, and (3) then reports these n-grams as code clones. The strengths of the t...
To improve clone-detection methods and to enable new analysis methods with clone detection, e.g., to detect a wider range of bad smells and anti-patterns, this paper introduces a concept context clone, in a form comparable to the (traditional) content clone. A context clone is based on the similarity of the contexts in which code fragment is used,...
This paper explores the need for 'history-aware' searches, by experimentally showing a development process that includes code fragments which disappear at a revision and appear again at a later revision. Some of these code re-appearances are not a result of a revert command of a version control system, but a result of a developer who copied a code...
To answer the question, "Which kind of code clone has deleterious effects on maintainability?" this paper proposes a classification of code clones with a configuration (or Makefile) that determines which set of source files are compiled and linked.
The (extended position) paper discusses the reason why keyword-based search engines may not be effective in code search, and
shows an case study where which kind of concepts in source code can be effectively searched by keyword code search engines.
This paper presents a novel design of search tools in reverse engineering, which enables describing core searching tasks (such as pattern searching, extraction, filtering, etc.) in a separated way from the management task of location data (such as line number or file name). By using example programs with a prototype implementation, we explain how t...
This (extended) position paper describes a future perspective of code-clone detection and analysis me- thods, in which code-clone detection and analysis me- thods are interoperated, or integrated with various kinds of analysis methods, in order to open new possi- bilities of research and applications.
This tool demo presents a tool prototype named VACI, which extracts relations between identifiers and their contexts in source code, and classifies (sets of) identifier names. The tool has two features; the first feature analyzes software for refactorings to enable users to check the adequateness of identifier names with context information. The se...
Maintaining software systems is becoming more difficult as the size and complexity of software increase. One factor that complicates software maintenance is the presence of code clones. A code clone is a code fragment that has identical or similar code fragments to it in the source code. Code clones are introduced for various reasons such as reusin...
Given two software systems, it is important to be able to objectively know how much those systems differ. However, it has not been easy to quantitatively measure the mutual differences between two systems. In this paper, the authors introduced similarity metrics for the similarity between software systems and the Similarity Metrics Measuring Tool (...
A software system developed by object-oriented programming operates by message exchanges among the objects allocated by the system. To understand such system behavior we need to grasp how the objects are communicating. However, it is difficult to understand the behavior of such system, since it has many elements determined dynamically, and many obj...
It is generally said that code clones are one of the factors to make software maintenace difficult. They are pairs or sets of code portions in source files that are identical or similar to each other. If some bugs are found in a code portion, it is nessesary to correct them in its all clones. However, in large-scale sofrware, it is very difficult t...
This report summarizes the proceedings of a workshop discussion session presentation and visualization of aspects relating to duplicated, copied, or cloned code. The main outcomes of the working session were: (a) a realization that two researchers had independently generated very similar methods for browsing and visualization clone "clusters," and...
Assertion checking is a powerful tool to detect software faults during debugging, testing and maintenance. Although assertion documents the behavior of one component, it is hard to document relations and interactions among several objects since such assertion statements are spread across the modules. Therefore, we propose to modularize such asserti...
Generally, code clones are regarded as one of the factors that make software maintenance more difficult. A code clone is a set of source code fragments identical or similar to each other from the viewpoint of software maintainability, code clones should be removed. However, sometimes there are dependency relations among each of which belong to the...
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...
In this paper, we explain our refactoring support tool Aries. Aries characterizes code clones by several metrics, and suggests how to remove them.
Abstract It is an important and intriguing issue to know the quantitative similarity of large software systems. In this paper, a similarity metric between two sets of source code files based on the correspondence of overall source code lines is proposed. A Software similarity MeAsurement Tool SMAT was developed and applied to various versions of an...
The code clone (a duplicated code section in the source files of software) is one of the factors that complicate software maintenance. However, few empirical studies have analyzed the status quo of code clones. In this paper we conduct an extensive analysis of code clones using 125 packages of open source software written in C language, and suggest...
In this paper, we explain our refactoring support tool Aries. Aries characterizes code clones by several metrics, and suggests how to remove them.
Software maintenance is the most expensive activity in software development. Many software companies spent a large amount
of cost to maintain the existing software systems. In perfective maintenance, refactoring has often been applied to the software
to improve the understandability and complexity. One of the targets of refactoring is code clone. A...
Recently, code clone has been regarded as one of factors that make software maintenance more di#cult. A code clone is a code fragment in a source code that is identical or similar to another. For example, if we modify a code fragment which has code clones, it is necessary to consider whether we have to modify each of its code clones. There are two...
Software maintenance is the most expensive activity in software development. Many software companies spent a large amount of cost to maintain the existing software systems. In perfective maintenance, refactoring has often been applied to the software to improve the understandability and complexity. One of the targets of refactoring is code clone. A...
ion extended for AOP. In this manuscript, we use an example of a file updater class written in Java. This class has one public method update_file and three private methods called from the public method. Programmers have some assumptions in the method and each assumption is described as a comment with the keyword ASSUMPTION. 1 class FileUpdater { Fi...
Code clone has been regarded as one of factors that make software maintenance more difficult. A code clone is a code fragment in a source code that is identical or simi- lar to another. For example, if we modify a code fragment which has code clones, it is necessary to consider whether we have to modify each of its code clones. Hence, removal of co...
Software maintenance is the most expensive activity in software development process. It have been reported that many software companies spent a large amount of cost to maintain the existing systems. Refactoring is an effective technique to conduct the perfective maintenance. It is de-fined as "the process of changing a software system in such a way...
Maintaining software systems is getting more complex and difficult task. Code clone is one of the factors that make software maintenance more difficult. A code clone is a code portion in source files that is identical or similar to another. If some faults are found in a code clone, it is necessary to correct the faults in its all code clones. We ha...
A code clone is a code portion in source files that is identical or similar to another. Since code clones are believed to reduce the maintainability of software, several code clone detection techniques and tools have been proposed. This paper proposes a new clone detection technique, which consists of the transformation of input source text and a t...
Object-oriented paradigm is widely adopted in software development, but it has its own problem to make such software evolution difficult. In this paper, I will propose a new paradigm named SOMA (solid object and medium artifact) as a variation of OO paradigm, which enables dynamic and robust evolution of software products. Operations to modify soft...
It is an important and intriguing issue to know the quantitative similarity of large software systems. In this paper, a similarity metric between two sets of source code files based on the correspondence of overall source code lines is proposed. A Software similarity MeAsurement Tool SMAT was developed and applied to various versions of an operatin...
Maintaining software systems is becoming a more complex and difficult task, as the scale becomes larger. It is generally said that code cloning is one of the factors that make software maintenance difficult. A code clone is a code portion in source files that is identical or similar to another. If some faults are found in a code clone, it is necess...
It is generally accepted that a code clone is one factor making software maintenance difficult. A code clone is a code portion in source files that is identical or similar to another. Clones are introduced because of various reasons such as reusing code by 'copy-and-paste' and so on. Since developers usually modify the copied-and-pasted code portio...
Existing research suggests that the code clone (duplicated code) is one of the factors that degrades the design and the structure of software and lowers the software quality such as readability and changeability. However, the influence of code clones on software quality has not been quantitatively clarified yet. We have tried to quantitatively clar...
Abstract In this paper, we present a maintenance support environ- ment based on code clone analysis, called Gemini.
This paper describes two software maintenance support tools, CCFinder (Code Clone Finder) and JAAT (Java Alias Analysis Tool), for Java programs. CCFinder identifies code clones in Java programs, while JAAT executes alias analysis for Java programs.
Introduction WMC(Weighted Method per Class) is one of the Chidh berand Kemerer's metrics (C&K metrics) which are the most well-known complexity metrics for objectoriented software.WMC measures the complexity of the target classand isd.BzI as the total complexity of the method includF in the class.However, what is the complexity of a method has not...
A code clone is a code portion in source files that is identical or similar to another. Since code clones generally reduce maintainability of software, several code clone detection techniques and tools have been proposed. This paper proposes a new clone detection technique, which consists of transformation of input source text and token-by-token co...
Measuring software products and processes is essential for improving software productivity and quality. In order to evaluate the complexity of object-oriented software, several complexity metrics have been proposed. Among them, Chidamber and Kemerer’s metrics are the most well-known for object-oriented software. Their metrics evaluate the complexit...
To analyze the complexity of object-oriented software, several metrics have been proposed. Among them, Chi- damber and Kemerer's metrics are well-known ones as object-oriented metrics. Also, the effectiveness has been empirically evaluated from the viewpoints of estimating the fault-proneness of object-oriented software. In the evaluations, their m...
Measuring software product and the development process is essential for improving software productivity and quality. Software metrics are quantitative measures of software products and process. For example, complexity metrics are used to evaluate maintenance difficulty of a program. In order to evaluate the complexity of object-oriented program, se...
The tool named IIAnalyzer is a reverse engineering tool for programs written in Java. By identifying and analyzing interactions between the objects that are instantiated in a program execution, the tool presents the user with diagrams helpful in understanding a dynamic structure and characteristics of the target program. The current version provide...
It is generally said that code clone is a factor to make software maintenance difficult. A code clone is the set of code portions in source files that are identical or similar to another. If we make some changes in such a code portion, it might be necessary to apply the same changes in its clones. A code clone introduced by 'copy-and-paste' reusing...
Existing researches suggest that the code clone (duplicated code section) is one of the factors that degrades the design and structure of software and lowers the various quality attributes. However, the influence of code clones on software quality has not been quantitatively clari- fied yet. In this paper, we quantitatively analyzed the relation be...
This report summarizes the proceedings of a workshop dis- cussion session presentation and visualization of aspects relating to dupli- cated, copied, or cloned code. The main outcomes of the working session were: (a) a realization that two researchers had independently generated very similar methods for browsing and visualization clone "clusters",...
Abstract Recently, code clone has been regarded as one of factors that make software maintenance more dicult. A code clone is a code fragment in a source code that is identical or similar to another. For example, if we modify a code fragment which has code clones, it is necessary to consider whether we have to modify each of its code clones. There...
Interactive systems that support intellectual creative tasks require not only to be useful and usable by satisfying their targeted functionalities, but also to be desirable for individual users by providing appropriate interaction styles. This paper proposes a descriptive formal language, CHIOPA (Computer-Human Interaction on Objects, Properties, a...