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

Summary5 1 3 hayashi

N/A
N/A
Protected

Academic year: 2018

シェア "Summary5 1 3 hayashi"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

第5章

複雑性の測定

TEF 東海メトリックス勉強会 

By はやし 友情出演  むしくん

よろしく!

(2)

ソフトウェアが複雑であると

欠陥の増加や生産性の低下を招く。

欠陥の含まれやすさと生産性を予測可能な

複雑性メトリックスがほしくなる。

本章では、複雑性を構造、概念、

計算に着眼する。

物事は可能な限り単純化されるべきである。

ただし、それ以上単純にしてはいけない。

- by  アルベルト・アインシュタイン

大好きだよ複雑は

(3)

5 . 1 構造的複雑性 (1/2)

① 規模:

  LOC またはファンクションポイントを測定

② サイクロマティック複雑度(循環的複雑度):

 モジュール内の制御フローを測定

③ ハルスレッドの複雑度:

 コード内の演算子(オペレータ)と

 演算対象(オペランド)の数を測定

以下のメトリックスを用い検討

する

FPは前回 やったね。

(4)

④ 情報フロー:

 モジュールに入出力するデータのフローを測定

⑤ システムの複雑度

 保守性や設計全体の観点から、システム全体の

複雑性を測定

⑥ オブジェクト指向構造メトリックス:

 (機能設計されたプログラムとは異なる)

 オブジェクト指向プログラムの構造を測定

5 . 1 構造的複雑性 (2/2)

以下のメトリックスを用い検討

する

たくさんある なぁ

(5)

5 . 1 . 1 複雑性メトリックスとし

5 . 1 . 1 . 1 システムの規模と ての規模

システムの規模が増加すれば、 複雑性

欠陥と規模の関係は相対的に線形になる。

有効ソースコード行数 欠陥数

※7章 p178  統合から出荷までに発見された欠陥数 より

うれしいね大きいと

(6)

5 . 1 . 1 . 2 モジュールの規模と

複雑性

モジュールあたり

200LOC ~ 750LOC におい

欠陥密度はもっと低くなる て

モジュール規模数 欠陥密度

ハットンとマライヤ、デントンが分析した結果

より

ちいさすぎも いいね~

(7)

複合結果密度モデル

      By マライヤ と デント

Dm (s)= a/s

Dm (s) :欠陥密度 ( 欠陥数 /LOC) 、  S: 規模、  a: 実証され た定数

モジュール関連の欠陥密度 

モジュール規模が増加すると 欠陥密度が減少する

式にしたん だ…

(8)

命令関連の欠陥密度 

Di (s)= b+c*s

Di(s) :欠陥密度 (欠陥数 /LOC) S:モジュール規模、

b:規模に依存しない一定のバグが存在 c :実証的に導出された相互作用係数

規模によらず 一定のバグが存在す

モジュール内の別コード行と

誤って相互作用する可能性がある 傾向があるん命令関連も

だ。

(9)

D (s)= Dm (s) + Di

(s) = a/s   + b+c*s

総合的な欠陥密度 

モジュール 関連

命令関連

足したんだ。

(10)

欠陥密度を最小にする

最適モジュール規模 S

min

は、

0 = -as -2 +c

D (s)= a/s+b+c*s

微分

s min =  a/c

プログラマーが短期記憶に

とどめることができるコード量になり、

直感的に妥当である

= 200 ~ 400LOC

みつかりやす

サイズだね

(11)

5 . 1 . 2 サイクロマティック

Cyclomatic   Complexityy 、 CC   by マッケー

複雑度

考え方:モジュール内の経路数が多いほど

複雑性は高くなる。

プログラム内の独立な経路を数え算出する

V (g)= e-n+2

グラフ循環数 V ( g )は、

グラフのノード (n) とエッジ (e) を

かぞえることにより計算

CCっていうん

具体的は… 次ペー

(12)

V ( A )= 5-5+2=2

V ( B )= 6-5+2=3

V ( C )= 6-5+2=3

V (g)= e-n+2 よ り

複雑性が最も低い

A B C

e=5,n=5 e=6,n=5 e=6,n=5

n :ノー ド

e :エッ ジ

ノードとエッジを使った事

(13)

さらに、グラフ循環数 V ( g )は、

線形独立な経路を数えることで算出で

きる

V (g)=bd +1

bd は 2 分決定数。

n 通りの決定がある場合、

n-1 の二分決定として計算できる

別のやり方だ

具体的は… 次ペー

(14)

V ( A )= 1+1=2

A B C

V ( B )= 2+1=3

V ( C )= 2+1=3

n=2 n=3 n=3

複雑性が最も低い

V (g)=bd +1,n-1=bd

より

分岐: 2 分岐: 2

2分決定数を使った事例

(15)

CC 手続きの種類 リスク

1~4 単純な手続き 低い

5~10 適切に構造化され安定した手続き 低い 11~2

複雑な手続き 中程度

21~5

厄介なほど複雑な手続き 高い

>50 エラーを起こしやすく、極度に厄介

テストの難しい手続き

とても高い

表 サイクロマティック複雑度の推奨 値

サイクロマティック複雑度

Cyclomatic   Complexity 、 CC

NA の内部テストでは、

20が欠陥の含まれやすさ (fault-prone) の閾値となっている サイクロマティック複雑度は、コード内にあるすべての経路を

実施するために必要な最小限のテスト数となっている。

CC が高いほど、コードの修正が困難、 別の欠陥を作り込む可能性が高い

みつからない高いと…

(16)

CC 誤った修正の可能性 1~10 5%

20~30 20%

>50 40% 100近く 60%

表 サイクロマティック複雑度の推奨 値

サイクロマティック複雑度は。。。

1.詳細設計インスペクションを行う必要の 複雑なコード部分を大まかに特定する。ある

2.インスペクションを行う必要ないコード部分を 特定する。

3.保守の工数を見積もり、厄介なコードを特 定し、  

  テストの工数を見積もる。

… やめて!

(17)

サイクロマティック複雑度密度

( Cyclomatic   Complexity   Density 、 CCD)

CCD = CC/LOC

CCD は CC を LOC で割った値

「保守活動における生産性の統計的に顕著な単一の予想因

By ギルとケメラー 子」

... CCD が低いほど、

保守活動の生産性が高い。

カメラ…

(18)

本質的サイクロマティック複雑度

( Essential Cyclomatic   Complexity 、 ECC)

構成要素( if,case,while,repeat,sequence) を取り除いた後

コード部分のサイクロマティク複雑度である。 の

A B C

A 、 B の ECC は1、 C は、3となる

英会話…

(19)

5 . 1 . 3 ハルステッドのメト

リックス

ハルステッドのメトリックスは、

構造メトリックスの議論を始めるうえでは役に立つが、

あまり、実用的でなく、開発工数を予想する力がない。

長さ: N = N 1+ N2 語彙:n=n1+n2 大きさ: V ( log2(n)

困難さ: D= ( n1/2)/(N2/n2) 工数: E=D*V

記号の定義

 n = 演算子の種類数   n2= オペランドの種類数   N = 演算子の総出現回数   N = オペランドの総出現回

コード内の演算子(オペレータ: 例  while,do,{},if,+

+ )と

演算対象(オペランド:例 変数、定数、文字列)の数

を測定

… 聞いたこと ないし

(20)

またね!

5章の担当分は、これでおし

まい。

お疲れ様でした。

むしくんもありがとうさん!で

した。

参照

関連したドキュメント

・条例手続に係る相談は、御用意いただいた書類 等に基づき、事業予定地の現況や計画内容等を

出典:第40回 広域系統整備委員会 資料1 出典:第50回 広域系統整備委員会 資料1.

物売り 低い連続的な音、

「特殊用塩特定販売業者」となった者は、税関長に対し、塩の種類別の受入数量、販売数

それゆえ︑規則制定手続を継続するためには︑委員会は︑今

【留意事項】 手続きに時間がかかる場合がある

(郵便発送) 入学手続納付金納入締切日 入学手続Ⅰ 入学手続Ⅱ

②出力制御ユニット等