令和6年度 III-15

科目: 専門科目 / 分野: 情報工学部門 / 年度: 令和6年度

III-15 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

循環的複雑度M=E−N+2P(Eはエッジ数、Nはノード数、Pは連結成分数)を、C言語のプログラムと制御フロー図(while文とif文を含む)から求める問題。

解説

この問題で問われていること

制御フロー図から循環的複雑度を計算する問題。

解き方

① 循環的複雑度M=E−N+2P。簡単には「判定(if・while等)の数+1」
② 判定はwhileとifの2つ → 2+1=3(E=9、N=8、P=1でも9−8+2=3)
③ 3(③)

正解が正しい理由

図のノードは、開始、sum=0、i=0、while条件、if条件、sum=sum+1、i=i+1、終了の8個(N=8)である。エッジは、開始→sum=0、sum=0→i=0、i=0→while、while→if、if→sum+1、if→i+1、sum+1→i+1、i+1→while(ループ)、i+1→終了の9本(E=9)である。単独モジュールなのでP=1。M=E−N+2P=9−8+2=3となる。これは、判定(分岐)の数2(whileとif)に1を加えた値とも一致する。したがって③が正しい。

各選択肢について

覚えるべきポイント

循環的複雑度M=E−N+2P(単独モジュールはP=1)。簡便には、判定(if・while・for等)の数+1。独立な経路の数を表し、テストケース数の目安になる。

キーワード: 循環的複雑度、McCabe、制御フローグラフ、ソフトウェアメトリクス、テスト、情報工学部門