Cyklomatická složitost
Author
Albert FloresCyklomatická složitost (nebo také podmínková složitost) je číslo vyjadřující složitost programu. Udává minimální počet lineárně nezávislých cest skrz zdrojový kód.
Na daném programu se cyklomatická složitost počítá pomocí grafu toku řízení toho programu: uzly grafu odpovídají neoddělitelným skupinám v programu (například tělu cyklu, podmínky). Orientované hrany odpovídají tomu, v jakém pořadí se skupiny příkazů budou provádět. +more Cyklomatickou složitost lze aplikovat individuálně na dané funkce, moduly, metody nebo třídy.
Jedna strategie pro měření se nazývá testování hlavní cesty. Testují se všechny možné cesty v programu; v tom případě je počet testů roven cyklomatickému číslu programu.
Popis
M = E - N + 2P je pro tento program 3.
M = E - N + P je pro tento program 3.
Cyklomatické číslo pro určitý úsek kódu je počet nezávislých cest skrz ten úsek. Například pokud neobsahuje žádnou IF podmínku nebo jakýkoliv cyklus (kód lze projít jednou cestou), tak je složitost 1. +more Například když bude kód obsahovat jednu IF podmínku, tak budou dvě možné cesty - jedna když podmínka dopadne jako TRUE a druhá když dopadne jako FALSE.
Pro strukturovaný program se odkazujeme na orientovaný graf, který představuje graf toku řízení pro daný kód. Složitost zjistíme:
M = E - N + 2P
M = cyklomatická složitost
E = počet hran v grafu
N = počet uzlů v grafu
P = počet připojených komponent
Cyklomatická složitost se jinak počítá pro programy s více možnými ukončeními; v tomto případě je rovna:
π - s + 2
Kde π je počet rozhodovacích bodů v programu a s je počet ukončovacích bodů.
Jiné vyjádření se používá, když je ukončovací bod (exit point) spojen zpět na vstupní bod (entry point). V tomto případě tomu grafu říkáme silně souvislý a cyklomatická složitost programu je rovna cyklomatickému číslu grafu. +more Pak je složitost definována jako.
M = E - N + P (stejně jako cyklomatické číslo v teorii grafů) je podrobněji popsána níže.