Расчет цикломатической сложности псевдокода

while(m<n)
  if(x>y) AND (a<b) then
    a=a+1
    y=y-1
  end if 
m=m+1
end while

Я рассчитывал цикломатическую сложность вышеприведенного псевдокода и пришел к выводу с помощью метода быстрого сокращения, который

M= (точка принятия решения) + 1

Где M - цикломатическая сложность

я получил ответ 3

это правда?


person Ravi Mehta    schedule 27.08.2015    source источник
comment
Пожалуйста, ответьте кому-нибудь   -  person Ravi Mehta    schedule 29.08.2015


Ответы (2)


Во-первых, позвольте идентифицировать каждое утверждение. Здесь я использую буквы, но вместо них могут быть числа.

A    while(m<n)              
B,C    if(x>y) AND (a<b) then
D        a=a+1
E        y=y-1
       end if 
F      m=m+1
G    end while
  • Обратите внимание, что во втором утверждении есть два условия/предиката/точки принятия решения (или как вы их называете), поэтому я назвал их B и C.
  • Я собираюсь использовать end while (G) в качестве точки выхода.

Теперь мы можем нарисовать график потока управления (CFG):

CFG

Наконец, вычислите цикломатическую сложность (M) тремя различными способами:

  1. M = E-V+2*K = 9-7+2*1 = 4

  2. M = C + 1 = 3 + 1 = 4

  3. M = Регионы (CFG) = 4

куда:

  • E=количество ребер

  • V=количество вершин

  • K=количество компонентов графика

  • C=количество условий/точек принятия решения

person JosEduSol    schedule 31.08.2015

По сравнению с приведенной выше логикой, упомянутый @osEduSol верен, т.е.

M= (точка принятия решения) + 1

Где M - цикломатическая сложность

Есть 3 точки принятия решения

я получил ответ 4

person Nagesh Pathrut    schedule 13.02.2018