Most of software engineering activities related to program source code such as programming, testing, maintenance (such as refactoring and reengineering), testing and management often require static and/or dynamic analysis and processing of source code. To support these activities, we are making code analysis and processing environments with special emphasis on multi-programming language support. In relation to that, we are developing a reusable and sophisticated refactoring tool.
UNICOEN: UNIﬁed source COde ENgineering framework
As programming languages continues to evolve and become more multifaceted, software development with multiple programming languages becomes popular. To aid software development, many analysis and transform tools for source code such as metrics-measurement tools are being developed. However, there are two problems because these tools support only one programming language. P1: Enormous development costs are required to implement all combinations between programming languages and tools because there is a many-to-many relationship between them. P2: It is hard to introduce the tools for software development with multiple programming languages because there are diﬀerences of implementations and speciﬁcations in the tools.
We propose a framework for processing source code supporting multiple programming languages named UNICOEN (UNIﬁed source COde ENgineering framework). UNICOEN simpliﬁes the many-to-many relationship between programming languages and tools to one-to-many relationships between programming languages/tools and UNICOEN. It drastically reduces development costs and prevents diﬀerences of implementations and speciﬁcations between tools. Conclusively, we evaluated UNICOEN developing 3 tools which supports 7 programming languages.
- 坂本 一憲, 大橋 昭, 太田 大地, 鷲崎 弘宜, 深澤 良彰, “UNICOEN: 複数プログラミング言語対応のソースコード処理フレームワーク”, 情報処理学会論文誌, 特集「ソフトウェア工学」, Vol.54(No.2), 2013年02月 (PDF)
- UNICOEN: Code-Analysis and Processing Framework supporting multiple programming languages （複数のプログラミング言語に対応したプログラムソースコード解析処理フレームワーク）
- Reisha Humaira, Kazunori Sakamoto, Akira Ohashi, Hironori Washizaki, Yoshiaki Fukazawa, “Towards a Unified Source Code Measurement Framework Supporting Multiple Programming Languages,” 24th International Conference on Software Engineering and Knowledge Engineering (SEKE 2012), July 1-3, 2012. (PDF)
- Akira Ohashi, Kazunori Sakamoto, Tomoyuki Kamiya, Reisha Humaira, Satoshi Arai, Hironori Washizaki and Yoshiaki Fukazawa, “UniAspect: A Language-Independent Aspect-Oriented Programming Framework,” 2nd Workshop on Modularity In Systems Software (MISS 2012) collocated with AOSD’12, 2012. (PDF)
Refactoring Script: Reusable Refactoring and Processing Plugin for Eclipse
Refactoring has been recognized widely as the way to improve the internal qualities of source codes. Because manual refactorings is time-consuming and error prone, many tools supporting automated refactoring have been suggested. However, because these tools are only for supporting a unit and simple refactoring, it is diﬃcult to preform complicated refactorings such as a introduction of a design pattern. That is, it is diﬃcult to apply a set of combined refactorings or to apply refactorings multiple times to multiple positions. In this research, we propose the script language and its interpreter that can describe how and where to refactor by using a model expressing source codes. From the results of evaluations, we concluded that our language and interpreter allow users to describe the steps of refactorings as scripts, replay and reuse them simply for multiple projects.
- 神谷知行, 坂本一憲, 鷲崎弘宜, 深澤良彰, “Refactoring Script：再利用可能なリファクタリングスクリプトと処理系”, 情報処理学会論文誌プログラミング（PRO）, Vol.6, No.XX, pp.XX-YY, 2013.(RefactoringScript-pro.pdf) (to appear)
- Linchao Yang, Tomoyuki Kamiya, Kazunori Sakamoto, Hironori Washizaki and Yoshiaki Fukazawa, “RefactoringScript: A Script and Its Processor for Composite Refactoring,” Proceedings of the 26th International Conference on Software Engineering and Knowledge Engineering (SEKE 2014), pp.XX-YY, Vancouver, Canada, July 1-3, 2014. (to appear) (seke2014_submission_191.pdf).