4.0

4.0 Pengantar Bagian 4: Metrik kode dan kualitas

Bagian 2 dan 3 mengukur bagaimana pekerjaan bergerak dan bagaimana kabar orang-orang yang mengerjakannya. Bagian ini beralih ke artefaknya sendiri: kode, serta apa yang bisa dan tidak bisa disampaikan sebuah metrik tentang kualitasnya. Metrik kualitas kode punya sejarah terpanjang di antara semua keluarga metrik dalam buku ini, kompleksitas siklomatik sudah ada sejak 1976, dan sejarah penyalahgunaan yang sama panjangnya. Bagian ini menanggapi sejarah itu dengan serius: setiap topik menyebutkan sinyal yang benar-benar berguna, berdampingan dengan cara spesifik dan terdokumentasi dengan baik tentang bagaimana sinyal itu dimanipulasi (gaming) begitu ia menjadi target.

Benang merah yang menghubungkan keenam topik ini adalah bahwa tidak ada satu metrik kode pun yang sanggup menangkap kualitas seorang diri, dan beberapa yang paling populer justru menyesatkan secara aktif bila dikejar secara terpisah. Persentase cakupan pengujian yang tinggi bisa berdampingan dengan pengujian yang tidak memverifikasi apa pun yang bermakna. Skor kompleksitas yang rendah bisa berdampingan dengan kode yang secara teknis sederhana tetapi tidak koheren secara konseptual. Setiap topik dalam bagian ini memasangkan metrik utamanya dengan pemeriksaan pelengkap yang menangkap titik butanya yang spesifik: kompleksitas dengan konteks keterpeliharaan, cakupan dengan pengujian mutasi, churn dengan analisis hotspot, analisis statis dengan penilaian manusia, dan utang teknis dengan perbaikan yang diprioritaskan, bukan tumpukan antrean yang terus membengkak dan tidak disayangi siapa pun.

Bagi tim besar, metrik kode dan kualitas adalah yang memungkinkan sebuah basis kode dikelola ketika ukurannya terlalu besar untuk dipegang di kepala satu orang. Tim lima orang bisa mengandalkan pengetahuan tacit bersama tentang bagian sistem mana yang rapuh; organisasi dengan lima ratus insinyur yang tersebar di puluhan layanan memerlukan sinyal berinstrumen untuk menemukan kerapuhan itu secara sistematis. Organisasi perusahaan besar dan pemerintahan, yang sering membawa basis kode berusia puluhan tahun, bukan sekadar tahunan, bergantung pada metrik bagian ini untuk menentukan ke mana investasi pemeliharaan yang terbatas akan memberi manfaat terbesar.

Topik dalam bagian ini

  • 4.1 Metrik kompleksitas kode: Kompleksitas siklomatik dan kerabatnya, apa yang sebenarnya mereka prediksi, dan risiko manipulasi (gaming) yang terdokumentasi dengan baik.
  • 4.2 Cakupan pengujian dan efektivitas pengujian: Mengapa persentase cakupan saja memberi tahu Anda lebih sedikit daripada kesan awalnya, dan bagaimana pengujian mutasi menutup celahnya.
  • 4.3 Churn kode dan analisis hotspot: Menemukan bagian kecil basis kode yang spesifik, yang bertanggung jawab atas porsi cacat dan biaya pemeliharaan yang tidak sebanding.
  • 4.4 Analisis statis dan metrik code smell: Sinyal kualitas kode otomatis, nilai sebenarnya, dan keterbatasannya dibandingkan penilaian manusia.
  • 4.5 Pengukuran utang teknis: Mengubah kewajiban yang tak terlihat dan hanya dibicarakan secara informal menjadi portofolio yang terlihat, terprioritaskan, dan terkelola.
  • 4.6 Metrik dokumentasi dan pengetahuan: Mengukur apakah dokumentasi benar-benar membantu, bukan hanya apakah dokumentasi itu ada.

Bagaimana topik-topik ini saling berkaitan

Keenam topik ini dibangun dari unit kode terkecil ke arah luar. Topik 4.1 dimulai pada tingkat satu fungsi atau metode; topik 4.2 bertanya apakah pengujian benar-benar memverifikasi perilaku unit itu; topik 4.3 memperluas pandangan untuk menemukan file dan modul mana di seluruh basis kode yang layak diperhatikan lebih dulu; topik 4.4 menambahkan lapisan perangkat otomatis yang memindai semuanya secara terus-menerus; topik 4.5 mengubah temuan yang terkumpul dari keempat topik itu menjadi antrean yang terkelola dan terprioritaskan, bukan kekhawatiran yang menyebar dan tak tertangani; dan topik 4.6 menutup bagian ini dengan mengukur apakah pengetahuan yang diperlukan untuk memelihara semua ini dengan aman benar-benar terdokumentasi dan mudah ditemukan.

Bagian ini terhubung langsung ke belakang dengan metrik stabilitas Bagian 2: tingkat kegagalan perubahan (topik 2.10) sebagian besar merupakan konsekuensi hilir dari kualitas kode yang diukur bagian ini di hulu. Bagian ini juga terhubung ke depan dengan metrik produk Bagian 5, karena cacat yang lolos (topik 5.1) sering kali dapat ditelusuri tepat ke hotspot kompleksitas dan celah cakupan yang dirancang bagian ini untuk dimunculkan sebelum semuanya mencapai produksi.