Bir süre önce yakın bir arkadaşımla aramızda şu cümlelerin duyulduğu bir konuşma geçti:
— Programcıların sayısı sürekli artacak; çünkü kod miktarı artıyor ve giderek daha fazla geliştiricinin onu desteklemesi gerekiyor.
— Ancak kod eskiyor ve bir kısmı artık desteklenmiyor. Hatta bir tür dengenin olması da mümkündür.
Birkaç gün sonra onları hatırladım ve zamanla daha fazla kaynak gerektiren kodu sürdürmenin yeni işlevlerin gelişimini sonuçta felç edip edemeyeceğini veya programcı sayısında sınırsız bir artış gerektirip gerektiremeyeceğini merak ettim. Matematiksel analiz ve diferansiyel denklemler, destek miktarının kalkınmaya bağımlılığının niteliksel olarak değerlendirilmesine ve soruların yanıtlarının bulunmasına yardımcı oldu.
Birinci soru. Tüm geliştirme kaynaklarını "tüketmeyi" destekleyebilir mi?
Katılımcı sayısının sabit olduğu bir programcı ekibi düşünün. Çalışma sürelerinin payı () yeni kod geliştirmeye harcanır ve kalan zaman payı desteğe gider. Modelin varsayımları kapsamında, birinci aktivite türünün kod hacmini artırmaya, ikincisinin ise değiştirmeye (hataları düzeltmeye) yönelik olduğunu ve kod hacmi üzerinde önemli bir etkisinin olmadığını varsayıyoruz.
Haydi belirtelim o ana kadar yazılan kodun tamamı . Kod yazma hızının orantılı olduğunu varsayarsak , şunu elde ederiz:
Kodun bakımı için gereken işçilik maliyetlerinin hacmiyle orantılı olduğunu varsaymak doğaldır:
veya
Nereden
Kolayca entegre edilebilecek bir diferansiyel denklem elde ediyoruz. İlk anda kod miktarı sıfırsa, o zaman
at fonksiyon Ve . Bu da zamanla yeni işlevsellik geliştirmenin kademeli olarak sıfıra indirilmesi ve tüm kaynakların desteğe aktarılması anlamına geliyor.
Ancak eğer bu süre içerisinde kod geçerliliğini yitirir ve desteklenmeyi bırakırsa, bir seferde destek gerektiren kod miktarı zaten eşit O zaman
а geciktirilmiş argümanlı bir diferansiyel denklemin çözümüdür [1]:
Böyle bir denklemin çözümü, değerlerin belirtilmesiyle benzersiz bir şekilde belirlenir. "zamanın başlangıcından önce" . Kod henüz zamanın ilk anından önce yazılmadığından bizim durumumuzda at .
Birkaç örneğe bakalım. Zamanı yıllarla, kod miktarını ise binlerce satırla ölçeceğiz. Bundan dolayı Onlarcalık değerler kabul edilebilir, 50 ve 100 alacağız. Yani bir yılda geliştirme ekibi sırasıyla elli ve yüz bin satır kod yazacak. İçin kabul edilebilir değerler şunlar olabilir: , , . Bu, bir geliştirme ekibinin ister çeyrek, ister yarım, ister tam zamanlı olsun, bir yılda yazdığı kod miktarını destekleyebileceği anlamına gelir. Kodun ortalama ömrü olarak şu değerleri belirleyeceğiz: 1, 2 ve 4 yıl. Denklemi sayısal olarak çözerek fonksiyonun davranışına ilişkin örnekler elde ederiz. bazı parametre kombinasyonları için .
Fonksiyonun davranışı kod eskidikçe değişti. İşlev artık monoton değildir, ancak dalgalanmalar zamanla "sakinleşir" ve sabit bir değere kadar. Grafikler şunu gösteriyor: ne kadar çok , и yani kodun eskimesi ne kadar yavaşsa, yeni kodun geliştirilmesi o kadar hızlı ve kodun kalitesi ne kadar düşük olursa, yeni işlevlerin geliştirilmesi için o kadar az kaynak kalacaktır. En azından bir örnek verme arzusu vardı. sıfıra yakın “sarıldı”. Ancak bu, çok zayıf geliştirme kalitesi göstergelerinin ve uzun süre eskimeyen kodun seçilmesini gerektiriyordu. Sol alt grafikte bile yeni işlevsellik için önemli miktarda kaynak kalıyor. Bu nedenle ilk sorunun doğru cevabı şu şekildedir: teorik olarak - evet, mümkün; pratik olarak - neredeyse hiç.
Cevaplanamayan sorular:
- Bu doğru mu bir miktar sınıra ulaşma eğilimindedir herkes için ? Herkes için değilse hangileri için?
- Bir limit varsa değeri neye bağlıdır? ?
İkinci soru. Kod bakımı programcı sayısında sınırsız artışa neden olabilir mi?
Haydi belirtelim yeni kod geliştirmeye katılan programcıların sayısı. Yukarıdaki gibi, — belirli bir zamana kadar yazılan kod miktarı . sonra
Kod desteğini meşgul tutun programcılar. Yaşlanma kodunu dikkate alarak,
Nereden
Eğer Sonra
Dolayısıyla ikinci sorunun cevabı olumsuzdur: Yeni kod geliştiricilerin sayısı sınırlıysa, kodun eskidiği koşullarda destek, programcı sayısında sınırsız bir artışa neden olamaz.
Sonuç
Dikkate alınan modeller “yumuşak” matematiksel modellerdir [2]. Çok basitler. Bununla birlikte, simülasyon sonuçlarının parametre değerlerine bağımlılığı, gerçek sistemler için beklenene karşılık gelir; bu, modellerin yeterliliği ve yüksek kaliteli tahminler elde etmek için yeterli doğruluk lehine konuşur.
Referanslar
1. Elsgolts L.E., Norkin S.B. Sapma argümanıyla diferansiyel denklemler teorisine giriş. Moskova. Yayınevi "Bilim". 1971.
2. Arnold V.I. “Sert” ve “yumuşak” matematiksel modeller. Moskova. Yayınevi MCNMO. 2004.
Kaynak: habr.com