オブジェクト指向プログラムのための 動的結合メトリクスの評価 竹原 元康 井上研究室
発表内容 研究の背景 動的複雑度メトリクス 実験計画の作成 評価実験と分析 まとめ 2018/11/20 修士論文発表会
背景(1/3) 複雑度メトリクス オブジェクト指向開発方法論による ソフトウェア開発の活発化 背景(1/3) 複雑度メトリクス オブジェクト指向開発方法論による ソフトウェア開発の活発化 オブジェクト指向ソフトウェアの開発管理を効果的に行うためには各工程においてメトリクスを使用し,品質や進捗状況の定量的な評価が必要 Chidamberらの複雑度メトリクス(C&Kメトリクス) 6種類のメトリクスを定義し,それぞれのメトリクスでクラス間の結合や継承関係等の複雑さを計測 2018/11/20 修士論文発表会
背景(2/3) 動的複雑度メトリクス ソフトウェアの動的複雑度(実行時のソフトウェアの振舞い)の重要性が指摘されている 背景(2/3) 動的複雑度メトリクス ソフトウェアの動的複雑度(実行時のソフトウェアの振舞い)の重要性が指摘されている Yacoubらによるオブジェクト指向ソフトウェアに対する動的な複雑度メトリクス[1] 特定の入力データに対する評価 クラス間メッセージの送受信回数 状態遷移の複雑さ 提案のみがされており有効性についての評価が不十分 [1]Yacoub S., Ammar H. and Robinson T.: ``Dynamic Metrics for Object Oriented Designs'', Proceedings of the Sixth International Symposium on Software Metrics,pp. 50-61 (1999). 2018/11/20 修士論文発表会
背景(3/3) 評価の重要性 ソフトウェア工学の分野で数多くの手法やツールが提案されてきているが,その有効性についての具体的な証拠はほとんど収集されていない[2]. Empirical Software Engineering 実際のソフトウェア開発現場や研究機関において様々 な状況(コンテキスト)を設定し,理論や技術の適用実験 (ソフトウェア工学実験)を行い,その妥当性や有効性な どを検証する [2] W. F. Tichy, N. Harbermann and L. Prechelt: "Future directions in software engineering," ACM SIGSOFT, Software Engineering Notes, Vol.18, No.1, pp.35- 48(1993). 2018/11/20 修士論文発表会
本研究の目的 実験計画の作成と遂行 動的メトリクスと静的メトリクスの関係 動的メトリクスが以下の品質特性を評価可能であるか 保守性 理解容易性 再利用性 エラーの伝播と発生可能性 2018/11/20 修士論文発表会
静的メトリクス:CBO CBO(Coupling Between Object classes) クラス間の結合による複雑度[3] クラス間の結合による複雑度[3] 計測対象クラスが「結合」しているクラスの数 結合とは,計測対象クラスが他のクラスの属性やメソッドを用いていることを意味する 設計書やソースコードから収集される情報のみで計測 [3] Chidamber S. R. and Kemerer C. F.: ``A Metrics Suite for Object Oriented Design'', IEEE Trans. on Software Eng., Vol. 20, No. 6, pp. 476-493 (1994). 2018/11/20 修士論文発表会
動的メトリクス(1/2) EOC(Export Object Coupling) 入力データxを与えたときの実行中にオブジェクト間 で交換されるメッセージの総数のうちOiからOjに送 信されるメッセージの割合 2018/11/20 修士論文発表会
動的メトリクス(2/2) OQFS(Object Request for Service) 入力データxを与えたときの実行中にオブジェクト間で交 換されるメッセージの総数のうちOiから他の全てのオブ ジェクトに送信されるメッセージの割合 入力データの発生確率との積をとりその総和をとる 2018/11/20 修士論文発表会
品質特性評価への利用 動的メトリクスがソフトウェアの品質特性を評価するのに有効であると予想している 保守性 理解容易性 再利用性 エラーの伝播と発生可能性 2018/11/20 修士論文発表会
実験計画(1/2) 動的メトリクスと静的メトリクスの関係 OQFS vs CBO MM[4] ICP[5] [4]Briand L. C., Devanbu P. and Melo W. L.,: `` An Investigation into Coupling Measures for C++,'' Proceedings of the 19th International Conference on Software Engineering(ICSE97), Boston, pp. 412-421(1997). [5]Lee, Y., Liang B. and Wu S.: ``Measuring the Coupling and Cohesion of an Object-Oriented Program Based on Information Flow,'' Proceedings of International Conference on Software Qualiy, Maribor, Slovenia (1995). 2018/11/20 修士論文発表会
実験計画(2/2) 保守性,理解容易性 再利用性 エラーの伝播と発生可能性 コンポーネントを作成する際に,発生したエラーを修正するのに要した時間 再利用性 同一仕様を基に作成された複数のクラスを交換し,動作の可否 エラーの伝播と発生可能性 あるコンポーネントにエラーが存在し,調査した結果,他のコンポーネントが原因 →コンポーネントを作成する際に,発生したエラー数 2018/11/20 修士論文発表会
評価実験ー概要 実験の実施: 2000年7月に行われたある企業の新人研修におけるJavaプログラム開発プロジェクト(オークションシステムの作成) 被験者 (研修生)は事前に, オブジェクト指向開発について講習を受けている 1チームは4~5名の研修生からなり, 7チームが独立して同じシステムの開発を行う 各チームのメンバーがオークションシステムを構築する上で必要なコンポーネントを作成する(29種類) 2018/11/20 修士論文発表会
収集データ ソースコード エラーデータ 154個のクラスから収集されたエラーデータの総数は, 80個である メトリクス値を計測するためのデータ 1時間ごとにソースコードを自動的に収集 エラーデータ 設計レビュー,コードレビュー,テストにおいて発見されたエラーと各エラーの修正に要した時間に関する データ 記入フォームに被験者が記入する 154個のクラスから収集されたエラーデータの総数は, 80個である 2018/11/20 修士論文発表会
評価方法 動的メトリクスと静的メトリクス間の関係 品質特性の評価 OQFS vs CBO 実験により作成された複数のクラスに対して,動的メトリクス(OQFS)と静的メトリクス(CBO)を計測し,それらの間の相関関係の評価 品質特性の評価 保守性,理解容易性,エラーの伝播と発生可能性 各クラスで発生したエラー数,修正時間と動的メトリクス(OQFS)の間の関係を調べる 2018/11/20 修士論文発表会
使用した入力データ ユーザ10人:A~J A:会員登録→B:会員登録→A:出品→ C:会員登録→B:出品→ C:入札… 30個の入力データを用意した 入力データの発生確率は各3.3% 2018/11/20 修士論文発表会
計測結果 動的 静的 AuctionClient 48.9 10 AuctionManagerImpl 35.9 13 AuctionServer 0.1 1 ・ メトリクス クラス 最大値 最小値 平均値 動的 67.4 4.5 静的 13 3.0 2018/11/20 修士論文発表会
動的及び静的メトリクスの相関 両メトリクス間の相関係数=0.73 あまり強く相関していない 両メトリクスは異なった複雑度を評価している(Yacoubらの予想を補完) 動的メトリクスと静的メトリクスはどちらがよりよくソフトウェアの複雑度を評価しているかの検証が必要 2018/11/20 修士論文発表会
品質特性の評価 保守性,理解容易性,エラーの伝播と発生可能性に関しては,動的メトリクスのほうがより良い評価を与える 動的 静的 エラー数 0.60 0.56 エラー修正時間 0.57 0.43 有意水準 1% 2018/11/20 修士論文発表会
メトリクスの利用方法 動的メトリクスを使用することで,静的に複雑なクラスから更に複雑なクラスを判別可能 Bの方がより注意が必要 A B 2018/11/20 修士論文発表会
まとめ Yacoubらの提案したオブジェクト指向ソフトウェアに対する動的複雑度メトリクスの有効性についての実験計画をし,評価を行った Chidamberらの静的メトリクスとの間の相関関係はあまり高くなく,静的な複雑さとは異なる観点の複雑さを評価していることを確認 今後の課題として,同様の実験を他のコンテキストにおいて行う 2018/11/20 修士論文発表会