Back to IF3250 Proyek Perangkat Lunak

Size and Complexity Metrics

Questions/Cues

  • Apa itu size-oriented metrics (LOC/KLOC/SLOC)?
  • Bagaimana Halstead’s Software Science mengukur kompleksitas?
  • Bagaimana menghitung McCabe Cyclomatic Complexity dari flow graph?
  • Apa arti nilai V(G) dan batas amannya?
  • Apa itu McClure’s metric dan High-level Design Metrics (Card & Glass)?

Reference Points

  • Software Quality and Metrics (Halaman 26-31)
  • Software Quality and Metrics (Halaman 32-40)

Types of Measures & Size-Oriented Metrics

  • Direct Measures (internal attributes): cost, effort, LOC, speed, memory.
  • Indirect Measures (external attributes): functionality, quality, complexity, efficiency, reliability, maintainability.

Size-Oriented Metrics mengukur ukuran software yang diproduksi:

  • LOC — Lines Of Code.
  • KLOC — 1000 Lines Of Code.
  • SLOC — Statement Lines of Code (mengabaikan whitespace).
  • Typical measures: Errors/KLOC, Defects/KLOC, Cost/LOC, Documentation Pages/KLOC.

LOC Metrics mudah digunakan dan dihitung, tetapi bergantung pada bahasa & programmer — sehingga tidak adil untuk perbandingan lintas bahasa.

Halstead’s Complexity Measures (Software Science)

LOC merepresentasikan fungsi kompleksitas tetapi language/programmer dependent — perlu lebih dari LOC. Halstead memakai entropy measures dari empat besaran dasar:

  • — jumlah distinct operators
  • — jumlah distinct operands
  • — total jumlah operators
  • — total jumlah operands

Contoh kode:

if (k < 2)
{
  if (k > 3)
    x = x*k;
}
  • Distinct operators: if ( ) { } > < = * ;
  • Distinct operands: k 2 3 x
  • ,

Ukuran turunan Halstead:

UkuranRumus
Program vocabulary
Program length
Calculated estimated length
Purity ratio
Volume
Difficulty
Effort
Time required to program detik
Number of delivered bugs

Difficulty terkait sulitnya program ditulis atau dipahami (mis. saat code review).

McCabe’s Cyclomatic Complexity

Metrik McCabe berbasis representasi control flow program. Program graph menggambarkan control flow: node = processing task (satu/lebih statement), edge = aliran kontrol antar node.

Flow Graph Notation untuk struktur dasar: Sequence, If-then-else, While, Until.

Cyclomatic Complexity = jumlah independent path melalui graph (basis set):

di mana E = jumlah edge, N = jumlah node, P = jumlah predicate node (node keputusan).

Contoh algoritma:

i = 0;
while (i<n-1) do
  j = i + 1;
  while (j<n) do
    if A[i]<A[j] then
      swap(A[i], A[j]);
  end do;
  i=i+1;
end do;

Untuk flow graph dengan 7 node dan 9 edge:

  • (ada 3 predicate node)
  • Basis Set: 1,7 · 1,2,6,1,7 · 1,2,3,4,5,2,6,1,7 · 1,2,3,5,2,6,1,7
flowchart TD
    1 --> 2
    1 --> 7
    2 --> 3
    3 --> 4
    3 --> 5
    4 --> 5
    5 --> 2
    2 --> 6
    6 --> 1

Meaning of V(G): V(G) adalah jumlah region tertutup pada planar graph; bertambah seiring banyaknya decision path dan loop. Ia adalah ukuran kuantitatif kesulitan testing dan indikasi reliabilitas akhir. Data eksperimen menunjukkan V(G) sebaiknya ≤ 10 — di atas itu testing menjadi sangat sulit.

McClure’s Complexity Metric

  • C = jumlah comparisons dalam sebuah module.
  • V = jumlah control variables yang direferensikan dalam module.
  • Disebut decisional complexity; mirip McCabe tetapi menyoroti control variables.

High-level Design Metrics (Card & Glass)

Mengukur kompleksitas arsitektur di level desain:

  • Structural Complexity modul : , di mana fan-out = jumlah modul yang langsung dipanggil (immediately subordinate).
  • Data Complexity: , di mana = jumlah input & output yang dilewatkan ke/dari .
  • System Complexity: . Semakin besar tiap komponen, semakin besar kompleksitas arsitektur keseluruhan.

Summary

Size-oriented metrics (LOC/KLOC/SLOC) mudah dihitung tetapi language/programmer dependent. Halstead’s Software Science menurunkan vocabulary, length, volume, difficulty, effort, time, dan bugs dari . McCabe Cyclomatic Complexity mengukur jumlah independent path / region — proksi kesulitan testing, dengan batas aman ≤ 10. McClure menambahkan dimensi comparisons + control variables. Card & Glass mengukur kompleksitas desain via structural + data complexity. Metrik ini melengkapi pengukuran berorientasi objek di Object-Oriented Metrics dan dapat dikomputasi otomatis oleh Software Measurement Tools.