Beberapa waktu yang lalu, terjadi percakapan antara saya dan teman baik saya, di mana frasa berikut berbunyi:
- Jumlah programmer akan terus bertambah - karena jumlah kode bertambah, dan semakin banyak pengembang yang terus-menerus diperlukan untuk mendukungnya.
- Tapi kodenya sudah menua, bagian dari itu meninggalkan dukungan. Kehadiran semacam keseimbangan tidak dikesampingkan.
Mengingat mereka beberapa hari kemudian, saya bertanya-tanya apakah dukungan kode, yang membutuhkan lebih banyak dan lebih banyak sumber daya dari waktu ke waktu, pada akhirnya dapat melumpuhkan pengembangan fungsionalitas baru, atau akan membutuhkan peningkatan yang tidak terbatas dalam jumlah programmer? Analisis matematis dan persamaan diferensial membantu menilai secara kualitatif ketergantungan volume dukungan pada pengembangan dan menemukan jawaban atas pertanyaan.
Pertanyaan pertama. Bisakah mendukung "memakan" semua sumber daya pengembangan?
Pertimbangkan tim pemrogram yang jumlah pesertanya konstan. Bagikan waktu kerja mereka
(
) dicatat oleh pengembangan kode baru, dan sebagian kecil dari waktu
pergi untuk mendukung. Di bawah asumsi model, anggap bahwa jenis kegiatan pertama ditujukan untuk meningkatkan jumlah kode, dan yang kedua - mengubahnya (mengoreksi kesalahan) dan tidak secara signifikan mempengaruhi jumlah kode.
Kami menunjukkan
semua kode ditulis oleh waktu
. Mengingat kecepatan penulisan kode adalah proporsional
kami mendapatkan:
Adalah wajar untuk berasumsi bahwa tenaga kerja yang terlibat dalam mempertahankan kode sebanding dengan volumenya:
atau
Dari mana
Kami mendapatkan persamaan diferensial yang terintegrasi dengan mudah. Jika pada saat awal jumlah kode adalah nol, maka
Di
fungsi
, dan
. Dan ini berarti pengurangan bertahap seiring waktu pengembangan fungsionalitas baru menjadi nol dan transisi semua sumber daya untuk mendukung.
Namun, jika tepat waktu
Karena kode menjadi usang dan tidak lagi didukung, jumlah kode yang membutuhkan dukungan pada suatu waktu
sama dengan
Lalu
tapi
adalah solusi persamaan diferensial dengan argumen tertunda [1]:
Solusi untuk persamaan ini ditentukan secara unik dengan menetapkan nilai-nilai
"Sebelum awal waktu", dengan
. Karena tidak ada kode yang ditulis sebelum waktu awal, dalam kasus kami
di
.
Mari kita lihat beberapa contoh. Kami akan mengukur waktu dalam tahun, dan jumlah kode dalam ribuan baris. Lalu untuk
Nilai urutan puluhan dapat diterima, kita ambil 50 dan 100. Artinya, dalam setahun tim pengembang akan menulis masing-masing lima puluh dan seratus ribu baris kode. Untuk
nilai yang dapat diterima mungkin:
,
,
. Ini berarti bahwa tim pengembangan dapat mempertahankan jumlah kode yang ditulisnya untuk tahun ini, dengan seperempat, setengah, atau beban kerja penuh. Sebagai waktu hidup rata-rata kode, mari kita tetapkan nilai: 1, 2, dan 4 tahun. Memecahkan persamaan secara numerik, kami mendapatkan contoh perilaku fungsi
untuk beberapa kombinasi parameter
.

Fungsi Perilaku
dalam menghadapi kode penuaan telah berubah. Fungsi ini tidak lagi monoton, tetapi fluktuasi βtenangβ seiring waktu, ada kecenderungan ke arah itu
ke beberapa nilai konstan. Grafik menunjukkan: semakin banyak
,
dan
, yaitu, semakin lambat kode semakin tua, semakin cepat pengembangan kode baru terjadi dan semakin rendah kualitas kode, semakin sedikit sumber daya yang tersisa untuk pengembangan fungsionalitas baru. Ada keinginan untuk memberi setidaknya satu contoh
"Meringkuk" mendekati nol. Tetapi ini membutuhkan pemilihan indikator kualitas pembangunan yang sangat buruk dan kode yang lama. Bahkan di grafik kiri bawah, sejumlah besar sumber daya tetap untuk fungsi baru. Oleh karena itu, jawaban yang benar untuk pertanyaan pertama lebih cenderung seperti ini: secara teoritis - ya, itu mungkin; praktis - hampir tidak.
Pertanyaan yang tidak bisa dijawab:
- Benarkah itu cenderung batas tertentu untuk untuk semua ? Jika tidak untuk semua orang, lalu untuk apa?
- Jika batas ada, maka bagaimana nilainya tergantung ?
Pertanyaan kedua. Dapatkah dukungan kode menyebabkan pertumbuhan jumlah programmer yang tidak terbatas?
Kami menunjukkan
jumlah programmer yang terlibat dalam pengembangan kode baru. Seperti di atas
- jumlah kode yang ditulis pada saat itu
. Lalu
Biarkan dukungan kode sibuk
programmer. Penuaan kode C
Dari mana
Jika
lalu
Dengan demikian, jawaban untuk pertanyaan kedua adalah negatif: jika jumlah pengembang kode baru terbatas, maka dalam konteks kode penuaan, dukungan tidak dapat menyebabkan peningkatan jumlah programmer yang tidak terbatas.
Kesimpulan
Model yang dipertimbangkan adalah model matematika "lunak" [2]. Mereka sangat sederhana. Namun demikian, ketergantungan hasil simulasi pada nilai parameter sesuai dengan yang diharapkan untuk sistem nyata, ini mendukung kecukupan model dan akurasi yang cukup untuk mendapatkan perkiraan kualitatif.
Referensi
1. Elsgolts L.E., Norkin S.B. Pengantar teori persamaan diferensial dengan argumen menyimpang. Moskow Rumah Penerbit "Sains". 1971.
2. Arnold V.I. Model matematika "Keras" dan "lunak". Moskow Rumah Penerbitan Center 2004