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

テクノロジシステム開発技術

この問題は2025(R7)春 システムアーキテクト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

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

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

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

  • AからB
  • AからC
  • BからC
  • BからE
  • CからD
  • CからE
  • DからE

解答・解説を読む

正解: 選択肢

設問の解説

サイクロマティック複雑度(循環的複雑度)とは、プログラムの制御フローの複雑さを定量的に測定するためのソフトウェア工学の指標であり、McCabeによって提唱されました。

問題文に示されている通り、複雑度は以下の公式を用いて計算します。
サイクロマティック複雑度=en+2 サイクロマティック複雑度 = e - n + 2
(ここで、ee はエッジの個数、nn はノードの個数を表します)

本来の設問には制御の流れを表すグラフが図示されています。正解が「イ(4)」であることから、与えられたグラフ内の要素を数えて公式に当てはめると、計算結果が4になることがわかります(例:エッジ数 e=11e = 11、ノード数 n=9n = 9 の場合、119+2=411 - 9 + 2 = 4 となります)。

計算のステップは以下の通りです。

  1. グラフ中の ノード(頂点となる丸印などの要素) の総数 nn を数える。
  2. グラフ中の エッジ(処理の流れを示す矢印などの線) の総数 ee を数える。
  3. 与えられた公式 en+2e - n + 2 に値を代入して複雑度を求める。

各選択肢の解説

  • ア (3): 誤り。エッジやノードの数え間違い、あるいは公式における +2+2 を忘れるなどの計算ミスによって導かれる誤った値です。
  • イ (4): 正解。グラフの正しいエッジ数 ee とノード数 nn を公式 en+2e - n + 2 に当てはめて導き出される正しい複雑度です。
  • ウ (5): 誤り。要素の数え間違いなどによって生じる誤った値です。
  • エ (7): 誤り。ノードの数などをそのまま解答してしまった場合や、要素を大きく数え間違えた場合に想定される値です。