スライド タイトルなし - Software Engineering Laboratory

Download Report

Transcript スライド タイトルなし - Software Engineering Laboratory

オブジェクト指向メトリクスを用いた
開発支援に関する研究
--- 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