W ソ ー ス コ ー ド ・ メ ト リ ッ ク ス の 利 用
メトリックス・データの活用方法を考察する。関数ごとに計測したメトリッ クス・データを基に、
CSV
やXML
といったデータへの変換系、HTML
やXSL
による表示系を生成する。また、それぞれのメトリックスを集計して、最大、最小、平均、標準偏差といた統計データを求める。
オープンソース・ソフトウェアのメトリックス・データをソフトウェア品質 解析の指標として利用するために解析し、メトリックス値の比較データとして 利用する。すでに、アーカイブ・サイト
Sappy
のSDB
情報等を利用して42 種
類のオープンソースのメトリックスを計測した。ブラウジング
図
. 1
4.
1 データ処理と表示 (CSV
、XML , Hl
・ML
、XSL
、VML
、SVG)
CSV
、XML
のデータ形式で計測データを利用するデータ変換プログラムをp e r l
で作成した。XML
はデータ交換の標準フォーマットであり、適当なスタ イルシートを用意してブラウザで表示できる。CSV
データ形式は、EXCEL
等 で利用可能である。70
S a p i d
によるソフトウェア解析技法あわせて、
XSL
(スタイルシート)やHTML
形 式 で デ ー タ を 表 示 す る 変 換・表示プログラムを作成した。Sapid
では、ソースコードや関数ドキュメン トとのハイパーリンクや、関数呼び出し図などをVML
形式やg i f
、png
画像形 式に変換する環境を開発している。SPIE
は、SDB
からソースコード・リストや 関 数 ド キ ュ メ ン ト を ハ イ パ ー ド キ ュ メ ン ト と し て 生 成 す る 。I d e n t i f i e r
、d e c l a r a t i o n
といったオブジェクトI d
を指定することで、ハイパーリンクが容易に実現できる。
4 . 2
データ表示の例(オープンソースの解析)Al
a d d i n
は、l i n u x
で利用する行列処理ソフトウェアであるwww お r . u m d . e d u
で 開発されたオープンソース・ソフトウェアであり、インタプリタで利用し、逆 行列、転置行列などを簡単に求めることができる。関数宣言文の総数422
個の 中規模プログラムである。A . HTML
形式出力(1)対象プログラムAladdin
関数ごとに行数
(LOC)
、 コ メ ン ト 行 数(COM)
、Cyclomatic
数(MVG)
、 関数呼び出し数(FIN)
といったメトリックスを集計する。ソースコード・リ ス ト や ド キ ュ メ ン ト に 対 す る ハ イ パ ー リ ン ク が 実 現 さ れ て い る( B .
を参照)。いくつかのメトリックスについては値の評価を行う。
1 :elmt自民r elmt fiber.c:Sour田
門戸!内側 o i m 門 閥 { 附
1 0 1 0 10 10 1 0 10.00 10.0 2 :SetUpFiberR田pondB11fT 130
elmt fiber .c:Sour目 10 1 2 12 13 110 12 1 1 13.16 110.2 3 :sld02
110 10 10 10 11 11 10 10 11.00 11.0 elmt fiber.c:So町 田
途中省略4‑420
421:ExtracCEigenvalue │ L │18 │5.00│18.0
第4章 ソフトウェア評価技法とメトリックス 71 matrix.c :Source
422:ExtracCEigenvector
28
。
6 2 5 18。 。
5.00 18.0 matrix.c :Sou陀eTotal = 422 67.78 4.26 6.96 1.88 4.40 80 11.55 11.55 4.69 7.07 Average 900 113 168 18 80 226 322 322 120 158 Max
Min 3
。 。 。 。 。 。 。 。 。
SDEV 112.0 10.63 13.95 1.78 5.22 24.56 32.37 32.37 12.09 13.19
B .
関数・プログラムドキュメントへのハイパーリンクSPIEによりドキュメントやソースコード・リストへのハイパーリンクを実現 する。 Identifier、declarationといった各オブジェクトIdに対して、ソースコー ドやドキュメントのリンク先が提供されている。ソースコード・リストも関数、
変数、構造体といったドキュメントへのハイパーリンクが実現されている。
オブジェクトId
I 4253300
対象リンク先
I
sp骨 var.html問 問 。 。
リンク例:クラスidentifier
各関数名のリンク先はSPIEにより生成された関数ドキュメント (ex. spec‑
func.html#
4253300)
である。 Source節のリンク先は、ソースコードの当該 関数の先頭行である。リンク例
2:Set Up Fiber RespondBuff elmt fiber心Source
リンク先1: Se
tU
pFiberRespondB
uff (定義関数のハイパードキュメント)Name File elmt fiber.c SetUpFiberRespondBuff: void Author saito Source
Modified date Sat Nov 25 10:14:28 2000 Atforrptga:ul EmFfelRbnAet r MeElm' t:int
Global variable
FiberRespondBuffer: FIBER̲RESPOND
・
frame: EFRAME骨
Local variable Macro
M 11 int mt
eap: ELEMENT̲A'τ"TR
・
fep: FIBER̲ELMT骨
elmt no: int
hp: HISTORY DATA' Call
Source Spec lSource Spec lookup(char 'cMohyoaCkruapn←(o‑cehs(Iau
,
rncS‑oIssng))s:n: SYMBOLt eSdcYhMlanrB t ulNoItems骨,
unsigned int mSIze).char5trcmp(con5t 脅 52):int
72 Sapidによるソフトウェア解析技法
リンク先
2 :
elmt̲fiber.c:Source ソースコード)108:v.剖dSetUpFiberRespondBuff( int total̲fiber̲elmt. EFRAME *frp) 109: #else
110: void SetUpFiberRespondBuff( total̲fiber̲elmt. frp) 111: int total̲Iibece加t;
112:EFRAME吋叩,
113: #endif 114: {
115: HIS1町'ORY̲DATA
・
hp; 116: ELEMENr̲ATTR匂ap; 117: FIBER̲ELMT 吋ep; 118: int ii. ii. elmt̲no;c .
メトリックス評価と視覚化以 下 省 略
それぞれのメトリックス値から、評価を行うページにリンクを張る。現在の バージョンでは行数
(LOC)
と関数呼び出し数( F I N )
のみである。基準値と してCyclomaticの複雑さを利用し、危険な値を持つ場合は警告を出す。関数 呼び出しについては図を作成する。 gif、png画像ファイルを自動生成するため に、 tcl/tk、gnuplotを用いた。Function Call Tree of SetUpFiberRespondBuff Number offunction call = 3;
│Set UpFiberR叩 ndBuff
人¥
MyCallocstromp
lookup
4.
3
データの統計処理とオープンソースによる比較オープンソースのメトリックス情報をソフトウェアの品質解析の指標として 利用するため、科学技術計算やオフィス・アプリケーションなど
42
種類のオー プンソースを計測し、5969
件の関数に関するメトリックスの平均値、標準偏第4章 ソフトウェア評価技法とメトリックス 73
差値を求めた。これらの値を、メトリックス評価を行う指標として用いる。ま た
C y c l o r n a t i c
の複雑さの基準も指標として利用する。オープンソース平均値
C y c l o r n a t i c
基準440/9.61 10
[例 関数呼び出し数