ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ цикломатичСской слоТности ΠΏΠΎ Мак-ΠšΠ΅ΠΉΠ±Ρƒ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ цикломатичСской слоТности являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΡƒΡ‡Π΅Π½Ρ‹ΠΌ Мак-КСйбом Π² 1976 Π³., относится ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ слоТности ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ΅Ρ‚ся Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π³Ρ€Π°Ρ„Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (control flow graph). Π”Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ строится Π² Π²ΠΈΠ΄Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ цикломатичСской слоТности ΠΏΠΎ Мак-ΠšΠ΅ΠΉΠ±Ρƒ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ цикломатичСской слоТности являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΡƒΡ‡Π΅Π½Ρ‹ΠΌ Мак-КСйбом Π² 1976 Π³., относится ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ слоТности ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ΅Ρ‚ся Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π³Ρ€Π°Ρ„Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (control flow graph). Π”Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ строится Π² Π²ΠΈΠ΄Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ выраТСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡƒΠ·Π»ΠΎΠ², Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° управлСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ — Π² Π²ΠΈΠ΄Π΅ Π΄ΡƒΠ³.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ цикломатичСской слоТности позволяСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ произвСсти ΠΎΡ†Π΅Π½ΠΊΡƒ трудоСмкости Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΡΡ‚оимости ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΈ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ связанныС риски ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ управлСнчСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Для вычислСния цикломатичСского числа Мак-КСйба ?(G) примСняСтся Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°:

(G) = m — n + 2p,.

Π³Π΄Π΅ m — число Π΄ΡƒΠ³ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° G;

n — число Π²Π΅Ρ€ΡˆΠΈΠ½;

p — число ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² связности Π³Ρ€Π°Ρ„Π°.

Мак-КСйб ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΡƒ: Π² ΡΠΈΠ»ΡŒΠ½ΠΎ связанном Π³Ρ€Π°Ρ„Π΅ G Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ичСскоС число Ρ€Π°Π²Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ числу Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ-нСзависимых Ρ†ΠΈΠΊΠ»ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ эту Ρ‚Π΅ΠΎΡ€Π΅ΠΌΡƒ, число ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² связности Π³Ρ€Π°Ρ„Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ количСство Π΄ΡƒΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ для прСобразования Π³Ρ€Π°Ρ„Π° Π² ΡΠΈΠ»ΡŒΠ½ΠΎ связный. Бильно связным называСтся Π³Ρ€Π°Ρ„, Π»ΡŽΠ±Ρ‹Π΅ Π΄Π²Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠ½ΠΎ достиТимы. Для Π³Ρ€Π°Ρ„ΠΎΠ² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚. Π΅. Π³Ρ€Π°Ρ„ΠΎΠ², Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… нСдостиТимых ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° участков ΠΈ «Π²ΠΈΡΡΡ‡ΠΈΡ…» Ρ‚ΠΎΡ‡Π΅ΠΊ Π²Ρ…ΠΎΠ΄Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π°, сильно связный Π³Ρ€Π°Ρ„, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, получаСтся ΠΏΡƒΡ‚Π΅ΠΌ замыкания Π΄ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° Π² ΡΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

УпрощСнная Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° вычислСния цикломатичСской слоТности прСдставляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

(G) = m — n + 2.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈ вычислСнии цикломатичСской слоТности логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ вычислСния показатСля цикломатичСской слоТности, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, примСняСтся ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π² ΡΠΎΠΎΡ‚вСтствии с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ построСниС Π³Ρ€Π°Ρ„Π° Π½Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚вляСтся, Π° Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ показатСля производится Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ подсчСта числа ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ (if, switch ΠΈ Ρ‚. Π΄.) ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ количСства ΠΏΡƒΡ‚Π΅ΠΉ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ состоит Π² ΠΎΡ†Π΅Π½ΠΊΠ΅ слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ вычислСния числа Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ-нСзависимых ΠΏΡƒΡ‚Π΅ΠΉ, цикломатичСской слоТности ?(G), Π° Ρ‚Π°ΠΊΠΆΠ΅ управлСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ограничСния ?(G) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ ?(G) ΠΊΠ°ΠΊ основы для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ тСстирования. Мак-КСйб ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠΉ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ для цикломатичСской слоТности являСтся 10. Если программисты ΠΏΠ΅Ρ€Π΅ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ эту Π³Ρ€Π°Π½ΠΈΡ†Ρƒ, ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

Π’ Ρ„изичСском смыслС цикломатичСскоС число для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΄ΡƒΠ³ΠΈ m=(v, u)| mM Π³Ρ€Π°Ρ„Π° управлСния пСрвая Π²Π΅Ρ€ΡˆΠΈΠ½Π° (v) являСтся исходной, Π° Π²Ρ‚орая (u) — ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉ. ΠŸΡƒΡ‚ΡŒ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ Π³Ρ€Π°Ρ„Π°, Ссли ΠΎΠ½ ΡΠΎΡΡ‚ΠΎΠΈΡ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π΄ΡƒΠ³ΠΈ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄ΡƒΠ³ (v, Π°,…, u) Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ исходная Π²Π΅Ρ€ΡˆΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π² ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠΈ, Π° ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ — послСднСй. ΠšΠΎΠ½Ρ‚ΡƒΡ€ — это ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ, ограничСнная цикличСским ΠΏΡƒΡ‚Π΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Π° Π³Ρ€Π°Ρ„Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρƒ соотвСтствуСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ ΠΏΡƒΡ‚ΡŒ, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π° Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ.

ЦикломатичСскоС число опрСдСляСт количСство нСзависимых ΠΊΠΎΠ½Ρ‚ΡƒΡ€ΠΎΠ² Π² ΠΏΠΎΠ»Π½ΠΎΡΠ²ΡΠ·Π½ΠΎΠΌ Π³Ρ€Π°Ρ„Π΅ ΠΈ, ΠΊΠ°ΠΊ слСдствиС, количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ, Π²Π΅Π΄ΡƒΡ‰ΠΈΡ… ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ.

Π’ ΠΏΡ€Π°ΠΊΡ‚ичСском аспСктС цикломатичСскоС число являСтся ΠΌΠ΅Ρ€ΠΎΠΉ слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ количСство тСстов, достаточных для тСстирования ΠΏΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ покрытия всСх Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ цикломатичСского числа Мак-ΠΊΠ΅ΠΉΠ±Π° дСйствуСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ссли цикломатичСскоС число большС дСсяти, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ излишнСй ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π΅Π΅ ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΡΠΎΡΡ‚Π°Π²Π½Ρ‹Π΅ части (нСзависимыС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) с ΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ цикломатичСского числа.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ цикломатичСской слоТности ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ рассчитан для модуля, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… структурных Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠžΡ†Π΅Π½ΠΊΠ° цикломатичСской слоТности Мак-КСйба ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ тСстовых Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ слоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Однако ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ся Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€ структур Π΄Π°Π½Π½Ρ‹Ρ…, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², мнСмоничСских ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², отсутствуСт обсуТдСниС Ρ‚Π°ΠΊΠΈΡ… Π²Π°ΠΆΠ½Ρ‹Ρ… понятий, ΠΊΠ°ΠΊ удобство пСрСноса, Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

ВычислСниС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π° ΠΏΡ€ΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ Π½Π° ΡΡ‚ΠΎΠΌ этапС, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡŒ стадии кодирования) позволяСт своСврСмСнно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ слоТныС, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ΡΡ высокими рисками, структурныС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ рисков Π·Π° ΡΡ‡Π΅Ρ‚ внСсСния ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΠ².

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡƒΡΡ‚ΡŒ имССтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая считываСт ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° символы Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ символ «#». ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Паскаль прСдставлСн Π½Π° Ρ€ΠΈΡ 6. Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π³Ρ€Π°Ρ„ управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡ 7.

Рис 6 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…

Для прСдставлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ Π³Ρ€Π°Ρ„Π° Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ соглашСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡƒΠ·Π»ΠΎΠΌ Π³Ρ€Π°Ρ„Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ синтаксис ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования довольно Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π΅Π½. ΠŸΡ€ΠΈ этом ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исполнимыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ описания Π΄Π°Π½Π½Ρ‹Ρ…. Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ синтаксичСскиС Ρ„ΠΎΡ€ΠΌΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ стСпСни подходят для отобраТСния ΡƒΠ·Π»ΠΎΠΌ Π³Ρ€Π°Ρ„Π°. Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ участки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΡƒΠ·Π»ΠΎΠΌ Π³Ρ€Π°Ρ„Π°. Π’ ΡΡ‚ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ использованиС схСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈΠ»ΠΈ описаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠΎΠΉ описания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Π΅ΠΌ тСкст Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования. Π’ Π»ΡŽΠ±ΠΎΠΌ случаС ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ†ΠΈΠΊΠ»Π° Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² вСтвлСния, Π΄ΠΎΠ±Π°Π²ΠΈΠ², ΠΏΡ€ΠΈ нСобходимости, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ суммирования (счСтчики) числа ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π° с «Π²Π΅Ρ€Ρ…Π½ΠΈΠΌ» ΠΈΠ»ΠΈ «Π½ΠΈΠΆΠ½ΠΈΠΌ» ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ΠΌ.

Π“Ρ€Π°Ρ„ управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ….

Рис 7 Π“Ρ€Π°Ρ„ управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…

Рис 8 ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠΎΠ»Π½ΠΎΡΠ²ΡΠ·Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ цикломатичСскоС число МаккСйба для Π³Ρ€Π°Ρ„Π° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Ρ€ΠΈΡ 7. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π΅Π±Π΅Ρ€ Π³Ρ€Π°Ρ„Π° Ρ€Π°Π²Π½ΠΎ пяти, количСство Π²Π΅Ρ€ΡˆΠΈΠ½ Ρ‚ΠΎΠΆΠ΅ Ρ€Π°Π²Π½ΠΎ пяти, поэтому цикломатичСскоС число Ρ€Π°Π²Π½ΠΎ:

(G)=5−5+2=2.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ Π³Ρ€Π°Ρ„ управлСния с Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ичСским числом, Ρ€Π°Π²Π½Ρ‹ΠΌ 2, Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ излишнСй ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ Π΄Π»Ρ Π΅Π΅ Ρ‚Сстирования достаточно ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄Π²Π° тСста, ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ‚Π²ΠΈ (Π°, b, с) ΠΈ (Π°, u) (рис 4). Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ v ΠΈ, Π° Π³Ρ€Π°Ρ„Π° управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡŽ цикломатичСского числа. ЦикломатичСскоС число зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², содСрТащих условныС выраТСния (ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρ‹). ΠŸΡ€ΠΈ этом ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ ΡƒΡ‡ΠΈΡ‚ываСтся. Если Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Ρ†ΠΈΠΊΠ»Π° while ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… (рис 4) ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚), ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ.

while (s'#') Π½Π° while (s'#' or s'*') Π³Ρ€Π°Ρ„ управлСния ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ичСскоС число останутся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌΠΈ.

Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ вСтвлСния (Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ), цикломатичСскоС число ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

M=u+1,.

Π³Π΄Π΅ u — количСство ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² вСтвлСния.

ΠŸΡ€ΠΈ нСобходимости ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с n Π²Π΅Ρ‚вями, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ n ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² вСтвлСния.

К Π΄ΠΎΡΡ‚ΠΎΠΈΠ½ΡΡ‚Π²Π°ΠΌ ΠΌΠ΅Ρ€Ρ‹ относят простоту Π΅Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ нСдостатков ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ: Π½Π΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ПО, Π½Π΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡŽ структуры ПО, отсутствиС коррСляции со ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ ПО, отсутствиС различия ΠΌΠ΅ΠΆΠ΄Ρƒ конструкциями Π Π°Π·Π²ΠΈΠ»ΠΊΠ° ΠΈ Π¦ΠΈΠΊΠ», отсутствиС Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². НСдостатки цикломатичСской ΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡŽ Π΅Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ½Ρ‹Ρ… ΠΌΠ΅Ρ€ слоТности.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ показатСля цикломатичСской слоТности:

  • Β· «ΠœΠΎΠ΄ΠΈΡ„ицированная» цикломатичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ — рассматриваСт Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° мноТСствСнного Π²Ρ‹Π±ΠΎΡ€Π° (switch), Π° Π²Π΅ΡΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅.
  • Β· «Π‘трогая» цикломатичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ — Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.
  • Β· «Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Π°Ρ» вычислСниС цикломатичСской слоТности — прСдусматриваСт вычислСниС Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π³Ρ€Π°Ρ„Π°, Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ подсчСта ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².
  • Β· «Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ» ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ — опрСдСляСтся ΠΊΠ°ΠΊ число нСзависимых ΠΏΡƒΡ‚Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈ тСстировании;
  • Β· ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° слоТности Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… — вычисляСтся ΠΊΠ°ΠΊ цикломатичСская ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ модуля ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ся Π½Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ взаимосвязСй с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ