247

システム/制御/情報，Vol. 49, No. 6, pp. 247–248, 2005

研究活動紹介大阪大学大学院情報科学研究科
コンピュータサイエンス専攻 ソフトウェア工学講座

1.

松下 誠*

はじめに

本稿では，大阪大学大学院情報科学研究科コンピュータサイエンス専攻ソフトウェア工学講座について紹介する．本講座は，ソフトウェア工学講座，とその名にある通り，ソフトウェアの開発，保守，管理を支援するための技術について研究を行っており，本稿執筆時点でスタッ
フ 3 名，博士後期課程 7 名，博士前期課程 9 名，学部生 3 名，ポスドクおよび研究員 3 名の総勢 25 名で構成される．
研究テーマとして，他大学や企業との共同研究を通じて，開発現場のニーズに即したテーマ，10 年先のシーズとなる可能性のあるテーマを幅広く取りあげている．以下では，本講座で現在行われている研究テーマの中からおもな研究について 4 件紹介する．

2.

ソフトウェア部品検索

すでに作られたソフトウェアから再利用可能な部分 (ソフトウェア部品) を取りだして利用することにより，次第1図のソフトウェア開発コストを削減できることは広く認識されている．しかし，実際の開発現場において再利用を効率よく行うには，膨大なソフトウェアに対して，どの部分が利用できるか，といった判断を行うための十分な知識が必要である．しかし，そのような知識を得ること

SPARS-J 検索結果部品を結果の中でも優先して提示する．SPARS-J の成果は，利用体験セミナーを通じて広く一般の方に利用してもらうだけでなく，企業との共同研究として，実際のソフトウェア開発現場で活用されている．

は一般的に困難であるため，例えば全文検索システムの3.

技術をソフトウェア部品に応用して，必要なソフトウェア適宜検索する，という方法が用いられている．

アスペクト指向

オブジェクト指向プログラムでは，プログラムの構成

しかし，ソフトウェア部品は一般の文書とは異なり，要素としてオブジェクトという概念を導入することによ

ソフトウェア部品同士の関係，具体的には手続きの呼びり，わかりやすくプログラムを記述することが可能であ出しなどによる依存関係や，あるソフトウェア部品をコる．しかし，一方では，複数のオブジェクトにまたがったピーし，わずかな修正を加えて別の用途向けにした結果処理は複数のオブジェクトに分散して記述せざるを得な

生まれる類似関係，といった関係が存在している．そのいため，それが原因でプログラムの欠陥を生みだしたり，ため，ソフトウェア部品検索を行うためには，この種の修正の手間が増大することが指摘されている．このよう複雑な関係を考慮した上で，要求に対して適切なソフトな問題に対して，アスペクト指向プログラミングが提案ウェア部品がどれか，を検索しなければならない．

されている．アスペクト指向プログラミングでは，複数

そこで本講座では，ソフトウェア部品向けの検索シのオブジェクトにまたがった処理をアスペクトと呼ばれステム SPARS-J の構築に関する研究を行っている．

るオブジェクトとは別の要素へまとめて記述することに

SPARS-J は，Java で書かれたソフトウェアが与えられより記述性を高めることができる．しかし，オブジェク

ると，上記の依存関係や類似関係について解析して検索

トとは別にアスペクトという別の概念が導入されたこと対象となるソフトウェアライブラリを自動的に構築する．

により，最終的なプログラムの挙動自体が不定になる場

部品を検索する際には，全文検索による結果に対して，合がある，といった別の問題が生まれている．

依存関係や類似関係を用いた分析結果を加えることによ

そこで本講座では，アスペクト指向言語 AspectJ をり，Web 検索の Google と同様，より適合するであろう対象として，アスペクト間の相互依存関係を分析する手∗大阪大学 大学院情報科学研究科

法について研究を行っている．ここでは，動的プログラ– 247 –

248

システム/制御/情報

第 49 巻第6号

5.

(2005)

プログラム自動分類

近年，ネットワークの発達と分散ソフトウェア開発の普及に伴い，大規模なソフトウェアリポジトリが一般的なものとなってきている．ソフトウェアリポジトリとはソースコードやドキュメント，バグレポート等の各プロジェクトの成果物を蓄積するためのデータベースである．
通常，ソフトウェアリポジトリは膨大な数のプロジェクトを保持しているため，例えば，開発者が現在開発中のものと似ているプロジェクトを探したり，管理者が会社内で走っている全プロジェクトを俯瞰するといったことに活用できる．しかし，保持内容が膨大なためにプロジェクト同士の関連を判定して整理するには非常な労力を必要とする．
そこで，ソフトウェアを自動的に分類する MUDABlue
システムの構築を現在行っている．MUDABlue はソースコードのみを用い，分類先となるカテゴリ集合をも動第2図的に決定できる．分類の結果，似たソフトウェアはグラ

コードクローン散布図

フ上でひとかたまりとして表示される．ソフトウェアのム解析手法を用いることで，互いに動作が干渉するアス数が増えるとグラフが繁雑になるため，ユーザがグラフペクトが存在するかを自動的に分析することができる．

を直接操作することによって，グラフの一部を縮退して表示することも可能である．

4.

コードクローン

コードクローン (Code Clone) とは，プログラム中に存在する，字面やプログラム構造が似た部分のことを指す．例えば開発の際，一部異なるがほとんど処理が同じ部分を記述する際，既存のプログラムの一部をコピーし修正して作成することによりコードクローンが発生する．
高速化の観点などから故意にコードクローンを発生する場合もあるが，一般的にはコードクローンが多く含まれるプログラムにおいては，よりバグを含む傾向にあり，コードクローン中に欠陥が含まれる場合に修正が繁雑となるという問題が指摘されている．しかし，すでに作られたコードクローンを発見することは困難である．
第3図

そこで，コードクローンを発見し，その結果を可視化

MUDABlue による自動分類結果することによって，デバッグ時やコード修正時に活用す6.

るための支援を行うためのツール群について研究を進めている．コードクローン検出のためのツールである

CCFinder は，数百万行といった大規模のプログラムに対して，数分程度の時間で高速に全てのコードクローンを発見できる．また，得られたコードクローンのうち，機械的な変更によってコードクローンを減らすことができる可能性のある箇所を，メトリクス計算等の結果から発見し提示することができる．
現在，CCFinder をはじめとするコードクローン関連ツール群は多くの企業や研究機関にて利用されており，実際に企業で開発されているプログラムに対してツールを用いた結果をはじめとする運用事例の報告や，利用セミナー等を通じたコードクローンに関する知見の普及活動なども積極的に行われている．

おわりに以上述べたように，本講座ではソフトウェア開発現場や利用形態に即し，実際の社会で役立つ技術を実際に自らの手で作り，それを普及させる点までを含めて研究活動を行ってきている．本講座ではこの他，プログラムスライシング等のプログラム解析，オープンソースソフトウェア開発を対象としたコードリポジトリ分析ツールなどといった，ソフトウェア工学の分野に関する研究を行っている．本稿をご覧になった方々に，多少なりとも本講座についてご興味を持っていただければ幸いである．
なお，今回紹介した研究内容をはじめとした，本講座における研究内容の詳細については，講座のホームペー
ジ http://sel.ist.osaka-u.ac.jp/ を参照されたい．

(2005 年 3 月 31 日受付)
– 248 –