肥後研究室志望の方へ

研究紹介

肥後研究室では「ソフトウェア工学」の研究を行っています. ソフトウェア工学とは,品質の高いソフトウェアを低コストで期限内に開発し,効率良く保守するための技術を扱う学問分野です.

肥後研究室では,大規模ソフトウェアの開発効率向上を目指して,ソフトウェア工学の中でも「プログラム解析」と呼ばれる分野の研究に注力しています. プログラム解析とは,ソフトウェア開発における成果物,すなわちソースコードや設計ドキュメントを解析することによって,複雑なソフトウェアの理解や修正に必要となる情報を抽出する技術です. 開発者それぞれが高性能な計算機を使用している現在の状況を踏まえて,開発履歴情報やプログラムの実行時情報,バグ情報データベースや開発者のメーリングリストの情報など,多様な情報を迅速に解析し,開発環境を通じて開発者の作業を支援していく方法を研究しています.

具体的には,開発者が遭遇する次のような疑問に対して,開発者が適切な判断を下すために必要な情報を自動的に収集する手法を研究しています.

  • 今書いているソースコードは,5年後に誰かが変更しようとしたとき,読んで理解できるものになっているか.
  • これから作成する機能と,よく似たものを過去に作ったことはないか.それを再利用しても問題ないか.
  • 今読んでいるソースコードで使っているデータは,どこで計算されたのか.
  • バグを発見したが,同じようなコードをどこかに書いていなかったか.そこにも同じ欠陥が存在しているのではないか.
  • 良く似たコードがあちこちにあるが,どこから整理したらよいのか.

研究成果のソフトウェアとしての公開

肥後研究室では,構築した理論や実験の結果を論文として発表するだけでなく,ソフトウェア開発者が実際に適用できるソフトウェアとしても外部に提供しています. これまでに公表されたソフトウェアとしては,ソースコードに含まれる「複製(クローン)」を検出するツール CCFinder および一連のクローン分析ツール,ソフトウェア部品検索エンジン SPARS,メトリクス計測フレームワーク MASU,Java プログラムの実行時情報分析ツール Amida などがあります. これらのソフトウェアが広く活用されるように,共同研究を通して企業での導入支援を行っているほか,ソフトウェアの使用方法に関するセミナーの開催やソースコードそのものの公開など,様々な取り組みを進めています.

研究テーマ

肥後研究室の研究テーマは,大きく分けて,次の3つに分類できます.

  • 既存のソフトウェアを資産として活用する手法
  • 開発中のソフトウェアの現状を分析する手法
  • ソフトウェアの品質の改善方法を提示する手法

これら3つのテーマに沿って,肥後研究室では,ソフトウェア開発における成果物からの情報抽出技術,取得できた情報の性質の調査や,その情報を用いた開発者のサポートなど,個別の要素技術の研究を行っています.

既存のソフトウェアを資産として活用する手法

ソフトウェアを一から新しく作成するのではなく,可能な限り過去のソフトウェアを再利用することが,生産性の向上の鍵であると言われています.SARFプロジェクトという,ソフトウェア資産の再利用に関する研究プロジェクトはその一例です.

  • 再利用部品の抽出 [詳細]
  • 再利用を行うためには,まず,何が再利用できるのかを知ることが重要です. そのために,過去に開発されたソフトウェアのソースコードを「部品」単位に分解して整理し,データベース化する手法が必要となります. また,それらの部品を再利用する場合に確認しなければならない利用規約(ライセンス)などの情報も合わせて記録しておく必要があります.

    様々な大規模ソフトウェアが蓄積されている現在,このような再利用のための準備を手作業で実施することは非現実的となっています. 肥後研究室では,ソースコードや付属ドキュメントから,これらの情報を自動的に抽出する手法を研究しています.

  • 部品の検索 [詳細]
  • 蓄積された部品の中から,これから開発しようとしているソフトウェアに適合した部品を探すのが「部品検索」の問題です. 肥後研究室では,部品の利用実績に基づいて,「再利用に適しているかどうか」を数値として算出する方法を実現しています.

  • コーディングパターンの分析 [詳細]
  • 再利用する部品が決まり,それを実際に開発中のソフトウェアに組み込むには,部品の使い方を調べ,使用手順をソースコードとして記述する必要があります.

    コーディングパターンとは,プログラム中に頻出するソースコード片のことです. 肥後研究室では,データマイニング技術をソースコードに対して適用し,過去のソフトウェアから,部品の典型的な利用例を抽出する方法について研究を行っています.

開発中のソフトウェアの現状を分析する手法

ソフトウェアの動作や品質を効果的に調べるには,開発者が注目したい動作,あるいは品質の指標だけをソフトウェアから抽出し,不要な情報を自動的に取り除くことが重要な研究課題となっています.

  • ソフトウェアメトリクスを用いた品質の測定 [詳細]
  • ソフトウェアメトリクスとは,ソースコードの規模,複雑さ,保守性など,ソフトウェアの特定の側面を数値化して定量的に示す指標です.

    肥後研究室では,楠本研究室と共同でメトリクス計測プラットフォーム MASU の開発を進めており,様々なソフトウェアメトリクスの計測や,性質の評価を行っています.

  • プログラム理解のための辞書の構築と提供 [詳細]
  • ソースコードに登場する関数や変数,クラスなどには,その意味を表す名前が付けられます. しかし,識別子の名前の付け方については,ガイドラインは存在するものの,名前の付け方のうちごく一部を指定するにとどまっています. また,実際に付けた名前が適切であるのか,ソースコードの他の部分と一貫した命名規則であるのか,開発チームの他のメンバーにとって理解しやすい名前であるのかといった点を評価する方法は知られていません. そこで,実際のソースコードから変数や関数の名前を自動的に抽出し,それらの関係を辞書として可視化することで,プログラム理解の補助や,適切な命名を支援することを目指しています.

  • 実行履歴の可視化 [詳細]
  • 多数の機能を持つソフトウェアでも,その利用者が一度に実行する機能の数には限りがあります. 実行途中のソフトウェアの動作を記録し,その結果を開発者に図示することで,開発者は,ある特定の機能の実行に関するソフトウェアの動作を効果的に分析することができます. ソフトウェアの実行履歴情報を効率よく収集し,どのような機能が実行されたかなど,有用な情報を自動的に抽出するための手法を研究しています.

ソフトウェアの品質の改善方法を提示する手法

大規模なソフトウェアから,設計上,あるいはコーディング上の潜在的な問題を自動的に検出し,開発者へ提供することで,ソフトウェアの品質改善を支援します.

  • コードクローン検出 [詳細]
  • コードクローンとは,プログラムのソースコード中に存在する形や構造のよく似た部分のことを言います.

    コードクローンが多く存在するとソフトウェアの保守作業が難しくなります. そこで,コードクローンを高速に検出し,取り除く手法を研究しています.

    また,ソースコードの開発履歴やコードクローン情報から得られたメトリクス値を使って,ソフトウェア部品に欠陥が存在する可能性の調査を行う手法を研究しています.

  • リファクタリング支援 [詳細]
  • リファクタリングとは,ソフトウェアの機能を保ったまま設計を改善し,ソースコードの可読性,保守性を改善していく活動を言います. 効率の良いリファクタリングを行うために,設計モデルやソースコードからソフトウェアの保守性を悪化させる可能性のある部分を発見する手法を研究しています.

  • 開発者が調査すべきソースコードの抽出 [詳細]
  • プログラムに欠陥が見つかると,開発者はその欠陥を持った機能に関連するソースコードを調査する必要があります. この調査を支援するために,制御フロー解析,データフロー解析などを用いて,開発者が調査すべきソースコードの範囲を自動で抽出する手法を研究しています.

肥後研究室

大阪大学 大学院情報科学研究科

コンピュータサイエンス専攻

ソフトウェア工学講座