aomoriringo
   フリーソフトウェア   コードの静的メトリクス計測ツール   C, C++, C#, VB.NET, Java, Delphi, VB6,    HTML
   sourceMonitorはコード解析をして、    こんなものを表示してくれます    ◦   コメントの割合    ◦   ドキュメントの割合    ◦   メソッド数/1クラス    ◦   構文数/1メソッド    ◦   一番...
   ソースコード内の線形独立な経路の数   条件複雑度(Conditional Complexity)とも    呼ばれる     完全な分岐網羅ができるテストケースの数    ≦ 循環的複雑度    ≦ 完全な経路網羅ができるテストケ...
   Start with 1 for a straight path through the    routine.   Add 1 for each of the following keywords or    their equiv...
Public void ProcessPages(){  while( nextPage != true )  {     if(    ( lineCount <= linePerPage )            && (status !=...
Public int getValue( int param1 ){  int value = 0;  if ( param1 == 0 )  {       value = 4;  }  else  {       value = 0;  }...
Complexity   Risk Evaluation<=10         よい構造。             ほとんどリスクなし11 to 20     少し複雑。             わずかな(moderate)リスク>30   ...
Complexity   Risk Evaluation<=10         よい構造。             ほとんどリスクなし11 to 20     少し複雑。             わずかな(moderate)リスク>30   ...
   経路数が多く、テストケースもたくさん必要   意味を理解するのに多くの経路を    追わなければいけない   凝集度が低い傾向にある
   あるコードがどれだけそのクラスの    責任分担に集中しているかを示す尺度   凝集度が高い    ◦ コードが読みやすい    ◦ 再利用しやすい   凝集度が低い    ◦ クラスのメソッド群に共通性がない    ◦ 各メソッド...
   sourceMonitorは複雑度を解析してくれる   複雑度はテストや保守に関わる重要な指標    (しかも定量的)   たまには複雑度のこと、思い出してあげてください
Upcoming SlideShare
Loading in...5
×

Source monitorと複雑度のはなし

3,642

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,642
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Source monitorと複雑度のはなし

  1. 1. aomoriringo
  2. 2.  フリーソフトウェア コードの静的メトリクス計測ツール C, C++, C#, VB.NET, Java, Delphi, VB6, HTML
  3. 3.  sourceMonitorはコード解析をして、 こんなものを表示してくれます ◦ コメントの割合 ◦ ドキュメントの割合 ◦ メソッド数/1クラス ◦ 構文数/1メソッド ◦ 一番複雑なメソッドの名前/行数 ◦ Avg/Max Complexity ◦ Avg/Max Block Depth
  4. 4.  ソースコード内の線形独立な経路の数 条件複雑度(Conditional Complexity)とも 呼ばれる 完全な分岐網羅ができるテストケースの数 ≦ 循環的複雑度 ≦ 完全な経路網羅ができるテストケースの数
  5. 5.  Start with 1 for a straight path through the routine. Add 1 for each of the following keywords or their equivalent: ◦ if, while, repeat, for, and, or Add 1 for each case in a switch statement.
  6. 6. Public void ProcessPages(){ while( nextPage != true ) { if( ( lineCount <= linePerPage ) && (status != Status.Cancelled) && (morePages == true ) ) { //… } }}
  7. 7. Public int getValue( int param1 ){ int value = 0; if ( param1 == 0 ) { value = 4; } else { value = 0; } return value;}
  8. 8. Complexity Risk Evaluation<=10 よい構造。 ほとんどリスクなし11 to 20 少し複雑。 わずかな(moderate)リスク>30 複雑。 構造に疑問>50 テストが不可能>75 いかなる変更も誤修正を生む原因を 作る
  9. 9. Complexity Risk Evaluation<=10 よい構造。 ほとんどリスクなし11 to 20 少し複雑。 わずかな(moderate)リスク>30 複雑。 構造に疑問>50 テストが不可能>75 いかなる変更も誤修正を生む原因を 作る
  10. 10.  経路数が多く、テストケースもたくさん必要 意味を理解するのに多くの経路を 追わなければいけない 凝集度が低い傾向にある
  11. 11.  あるコードがどれだけそのクラスの 責任分担に集中しているかを示す尺度 凝集度が高い ◦ コードが読みやすい ◦ 再利用しやすい 凝集度が低い ◦ クラスのメソッド群に共通性がない ◦ 各メソッドが全く関係のないデータを扱う
  12. 12.  sourceMonitorは複雑度を解析してくれる 複雑度はテストや保守に関わる重要な指標 (しかも定量的) たまには複雑度のこと、思い出してあげてください
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×