Bevezetés a ciklikus komplexitásba
A ciklomatikus komplexitást Thomas J. McCabe fejlesztette ki 1976-ban. Azt javasolta, hogy a programozók számolják meg azon modulok bonyolultságát, amelyeken dolgoznak, és ossza meg őket kisebb modulokra úgy, hogy minden olyan esetben, amikor a modul ciklomatikus komplexitása meghaladja a 10, 10-et, a maximális ciklomatikus komplexitás egy programban. Ez a forráskód komplexitásának mérése, amely számos kódolási hibához kapcsolódik. Meghatározza a független útvonalakat, ami nagyon hasznos lenne a fejlesztők és a tesztelők számára.
Ez elősegíti a szoftver tesztelését, és nagyobb bizalmat ad nekünk, hogy programunk minden szempontját teszteltük. Ez javítja a kód minőségét, és elősegíti a láthatatlan utakra való koncentrálást, ha van ilyen. Általában úgy számítottuk ki, hogy kidolgozunk egy olyan vezérlőáramlási gráfot, amely egy programon keresztül méri a lineárisan független utak számát a kóddarab komplexitásának pontos mérésére. Ez elősegíti a szoftver minőségének javítását.
Meghatározás
A kód ciklomatikus összetettsége a lineárisan független utak számát számítja ki.
Hogyan lehet kiszámítani a ciklikus komplexitást?
A program ciklusos komplexitásának kiszámítása nagyon egyszerű a következő képlet alapján.
Ciklikus komplexitás = E - N + 2P
- E => A nem a grafikon szélei
- N => A gráf csomópontjainak száma
- P => A csatlakoztatott elemek száma
Van egy alternatív képlet, ha figyelembe vesszük a belépési pontot támogató kilépési pontot. És úgy fogod létrehozni, mint egy ciklust.
Ciklikus komplexitás = E - N + P
Ciklikus komplexitás = E - N + 1
Van még egy módja ennek kiszámításához. Ez egy könnyebb módszer.
- Rajzolj grafikonot
- Ezután csatlakoztassa a kilépési pontot a belépési ponthoz
- És akkor számoljon lyukakat a grafikonon
Nézze meg a következő ábrát:
Az alábbiakban néhány folyamatábra-megjegyzés található:
If-then-else:
Míg:
Csinálni, miközben:
for:
Ha a programnak nincs hurka, akkor a bonyolultsága alacsonyabb. Ha a program bármilyen hurkot észlel, akkor a bonyolultság növekszik.
Tegyük fel, hogy van egy, ha a feltétel definiálva van, így bonyolultsága 2-es. Mivel a feltételnek két feltétele van, igaz és hamis.
Ezt a technikát leginkább a fehér doboz alapvető tesztelésére használják. A ciklomatikus komplexitás minimális számot jelent. a kód minden útjának végrehajtásához szükséges tesztek száma.
A különböző nyelvek különböző eszközökkel rendelkeznek a program ciklomatikus összetettségének mérésére.
A ciklomatikus komplexitás kiszámításának lépései a következők
- Rajzolja meg a folyamatábrát vagy grafikondiagramot a kódból.
- Most, a második lépésben ellenőrizze és azonosítsa, hány független útvonalon van.
- Ezután a következő képlet alapján számoljuk ki a ciklomatikus komplexitást:
M = E – N + 2P
- Az intézkedés megtervezése szerint a teszt esetek.
Most felmerülhet egy kérdés, hogy hogyan lehet valóban kiszámítani. Menjünk tovább és megértsük, hogyan fogjuk valóban kiszámítani.
Vegyük figyelembe a következő Java-kód példát:
Ez a program a fibonacii sorozatot úgy számítja ki:
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
3 + 2 = 5
5 + 3 = 8
8 + 5 = 13
// A következő program célja a fibonacii sorozat kinyomtatása
class Printno (
Public static void main(String() args)(
int max = 20 ;
int pre = 0;
int next = 1;
System.out.println(“The Fibonacii series is : ” +prev);
While(next<= max)(
System.out.println(next);
Sum = prev + next;
Prev = next;
Next =sum;
)
)
)
> javac Printno.java
> java Printno
O / p:
A fibonacii sorozat: 0
1
1
2
3
5
8
13
Mutasson közelebbről a fenti programot. Megtalál egy hurkot. Ez a program csak egy hurkot tartalmaz.
Itt az ideje, hogy rajzoljunk egy grafikont.
Az ellenőrzési folyamatábra az alábbiak szerint
folyamatábra
Most, a fenti program összetettségének kiszámításához először ki kell számítanunk a teljes számot. szélek:
Összesen élek száma: 6
Most számolja ki a csomópontok összes számát.
Csomópontok száma összesen: 5
Képlet: M = EN + 2p
M = 6-5 + 2
M = 1 + 2
M = 3
Tehát ennek a programnak a ciklomatikus összetettsége 3.
A komplex kódokat nehéz fenntartani, frissíteni vagy módosítani. Mint mindannyian tudjuk, hogy a ciklomatikus komplexitás nem haladhatja meg a 10-et.
A komplexitás típusai
A bonyolultságnak két típusa van:
Alapvető komplexitás :
Ez a komplexitás egy olyan típusú kód, amelyet nem hagyhatunk figyelmen kívül.
Volt. A repülésirányítási rendszer összetettebb.
Véletlen komplexitás:
Ahogy a neve is sugallja, mert valami történt, például hibajavítás, javítás, módosítás stb. A rendszerben. Leginkább csak a véletlen komplexitáson dolgozunk.
A ciklomatikus komplexitás előnyei:
- Egyszerű logikaként, ha a bonyolultság csökken, könnyebben érthetők meg.
- Ha ott van a bonyolultabb program, akkor a programozónak meg kell cha = eck-re növelnie a lehetőségeket.
- A bonyolultságban számolt utak azt mutatják, hogy egy program által írt program összetett, vagyis továbbléphetünk és csökkenthetjük a bonyolultságot.
- Csökkenti a kód kapcsolását.
- Tegyük fel, hogy egy program ciklikusan összetett 5-ös. Ez azt jelenti, hogy a módszer 5 különböző független útvonalat tartalmaz.
- Ez azt jelenti, hogy 5 teszt esetet kell végrehajtani ennek a kódnak a teszteléséhez.
- Ezért mindig jó, ha kevesebb számot kap a ciklomatikus komplexitás szempontjából.
- Erre a folyamatra van szükség, mivel a nagymértékben csatolt kódot nagyon nehéz módosítani.
- Minél nagyobb a bonyolultsága a kódot jelentő kódnak, annál összetettebb is.
A ciklikus komplexitás kiszámításához használt eszközök:
- Cyclo
- CCCC
- McCabe IQ
- GCov
- Bullseye lefedettség
- PMD
- LC2
- Findbugs
- Jarchitect
Következtetés
A ciklikus komplexitás a program összetettségének mértéke. Ez az intézkedés segít megérteni a szükséges munkát és azt, hogy a szoftver milyen összetett lesz. A ciklomatikus komplexitás a White Box Testing része.
Ajánlott cikkek
Ez egy útmutató a ciklomatikus komplexitáshoz. Itt tárgyaljuk, hogyan lehet kiszámítani a ciklikus komplexitást? valamint az előnyök és a komplexitás típusai mellett. A következő cikkeket is megnézheti további információkért -
- Bevezetés a Linuxba
- Bevezetés a C ++ -ba
- Mi a HTML5?
- Mi a hibernált?