🎸

サイクロマティック複雑度 DevOps, マイクロサービスにおけるQAに関するキーワード解説

2024/04/27に公開

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

https://youtube.com/shorts/D0nkYGeBAhE?feature=share

サイクロマティック複雑度(Cyclomatic Complexity)は、ソフトウェアプログラムの複雑さを測定する指標です。1976年にトーマス・J・マカベ(Thomas J. McCabe)によって導入されました。この指標は、プログラム内の線形独立なパスの数を測定し、プログラムがどれだけ複雑か、つまりテストやメンテナンスがどれだけ難しいかを示します。

サイクロマティック複雑度の計算は、プログラムの制御フローグラフに基づいて行われ、以下の式で表されます:

[ V(G) = E - N + 2P ]

ここで、

  • (V(G)) はグラフ(G)のサイクロマティック数(複雑度)です。
  • (E) はグラフ内のエッジ(フロー制御のパス)の数です。
  • (N) はグラフ内のノード(ステートメントや分岐)の数です。
  • (P) は連結成分の数です(ほとんどの場合、プログラムは1つの連結成分を持つため、(P = 1)となります)。

簡単に言うと、サイクロマティック複雑度はプログラム内の決定点(if文、whileループなど)の数に依存し、これらの決定点がプログラムの実行パスにどれだけの変動をもたらすかを示します。複雑度が高いほど、プログラムはより多くのテストケースを必要とし、理解やメンテナンスが難しくなります。

サイクロマティック複雑度は、ソフトウェアの品質保証において重要な役割を果たします。一般に、複雑度が10未満のプログラムは良好とされ、10~20はやや複雑、20を超えると非常に複雑で、理解やテストが困難になります。この指標を使用することで、開発者やテストエンジニアは特に注意を払うべきコードの領域を特定し、リファクタリングやより詳細なテスト計画を検討することができます。

DevOpsとマイクロサービス時代のQA: 高品質なソフトウェアを目指してに出てくるキーワードを解説しています。

Discussion