サイクロマティック複雑度とは?さいくろまてぃっくふくざつど
サイクロマティック複雑度とは、制御フローグラフから求めるプログラムの複雑さの指標。連結成分が1つなら「エッジ数 − ノード数 + 2」で計算し、単純には判定条件の数に1を足した値になる。この値は、テストで通すべき独立経路の本数の目安になり、単体テストの網羅計画や分割対象の抽出に使う。
最終更新:2026-10-06
この語が出る過去問を解く →背景
保守しにくいコードを「長さ」で測ると、単純な繰返しばかりのコードが槍玉に上がる一方、短くても分岐が入り組んだ箇所を見逃す。分岐の数という機械的に数えられる量へ置き換えることで、レビューやリファクタリングの対象を主観に頼らず選べるようにした。品質を数値で管理する話の代表例として問われる。
具体例
静的解析ツールのSonarQubeやCheckstyleはメソッドごとの複雑度を算出し、閾値(10や20など)を超えたものを一覧に挙げて、条件分岐を切り出すべき箇所を機械的に示す。
試験での引っ掛け
行数の指標ではない点が問われる。判定条件が増えれば数行でも値は上がり、逆に分岐の無い長い手続きは値が低いままになる。値が低ければ品質が高いという指標でもなく、テスト工数の見積りと分割対象の抽出に使うものである点も押さえる。
関連用語
出た過去問
出典:令和7年度 春期 システムアーキテクト試験 午前Ⅱ 問8(IPA)
プログラムの構造的な複雑度を測る尺度としてMcCabeが提唱したサイクロマティック複雑度がある。制御の流れが次のグラフで表されるプログラムのサイクロマティック複…
正解:4
要点:サイクロマティック複雑度はエッジ数−ノード数+2
サイクロマティック複雑度は制御フローグラフのエッジ数eとノード数nから e-n+2 で求める。示されたグラフはエッジが7本、ノードが5個なので、7-5+2=4となる。この値は、分岐の多さの目安であり、必要な独立した経路の数にも対応する。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。