クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

メタモデル記述を用いた成果物間の依存関係追跡手法
システム開発におけるユーザ要求の 明示的表現に関する一検討
シーケンス図の生成のための実行履歴圧縮手法
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
プログラムの変更前後での 実行履歴の差分検出手法
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
プログラムの動作を理解するための技術として
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
暗黙的に型付けされる構造体の Java言語への導入
動的依存グラフの3-gramを用いた 実行トレースの比較手法
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
実行時情報に基づく OSカーネルのコンフィグ最小化
Javaプログラムの変更を支援する 影響波及解析システム
社会シミュレーションのための モデル作成環境
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
コードクローンの動作を比較するためのコードクローン周辺コードの解析
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
プログラム理解におけるThin sliceの 統計的調査による有用性評価
バイトコードを単位とするJavaスライスシステムの試作
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
類似した振舞いのオブジェクトの グループ化による クラス動作シナリオの可視化
ソフトウェア工学 知能情報学部 新田直也.
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
オブジェクトの動的支配関係解析を 用いたシーケンス図の縮約
オブジェクトの動的支配関係解析を用いた シーケンス図の縮約手法の提案
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
蓄積されたオブジェクトの動作履歴を用いた 実行履歴削減手法の提案
プログラム分散化のための アスペクト指向言語
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
コードクローン解析に基づく デザインパターン適用候補の検出手法
木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
一問一答式クイズAQuAsにおける学習支援の方法
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
オブジェクト生成の観測に基づく プログラム実行の要約の抽出
オブジェクト生成の観測に基づく プログラム実行の要約の抽出
Presentation transcript:

クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価 平成22年2月15日 クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価 大阪大学 大学院情報科学研究科 コンピュータサイエンス専攻 井上研究室 博士前期課程2年 宗像 聡(Munakata Satoshi) 平成22年3月18日 第167回ソフトウェア工学研究発表会 修士論文発表会

概要 クラスの動作理解を支援 オブジェクト指向プログラムの動作理解を支援 オブジェクトが多数生成されるクラスの動作理解は困難 平成22年2月15日 概要 オブジェクト指向プログラムの動作理解を支援 クラスの動作理解を支援 オブジェクトの振舞いを可視化する手法が有効 オブジェクトが多数生成されるクラスの動作理解は困難 各オブジェクトの振舞いを逐一確認するのは労力が大きい 振舞いの類似性に基づきオブジェクト群を分割する手法を提案 グループごとに振舞いを図として可視化 注目クラスの代表的な振舞いのみを確認できる 6つのオープンソースソフトウェアに適用して,有効性を検証 本発表では,オブジェクト指向プログラムの動作理解支援を目的として,ある1つの注目するクラスについて,その動作の理解を支援する一手法を提案します. クラスの動作理解とは,そのクラスがプログラム中でどのように使われるのか,または,そのクラスのオブジェクトがプログラム中でどのように振舞うのか理解することを指します. これには,プログラム実行時に行われた,そのクラスのオブジェクトの実際の振舞いを確認することが有効であると言われています. しかし,注目するクラスのオブジェクトがプログラム実行時に多数生成された場合には,このようにして,クラスの動作を理解することは困難になります. なぜなら,同じクラスのオブジェクトであっても,その振舞いはそれぞれに異なりますが,各オブジェクトの振舞いを逐一確認するのは労力が大きく,現実的でないためです. そこで,本研究では,注目するクラスのオブジェクト群を,その振舞いの類似性に基づいて分割する手法を提案します この分割により,互いに振舞いが類似するオブジェクトからなるグループが複数得られます.そして,グループごとにその振舞いを図として可視化することで,注目するクラスの特徴的な振舞いのみを提示できると考えました. 提示された図のみを確認することで,多数のオブジェクトを生成するクラスであっても,効率良く動作理解が行える,ということを目指しています. 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

クラスの動作理解 o1 o2 プログラムの保守にはクラスの動作理解が不可欠[1,2] 実行時のオブジェクトの振舞いの可視化が有効 平成22年2月15日 クラスの動作理解 プログラムの保守にはクラスの動作理解が不可欠[1,2] クラスの使われ方,クラスのオブジェクトの振舞い 実行時のオブジェクトの振舞いの可視化が有効 プログラム実行時に,動作情報を実行履歴として収集 注目クラスのオブジェクトごとに,関係する動作情報を抽出 呼び出し関係図・UMLシーケンス図,DOPG図として可視化[3,4,5] プログラム 実行履歴 クラス A 近年,多くのプログラムがオブジェクト指向に基づいて,設計および実装されています. オブジェクト指向プログラムは複数の役割の異なるクラスから構成されています. そのため,オブジェクト指向プログラムを適切にメンテナンスするには,使われているクラスの動作,つまりクラスの使われ方やそのオブジェクトの振舞いについて,十分に理解することが不可欠であるといわれています. クラスの動作理解には,プログラム実行時に行われた,そのクラスのオブジェクトの実際の振舞いを可視化して確認することが有効であると言われています. これは,次の手順で行われます. まず,プログラム実行時に,メソッド呼び出しなどの動作情報を収集します. 次に,注目するクラスのオブジェクトごとに,そのオブジェクトと関係する動作情報を抽出します. そして,抽出したオブジェクトごとの動作情報を,目的に応じて,呼び出し関係図や,UMLシーケンス図,DOPG図に変換します. このようにして,注目するクラスのオブジェクトの振舞いが図として可視化されます. 呼び出し関係図 シーケンス図 o1 o2 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

振舞いの確認における問題 ? 注目クラスのオブジェクトが多数生成される場合 クラス A オブジェクトの振舞いはそれぞれ異なる[6] 平成22年2月15日 振舞いの確認における問題 注目クラスのオブジェクトが多数生成される場合 オブジェクトの振舞いはそれぞれ異なる[6] 各オブジェクトの振舞いを逐一確認することは困難 クラス A しかし、実用的なシステムでは、1つのクラスからオブジェクトが、多数生成されることがしばしばあります。 しかし,注目するクラスのオブジェクトがプログラム実行時に多数生成される場合には,適用することが困難になります 同じクラスのオブジェクトであっても,その振舞いはオブジェクトごとにそれぞれ異なります. そのため, ? 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

以前に提案した手法[7] !! 目的 代表的な振舞いの可視化 クラス A オブジェクトを多数生成するクラスの動作理解支援 平成22年2月15日 以前に提案した手法[7] 目的 オブジェクトを多数生成するクラスの動作理解支援 代表的な振舞いの可視化 振舞いが類似するオブジェクト群を分割 グループごとに振舞いをシーケンス図として可視化 注目クラスのオブジェクトの代表的な振舞いのみを提示 クラス A !! 1つのクラスから生成された多数のオブジェクトの中には、互いに振舞いの類似しているものが多く存在することが期待できます。 そこで提案手法では、解析対象のオブジェクトを、振舞いの類似しているものが同じグループになるように分類し、グループごとに代表的な振舞いを可視化する、というアプローチをとります。 これにより、確認する振舞いの数を、なるべく実行履歴にある実行時情報を潰すことなく減らすことができ、クラスの動作の全体像を容易に把握できるようになると考えました。 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

提案手法 以前に提案した手法の問題点 対話的な動作理解支援手法として再定義 分割基準が固定で,多様な調査目的を反映できない UML シーケンス図だけでは,提示された複数の振舞いの違いを比較,確認することが困難 対話的な動作理解支援手法として再定義 Step1:4つの分割基準から1つを選びオブジェクト群を分割 Step2:3つの可視化方法から1つを選び,各グループの振舞いの違いを強調して可視化 Step3:注目するグループについて,異なる分割基準で含まれるオブジェクト群を,さらに分割

Step1:オブジェクト群の分割 オブジェクト集合O={o1,…,on}上の同値関係を定義 同値関係を1つ選び,オブジェクト群を同値分割 平成22年2月15日 Step1:オブジェクト群の分割 オブジェクト集合O={o1,…,on}上の同値関係を定義 オブジェクトの振舞いの同値性に基づく同値関係 観点の異なる4つの同値関係 同値関係を1つ選び,オブジェクト群を同値分割 同値関係 Euse(os,ok) ・・・ os,okの参加した機能が同じ Emethods(os,ok) ・・・ os,okの使われ方が同じ Eused(os,ok),Ecalled(os,ok) ・・・ 本発表では説明を省略 オブジェクト群の分割は,オブジェクトの振舞いに基づく同値関係を定義し,それを用いて同値分割することで行います. このオブジェクトの振舞いの同値関係として,観点の異なる4つの同値関係を定義しました. Euseは,プログラム実行時に参加した機能が同じであるオブジェクトについて,同値関係が成り立ちます. また,Emethodsは,同じ使われ方をされたオブジェクトについて,同値関係が成り立ちます. そして,動作理解の目的に応じて,適用する同値関係を1つ選び,オブジェクト群を同値分割することになります. 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

Euse(os,ok) クラス A クラス X クラス Y o1 o2 o3 メソッド呼び出し元のクラスが完全一致 平成22年2月15日 Euse(os,ok) メソッド呼び出し元のクラスが完全一致 o1,o2 ・・・ { クラスX }, o3 ・・・ { クラスY } クラスはそれぞれ異なる役割を持つ 複数の役割のクラスが協調動作して,システムの機能が実現[7] 参加した機能の違いからくる,振舞いの差を識別 クラス A o1.print() o1 クラス X o2 o2.input() クラス Y o3 o3.input() 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

Emethods(os,ok) クラス A クラス X クラス Y o1 o2 o3 動作したメソッドが完全一致 平成22年2月15日 Emethods(os,ok) 動作したメソッドが完全一致 o1 ・・・ { print() }, o2,o3 ・・・ { input() } 動作したメソッドからは,クラスの使われ方が分析できる[8] 使われ方の違いからくる,振舞いの差を識別 クラス A o1.print() o1 クラス X o2 o2.input() クラス Y o3 o3.input() 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

Step2:振舞いの可視化 クラス A 各同値類からオブジェクトを1つランダムに選択 可視化方法を選び,各オブジェクトの振舞いを可視化 平成22年2月15日 Step2:振舞いの可視化 各同値類からオブジェクトを1つランダムに選択 同値関係から,ある観点では振舞いの性質が同じことがわかっている 可視化方法を選び,各オブジェクトの振舞いを可視化 呼び出し関係図,UMLシーケンス図,DOPG図 抽象度,識別できる振舞いの差が異なる クラス A Euse Euse 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

Step3:再帰的な分割 異なる同値関係を用いて,再帰的に分割 複数の観点から,より詳細に振舞いの差を確認できる クラス A Euse 平成22年2月15日 Step3:再帰的な分割 異なる同値関係を用いて,再帰的に分割 複数の観点から,より詳細に振舞いの差を確認できる クラス A しかし,各同値関係で識別できる振舞いの差は,限られています. Euse Euse 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

実装 Amida-OGAN GUIベースの対話的ツール 対話的に,分析クラス・同値類,分割基準,可視化方法を選択 平成22年2月15日 実装 Amida-OGAN GUIベースの対話的ツール 対話的に,分析クラス・同値類,分割基準,可視化方法を選択 呼び出し関係図・UMLシーケンス図・DOPG図 分割基準 可視化方法 分析クラス・同値類 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

適用実験 目的 調査質問 方法 クラス動作理解に対する有効性を検証 6つのオープンソースソフトウェアから取得した実行履歴に,提案手法を適用 平成22年2月15日 適用実験 目的 クラス動作理解に対する有効性を検証 調査質問 可視化するオブジェクトの選び方により,獲得する知識が変わるか? オブジェクト群の同値分割により,代表的な振舞いを提示できるか? 各クラスは同値分割により,幾つの同値類に分割されるか? 方法 6つのオープンソースソフトウェアから取得した実行履歴に,提案手法を適用 ケーススタディとして,特定クラスの動作理解を実施 各クラスの分割結果の調査 可視化するオブジェクトの選び方により,獲得できる知識が変わる場合はあるか? 振舞いに基づくオブジェクト群の同値分割により,代表的な振舞いを提示できるか? 各クラスのオブジェクト群は,同値分割により幾つの同値類に分割されるか? 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

分析対象 オブジェクトが複数存在するクラスの割合 約24~71%,平均で約36% ソフトウェア イベント数 クラス数 オブジェクト数 平成22年2月15日 分析対象 オブジェクトが複数存在するクラスの割合 約24~71%,平均で約36% ソフトウェア イベント数 クラス数 オブジェクト数 Scheduler 8578 (12) 17 1,973 JHotDraw 128,796 (97) 185 6,286 Apache PMD 633,309 (67) 105 8,431 MASU 3,198,125 (80) 309 12,414 Apache FOP 3,657,813 (120) 502 27,342 Antlr 7,305,687 (42) 60 21,022 オブジェクトが複数存在するクラスの割合は,約24~71%(平均で約36%) Software #Events #Classes #Objects Scheduler 8578 (12)17 1973 JHotDraw 128,796 (97)185 6,286 Apache PMD 633,309 (67)105 8,431 MASU 3,198,125 (80)309 12,414 Apache FOP 3,657,813 (120)502 27,342 Antlr 7,305,687 (42)60 21,022 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

Scheduler Javaで実装された,予定管理用カレンダープログラム 実行シナリオ 実行開始から終了までに1973個のオブジェクトが出現 平成22年2月15日 Scheduler Javaで実装された,予定管理用カレンダープログラム 予定を記入したい日付に対応するセルをクリック 登録ダイアログが開き,予定を編集できる 実行シナリオ 異なる日付に計3つの予定を追加 実行開始から終了までに1973個のオブジェクトが出現 適用実験の目的 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

クラスCalendarDateの分析 クラスCalendarDate Euseによる分割を適用 日付ごとの予定データを管理する 平成22年2月15日 クラスCalendarDateの分析 クラスCalendarDate 日付ごとの予定データを管理する 実行履歴中には731個のオブジェクトが出現 731個のオブジェクトの振舞いを確認することは困難 Euseによる分割を適用 呼び出し元のクラスに基づく同値分割 参加した機能の違いを識別することが目的 3個の同値類{ s1, s2, s3 }に分割 s1は,オブジェクト数 641 s2は,オブジェクト数 87 s3は,オブジェクト数 3 どのグループが何かを説明. 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

{s1,s2,s3}の呼び出し関係図 注目オブジェクトと,他のクラスのオブジェクトとの メソッド呼び出し関係を有効グラフとして可視化 平成22年2月15日 {s1,s2,s3}の呼び出し関係図 s1 s2 注目オブジェクトと,他のクラスのオブジェクトとの メソッド呼び出し関係を有効グラフとして可視化 ・同じクラスは同じ色で表現 ・少数の同値類としか関係しないクラスほど,大きいノードで表現 s3 共通する呼び出し関係 同じ処理を行っていると予測できる 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

s3の呼び出し関係図 s3 登録ダイアグラムと予定データ をCalendarDateが仲介 予定データ追加に関係したと予測 平成22年2月15日 s3の呼び出し関係図 s3 登録ダイアグラムと予定データ をCalendarDateが仲介 予定データ追加に関係したと予測 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

s3のUMLシーケンス図の一部 登録ダイアログ上でユーザからのマウス操作 登録ダイアログから予定の追加要求を受ける 平成22年2月15日 s3のUMLシーケンス図の一部 登録ダイアログ上でユーザからのマウス操作 登録ダイアログから予定の追加要求を受ける 予定データベースに予定を追加 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

{s1,s2,s3}のDOPG図 s1 s2 クラスの動作の全体像の把握 段階的にクラスの動作を調査 s3

分析結果 (1/2) 同値関係 Euse による分割 オブジェクトの選び方により,獲得できる知識が変わる 参加した機能の違いを反映していた 平成22年2月15日 分析結果 (1/2) 同値関係 Euse による分割 参加した機能の違いを反映していた s1 ・・・ 初期化   s2 ・・・ 初期化 & 描画 s3 ・・・ 初期化 & セル描画 & 予定追加 オブジェクトの選び方により,獲得できる知識が変わる 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

分析結果 (2/2) 全オブジェクトの呼び出し関係図は,3パターン DOPG図では,6パターン 可視化した3図で網羅されていた 平成22年2月15日 分析結果 (2/2) 全オブジェクトの呼び出し関係図は,3パターン 可視化した3図で網羅されていた 提示した以外の振舞いを図として可視化することで,新たに得られる知識は少ない DOPG図では,6パターン 提示していない3パターンがある 動作したスレッド,推移的な呼び出しの違いなど 新たに同値関係を定義して,この様な振舞いの差を識別し分割することは可能 注目クラスのオブジェクトの振舞いとして,どの程度の差を識別する必要があるか,今後調査が必要 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

Euseに基づく分割結果 同値類が9 個以下である(1画面で図を 並べて確認できる)クラスの割合 全クラス → 約97% 平成22年2月15日 Euseに基づく分割結果 同値類が9 個以下である(1画面で図を 並べて確認できる)クラスの割合 全クラス → 約97% オブジェクト数が50 以上 → 約82% 同値類が9 個以下であるクラスの割合は全クラスに 対して約97%,オブジェクトが50 個以上存在するクラスに対して約82%, 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

多数の同値類に分割されるクラス イベント通知,データ保持,ユーティリティの役割のクラス MASUのクラスStateChangeEvent 平成22年2月15日 多数の同値類に分割されるクラス イベント通知,データ保持,ユーティリティの役割のクラス MASUのクラスStateChangeEvent 8344個のオブジェクト,45個の同値類 JHotDrawのクラスResourceBundleUtil 959個のオブジェクト,58個の同値類 多数のクラスから横断的に使用されるため 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

再帰的な分割 分割数の少ない分割基準から適用することで,興味あるオブジェクト群を絞ることが可能 分割基準によって分割数は大きく変わることがある 例) MASUのクラスStateChangeEvent Euseでは,45個の同値類に分割 Emethodsでは,3個の同値類に分割 分割数の少ない分割基準から適用することで,興味あるオブジェクト群を絞ることが可能 EuseかEmethods のどちらかが分割数9以下であるクラス 全体で約99% オブジェクト数が50以上のクラスで約93% 第167回ソフトウェア工学研究発表会 平成22年3月18日

調査結果 ケーススタディから,可視化するオブジェクトの選び方により,獲得できる知識が変わる場合が実際にあることを確認した. ケーススタディでは,クラスに代表的な振舞いを提示できた. Schedulerでは,異なる機能に対応する3つの振舞いを,網羅的に提示できた オブジェクトが50 個以上あるクラスの内,約84~95%と大多数のクラスで,各分割数は9 以下だった 各振舞い図を,1 画面で比較,確認できる数 第167回ソフトウェア工学研究発表会 平成22年3月18日

まとめ クラスの動作理解を支援する手法 今後の課題 注目クラスの代表的な振舞いのみを可視化 動作理解作業に対する有効性評価 平成22年2月15日 まとめ クラスの動作理解を支援する手法 注目クラスの代表的な振舞いのみを可視化 振舞いの同値性に基づいて,オブジェクト群を同値分割 同値類ごとに振舞いを可視化 動作理解作業に対する有効性評価 6つのオープンソースソフトウェアから取得した実行履歴に,提案手法を適用 今後の課題 実際のメンテナンス作業に対する有効性評価 被験者を用いた対照実験,主観的評価など 考察が無い 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

第167回ソフトウェア工学研究発表会 平成22年3月18日

DOPG(Dynamic Object Process Graph) 平成22年2月15日 DOPG(Dynamic Object Process Graph) 1つのオブジェクトについて注目した制御依存グラフ DOPG図 ClassB # newClassA() Javaプログラム 1 2 3 4 5 6 7 8 9 10 11 12 class ClassB { void newClassA() { ClassA a = new ClassA (); for(int i=0; i<a.max(); i++) passClassA( a ); } void passClassA( ClassA a ) { a.call(); System.out.println(); Create o1 ClassA # max() ClassB # passClassA( ClassA ) 暗い オートシェイプで表現 色々と省略 サンプルとして完成させる もっと読みやすく 意味がわからん ClassB # passClassA( ClassA ) ClassA # call() 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

Methodsに基づく分割結果 同値類が9 個以下であるクラスの割合 全クラス → 約99% オブジェクト数が50 以上 → 約87% 平成22年2月15日 Methodsに基づく分割結果 同値類が9 個以下であるクラスの割合 全クラス → 約99% オブジェクト数が50 以上 → 約87% 同値類が9 個以下であるクラスの割合は全クラスに 対して約99%,オブジェクトが50 個以上存在するクラスに対して約87%, 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会

UseとMethodsの分割結果の相関 平成22年2月15日 どっちかで9個以下のやつは 修士論文発表会 第167回ソフトウェア工学研究発表会 平成22年3月18日 修士論文発表会