主に以下に示す4つの研究分野に取り組んでいます.

ただし,本研究室において研究テーマは個人ごとに決定するので,ここに示した研究分野に限定しません. ソフトウェア開発に関係することであれば自由に研究テーマを設定できます.


1. ソフトウェアリファクタリング (Software Refactoring)

ソフトウェア進化や保守においてソースコードの劣化は避けられません. リファクタリング(refactoring)とは,劣化した既存コードの外部的振る舞いを変えずに内部構造を変換することで,そのコードの 理解容易性や変更容易性を改善する作業のことを指します.特に,社会の要求や技術の進歩に迅速に対応してソフトウェアを進化させて いくアジャイル開発では,技術的負債をあえて取り込み,それをリファクタリングにより適時返済することで,開発の速度とソフト ウェアの品質のバランスを取るのがよいとされており,リファクタリングは必須の作業です.


2. プログラム解析 (Program Anlysis)

プログラム解析とは,プログラムを機械的に分析する技術を指します.プログラムを実行せずにそのソースコードを調査する静的プログラム解析と, プログラムを実行し,その実行データを収集・調査する動的プログラム解析があります.プログラムや実行データを調査することで得られた制御の 流れやデータの流れをたどることで,誤った出力の原因となるバグを特定することが可能です.より効率的に複雑なバグを特定するためには,単純な プログラム解析技術では不十分であり,解析技術そのものを研究していく必要があります.さらに,近年では,数多くのプログラミング言語が普通の 開発者でも利用できるようになってきました.一般的に,プログラムコードの書きやすさと解析性の両方を単純に追い求めることは難しく,さまざま な観点で人間と機械の作業分担を考える必要があります.また,プログラミング言語そのものの改良も必要なことがあります.さらには,プログラム 解析技術を駆使することで,バグの自動修正やプログラムの自動進化,テストケースの自動生成などの実現も可能となってきています.


3. ソフトウェア統合開発環境 (IDE: Integrated Development Environment)の高度化

近年の統合開発環境(EclipseIntelliJ IDEAVisual Studioなど)は,単なるソースコードエディタではなく,さまざまな作業(デバック, プロファイル,,テスト,デプロイ,分散協調開発)を支援する仕組みが組み込まれています.一方で,実際の開発における生産性や信頼性の向上という観点 からは,まだまだ支援が十分とはいえません.たとえば,デバック支援を取り上げても,欠陥の原因となるエラーをいかに小さい範囲に特定するのか,エラーに関する どのような情報をどのように開発者に伝えるのがよいのかなどの課題が残されています.


4. ソフトウェア分析 (Software Analytics)

信頼性の高いソフトウェアを開発するためには,過去の開発事例から得られる知見を有効に活用する必要があります. たとえば,どのような開発者はどのようにモジュール設計を行っているのか,開発者がどのようにソフトウェアをテストしているのか, 特定のドメインに属するソースコードにはどのようなバグが多く含まれるのか,開発者はそのようなバグをどのように修正しているのかなどです. 近年盛んなオープンソースプロジェクトでは,このような情報を作り出すために必要な膨大なデータを公開しています. また,近年の統合開発環境では,開発者の作業データをモニタリングする仕組みが積極的に採り入れられています. ソフトウェア開発に関係するデータから,有益な情報を抽出する作業を,ソフトウェアリポジトリマイニング(MSR: Mining Software Repositories)と呼び,近年世界中で盛んに研究が行われています.