実行時情報を用いた機能抽出によるシステムの実装と要求との結び付け渡邊結†1

石 尾隆†1

井 上 克 郎†1

本研究ではシステムの保守作業を支援するために，オブジェクト指向プログラムによって実装されたソフトウェアシステムに対して，システムの実現する要求，プログラムの持つ機能，機能の実装との間の一連の繋がりを復元する．システムへの要求が１つのテストケースシナリオで表現されるとみなし，その実行時情報からプログラムの持つ機能を自動抽出することで，要求仕様・機能設計・詳細設計間の関連を検出，可視化する．その結果，保守作業におけるプログラム理解を容易にし，各種保守作業のコストを軽減することを目指す．

Extracting Features in Execution Traces for Linking Requirements and Implementation.
Yui Watanabe,†1 Takashi Ishio†1 and Katsuro Inoue†1
For program understanding on software maintenance, developers have to take on a diﬃculttask to ﬁgure out traceability relationship among requirements, features and their implementation. We propose an automatic approach to extract these relationships from a currentsystem. Our technique is detecting features in an execution trace of object-oriented programusing consolidated test cases corresponding to each requirement.

1. ソフトウェアシステムの保守・理解支援分に参照できない場合がある．このため，現状のシスソフトウェアシステムのライフサイクルにおいて最増大してしまう．

もコストがかかるのは保守段階であるが，特にプログラム理解作業がその半分以上を占めることから，担当者の大きな負担となっている．

テムに対する正確な理解が困難となり，保守コストが2. 設計情報と実装との関連の復元
本研究では，システムへの要求に対して，それを実保守担当者が既存のシステムに新たな要求を実現さ現する機能及びその実装との間の一連の繋がりを復元せるために機能の追加や変更を加えたり，運用中に発する手法を提案する．保守対象システムの実行時情報見されたバグの原因となる部分をプログラム中から特を解析することにより現在のシステムに合致する機能定するには，まず対象となるシステムの実現する要求設計情報を復元し，要求，実装間の対応付けを行う．と実現に利用されるプログラムの持つ機能，およびそ

要求，機能，実装の 3 段階でのシステム構成とその関れら機能の実装の詳細との間の関連を正しく理解して連を可視化することで，保守担当者はシステムの要求いなければならない．プログラム理解に用いられる代から実装までの関連を容易に理解し，またこの対応関

表的な手法はソースコードの読解であるが，オブジェ係を利用して変更の影響範囲を特定するなど，各種保クト指向プログラムは実行時の環境やシステムの状態守作業のコストを軽減することができる．

によって動作が決定するため，ソースコード上にはシ

2.1 要求，機能，実装の粒度と関連ステムの設計情報に関連する記述が含まれておらず，システムを正しく理解するためには仕様書などの設計提案手法はオブジェクト指向プログラムによって実現されたシステムを対象としている．

情報を参照する必要がある．しかし，長期に渡って保システムへの要求は，設計段階においてシステムの守され続けたシステムや再利用のため外部から持ち込要求仕様や外部仕様として定義されるものである．本

まれたプログラムなど，仕様書の内容と実際のシステ研究ではプログラムの持つ複数の機能の実行によってムの実装に齟齬がある場合や，そもそも設計情報を十実現される機能的要求を対象とし，システムの制限や品質など特定の機能の実行によって構成されない要求†1 大阪大学大学院情報科学研究科
Graduate School of Information Science and Technology, Osaka University

は原則として対象としない．本研究で対象とする要求
は，システムの統合テストケースに対応するものとす《プログラム》

各テストケースの実行時情報を収集，分割部分実行区間をクラスタリング・機能復元（DB）《テストケースセット》《ソースコード》（GPS）

最寄駅を検索現在地を表示（MAP）

要求
現在地を表示

機能実装

GPS で現在地を取得

GPS モジュールDB モジュール

DB で最寄駅を検索
View モジュール

最寄駅を検索地図を表示

Map モジュール

図 1 提案手法の概要：要求―機能―実装の関連図の例（部分）Fig. 1 An example of relationship among requirements, features and implementation.

る．1 つのテストケースの実行が，1 つの要求の実現するソースコード上の記述範囲はある程度共通していシナリオである．

るはずである．したがって，各区間で実行されたイベプログラムの持つ機能は，設計段階においてシステント集合の持つ静的情報の類似度によるクラスタリン

ムの内部仕様やプログラムの上位設計として定義されグを行う．また，各クラスタには適切な機能名を与えるものである．システムへの要求は，プログラムの持る必要がある．現在は完全な機能名を自動生成するこつ複数の機能の実行によって実現される．機能の粒度とが困難であるため，実行されたメソッドやそのクラには様々な定義が可能であるが，本研究では，1 つのス名のうち，そのクラスタに特徴的なものを複数選出

機能をテストケースシナリオ中の 1 ステップに対応すすることで利用者に機能名を推測させるアプローチをるものとする．あるテストケースの実行時情報はある試行している．ただし，入力として与えられるテスト特定の実行区間ごとに分割することができ，それぞれケースのシナリオ中に機能の名前に関する情報が含まの区間が何らかの機能の実行に対応する．

れている場合，テストケースと部分実行区間の対応関プログラムの実装は，設計段階において詳細設計として定義される．本手法では，ソースコード上の静的な構成から，各種保守作業の目的に応じた任意の粒度のモジュールと機能の対応付けを行う．

係から直接機能名を割り当てる，あるいは実行区間からより適切な名前を選出できると考えられる．
最後に，テストケースとその実行時情報を分断した各実行区間が属するクラスタとの対応から，要求と機2.2 手法の概要

能との関連を抽出する．また，各クラスタに属する各提案手法は，システムの実現する要求に対応するテ

実行区間内で呼び出されたモジュールとの対応から，ストケース群とプログラムを入力として，プログラム機能と実装の対応を抽出しすることで，要求-機能-実の持つ機能と要求，実装との関連を出力する．図 1 上

装間の関連を復元する（図 1 下部におけるエッジに部に提案手法の概要，下部に出力される関連図の一例対応）．

を示す．
まず，入力された全てのテストケースを実行して実行時情報を取得し，それぞれ 1 機能の実行区間ごと

今後，クラスタリングと名付けのアルゴリズムを確立し，提案手法を実装し実際のシステムに対する適用実験を行う予定である．に分割する．これは，テストケースシナリオの情報を謝辞 本研究は，文部科学省グローバル COE プロ

入力として，我々の提案しているフェイズ自動検出手グラム（研究拠点形成費）の補助によるものである．

法1) を用いて実現する．
次に，プログラムの持つ機能を復元する（図 1 下部で楕円で示された機能ノードに対応）．分割された部分実行区間の集合を，1 つのクラスタが 1 つの機能に対応するようにクラスタリングする．同じ機能を実行した区間においては，動作したオブジェクトや発生したイベントは完全には一致しないが，それらに対応

参考文

献1) Watanabe, Y., Ishio, T. and Inoue, K.:
Feature-level Phase Detection for Execution
Trace Using Object Cache, Proceedings of the
6th International Workshop on Dynamic Analysis, pp.8–14 (2008).