Stigmata for Web
Stigmata for Web はJava クラスファイル(プログラム部品)からバースマークと呼ばれるプログラムの実行に不可欠な情報を抽出し,比較することで,プログラム部品の類似性を測定するシステムです.
ソフトウェア開発において, プロダクトをコンポーネントと呼ばれるいくつかのプログラム部品に分割し,コンポーネントごとに開発を進めることが一般に行われています.コンポーネントは高い独立性を持たせていることが多いため,本来のシステム以外のシステムへも容易に組み込むことができます.しかし,既存のコンポーネントを他のシステムへ組み込むとき,バグ修正や仕様変更による修正が伴う場合が多くなっています.Stigmata for Web は, どのコンポーネントが流用されたのか,またどのくらい流用されたのかを計測することができます.計測結果を用いることで,変更部分の確認や,単体テストを変更部分だけに特定するなどのテスト工程の工数配分の目安に用いることができます.また,機能的に変更されていないことを確かめるためにも,Stigmata for Web を用いることができます.
バースマークはプログラムの実行に不可欠な情報の集合であり,バイナリから直接抽出されます.そのため,予め情報を埋め込むなどの前処理は一切必要なく,また,ソースコード上の冗長な情報を無視することができます.プログラム中には様々な情報があり,どの情報に着目するかにより,異なる種類のバースマークを抽出することが可能です.Stigmata for Web では, 変数初期バースマーク(CVFV), メソッド呼出系列バースマーク(SMC),継承関係バースマーク(IS), 使用クラスバースマーク(UC) の 4 種類のバースマークを扱うことができます.
Stigmata for Web では,2 つのインタフェースを持ちます. 1つはブラウザを通じたWeb インタフェースであり, もう1つはWeb サービスインタフェースです.Web インタフェースではクライアント側にはブラウザのみがあれば良く,分析に要する環境設定を最小限に抑えることが可能です.もう一方のWeb サービスインタフェースでは, サービスとして標準的な形で扱えるようWSDL を提供しており,他のアプリケーションと容易に連携させることが可能です.そして,両者のインタフェースともに,Java クラスファイルが収められたjar ファイルをアップロードすると結果が提供されます.
バースマークを用いてオープンソースプロダクトである Apache Struts の7 つのバージョンを相互に比較し,バージョン間の変化量を測定しました.その結果,バージョンが近いほどクラス間の類似度が高い傾向にあり,バージョンの差が大きいほどクラス間の類似度が低い傾向にあることがわかりました.すなわち,流用の度合いをバースマークで測定できることを確認しています.
主な関連文献
  • Takeshi Kakimoto, Akito Monden, Yasutaka Kamei, Haruaki Tamada, Masateru Tsunoda and Ken-ichi Matsumoto, “Using software birthmarks to identify similar classes and major functionalities,” Proc. 3rd International Workshop on Mining Software Repositories (MSR2006), Mining Challenge 2006, Shanghai, China, pp.171-172, May 2006.
  • 玉田 春昭,森崎 修司,門田 暁人,松本 健一,“バースマークを用いたソフトウェア拡張開発での流用度合いの測定,” 情報処理学会第70回全国大会,March 2008.(掲載予定)
  • Copyright (c) 2003-2008 Nara Institute of Science and Technology and Osaka University. All Rights Reserved.