• 検索結果がありません。

MAX  DEPTH= 4  TOTAL =  1 7

ドキュメント内 Sapidによるソフトウェア解析技法 (ページ 74-79)

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

門戸!内側 i m 門 閥 { 附

1 0  1 0  10  10  1 0  10.00  10.0  2 :SetUpFiberRpondB11fT 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 :Soue

Total 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.1

B .  

関数・プログラムドキュメントへのハイパーリンク

SPIEによりドキュメントやソースコード・リストへのハイパーリンクを実現 する。 Identifier、declarationといった各オブジェクトIdに対して、ソースコー ドやドキュメントのリンク先が提供されている。ソースコード・リストも関数、

変数、構造体といったドキュメントへのハイパーリンクが実現されている。

オブジェクトId

I  4253300 

対象リンク先

sp var.html

問 問 。 。

リンク例:クラスidentifier

各関数名のリンク先はSPIEにより生成された関数ドキュメント (ex. spec‑

func.html# 

4253300)

である。 Source節のリンク先は、ソースコードの当該 関数の先頭行である。

リンク例

2:Set Up Fiber RespondBuff  elmt fiber心Source

リンク先1: Se

tU

pFiberRespon

dB

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).char  

5trcmp(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̲Iibecet;

112:EFRAME吋叩,

113: #endif  114: { 

115: HIS1'ORY̲DATA

hp; 116: ELEMENr̲ATTRap; 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

人¥

MyCalloc 

stromp 

lookup 

4.

データの統計処理とオープンソースによる比較

オープンソースのメトリックス情報をソフトウェアの品質解析の指標として 利用するため、科学技術計算やオフィス・アプリケーションなど

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 

[例 関数呼び出し数

( F I N )

の平均値/基準値]

ドキュメント内 Sapidによるソフトウェア解析技法 (ページ 74-79)