令和7年度 春期 システムアーキテクト試験 午前II 問8

プログラムの構造的な複雑度を測る尺度として McCabeが提唱したサイクロマティック複雑度がある。制御の流れが次のグラフで表されるプログラムのサイクロマティック複雑度は幾らか。ここで,エッジの個数をee,ノードの個数をnnとし,サイクロマティック複雑度は e−n+2e - n + 2 で求めるものとする。

制御の流れが表されるグラフ
図の説明テキスト

5つのノード(A, B, C, D, E)と有向エッジ(矢印)からなるグラフ。エッジの接続関係は以下の通り:

  • AからB
  • AからC
  • BからC
  • BからE
  • CからD
  • CからE
  • DからE
解答・解説

正解: イ. 4

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

プログラムの構造的な複雑度を測るソフトウェア尺度のひとつです。制御フローグラフにおけるノード(節点)とエッジ(辺)の数を用いて、プログラム内に存在する独立した経路の数を示します。

正解の根拠

問題文の定義より、サイクロマティック複雑度は以下の式で求めます。

e−n+2e - n + 2

グラフの情報から、ノードとエッジの個数をそれぞれ整理します。
ノードの個数 nn は、A、B、C、D、E の 5 個です。
エッジの個数 ee は、AからB、AからC、BからC、BからE、CからD、CからE、DからE の合計 7 個です。

これらを式に代入して計算します。

e−n+2e - n + 2

=7−5+2= 7 - 5 + 2

=4= 4

計算の結果、サイクロマティック複雑度は 4 となります。

各選択肢の解説

  • ア: 3。計算結果と異なるため誤りです。

  • イ: 4。正しいサイクロマティック複雑度の値です。

  • ウ: 5。ノードの個数と一致しますが、サイクロマティック複雑度の計算結果と異なるため誤りです。

  • エ: 7。エッジの個数と一致しますが、サイクロマティック複雑度の計算結果と異なるため誤りです。

Spineチーム