ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について 大阪大学 神谷年洋
構成 1.メトリクスによる予測の実用化について 2.再利用とメトリクス 3.開発プロセスの変化とメトリクス 4.ソフトウェアの進化・発展とメトリクス プロセスメトリクス収集ツール 再利用を考慮したC&Kメトリクスの適用
メトリクスとは 開発プロセスやプロダクトを計測するモノサシ 主に開発管理に使われる
1.メトリクスによる予測の実用化について メトリクスによる予測や検定には統計データが必要 メトリクスによる予測や検定には統計データが必要 実例:2つのソフトウェア開発組織から,30人以上の技術者,2000以上のクラス R. Chidamber and C. Kemerer: A Metrics Suite for OO Design, IEEE Trans. on Software eng., vol. 20, No. 6, 1994, pp. 476-493. 少数のサンプルでは,予測や検定は統計的に困難になる →粒度を下げてサンプル数を増やす?
メトリクスデータが存在しない メトリクスデータそのものが社外秘 収集は基本的に被験者の報告ベースなので,データ収集そのものにコストがかかる メトリクスデータがプロセス管理以外の目的に用いられる→バイアスがかかる
対策 教育現場で実験を行う 実験条件を設定可能 被験者自身にメトリクスデータを収集する動機が存在する 被験者の能力の判定基準が存在する 複数の同一のプロダクトを開発する 被験者自身にメトリクスデータを収集する動機が存在する パーソナルソフトウェアプロセス(PSP) W. S. Humphrey: A Discipline for Software Engineering, Addison-Wesley(1995).
メトリクスデータ収集ツールを作成[1] 記入を容易にする 集計を容易にする 被験者に対するフィードバック ガイド機能,DB機能 PSPからの要請
2.再利用とメトリクス 大規模な再利用の影響 新規開発されるプロダクトの量を見積もることが困難になる アプリケーションフレームワークの場合,ドメインの適合度が再利用度に影響する FPは新規開発と修正を区別するが,部品を修正して再利用すると? 再利用されるプロダクトは新規開発の部分より高品質であることが多い
再利用部品のドキュメンテーションがどの程度提供されるのか オープンソース? オープンデザイン? オープン仕様書? オープンテストデータ,オープンサンプル? オープンエラー追跡データ?
対策 再利用部分と新規開発部分とを区別するメトリクスを提案[2] 再利用部分は新規開発部分よりも品質が高いことを考慮してメトリクスを計測する →エラー発生予測精度向上
部分的なドキュメンテーションからメトリクスを計測する試み[研究中] インターフェイスだけ公開する場合 +設計も公開する場合 ソースコードを公開する場合 エラー予測精度の違いを分析
3.開発プロセスの変化とメトリクス メトリクスは中間プロダクトを計測することで開発コストや品質を予測する スパイラル開発では,中間プロダクトが何度も生成される
対策 プロダクトメトリクスにも動的な概念を導入する? メトリクスを細かい粒度で計測,運用する方法の検討?
4.ソフトウェアの進化・発展とメトリクス 進化・発展により,ソフトウェアが運用に入ってからも,修正が続く 進化・発展の度合い(状態)を計測するメトリクスの必要性? 中谷多哉子, 玉井哲雄, 友枝敦,酒匂寛, : オブジェクト指向によるシステムの進化を表わすメトリクスの検討, ソフトウェアシンポジウム'96論文集, 1996, pp.52-62.
システムの進化・発展を予測するメトリクス? 発展のためのコストや 発展したときの品質を予測
まとめ (メトリクスの実用化を視野に入れて) データの積み上げのための枠組み 運用手法の確立 新たな問題領域に対応する 開発プロセスの影響,プロダクトの影響 Computer Added Measurement? 新たな問題領域に対応する
プロセスメトリクス収集ツール[1]
主な機能 (1)プロセスメトリクスの収集 (2)文書化支援/フィードバック 工数やエラー数といったプロセスメトリクスを半自動的に収集する →今までの手作業による収集よりも信頼性が向上 プロダクト,欠陥,フォールトの依存関係を利用することでデータの一貫性を保証する (2)文書化支援/フィードバック 収集したデータを整理して表示したり,HTML文書にする
収集するデータ
データ入力画面 テスト・プロダクト・エラーの依存関係に基づいたガイドを行う
データ表示画面 プロダクトやテストごとにエラーを分類
ツールの構成
ツールの評価 被験者にアンケート ログビューを見ることで,進捗状況を理解しやすかった 今までの所用時間が記録されているので,作業の見通しが立て易かった 同じようなエラーがあった場合,今まででの記録があるので修正の手助けになった 手作業で記録していたが,ツールを用いることで入力の時間が短縮された
再利用を考慮したC&Kメトリクスの適用[2]
ChidamberとKemererの複雑度メトリクス ソフトウェアの複雑さを計測する エラー発生予測 オブジェクト指向設計仕様書を計測対象とする クラスが他のクラスを参照する数が多いほど複雑である(CBO,RFC) クラスの親クラスや子クラスが多いほど複雑である(DIT, NOC) クラス内部の複雑度(LCOM, WMC)
再利用の影響 再利用されたクラスは新規開発のクラスよりも高品質である → 仮説:再利用されたクラスを参照しても複雑度は増大しない エラーが少ない 開発期間中に修正されない ドキュメンテーションが存在する → 仮説:再利用されたクラスを参照しても複雑度は増大しない 新規開発クラスに対する参照と,再利用クラスに対する参照を区別する
メトリクスの修正 CBO CBON CBOR 計測対象のクラスが結合しているクラスの数 計測対象のクラスが結合している新規開発クラス数 計測対象のクラスが結合している再利用クラス数
実験 新人研修におけるC++プログラム開発演習からデータを収集 6チームが独立に拡張酒屋問題を開発する 19人のデータが分析対象となった チームは4から5名の開発者から構成される データベースを用いて,売り上げ予測等を行う MFCをフレームワークとして用いる 19人のデータが分析対象となった
メトリクスデータ
評価