オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として --- 大阪大学 大学院基礎工学研究科 情報数理系専攻 ソフトウェア科学分野 井上研究室 神谷年洋 1998/02/19 T. Kamiya, Osaka Univ. 研究の背景 ソフトウェアが複雑化・大規模化している 開発期間の短縮と品質の向上が求められ ている 開発プロセスの改善に関する研究が活発 に行われている – CMM – ISO9000 – SPICE 1998/02/19 T. Kamiya, Osaka Univ. Page 1 開発者個人の技術向上 プロセス改善のためには、開発者個人の 技術向上が必要であると指摘されている* 開発者の技術向上を支援し実現するため の環境が必要である – 計測に基づく評価とフィードバックを繰り返す ことが効果的である * W. S. Humphrey: A Discipline for Software Engineering, Addison-Wesley(1995). 1998/02/19 T. Kamiya, Osaka Univ. Page 2 現在の開発支援の問題点 (a)多くの開発ツールが投入されているが、プ ロダクトの評価機能を持つものは存在しな い (b)多くのメトリクスが提案されているが、開発 者個人向けの実用レベルのツールは開発 されていない (c)分析結果を開発者に効果的にフィード バックする方法は確立されていない Page 3 本研究の目的 オブジェクト指向開発を対象としたメトリク スツールの作成 Smart:プロダクトメトリクス計測ツール Efer:プロセスメトリクス計測ツール 特長 個人のソフトウェア開発過程において (a)プロセスメトリクス・プロダクトメトリクスを計測 (b)計測対象は開発環境として一般的なVC++ 5.0と MFCを用いたプログラム (c)分析結果を開発者へ視覚的にフィードバック 1998/02/19 T. Kamiya, Osaka Univ. Page 4 プロダクトメトリクス計測ツールSmart [主な機能] (1)クラス階層の表示 – ライブラリのクラスと新規開発のクラスを区別する – ライブラリのクラスについては、開発プログラムから 参照される部分に限定して表示可能である (2)メトリクスによる分析 – 複雑さメトリクスを計測する(RFC, CBO, DIT, NOC, WMC, LCOM, NIV, SLOC) – 統計分析により複雑であると判定されたクラスをGUI により直感的に指摘する – メトリクス分析部分を修正することで容易にメトリクス を追加できる Page 5 プロダクトメトリクス計測ツールSmart (3)他言語への対応 – C++プログラムの構造を抽出する部分が独立していて、 他のオブジェクト指向プログラミング言語などへの対 応が可能である (4)ソースコードのブラウズ 1998/02/19 T. Kamiya, Osaka Univ. Page 6 Smartの 構成 Smart ライブラリのソースコード 新規開発のソースコード C++プログラム構造抽出部 構造データ メトリクス分析部 ソースコード位置 データ メトリクスデータ, 統計分析データ グラフィックユーザーインターフェイス部 C++で実装 1万行程度 メトリクス値,統 計分析 1998/02/19 T. Kamiya, Osaka Univ. クラス階層 ソースコード Page 7 Smartの表示(1)クラス階層全体 1998/02/19 T. Kamiya, Osaka Univ. Page 8 Smartの表示(2)クラス階層 1998/02/19 T. Kamiya, Osaka Univ. Page 9 Smartの表示(3)メトリクスによる分析 1998/02/19 T. Kamiya, Osaka Univ. Page 10 Smartによるフィードバック情報 CMsgSock CPopsDoc CSetDlg CPopsView CRegistDlg CMainFrame CPopsApp CMsg CListenSock CAboutDlg CCCRRRWWWLLL CRRWLLL RW CRRL W R CSmtpSDoc CSmtpSView CSmtpSApp CMainFrame MessageSock CMsg CMailRound CMailListDlg CAboutDlg RWLL RWLL CCRR R CSmtpCView CSmtpCDoc CMainFrame MessageSock CSmtpCApp CMsg CMailProvDlg CAboutDlg RWLL RL R CPopCView CPopCDoc CMainFrame CMySock CPopCApp CLogonDlg CKankyouDlg CAboutDlg 1 6 3 1 1.25 168.03 135.35 CUserCtl CSMTPclientView CAdressDlg CSMTPclientDoc CUserDlg CMainFrame CMAILENV CSMTPclientApp CSMTPSocket CMsg CAboutDlg CCCRRRWWLLL CRWLL CCRRRW CRL CMailFile CIndex CPopServerDoc CPassword CConfig CPopServerView CPopServerApp CMessageSock CMainFrame CAboutDlg CCCRRWWL CRRW CCRR R R CSmtpCDoc CSmtpCApp CMainFrame CSmtpCView CSMTPSocket CMsg CAboutDlg CRL 82.55 1 0.1 R L 1 77.9 1 1 1 0.1 41.4 8.3 1 0.3 7.72 CCRRRWLLL CR RL 1998/02/19 2 2 38.55 CPopSDoc MessageSock ListenSock CPopSView CPopSApp CMsg CMainFrame CAboutDlg CCCRRRWLL CRW 2 CMainFrame Mail User CDeliverView CDeliverDoc CDeliverApp CAboutDlg C 3 255.43 43.27 CMsg CRW CMsgSocket CPOPServerView CPOPServerDoc CPOPServerApp CMainFrame CListenSocket CAboutDlg 3 1 CPopCView CPopCApp CMainFrame CLogonDlg CEnvDlg CPopCDoc CMySocket CMsg CAboutDlg CRRWLL RLL R L L 3 1.1 1 0.38 CPopCView CPopCDoc CLogDlg CMainFrame CMsg MessageSock CPopCApp CAboutDlg CRWL CRL CRWL RL T. Kamiya, Osaka Univ. 1 CRWL L RL W CSplashWnd CSmtpCApp CSmtpCView CMainFrame CSmtpCDoc CKankyo CSmtpCSock CMsg CAboutDlg CCRRRWWLL CCRRLL CR CR L L CPopCDoc MessageSock CPopCView CPopCApp CMsg CMainFrame CDialogbox CAboutDlg RL CMainFrame CMsg Mail User CDeliverView CDeliverSocket CDeliverDoc CDeliverApp CAboutDlg CCRRRWWLLL W CMainFrame CEntry CDeliverView CDeliverDoc CDeliverApp CAboutDlg CRRWL RRW 1 1 86.12 20.43 1 0.43 5 68.63 1 0.27 17 58.25 7 40.63 1 8 0.23 42.53 599.73 0.62 0.68 R 7 CMilDlg CSmtpCView CSmtpCDoc CMsg CSmtpSocket CSmtpCApp CMainFrame CAddressbookDlg CAboutDlg 9.27 Page 11 プロセスメトリクス収集ツールEfer [主な機能] (1)プロセスメトリクスの収集 – 工数やエラー数といったプロセスメトリクスを 半自動的に収集する →今までの手作業による収集よりも信頼性が向上 – プロダクト,欠陥,フォールトの依存関係を利 用することでデータの一貫性を保証する (2)文書化支援 – 収集したデータを整理して表示したり,HTML 文書にする 1998/02/19 T. Kamiya, Osaka Univ. Page 12 Eferの収集するデータ 1998/02/19 レビュー テスト レビュー開始 (レビューされるクラス) テスト開始 (テストケース) フォールト発見 (フォールトの内容) 欠陥発見 (欠陥の内容) レビュー終了 テスト終了 フォールト修正 欠陥のフォールト特定 修正開始 (フォールトID) 特定開始 (欠陥ID) 修正終了 (修正内容) 特定終了 (フォールトが存在するクラス) T. Kamiya, Osaka Univ. (フォールトの内容) Page 13 Eferの表示(1) ログビュー 作業を時間順に表示する 1998/02/19 T. Kamiya, Osaka Univ. Page 14 Eferの表示(2) プロダクトビュー プロダクトごとにエラーデータを追跡する 1998/02/19 T. Kamiya, Osaka Univ. Page 15 Eferの構成 Efer エンジン DB ・状態遷移を 管理する ・制約条件と 依存関係に 基づいて データを 生成する 作業データ 入力部 実作業データ入力 プロセスの 状態データ ウィンドウ出力 出力部 作業データ, プロセスの 状態データ C++で実装 1万5千行 程度 1998/02/19 ログビュー プロダクトビュー HTML出力 テストケースビュー T. Kamiya, Osaka Univ. Page 16 Eferの評価 ログビューを見ることで,進捗状況を理解 しやすかった 今までの所用時間が記録されているので, 作業の見通しが立て易かった 同じようなエラーがあった場合,今までで の記録があるので修正の手助けになった 手作業で記録していたが,ツールを用いる ことで入力の時間が短縮された 1998/02/19 T. Kamiya, Osaka Univ. Page 17 まとめ 主な成果 (1)個人開発環境として用いることができるメトリク スツールを作成した Smart, Efer (2)実用ツールとして企業の研修で利用されている 課題 (1)SmartとEferの連携,メトリクスの充実 (2)メトリクスの有用性を検証し,改善を行う 1998/02/19 T. Kamiya, Osaka Univ. Page 18 後期課程において希望する研究 (1)開発現場への適用 メトリクスツールによるフィードバックの効果を 実際の開発で調べる (2)上流工程への適用 実際の開発現場で標準的に利用されている仕 様書や設計書を対象とした計測手法の提案 1998/02/19 T. Kamiya, Osaka Univ. Page 19 開発支援環境の全体像 要求分析ツール 仕様書 機能量計測 ツール 設計 設計ツール 設計書 複雑さ メトリクス ツール 実装 コンパイラ コード生成器 ソースコード テスト 欠陥データ 1998/02/19 レポジトリ・依存追跡ツール 要求分析 工数記録ツール プロセス/プロダクト テストベンチ プロファイラ 欠陥データ収集 ツール Page 20 FPツール 要求仕様書作成ツールREQUARIOで開発 された仕様書(ユースケースを視覚化した もの)に対するファンクションポイント計測 ツールを試作した – FP:ソフトウェアの規模を計測するメトリクスで あり、開発工数の予測に用いられる 1998/02/19 T. Kamiya, Osaka Univ. Page 21 後期課程において希望する研究(2) オブジェクト指向開発手法の提案・改善 – オブジェクトの振る舞いに関する分析・設計手 法はまだ確立されていない – 計算機で分析・設計・実装を効果的に支援可 能な開発手法 1998/02/19 T. Kamiya, Osaka Univ. Page 22 プロトタイプの位置づけ プロセス/プロダクト 仕様書 FPツール 設計 設計ツール 設計書 複雑さメトリク スツール 実装 コンパイラ コード生成器 下流工程のプロセス・ プロダクトを評価する ツールを試作した ソースコード レポジトリ・依存追跡ツール 要求分析ツール 工数記録ツール 要求分析 Smart テスト 1998/02/19 欠陥データ テストベンチ プロファイラ 欠陥データ収集 T. Kamiya, Osaka Univ. ツール Page 23
© Copyright 2026 ExpyDoc