Beberapa waktu yang lalu, terjadi percakapan antara saya dan seorang teman baik saya yang terdengar kalimat berikut:
β Jumlah pemrogram akan terus bertambah - karena jumlah kode bertambah, dan semakin banyak pengembang yang terus-menerus dibutuhkan untuk mendukungnya.
β Namun kodenya semakin tua, beberapa di antaranya tidak lagi didukung. Bahkan mungkin saja ada semacam keseimbangan.
Mengingatnya beberapa hari kemudian, saya bertanya-tanya apakah memelihara kode, yang membutuhkan lebih banyak sumber daya dari waktu ke waktu, pada akhirnya dapat melumpuhkan pengembangan fungsi baru, atau akankah memerlukan peningkatan jumlah pemrogram yang tidak terbatas? Analisis matematis dan persamaan diferensial membantu menilai secara kualitatif ketergantungan jumlah dukungan terhadap pembangunan dan menemukan jawaban atas pertanyaan.
Pertanyaan pertama. Dapatkah dukungan βmemakanβ semua sumber daya pembangunan?
Misalkan sebuah tim pemrogram yang jumlah pesertanya konstan. Pembagian waktu kerja mereka () dihabiskan untuk mengembangkan kode baru, dan sisa waktunya pergi untuk mendukung. Dalam asumsi model, kami berasumsi bahwa jenis aktivitas pertama ditujukan untuk meningkatkan volume kode, dan aktivitas kedua ditujukan untuk mengubahnya (mengoreksi kesalahan) dan tidak berdampak signifikan terhadap volume kode.
Mari kita tunjukkan seluruh jumlah kode yang ditulis hingga saat itu . Dengan asumsi kecepatan penulisan kode proporsional , kita mendapatkan:
Wajar untuk berasumsi bahwa biaya tenaga kerja untuk memelihara kode tersebut sebanding dengan volumenya:
ΠΈΠ»ΠΈ
Mana
Kami memperoleh persamaan diferensial yang dapat dengan mudah diintegrasikan. Jika pada saat awal jumlah kodenya nol, maka
Di fungsi Dan . Dan ini berarti pengurangan bertahap dari waktu ke waktu dalam pengembangan fungsi baru menjadi nol dan pengalihan semua sumber daya ke dukungan.
Namun, jika selama ini kode menjadi usang dan tidak lagi didukung, maka jumlah kode yang memerlukan dukungan pada suatu waktu sudah setara Lalu
Π° adalah solusi persamaan diferensial dengan argumen terbelakang [1]:
Solusi persamaan tersebut ditentukan secara unik dengan menentukan nilainya "sebelum permulaan waktu" . Karena kode belum ditulis sebelum momen awal, dalam kasus kami di .
Mari kita lihat beberapa contoh. Kami akan mengukur waktu dalam beberapa tahun, dan jumlah kode dalam ribuan baris. Lalu untuk nilai orde puluhan dapat diterima, kita ambil 50 dan 100. Artinya, dalam setahun tim pengembangan akan menulis masing-masing lima puluh dan seratus ribu baris kode. Untuk nilai yang dapat diterima mungkin: , , . Artinya, tim pengembangan dapat mendukung jumlah kode yang ditulisnya dalam satu tahun, baik seperempat, setengah, atau penuh waktu. Sebagai rata-rata umur kode, kami akan menetapkan nilai berikut: 1, 2, dan 4 tahun. Memecahkan persamaan secara numerik, kita memperoleh contoh perilaku fungsi untuk beberapa kombinasi parameter .
Perilaku fungsi seiring bertambahnya usia kode, kode itu telah berubah. Fungsinya tidak lagi monoton, namun fluktuasinya βmenenangβ seiring berjalannya waktu, dan ada kecenderungannya ke beberapa nilai konstan. Grafik menunjukkan: semakin banyak , ΠΈ Artinya, semakin lambat umur kode, semakin cepat pengembangan kode baru dan semakin rendah kualitas kode, semakin sedikit sumber daya yang tersisa untuk pengembangan fungsi baru. Ada keinginan untuk memberikan setidaknya satu contoh "meringkuk" mendekati nol. Namun hal ini memerlukan pemilihan indikator dan kode kualitas pembangunan yang sangat buruk dan tidak bertahan lama. Bahkan di grafik kiri bawah, masih ada sejumlah besar sumber daya yang tersisa untuk fungsi baru. Oleh karena itu, jawaban yang benar untuk pertanyaan pertama adalah sebagai berikut: secara teoritis - ya, itu mungkin; praktis - hampir tidak.
Pertanyaan yang tidak dapat dijawab:
- Benarkah itu cenderung pada batas tertentu untuk semua ? Jika tidak untuk semua orang, lalu untuk yang mana?
- Jika suatu batas ada, bergantung pada bagaimana nilainya ?
Pertanyaan kedua. Bisakah pemeliharaan kode menyebabkan pertumbuhan jumlah pemrogram yang tidak terbatas?
Mari kita tunjukkan jumlah pemrogram yang terlibat dalam pengembangan kode baru. Seperti di atas, β jumlah kode yang ditulis hingga suatu titik waktu . Lalu
Jaga agar dukungan kode tetap sibuk pemrogram. Dengan mempertimbangkan kode penuaan,
Mana
Jika , Kemudian
Jadi, jawaban atas pertanyaan kedua adalah negatif: jika jumlah pengembang kode baru terbatas, maka dalam kondisi kode yang menua, dukungan tidak dapat menyebabkan peningkatan jumlah pemrogram yang tidak terbatas.
Kesimpulan
Model yang dipertimbangkan adalah model matematika βlunakβ [2]. Itu sangat sederhana. Namun demikian, ketergantungan hasil simulasi pada nilai parameter sesuai dengan apa yang diharapkan untuk sistem nyata, hal ini mendukung kecukupan model dan akurasi yang cukup untuk memperoleh estimasi berkualitas tinggi.
Referensi
1. Elsgolts L.E., Norkin S.B. Pengantar teori persamaan diferensial dengan argumen menyimpang. Moskow. Penerbitan rumah "Ilmu". 1971.
2. Arnold V.I. Model matematika βkerasβ dan βlunakβ. Moskow. Penerbitan MCNMO. 2004.
Sumber: www.habr.com