Bagaimana saya bisa memperkirakan umur satu baris kode?

11

Saya mencoba mencari cara untuk menganalisis umur panjang kode dalam proyek open source: yaitu, berapa lama baris kode tertentu aktif dan sedang digunakan.

Pemikiran saya saat ini adalah bahwa rentang umur kode dimulai ketika pertama kali dilakukan, dan berakhir ketika salah satu dari berikut terjadi:

  • Sudah diedit atau dihapus,
  • Dikecualikan dari bangunan,
  • Tidak ada kode dalam pengembangannya yang dipertahankan untuk beberapa periode waktu (katakanlah, setahun).

CATATAN: Sebagai klarifikasi mengapa "sunting" dihitung sebagai "kematian", baris yang diedit akan dihitung sebagai generasi "baru", atau baris kode. Juga, kecuali ada cara mudah untuk melakukan ini, tidak akan ada perhitungan umur panjang garis keturunan, atau keturunan dari leluhur.

Apa lagi yang akan menentukan rentang umur kode?

kesalahan besar
sumber
2
"berapa lama baris kode tertentu aktif dan digunakan" mengapa Anda pikir ini adalah metrik yang baik?
Pieter B

Jawaban:

10

Andy Ozment memandang OpenBSD pada tahun 2006 dengan pertanyaan yang sama: Milk atau Wine: Apakah Keamanan Perangkat Lunak Meningkat seiring Umur?

Anda mungkin dapat belajar dari definisinya. Ini juga merupakan makalah yang sangat menarik, dengan kesimpulan yang menarik juga, yang belum dimasukkan ke dalam pengetahuan manajemen perangkat lunak:

Selama 7,5 tahun dan lima belas rilis, 62% dari 140 kerentanan yang dilaporkan dalam OpenBSD bersifat mendasar : ada dalam kode pada awal penelitian.

Butuh lebih dari dua setengah tahun untuk paruh pertama kerentanan mendasar ini untuk dilaporkan. Kami menemukan bahwa 61% dari kode sumber dalam versi final yang dipelajari bersifat mendasar: tetap tidak berubah dari versi awal yang dirilis 7,5 tahun sebelumnya. Dengan demikian, tingkat pelaporan kerentanan dasar dalam OpenBSD kemungkinan akan terus mempengaruhi tingkat pelaporan kerentanan secara keseluruhan.

Kami juga menemukan bukti yang signifikan secara statistik bahwa tingkat laporan kerentanan dasar menurun selama periode penelitian. Kami menggunakan model pertumbuhan keandalan untuk memperkirakan bahwa 67,6% kerentanan dalam versi yayasan telah ditemukan. Perkiraan model dari jumlah yang diharapkan dari kerentanan dasar yang dilaporkan per hari menurun dari 0,051 pada awal penelitian menjadi 0,024.

Bruce Ediger
sumber
1
+1 @Bruce Ediger: Luar biasa, terima kasih - melihatnya sekarang!
kesalahan
Sekali lagi, terima kasih, jadi satu-satunya informasi yang dapat saya temukan untuk digunakan adalah "Kami belajar bahwa 61% dari baris kode di OpenBSD hari ini adalah mendasar: mereka diperkenalkan sebelum rilis versi awal yang kami pelajari dan belum telah diubah sejak itu. " - yang sementara menarik, tidak benar-benar terkait. Segala sesuatu yang lain tampaknya berfokus pada berapa lama kerentanan harus diperbaiki, yang sekali lagi, menarik, tetapi tidak mengatakan apa-apa tentang faktor-faktor yang harus diperhitungkan dalam umur kode. Apakah ada sesuatu yang saya lewatkan?
kesalahan
1

Saya kira tidak ada jawaban untuk itu. Ini sangat tergantung proyek. Beberapa lebih stabil selama bertahun-tahun, yang lain lebih tidak stabil / refactored / berkembang selama bertahun-tahun.

Apalagi sulit untuk diukur. Apakah baris yang diedit benar-benar akhir dari masa pakainya? Bagaimana dengan hanya perubahan kosmetik seperti memformat ulang basis kode dengan tab atau spasi? IMHO yang tidak dihitung sebagai basis kode yang diperbarui, tetapi akan sesuai dengan kriteria Anda.

Yang mengatakan, saya pikir sebagian besar LOC hidup selamanya.

Alasannya sederhana: lebih mudah menambahkan kode baru daripada menghapus beberapa. Terutama ketika sistemnya kompleks dan tumbuh selama bertahun-tahun. Kemudian dengan cepat sampai pada titik di mana itu "berisiko" untuk menghapus atau mengubah kode non-sepele. Itu bisa memperkenalkan bug, mematahkan kompatibilitas, memperkenalkan efek perubahan kupu-kupu ... Jadi saya pikir, semakin besar basis kode, semakin tua, semakin banyak LOC akan tinggal.

Selain itu, hanya programmer yang baik cenderung membersihkan basis kode dan mengurangi garis. Yang lain cenderung menumpuk LOC. Dan sejauh ini, yang terakhir menang sejauh ini. ;)

dagnelies
sumber
0

Menghapus atau mengecualikan sebaris kode pasti merupakan indikasi akhir masa pakainya.

Pengeditan pengeditan, saya akan mengajukan pertanyaan ini: Apakah pernyataan ini menghasilkan hasil yang berbeda setelah pengeditan?

Jika jawabannya adalah ya, maka saya akan mengatakan pernyataan sebelumnya tidak lagi tersedia, kalau tidak saya masih akan menganggapnya sebagai kelanjutan dari pernyataan sebelumnya.

Contoh mengubah hasil:

if ( a && b )

untuk:

if ( a || b )

Contoh melanjutkan umur:

foo.bar( baz );

untuk:

foo.prototype.bar.call( this, baz );
Mahdi
sumber