Norihiro Yoshida's research while affiliated with Nagoya University and other places

Publications (84)

Preprint
Full-text available
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,...
Preprint
Since IoT systems provide services over the Internet, they must continue to operate safely even if malicious users attack them. Since the computational resources of edge devices connected to the IoT are limited, lightweight platforms and network protocols are often used. Lightweight platforms and network protocols are less resistant to attacks, inc...
Chapter
Programmers tend to write code clones unintentionally, which can be easily avoided. Clone change management is a crucial issue in open-source software (OSS) and industrial software development (e.g., development of social infrastructure, financial systems, and medical equipment). When industrial software developers have to fix a defect, they must f...
Conference Paper
Team exercises for software development project-based learning (SDPBL) adopting an agile development model have become popular for training and education worldwide. In the agile development model, an essential part is the build process. In this study, we investigated students’ build errors in agile SDPBL projects by monitoring and collecting logs o...
Conference Paper
During embedded system development, developers frequently change and reuse the existing C source code for the development of a new but behaviorally similar product. Such frequent changes generally decrease the understandability of C source code although the developers have to understand how it behaves and how to reuse it. So far, much research has...
Conference Paper
During the development of an embedded system, state transition models are frequently used for modeling at several abstraction levels. Unfortunately, specification documents including such model are often lost or not up to date during maintenance/reuse. Based on our experience in industrial collaboration, we present Micro State Transition Table (MST...
Preprint
Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure. Not only researchers, but also practitioners, need to know about past refactoring instances performed in a software development project. So far, a number of techniques have been propose...
Conference Paper
We have been doing code clone analysis with industry collaborators for a long time, and have been always asked a question, "OK, I understand my system contains a lot of code clones, but how slim will it be after merging redundant code clones?" As a software system evolves for long period, it would increasingly contain many code clones due to quick...
Conference Paper
Team exercises for software development project-based learning (SDPBL) adopting an agile development model have become popular for training and education worldwide. In the agile development model, an essential part is the build process. In this study, we investigated students' build errors in agile SDPBL projects by monitoring and collecting logs o...
Article
Full-text available
This paper proposes an approach to identify pitfalls of students in programming exercise by using snapshots of source code. Proposed method calculates distances between a snapshot and submitted source code by student. This method identifies pitfalls based on these distances and then, provides pitfalls to the lecturers. We applied our method into th...
Article
There are many software systems that have been used and maintained for a long time. By undergoing such a maintenance process, similar code fragments were intentionally left in the source code of such software, and knowing how to manage a software system that contains a lot of similar code fragments becomes a major concern. In this study, we propose...
Article
Full-text available
ソフトウェア開発においてビルドは重要な工程の1つである. 多くの既存研究が企業のソフトウェア開発においてビルドが成果物の品質へ与える影響やビルドの支援手法を調査している. 一方,高等教育機関で開講されている,ソフトウェア開発PBL演習における学生のビルド活動の実態調査は十分に行われていない. そこで,我々はアジャイル開発を取り入れたソフトウェア開発PBLにおいて,学生のビルドエラーの実態調査を行い,学生が陥りやすいビルドエラーの特徴を分析した. 具体的には,学生が個人の開発環境において行うローカルビルドと,チーム共用開発環境で行われるリモートビルドを調査した. ローカル/リモートビルドにおけるエラーの種類,各種エラーの回数や解決時間を調査・比較したところ, 学生も実務家同様ファイル間の要...
Conference Paper
Behavior preservation often bothers programmers in refactoring. This poster paper proposes a new approach that tames the behavior preservation by introducing the concept of a frame. A frame in refactoring defines stakeholder's individual concerns about the refactored code. Frame-based refactoring preserves the observable behavior within a particula...
Conference Paper
Code clone is one of the factors that makes software maintenance more difficult. Once a developer find a defect in a code fragment, he/she has to inspect the all of the code clones of the code fragment. In this study, we investigated the effectiveness of query-based use of a vector-based clone detection tool for supporting simultaneous fixing of bu...
Conference Paper
Impure refactoring is defined as a refactoring operation that was saved together with non-refactoring changes or several refactoring operations were saved at the same location stored in source code repositories. Many of existing approaches are not correctly viable for detecting impure refactoring. To mitigate this problem, we propose an approach th...
Conference Paper
Full-text available
In this paper, we present a collection of Modern Code Review data for five open source projects. The data showcases mined data from both an integrated peer review system and source code repositories. We present an easy–to–use and richer data structure to retrieve the (a) People, (b) Process, and (c) Product aspects of the peer review. This paper pr...
Conference Paper
Modern OSS projects have adopted Git to manage versions of their source code and GitHub for hosting their Git repositories. GitHub provides a characteristic feature notably pull request, and many projects adopt pull-based development model by using it. This development model offers an opportunity to review the source code before merging it into the...
Article
Full-text available
Software peer review is regarded as one of the most important approaches to preserving software quality. Due to the distributed collaborations in Open Source Software (OSS) development, the review techniques and processes conducted in OSS environment differ from the traditional review method that based on formal face-to-face meetings. Unlike other...
Conference Paper
The size of software increases in recent years, and the number of classes and relationships between classes are also increasingly complicated. We have a large interest about the way to classify a great deal of components effectively. Our research group proposed a component rank model in the past, and the model calculates an evaluation value of each...
Conference Paper
Full-text available
We present a preliminary investigation of Stack Overflow to reveal practitioner's interests about code clones. We then discuss possible future directions of research on code clones.
Conference Paper
Full-text available
Software code review is an inspection of a code change by an independent third-party developer in order to identify and fix defects before an integration. Effectively performing code review can improve the overall software quality. In recent years, Modern Code Review (MCR), a lightweight and tool-based code inspection, has been widely adopted in bo...
Article
So far, many approaches for detecting code clones have been proposed based on the different degrees of normalizations (e.g. removal of white spaces, tokenization, and regularization of identifiers). Different degrees of normalizations lead to different granularities of source code to be detect as code clones. To investigate how the normalizations i...
Article
Refactoring is the process of changing the internal structure of software without changing its external behavior. So far, numerous tools have been proposed on that refactoring support. However, it is difficult for existing refactoring support tools to support consecutively co-occurred refactorings. To alleviate this problem, a tool which supports c...
Article
So far, a lot of techniques have been developed on the detection of code clones (i.e., duplicated code) in large-scale source code. Currently, the code clone research community is gradually shifting its focus of attention from the detection to the management (e.g., clone refactoring). During clone management, developers need to understand how and w...
Conference Paper
Full-text available
ReDA(http://reda.naist.jp/) is a web-based visualiza-tion tool for analyzing Modern Code Review (MCR) datasets for large Open Source Software (OSS) projects. MCR is a commonly practiced and lightweight inspection of source code using a support tool such as Gerrit system. Recently, mining code review history of such systems has received attention as...
Conference Paper
Full-text available
Effectively performing code review increases the quality of software and reduces occurrence of defects. However, this requires reviewers with experiences and deep understandings of system code. Manual selection of such reviewers can be a costly and time-consuming task. To reduce this cost, we propose a reviewer recommendation algorithm determining...
Article
Although code clones (i.e. code fragments that have similar or identical code fragments in the source code) are regarded as a factor that increases the complexity of software maintenance, tools for supporting clone refactoring (i.e. merging a set of code clones into a single method or function) are not commonly used. To promote the development of r...
Article
Code clone analysis is valuable because it can reveal reuse behaviours efficientlyfrom software repositories. Recently, some code reuse analyses using clonegenealogies and code clones over multiple projects were conducted. However, mostof the conventional analyses do not consider the developers’ individual difference toreuse behaviors. In this pape...
Article
In order to develop and improve clone analysis techniques for industrial application, it is necessary to know about how those techniques provide impacts on clone management in industry. In this position paper, we discuss approaches to observing the practical impact of clone analysis on the basis of our experience in applying clone analysis into an...
Conference Paper
Code reuse is attracting much attention as a promising technique for efficient software development. However, code reuse itself requires human resources: for example, searching and opening source files including code fragments that users would like to reuse, or considering keywords in using code search systems. The present paper proposes a novel te...
Article
Full-text available
Recently, an online Q&A tool has become an essential part of individual communities and organizations of experts on specific topics. Using the answers to questions about specific topics will help such communities work more efficiently in their fields. Currently, Q&A online communities are adopting gamification to engage users by granting awards to...
Conference Paper
Clone refactoring (merging duplicate code) is a promising solution to improve the maintainability of source code. In this position paper, we discuss directions towards the advancement of clone refactoring, and show a perspective of active support based on online analysis of code modification on an editor of IDE.
Article
Full-text available
For any software project, most experts regard the maintenance phase as the most effort and cost intensive of all phases in the software development life cycle. This is due to the high maintenance effort, time, and resources needed to effectively address issues during software maintenance (maintenance activities). Mismanagement of these efforts can...
Conference Paper
For the development of high quality software, process quality assessment should be applied into development organization. So far, several process quality assessment methodologies are proposed and applied into a lot of organizations. In this paper, we propose an approach to assess instances of refactoring that is one of the key processes for quality...
Conference Paper
Full-text available
We present four datasets that are focused on the general roles of OSS peer review members. With data mined from both an integrated peer review system and code source repositories, our rich datasets comprise of peer review data that was automatically recorded. Using the Android project as a case study, we describe our extraction methodology, the dat...
Conference Paper
Programmers tend to write code clones unintentionally even in the case that they can easily avoid them. Clone change management is one of crucial issues in open source software (OSS) development as well as in industrial software development (e.g., development of social infrastructure, financial system, and medical equipment). When an industrial dev...
Conference Paper
Merging similar programs is a promising solution to improve the maintainability of source code. Before merging programs, any syntactic difference has to be extracted as a new method. However, it is difficult for a developer to identify and extract differences from programs appropriately because he/she has to consider not only syntactic and semantic...
Conference Paper
It is important to understand semantic differences between a pair of Java methods during maintenance. However, textual or syntactic difference is insufficient to give clear idea which code fragment realizes a single functionality in Java methods. In this paper, we present an Eclipse plugin for semantic differentiation of a given pair of Java method...
Conference Paper
A variety of application results of code clone detection and analysis has been reported. There are many reports of code clone detection and analysis on open source software whereas few reports on industrial systems are open to the public. This paper reports an experience of code clone analysis on a governmental project. In the project, a software s...
Conference Paper
Full-text available
It is crucial for educators to understand pitfalls for novice programmers in programming education at computer science course. By giving well-timed advice to students who fall into a pitfall, educators are able to achieve efficient teaching and keep up their students' motivation. However, so far, it is less well-understood how novice students edit...
Article
Full-text available
Most of today's software applications are built on top of libraries or frameworks. The increasing number of cloud-based services gives rise to 3 rd party frameworks that offer such services from a cloud platform. Just as applications evolve, frameworks also evolve. Such evolution is even more pronounced in frameworks that underlie cloud-based servi...
Article
Although code clone (i.e. a code fragment that has similar or identical fragments) is regarded as one of the most typical bad smells, tools for identification of clone refactoring (i.e. merge code clones into a single method) are not commonly used. To promote the development of more widely-used tools for clone refactoring, we present an investigati...
Article
Full-text available
When we reuse a code fragment, some of the identifiers in the fragment might be systematically changed to others. Failing these changes would become a potential bug in the copied fragment. We have developed a tool CloneInspector to detect such inconsistent changes in the code clones, and applied it to two mobile software systems. Using this tool, w...
Article
Clone change management is one of crucial issues in open source software(OSS) development as well as in industrial software development (e.g., development of social infrastructure, financial system, and medical equipment). When an industrial developer fixes a defect, he/she has to find the code clones corresponding to the code fragment including it...
Article
During software maintenance, understanding source code is one of time-consuming activities. Good programing practice suggests that programmers should insert blank lines to divide source code into functional segments, and a comment at the beginning of each functional segment. Those help developers to understand functional segmentation of source code...
Article
Finding code clones in the open source systems is one of important and demanding features for efficient and safe reuse of existing open source software. In this paper, we propose a novel search model, open code clone search, to explore code clones in open source repositories on the Internet. Based on this search model, we have designed and implemen...
Article
Full-text available
In object-oriented programs, access modifiers are used to control the accessibility of fields and methods from other ob-jects. Choosing appropriate access modifiers is one of the key factors for easily maintainable programming. In this paper, we propose a novel analysis method named Accessibility Excessiveness (AE) for each field and method in Java...
Conference Paper
Code clone is a code fragment that has identical or similar fragments to it in the source code. Fowler and Kereivsky wrote several techniques to remove code clones in refactoring patterns that they documented. Those refactoring patterns include characteristics of code clone and corresponding steps to merge code clones. However, according to our exp...
Conference Paper
Full-text available
Because licensing an open source software (OSS) product restricts its reuse, the developer of the product has to consider the impact on reuse when choosing the license. However, to the best of our knowledge, there are no quantitative studies on the impact of software licenses on software reuse. To identify the impact, this paper presents a quantita...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
Aspect-oriented refactoring is a promising technique for improving modularity and reducing complexity of existing software systems through encapsulating crosscutting concerns. As complexity of a system is often linked to the degree to which its components are connected, we investigate in this paper the impact of such refactoring activities on compo...
Conference Paper
Full-text available
When we encounter a defect in one part of a program, it is very important to find other parts of the program that may contain similar defects. In this paper, we propose a novel system to find similar defects in the large collection of source code. This system takes a code fragment containing a defect as the query input, and returns code fragments c...
Conference Paper
Full-text available
Similar source code fragments, known as code clones, may involve similar defects caused by the same mistake. How- ever, code clone detection tools cannot detect certain code fragments (e.g. modified after copy-and-pasted). To support developers who would like to detect such defects, we propose a method to retrieve similar code fragments in source c...
Article
Full-text available
Refactoring is a well-known process to improve the maintainability of object-oriented software. Recently, it is said that refactoring to design patterns can improve design quality of maintaining software. However, there are a few case studies of refactoring to design patterns. This position paper shows our approach to investigate opportunities for...
Article
Full-text available
A code clone is a code fragment that has identical or similar code fragments to it in the source code. Code clone has been regarded as one of the factors that makes software maintenance more difficult. Therefore, to refactor code clones into one method is promising way to reduce maintenance cost in the future. In our previous study, we proposed a m...