Bir müddət əvvəl mənimlə yaxşı dostum arasında aşağıdakı ifadələr eşidilmiş bir söhbət oldu:
— Proqramçıların sayı durmadan artacaq – çünki kodun miqdarı artır və getdikcə daha çox tərtibatçıdan onu dəstəkləmək tələb olunur.
— Amma kod köhnəlir, bəziləri artıq dəstəklənmir. Hətta ola bilsin ki, bir növ tarazlıq olsun.
Bir neçə gündən sonra onları xatırlayaraq, vaxt keçdikcə getdikcə daha çox resurs tələb edən kodun saxlanması son nəticədə yeni funksionallığın inkişafını iflic edə bilərmi, yoxsa proqramçıların sayının qeyri-məhdud artması tələb olunur? Riyazi təhlil və diferensial tənliklər dəstək miqdarının inkişafdan asılılığını keyfiyyətcə qiymətləndirməyə və suallara cavab tapmağa kömək etdi.
Sual bir. Bütün inkişaf resurslarını “yeyə” dəstək ola bilərmi?
İştirakçıların sayının sabit olduğu bir proqramçı komandasını nəzərdən keçirək. Onların iş vaxtının payı () yeni kodun işlənib hazırlanmasına sərf olunur, qalan pay isə vaxtdır dəstəyə gedir. Modelin fərziyyələri çərçivəsində biz fərz edirik ki, birinci fəaliyyət növü kodun həcminin artırılmasına, ikincisi isə onun dəyişdirilməsinə (səhvlərin düzəldilməsinə) yönəlib və kodun həcminə ciddi təsir göstərmir.
işarə edək həmin vaxta qədər yazılmış kodun bütün miqdarı . Kod yazma sürətinin mütənasib olduğunu fərz etsək , alırıq:
Kodun saxlanması üçün əmək xərclərinin onun həcminə mütənasib olduğunu güman etmək təbiidir:
və ya
Yerləşmə
Asanlıqla inteqrasiya oluna bilən diferensial tənliyi əldə edirik. Zamanın ilkin anında kodun miqdarı sıfırdırsa, o zaman
Hazırda funksiyası Və . Və bu, zamanla yeni funksionallığın inkişafının tədricən azaldılması və bütün resursların dəstəyə ötürülməsi deməkdir.
Lakin, əgər müddət ərzində kod köhnəlir və dəstəklənməyi dayandırır, sonra bir anda dəstək tələb edən kodun miqdarı artıq bərabərdir Sonra
а gecikmiş arqumentli diferensial tənliyin həllidir [1]:
Belə bir tənliyin həlli qiymətləri təyin etməklə unikal şəkildə müəyyən edilir "zamanın başlanğıcından əvvəl" . Kod hələ vaxtın ilk anından əvvəl yazılmadığı üçün bizim vəziyyətimizdə da .
Gəlin bir neçə nümunəyə baxaq. Zamanı illərlə, kodun miqdarını isə minlərlə sətirlə ölçəcəyik. Sonra üçün onlarla sıranın dəyərləri məqbuldur, biz 50 və 100 alacağıq. Yəni bir ildən sonra inkişaf qrupu müvafiq olaraq əlli və yüz min sətir kod yazacaq. üçün məqbul dəyərlər ola bilər: , , . Bu o deməkdir ki, bir inkişaf komandası bir il ərzində yazdığı kodun miqdarını dəstəkləyə bilər, istər dörddə bir, yarım və ya tam zaman. Kodun orta ömrü kimi biz aşağıdakı dəyərləri təyin edəcəyik: 1, 2 və 4 il. Tənliyi ədədi şəkildə həll edərək, funksiyanın davranışına dair nümunələr əldə edirik bəzi parametr birləşmələri üçün .
Funksiyanın davranışı kod yaşlandıqca dəyişdi. Funksiya artıq monoton deyil, zaman keçdikcə dalğalanmalar "sakitləşir" və belə bir tendensiya var. müəyyən bir sabit dəyərə. Qrafiklər göstərir: daha çox , и , yəni kod nə qədər yavaş yaşlanırsa, yeni kodun hazırlanması bir o qədər tez baş verir və kodun keyfiyyəti nə qədər aşağı olarsa, yeni funksionallığın inkişafı üçün bir o qədər az resurs qalacaq. Ən azı bir misal göstərmək istəyi var idi sıfıra yaxın "snuggled". Ancaq bu, çox zəif inkişaf keyfiyyət göstəricilərinin və uzun müddət köhnəlməyən kodun seçilməsini tələb etdi. Hətta aşağı sol qrafikdə yeni funksionallıq üçün əhəmiyyətli miqdarda resurs qalır. Ona görə də birinci sualın düzgün cavabı daha çox belədir: nəzəri cəhətdən - bəli, mümkündür; praktik olaraq - çətin.
Cavab vermək mümkün olmayan suallar:
- Bu doğrudurmu ilə müəyyən həddə çatmağa meyllidir hamı üçün ? Hamı üçün deyilsə, hansılar üçün?
- Əgər limit varsa, onun dəyəri necə asılıdır ?
İkinci sual. Kod baxımı proqramçıların sayında qeyri-məhdud artıma səbəb ola bilərmi?
işarə edək yeni kodun hazırlanmasında iştirak edən proqramçıların sayı. Yuxarıdakı kimi, — müəyyən vaxta qədər yazılan kodun miqdarı . Sonra
Kod dəstəyini məşğul saxlayın proqramçılar. Yaşlanma kodunu nəzərə alaraq,
Yerləşmə
Əgər , Sonra
Beləliklə, ikinci sualın cavabı mənfidir: əgər yeni kodu tərtib edənlərin sayı məhduddursa, kodun qocalması şəraitində dəstək proqramçıların sayının qeyri-məhdud artmasına səbəb ola bilməz.
Nəticə
Nəzərə alınan modellər “yumşaq” riyazi modellərdir [2]. Onlar çox sadədir. Buna baxmayaraq, simulyasiya nəticələrinin parametr dəyərlərindən asılılığı real sistemlər üçün gözlənilənlərə uyğundur, bu, modellərin adekvatlığı və yüksək keyfiyyətli qiymətləndirmələr əldə etmək üçün kifayət qədər dəqiqlik lehinə danışır.
References
1. Elsqolts L.E., Norkin S.B. Dəyişən arqumentli diferensial tənliklər nəzəriyyəsinə giriş. Moskva. "Elm" nəşriyyatı. 1971.
2. Arnold V.I. “Sərt” və “yumşaq” riyazi modellər. Moskva. MCNMO nəşriyyatı. 2004.
Mənbə: www.habr.com