« モデル検査と動作環境調整 | トップページ | 科学的オブジェクト指向モデリング~クラス図編 »

2016年8月29日 (月)

サイクロマチック複雑度とソースコードの自動生成

ある大手製造業の研修所で,工学的なアプローチでソフトウエアを設計する方法とソースコードの自動生成およびサイクロマチック複雑度を用いたコード評価について説明を行ってきました。

誰でも理解できるように,入門的なところから解説をしましたが、鍵となるのは設計の時に関数やクラスのメソッドに「表明」を定義することです。

「表明」を定義することで、ソースコードの自動生成だけでなく、クラス定義やクラスのメソッドの定義の妥当性や正当性が自動で判定できます。

研修で用いたモデリングツールを使うと、「表明」を定義でき、モデルの妥当性をツールが自動で判定してくれます。

また「表明」も含めてクラスの情報をコードに変換してコードを自動生成してくれます。

Hope_2


コード生成後はソフト上エアの構造的なメトリクスであるマケイブ(McCabe)の「サイクロマチック複雑度(Cyclomatic Complexity)」を用いて,コードの保守性や欠陥が入りやすい構造であるかを自動判定します。

サイクロマチック複雑度の値(CC値)から見たコードの評価は:

 CC値が10以下が望ましい(良いコードの構造である)
 CC値が30以上では欠陥がある確率が高いコードの構造である
 CC値が50以上では単体テストが困難となるコードの構造である
 CC値が75以上ではコード修正が新たな欠陥を生む確率が高いコードの構造である

CC値はコード内の全パスを実行するために必要な最小限のテスト数を表すことを意味ます。
そのため、CC値が増加するほど(悪くなる程),コード修正とテストが困難になることは容易に理解できます。

NASAでは”20”を閥値としています。

ミッションクリティカルなシステムでは,CCの値をより保守的に利用することで,信頼性の高いシステムの開発を支援します。

1

2

|

« モデル検査と動作環境調整 | トップページ | 科学的オブジェクト指向モデリング~クラス図編 »

パソコン・インターネット」カテゴリの記事