サイクロマチック複雑度とソースコードの自動生成
ある大手製造業の研修所で,工学的なアプローチでソフトウエアを設計する方法とソースコードの自動生成およびサイクロマチック複雑度を用いたコード評価について説明を行ってきました。
誰でも理解できるように,入門的なところから解説をしましたが、鍵となるのは設計の時に関数やクラスのメソッドに「表明」を定義することです。
「表明」を定義することで、ソースコードの自動生成だけでなく、クラス定義やクラスのメソッドの定義の妥当性や正当性が自動で判定できます。
研修で用いたモデリングツールを使うと、「表明」を定義でき、モデルの妥当性をツールが自動で判定してくれます。
また「表明」も含めてクラスの情報をコードに変換してコードを自動生成してくれます。
コード生成後はソフト上エアの構造的なメトリクスであるマケイブ(McCabe)の「サイクロマチック複雑度(Cyclomatic Complexity)」を用いて,コードの保守性や欠陥が入りやすい構造であるかを自動判定します。
サイクロマチック複雑度の値(CC値)から見たコードの評価は:
CC値が10以下が望ましい(良いコードの構造である)
CC値が30以上では欠陥がある確率が高いコードの構造である
CC値が50以上では単体テストが困難となるコードの構造である
CC値が75以上ではコード修正が新たな欠陥を生む確率が高いコードの構造である
CC値はコード内の全パスを実行するために必要な最小限のテスト数を表すことを意味ます。
そのため、CC値が増加するほど(悪くなる程),コード修正とテストが困難になることは容易に理解できます。
NASAでは”20”を閥値としています。
ミッションクリティカルなシステムでは,CCの値をより保守的に利用することで,信頼性の高いシステムの開発を支援します。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 6つのテーマを同時並行作業(2019.07.05)
- すっかりご無沙汰してしましました(2018.05.27)
- CCCC(C AND C++CODE COUNTER)GUIランチャーの公開(2017.04.13)
- 作成したYicesのGUIからオプションを変えSMTを行う(2017.01.19)
- 『Yices』によるSMTソルバ(2017.01.18)
最近のコメント