オブジェクトの動的支配関係解析を用いたシーケンス図の縮約手法の提案
伊藤 芳朗 †

渡邊 結 ††

石尾 隆 †

井上 克郎 †

大阪大学 大学院情報科学研究科〒 560-8531 大阪府豊中市待兼山町 1-3

オブジェクト指向プログラムは動的に決定される要素が多く，実行時の動作を理解するには，実行履歴情報をシーケンス図などに可視化する手法が有用である．しかし，プログラムの開始から終了までには，多くのメソッド呼び出しが行われるため，そのままシーケンス図として可視化した場合，人間の読解に適したサイズにはならない．本研究では，オブジェクトをグループ化し，グループ外部から参照されないオブジェクトを隠すことで，オブジェクトグループ間の通信のみを取り出した簡潔なシーケンス図を生成する．評
価実験の結果，実行履歴中のオブジェクトのうち，平均で約 4 割がグループ化によってシーケンス図から取り除けることを確認した．

Reducing a sequence diagram by dynamic dominance analysis
for objects
Yoshiro Ito††

Yui Watanabe†

Takashi Ishio†

Katsuro Inoue†

Graduate School of Information Science and Technology, Osaka University
1-3 Machikaneyama-cho, Toyonaka, Osaka 560-8531, JapanTo understand the behavior of an object-oriented system, visualizing its execution trace as sequence
diagrams is eﬀective because the system involves dynamically determined elements. However, sequence
diagrams generated from execution traces are too large to understand because the traces include manymethod calls. This paper proposes a method to vizualize objects and method calls among groups ofobjects as sequence diagrams by replacing a group of objects with a representative. We conducted acase study as a reduced sequence diagram. As a result, it shows the tool removes about 40 percent ofthe objects from the execution traces on average.

-1-1

まえがき

行履歴を基にシーケンス図の作成を行う．本研究オブジェクト指向プログラムでは，実行時に動では，Amida に入力する実行履歴を解析してオブ的に生成されるオブジェクトが相互にメッセージジェクトのグループ化を行い，グループ内のメッを交換することによってシステムが動作するが，どセージ通信を削除し，グループ間のメッセージ通のオブジェクトがどのようにメッセージ通信を行信のみを取得するツールを作成した。そしてこのうかは，実行時に動的に決定される．このようなシツールを実際に実行履歴に適用した結果，実行履ステムの振る舞いを理解するためには，プログラ歴に含まれるオブジェクトのうち，平均で約 4 割

ムの実行履歴を可視化することが有効である [14]．

がグループ化によって除去されることを確認した．

プログラムの実行履歴は一般に膨大な量にな2

背景

る [8, 9, 10]．そこで繰り返しや再帰構造を圧縮

2.1

実行履歴の可視化することで，簡潔なシーケンス図を生成する手法

オブジェクト指向プログラミングでは，クラスが提案されている．しかしこれらの手法の多くは，を用いて処理の抽象化を行い，また継承や多態性

図中で繰り返されるメソッド呼び出しや，開発者などを利用して，オブジェクト間のメソッド呼び出にとって興味のないメソッド呼び出しを図から除しとしてソフトウェアの機能を実現する．その一去することで実現されており，図の正確さが損な方で，開発者がソフトウェアの機能の詳細を読解われるという弱点も備えている．

する場合，たとえばあるメソッド呼び出し文が，動本研究では，オブジェクトをグループ化し，グ的束縛の結果，実際に呼び出しうる複数のメソッドループ外部から参照されないオブジェクトを隠す定義を発見するといった労力の増大が生じており，ことで，オブジェクトグループ間の通信のみを可支援ツールの必要性が指摘されている [5, 12, 14]．

視化する手法を提案する．具体的には，実行履歴

特定の機能を実現するためのオブジェクトの相上に現れるオブジェクト群の呼び出し関係グラフ

互作用は，設計段階において，主に UML のシーについて支配関係の計算を行い，グループ外部かケンス図によって記述される．シーケンス図によっら参照されないオブジェクトを識別する．て表現される動作シナリオは，そのソフトウェア

支配関係とは，根となる頂点がただ 1 つ root でにおける特定のタスクを実現する方法を記述してあるような有向グラフ上の 2 頂点 v1 , v2 に対しており，ソフトウェアの理解や再利用にも適した単定義される関係で，root からは v1 を通過しなけ位である [10]．

れば v2 に到達できないとき，v1 は v2 を支配す2.2るという．提案手法では，支配関係を，実行履歴

UML シーケンス図

シ ー ケ ン ス 図 と は Uniﬁed Modeling Lan-から得られるオブジェクト間のメソッド呼び出しguage(UML) で定義されているインタラクション
図の 1 つで，オブジェクト間のメソッド呼び出しや関係グラフに対して計算する．オブジェクト v1 が別のオブジェクト v2 を支配するという関係が得オブジェクトの生成などのメッセージ通信を，時られたとき，v1 と v2 をグループ化し，オブジェ系列に沿って示すことができる図である．この図

クト v2 を図中から取り除いても，v2 への呼び出を作成することで，設計者はシステムが実際に動しは必ず v1 を経由しているため，グループ外部作する際のオブジェクト間の関連を，設計時にイのメソッド呼び出し関係は影響を受けない．このメージすることができ，また，他の設計者や開発特徴を用いることで，オブジェクトグループ間の者にオブジェクトの動作を分かりやすく示すこと通信を削除することなくオブジェクトのグループができる．

化を行い，簡潔なシーケンス図を作成する．

UML で書かれた設計図を活用することが困難な

我々はこれまでに，実行履歴からシーケンス図場合もある．たとえば，開発が進行していく中でを生成するシステム Amida [13] を開発してきていソフトウェアの機能に変更が加えられたとき，開る．Amida は，オブジェクト指向プログラムの動発者が設計図の更新を怠ると，設計図がソフトウェ作の理解支援を目的としており，プログラムの実アの最新の状態を正しく反映しなくなる [4]．また，

-2-

1:A
a()

2:B
b()

3:C

c()

<init>()

4:D<init>()

5:D

d()
d()

図 1: シーケンス図
ソフトウェアを実装していく段階で，設計図には登場しないようなクラス，メソッドが追加される

図 2: シーケンス図生成システム Amida

こともある [13]．

図を含む様々な形式によって可視化する方法が研Amida にはシーケンス図上の繰り返し処理や再起呼び出しなどのループの部分を圧縮して表示する機能が実装されている．膨大な量となる実行履究されている．ソースコードを用いた解析によっ歴に対して繰り返し処理や再起呼び出しの検出をて得られる結果は動的束縛などを静的に解決でき行い，圧縮することで簡潔な図を生成することがる範囲に限られるため，実際にソフトウェアを実できる．実行履歴を単純にシーケンス図として可行し，どのオブジェクトが呼び出されたかを記録視化しただけでは人間の読解に適したサイズにはした実行履歴を解析し，可視化する手法が広く研ならないことは広く知られており，他にもパター究されている．

ン検出を用いた圧縮処理 [9] や，実装の詳細であ

そこで，開発されたソフトウェアからオブジェクト間の相互作用を検出し，UML のシーケンス

実行履歴はプログラムの実行開始から終了までる可能性が高いメソッドの自動的なフィルタリンの，膨大な数のメソッド呼び出しの系列である．

グ [3]，概要を把握するための縮小表示 [7] など，オブジェクトの ID とメソッド名の系列があれば，様々な手法が研究されている．
これらの手法の多くは図中から開発者にとってシーケンス図として可視化することができる [13]．

2.3

興味のないメソッド呼び出しを取り去ることで実Amida

我々の研究グループは，オブジェクト指向プロ現されており，図の正確さが損なわれるという弱グラムにおけるオブジェクト群の動的な振る舞い点も備えている．本研究で提案するオブジェクトを視覚的に表現し，プログラムの理解支援を行うのグループ化は，グループ外部から参照されないために，プログラムの動的解析から得た実行履歴オブジェクトを隠すことでオブジェクトのグルーを基にシーケンス図の生成を行うツール Amida をプをより大きな処理単位として可視化する．これ開発してきている [13]．Amida は Java プログラム

により，生成されるシーケンス図の正確性を損なのメソッド呼び出しを実行履歴として取得するプ

うことなく，処理全体の流れを把握することが可

ロファイラと，その実行履歴を解析してシーケン能となる．

ス図を生成，GUI にて表示するビューアからなる

3提案手法ツールである．図 2 は Amida のスクリーンショッ

本研究では，実行履歴中に含まれるオブジェクトである．実行履歴から生成したシーケンス図はトのグループ化を行い，グループ外部から参照さ膨大なサイズとなってしまうため，ウィンドウの右れないオブジェクトを隠すことで，シーケンス図中側にシーケンス図の全体図を表示している．これに登場するオブジェクトの数を削減する手法を提によって，利用者は，現在表示している領域が，全案する．具体的には，実行履歴に出現するオブジェ体のどの部分に当たるかを確認することができる．

クト群の相互の呼び出しについての支配関係を解-3-析し，その結果に基づいてグループを構築する．

A提案手法は，Java プログラムの実行履歴を可視BCDEAB化するシステムである Amida の存在を念頭に置いて，Java プログラムの実行履歴に対応した手法となっているが，オブジェクト ID が取得可能な実行環境を持つプログラミング言語であれば適用可能である．

3.1

動的解析による実行履歴の取得

シーケンス図上では，オブジェクトの生成のメッ

図 3: グループ化によるシーケンス図の縮約

セージとメソッド呼び出しのメッセージは別の形式で表現されるが，本研究で対象としている Javaることで，実行履歴全体の流れを把握できるシー言語においては，オブジェクトの生成は，コンスケンス図を生成する．1 つのグループを 1 つのオブトラクタの呼び出しとみなせるため，実行履歴上ジェクトと扱うことでシーケンス図に出現するオは同様のものとして扱える．以降，本稿におけるブジェクトの数を減らすことができる．また，グメソッド呼び出しという表記は，コンストラクタ

ループ内のメッセージ通信を非表示にすることでの呼び出しも含めるものとし，オブジェクトの生シーケンス図に出現するメッセージ通信の数も減

成のメッセージをメソッド呼び出しのメッセージらすことができる．シーケンス図に出現するオブと同種のものとして扱う．

ジェクトの数が減れば，シーケンス図は横方向に縮約され，メッセージ通信の数が減れば，シーケ

本手法では，まず，対象とするプログラムに対ンス図は縦方向に縮約される．

して動的解析を行い，オブジェクト間のメソッド呼び出しに関する情報を実行履歴として記録する．

本手法で提案するオブジェクトのグループ化は次の条件を満たすように行う．

具体的には，個々のメソッド呼び出しについて，メ• 1 つのグループは 1 つの代表となるオブジェク
トを持つ．
• グループ外部からのメッセージ通信はグループ

ソッド実行開始時 (動的束縛の解決後) にクラス名，オブジェクト ID，メソッド名，引数の型，返り値の型を記録する．このとき，static メソッドの呼びの代表となるオブジェクトを呼び出す．
• グループも 1 つのオブジェクトとみなし，グルー出しについては，オブジェクト ID として，staticな呼び出しであることを示す特別な値 φ を記録す

プの階層化を可能とする．

る．また，メソッド終了時には終了記号を記録す
る．引数の型を記録するのは，メソッドがオーバー

この条件を満たしたオブジェクトのグループ化

ロードされて同名のメソッドが複数存在する場合

では，グループの代表ではないオブジェクトは同に，メソッドを特定するためであり，実行時に引じグループに含まれるオブジェクトからのみメッ数として与えられた値については記録しない．こセージを受け取る．そのため代表オブジェクト以れらの情報を用いることで，実行時に呼び出され外のオブジェクトをすべて取り除いても，グルーたオブジェクトとメソッドを特定し，メソッドのプ外部のメッセージ通信は影響を受けず，シーケ呼び出し構造を再現することが可能となる．

ンス図全体の整合性は保たれる．

本研究では，オブジェクトの支配関係を求める

グループを階層化するのは，開発者がグループためオブジェクト ID とクラス名，オブジェクト間内部の通信を調査したいとき，段階的にグループの呼び出し関係だけに注目する．

内部の情報を図として提示していくためである．

3.2

オブジェクトのグループ化を行うとき，static なオブジェクトのグループ化メソッドの扱いが問題となる．数学関数を提供する

シーケンス図に出現するオブジェクト群を外部Math クラスやコレクションに対する操作を提供する Collections クラスなどは多数の static メソッのオブジェクトから参照されないようにグループ化し，グループ間のメッセージ通信だけを抽出す

ドを定義しており，static メソッドの呼び出し元-4-1は相互に関連がない場合がある．グループ化する
ときに関連性が低いオブジェクトを同じグループ2として判断してしまう可能性を避けるため，static
メソッドの呼び出しは，呼び出しごとに個別の仮4135264356のオブジェクトが存在するとみなしてグループを87判断する．
プログラムの中には複数のスレッドで処理を行78うものがある．本研究では，スレッドを区別して

図 4: 呼び出し関係グラフと支配関係木実行履歴を取得する．グループ化を行う際は，複数のスレッドで共通のオブジェクトが存在したと配関係解析を適用する．本研究では，反復計算にしても，複数のスレッドの実行履歴を同時に可視よるアルゴリズム [2] を用いた．支配関係には推化することが困難であるため，グループ化は実行移性が成り立っており，v1 が v2 を支配し，かつ v2履歴中のスレッド単位で行う．

が v3 を支配するとき，v1 は v3 を支配する．この

動的支配関係解析

性質を用いて，支配関係は支配関係木（dominance3.3

本研究では，実行履歴に含まれるオブジェクトtree）によって表現される．我々が用いたアルゴリ間の呼び出し関係からオブジェクトの動的な支配ズムは，この性質を利用して，すべてのオブジェ関係を求めることで，グループ化すべきオブジェ

クト ok について，対応するイミディエイトドミクト群を識別する．

ネータ（immediate dominator）idom(ok ) を計算

実行履歴中で，あるオブジェクト o1 が別のあるする．イミディエイトドミネータは，あるオブジェオブジェクト o2 のメソッドを 1 度でも呼び出すとクトにとって，支配関係木での直接の親を意味す

き，o1 は o2 に対する呼び出し関係を持つという．

る．図 4 に，呼び出し関係グラフとそのグラフか実行履歴から呼び出し関係を求めることで，ソーら求められる支配関係木の例を示す．

スコードから取得できる静的な呼び出し関係を使得られたオブジェクト間の支配関係木を用いて，用せず，ソースコードが存在しないプログラムで支配関係木の各接点 o について，直接の子であるもシーケンス図の生成を行うことができる．また，ような接点をグループメンバーとし，o 自身がグリストやツリーなどの動的に構築されるデータ構ループ代表であるようなグループを作成する．こ造内部で生じる呼び出し関係にも対応できる．のようにして作成されたグループは，次のような性質を持つ．

支配関係とは，有向グラフについて，根（入次数グラフ上の 2 頂点 v1 , v2 に対して定義できる関係• あるグループ G について，グループの代表を dとすると，∀o ∈ G, d 6= o ⇒ idom(o) = d が成である．root からは v1 を通過しなければ v2 に到り立つ．よって，グループの外部から，グルー達できないとき，v1 は v2 を支配する（dominate）

プの代表 d を経由しないようなグループ G のという．この関係は，通常，プログラムの制御フメンバーへのメソッド呼び出しは存在しない．

ローグラフに対して解析されるもので，コンパイ• グループは，グラフの根である root を支配関係木の根とした階層的な構造となる．

が 0 である頂点）がただ 1 つ root であるときに，ラがプログラムを最適化するために使用する [11]．

上記の性質は，3.2 で述べた，グループ化の条件

なお，v1 が v2 を支配するとき，v1 は v2 のドミネータ（dominator）であるという．オブジェクトを満たしている．

間の呼び出し関係グラフは， Java プログラムの場

3.4

シーケンス図の生成

合はただ 1 つのエントリポイントである main メ

実行履歴に対して支配関係解析を行うと，各グソッドが存在するため，main メソッドを根 root

ループの代表となるオブジェクトが得られる．グとみなすことで支配関係を定義することができる．

ループ代表オブジェクトと，グループ代表に対すオブジェクト間の呼び出し関係グラフに対し，支るメソッド呼び出しのみを実行履歴から抽出する-5-ことで，最終的なシーケンス図の出力を行うこと4.2ができる．

オブジェクト数の変化の調査

それぞれの実行履歴のツールの適用前後のオブグループは階層的に構築されているため，実行ジェクト数を表 1 に，メソッド呼び出し数を表 2 に

履歴中に登場したすべてのオブジェクトは，開始記す．表 1 の出現オブジェクト数は実行履歴をシー

頂点 main を代表とした 1 つの巨大なグループとケンス図にしたときに図に表れるオブジェクトのなる．これでは，シーケンス図に表示する情報が数を表している．このオブジェクト数には main

1 つのオブジェクトだけになってしまい，プログラムの理解支援とならない．それを避けるため，本研究では，main の直接の子であるようなオブジェなど static メソッドに割り当てた仮オブジェクトクトグループ群を，最終的な出力結果とした．

している．また，圧縮率は以下の式によって計算の数は含んでいない．表 2 のメッセージ通信数はシーケンス図に表れるメッセージ通信の合計を表

なお，上記のような対応を行うと，最も外部にした．

あるグループだけが意味を持ち，グループ化が階圧縮率 = 適用後のオブジェクト数 × 100(％)
適用前のオブジェクト数層的であることによる効果は特にない．しかし，今後，シーケンス図生成システム Amida 中で，対表を見ると多くのスレッドで縮約でき，手法が話的にオブジェクトグループのメンバーを展開し有効であることが確認できる．システム A，B，Cながらシーケンス図を閲覧する，あるいは，特定は比較的に近い圧縮率を示しているが，システムのグループ内部のシーケンス図だけを可視化する

D だけ極端に圧縮されている．
すべての実行履歴で main スレッドは縮約の効といった対応を行っていく予定である．

適用実験

4

果を得られなかった．これらの実行履歴では共通本手法によって，シーケンス図の縮約が実際にして，main スレッドはプログラムの起動時と終了行えているかを確認し，本手法の適用前後で，実時にしか処理が行われておらず，また出現するオ行履歴にどのような差が出るのかを調べるためにブジェクト間にはメッセージ通信が存在しなかっ実験を行った．

たため，グループ化が行われなかったのが原因で

4.1

実験方法ある．

実験対象として Struts フレームワーク [1] を用いた Web アプリケーションである図書管理システムを用意した．これは同じ設計仕様に基づいて学生 4 グループが異なる実装で作成した 4 つのシステムで，すべての機能を網羅する同一のシナリオを用いて，各システムの実行履歴を取得した．

Amida [13] を使用して取得した実行履歴に本手法を適用し，支配関係木において main の直接の子となるグループ間のメッセージ通信のみを抽出し，本手法を適用する前後でどれほどシーケンス図の縮約ができたのかを調べた．また，グループの代表となるオブジェクトと，除去されるオブジェクトが何であるのかを調べるため，実行シナリオの各機能に対応した実行履歴の区間を開発者に指定してもらい，各区間ごとに本手法を適用し，オブジェクトと機能の対応関係を調査した．

-6-

表 1: 出現オブジェクト数の適用結果
出現オブジェクト数システム スレッド 適用前 適用後 圧縮率A
main22100.0
http1975657.7
http2975556.7
http31207865.0
B
main
22100.0
http17230
41.7
http21278163.8
http31248064.5
Cmain
22100.0
http120413666.7
http2652640.0
http3653249.2
D
main
22100.0
http11092
1.8
http24736.4
http31252
1.6
http41162
1.7

4.3

オブジェクトの種別の調査して，実際にこれらがシーケンス図に表示される

4 つの図書管理システムの実装のうちシステム
A の実行履歴について，縮約によって取り除かれことで，全体の動作を問題なく把握できると考えるオブジェクトの種別と，ソフトウェアの機能のシーケンス図に表示されたオブジェクトの中に，られる [6]．

ある機能を実行したときに出現するオブジェク“Data” と名前を持つオブジェクトが存在した．実行履歴を調べると，この Data オブジェクトは一時

トは，その機能を実行している間のみに出現するオブジェクトとして動作しているが複数のオブジェオブジェクトと，他の機能の実行履歴にも出現すクトから参照されているため，本手法では，シーるオブジェクトの 2 種類に分けられる．特定の機ケンス図に表示されてしまう．このオブジェクト

能の実行履歴にのみ出現するオブジェクトは，そは各機能ごとに生成されていて，複数の機能で使の機能を実行するために使われるオブジェクトで，用されることはなかった．そのため，このオブジェ複数の機能の実行履歴に出現するオブジェクトは，クトは重要ではないと判断できたが，本研究で用そのプログラム全体の処理に関連したオブジェク

いた支配関係解析では，あるオブジェクトが特定トである．これらのうち，複数の機能の実行履歴の機能に属しているかどうかを判定できないため，に出現するオブジェクトは，プログラム全体を理除去の対象とはならなかった．このようなオブジェ解するために重要なオブジェクトである．

クトの取り扱いは，今後の課題である．

関係について調査した．

シーケンス図に表示されたオブジェクトのうち，一方で，グループ化によりシーケンス図から除複数の機能の実行に出現するオブジェクトについ去されたオブジェクトの詳細についても調査を行って調べた．このようなオブジェクトの名前には共た．その結果，除去されたオブジェクトの多くは，通点があり，“Action” もしくは “jsp” という単語オブジェクトはユーザから命令された処理を実行“DAO” や “Item” という文字列を含むクラスのインスタンスであった．“DAO” という名前を持ったオブジェクトはデータベースから読み込んだデーし制御する役割を持ち，jsp オブジェクトは処理のタを Data オブジェクトに設定する処理を行ってい結果を画面に表示する役割を持っている．これらたが，特定の Action オブジェクトや jsp オブジェのオブジェクトの役割から，プログラム理解のたクトからしか呼び出されていないため，シーケンめに表示されるべきオブジェクトと判断できる．そス図から消えたと考えられる．“Item” という名前が含まれていた．図書管理システムでは，Actionを持ったオブジェクトはデータの検索時に検索条

表 2: メッセージ通信数の適用結果
メッセージ通信数
システム スレッド 適用前 適用後 圧縮率
A
main44100.0
http11037
715
68.9
http2999
669
67.0
http31331
1002
75.3
B
main
4
4100.0
http1757
395
52.2
http21527
1148
75.2
http31509
1168
77.4
C
main
4
4100.0
http12451
1885
76.9
http2700
358
51.1
http3707
396
56.0
D
main
4
4100.0
http1126837
2.9
http24628
1.7
http31453
48
3.3
http4
1319
36
2.7

件を保持する一時オブジェクトであった．そのため，DAO オブジェクトと同じく，特定のオブジェクトからしか参照されず，シーケンス図から取り除かれた．これらのオブジェクトは，各機能の実装の詳細であるため，プログラム全体の動作を理解する場合には重要度が低いと判断することができる．したがって，これらのオブジェクトがシーケンス図から除去されたことは妥当である．

5まとめ
オブジェクト指向プログラムの動作理解には実行履歴などの動的な情報を可視化する手法が有効であるが，一般に実行履歴は膨大な量となるため，視覚化した情報も膨大なものとなってしまう．本
研究は実行履歴上に現れるオブジェクトの支配関係を用いてオブジェクト群をグループ化すること-7-

で簡潔なシーケンス図を生成する手法を提案した．
今後の課題としては，開発者が対話的にグルーInternational Conference on Program Comprehension, pp.59-68, June 2007.

プ化とグループ化の解除を制御できようにすることが挙げられる．提案手法を Amida に組み込み，

Amida に実装されているループの圧縮機能と組み合わせることで，さらにシーケンス図を縮約する[7] Pauw, W. D., Jensen, E., Mitchell, N. Sevitsky, G., Vlissides, J. M. and Yang, J.: Visualizing the Execution of Java Programs.
Revised Lectures on Software Visualization,ことが期待できる．また，本手法で得られるオブInternational Seminar, pp.151-162, 2002.

ジェクトの階層構造について，開発者の考えるクラスの重要度や，ソフトウェアの複雑度との関係[8] Pauw, W. D., Lorenz, D., Vlissides, J.
and Wegman, M.: Execution Patterns inを調査したいと考えている．

Object-Oriented Visualization. Proceedingsof the 4th Conference on Object-oriented

謝辞
本研究は，日本学術振興会科学研究費補助金若Technologies and Systems, pp.219-234, April
1998.

手研究（スタートアップ）（課題番号:19800021）の助成を得た．

参考文献[9] Reiss, S. P. and Renieris, M.: Encoding program executions. Proceedings of the 23rdInternational Conference on Software Engi-[1] Apache Struts Project.
http://struts.apache.org/neering, pp.221-230, May 2001.
[2] Cooper, K. D., Harvey, T. J. and Kennedy,
K.: A Simple, Fast Dominance Algorithm.
http://www.cs.rice.edu/ keith/EMBED/[10] Richner, T. and Ducasse, S.: Using Dynamic Information for the Iterative Recovery[3] Hamou-Lhadj, A. and Lethbridge, T.: Sum-of Collaborations and Roles. Proceedings ofthe 18th International Conference on Soft-marizing the Content of Large Traces to Facilitate the Understanding of the Behaviour

ware Maintenance, pp.34-43, October 2002.

of a Software System, Proceedings of the28th International Conference on Software
Engineering, pp.181-190, 2006.

[11] 佐々 正孝，滝本 宗宏：静的単一代入形式を用いた最適化 (導入編)．コンピュータソフト[4] LaToza, T. D., Venolia, G. and DeLine, R.:
Maintaining Mental Models: A Study of[12] Spinellis, D.: Abstraction and Variation.

ウェア，Vol.25，No.1(2008)，pp.19-29．

IEEE Software, Vol.24, No.5, pp.24-25,
2007.

Developer Work Habits. Proceedings of the28th International Conference on Software
Engineering, pp.492-501, Shanghai, China,[13] 谷口 考治, 石尾 隆, 神谷 年洋, 楠本 真二, 井上 克郎: プログラムの実行履歴からの簡潔な2006.

シーケンス図の生成手法．コンピュータソフ

[5] Lejiter, M., Meyers, S. and Reiss, S. P.: Sup-トウェア，Vol.24，No.3(2007)，pp.153-169．

port for Maintaining Object-Oriented Programs. IEEE Transactions on Software Engineering, Vol.18, No.12, pp.1045-1052, 1992.

[14] Wild, N. and Huitt, R.: MaintenanceSupport Object-Oriented Programs. IEEE
Transactions on Software Engineering,
Vol.18, No.12, pp.1038-1044, December[6] Lienhard, A., Greevy, O. and Nierstrasz,
O.:Tracking Objects to Detect Feature De-1992.

pendencies. Proceedings of the 15th IEEE- 8 -E