Flow Graph
dan Kompleksitas Siklomatis
Apa itu flow graph?
Flow
Diagram menggambarkan alur kontrol. Setiap
cabang ditunjukkan oleh path yang terpisah dan loop ditunjukkan oleh arrows looping kembali ke loop kondisi node.
Keterangan
Gambar:
ΓΌ yaitu link atau edge, merepresentasikan
aliran kontrol
- Lingkaran (node/simpul), menggambarkan satu/lebih perintah prosedural dan yang berisi sebuah kondisi yang ditandai dengan dua/lebih link yang berasal darinya(Predikat). Urutan proses dan keputusan dapat dipetakan dalam satu node.
- Tanda panah (edge/link), menggambarkan aliran kontrol. Setiap node harus mempunyai tujuan node
Contoh Flow Graph
|
Apa itu kompleksitas siklomatis?
Kompleksitas siklomatis
adalah merupakan metrik tradisional yang menghitung tingkat kompleksitas suatu
method/procedure. Kompleksitas siklomatis digunakan untuk mencari jumlah path
dalam satu flow graph.
Rumus-rumus
untuk menentukan nilai kompleksitas siklomatis:
1. Jalur independent
2. V(G)=E-N+2
3. V(G)=P+1
4. Region
Keterangan:
Jalur Independent = beberapa cara
penyelesaian grafik alir bisa sampai ke tujuan.
E = jumlah edge/garis panah
N = jumlah node / simpul
P = jumlah predikat (node yang memiliki cabang)
Region (R) = jumlah wilayah
kompleksitas siklomatis
1. Read (x)
2. Read (y)
3. Write (x)
4. Write (y)
Penyelesaian
:
* Flow graph
* Kompleksitas Siklomatis
1. Jalur independen : ada 1
cara
* 1 - 2 - 3 - 4
2. V(G) = 3 - 4 + 2 = 1
3. V(G) = 0 + 1 = 3
4. Region = 1
1. Read (a)
2. Read (b)
3. If a>b then
4. Write
(‘a lebih dari b’)
5. Else if a<b then
6. Write
(‘b lebih dari a’)
7. Else
8. Write
(‘a sama dengan b’)
9. End if
Penyelesaian:
* Flow graph
* Kompleksitas Siklomatis
1. Jalur independent: ada 3 cara
§ 1-2-3-4-9
§ 1-2-3-5-6-9
§ 1-2-3-5-8-9
2. V(G) = E-N+2 = 10-9+2 = 3
3. V(G) = P+1 = 2+1 = 3
4. Region = 3
1. Read (a)
2. If (a= integer) then
3. If
(a mod 2=0) then
4. Write (‘a genap’)
5. Else
6. Write (‘a ganjil’)
7. End
if
8. Else
9. Write (‘a adalah string’)
10. End if
Penyelesaian:
* Flow graph
* Kompleksitas Siklomatis
1. Jalur independent ada 3
§ 1-2-3-4-7-10
§ 1-2-3-6-7-10
§ 1-2-9-10
2. V(G) = E-N+2 = 9-8+2 = 3
3. V(G) = P+1 = 2+1 = 3
4. Region = 3
1. Read (a)
2. If a mod 2 = 0 then
3. Write (a genap)
4. Else
5. Write (a ganjil)
6. End if
Penyelesaian :
* Flow graph
* Kompleksitas Siklomatis
1. Jalur independen = 2
·
1-2-3-6
·
1-2-5-6
2. V(G) = 5 - 5 + 2 = 2
3. V(G) = 1 + 1 = 2
4. Region = 2
1. If a then
2. b
3. End if
Penyelesaian :
* Flow graph
* Kompleksitas Siklomatis
1. Jalur
independen = 2
·
1-2-3
·
1-3
2.
V(G) = 3 - 3 + 2 = 2
3.
V(G) = 1 + 1 = 2
4.
Region = 2
Jika
semua hasilnya sama berarti penyelesaian dari kompleksitas siklomatis tersebut
benar (valid), tetapi jika ada salah
satu yang berbeda maka hasilnya salah.