Колку програмери се потребни за одржување на претходно напишаниот код?

Пред извесно време се водеше разговор помеѓу мене и еден мој добар пријател во кој се слушнаа следните фрази:

— Бројот на програмери постојано ќе расте - бидејќи количината на кодот расте, а сè повеќе програмери постојано се бара да го поддржат.
— Но кодот старее, дел од него веќе не се поддржани. Дури е можно да има некаков вид на рамнотежа.

Сеќавајќи се на нив неколку дена подоцна, се запрашав дали одржувањето на кодот, кое бара се повеќе и повеќе ресурси со текот на времето, на крајот може да го парализира развојот на нова функционалност или ќе бара неограничено зголемување на бројот на програмери? Математичката анализа и диференцијалните равенки помогнаа квалитативно да се процени зависноста на висината на поддршката од развојот и да се најдат одговори на прашањата.

Прашање еден. Дали може да ги поддржи „да ги изеде“ сите развојни ресурси?

Размислете за тим од програмери во кој бројот на учесници е константен. Удел од нивното работно време Колку програмери се потребни за одржување на претходно напишаниот код? (Колку програмери се потребни за одржување на претходно напишаниот код?) се троши на развој на нов код, а преостанатиот дел од времето Колку програмери се потребни за одржување на претходно напишаниот код? оди на поддршка. Во рамките на претпоставките на моделот, претпоставуваме дека првиот тип на активност е насочен кон зголемување на обемот на кодот, а вториот е насочен кон негово менување (корегирање на грешки) и нема значително влијание врз обемот на кодот.

Да означиме Колку програмери се потребни за одржување на претходно напишаниот код? целата количина на код напишан до тој момент во времето Колку програмери се потребни за одржување на претходно напишаниот код?. Под претпоставка дека брзината на пишување код е пропорционална Колку програмери се потребни за одржување на претходно напишаниот код?, добиваме:

Колку програмери се потребни за одржување на претходно напишаниот код?

Природно е да се претпостави дека трошоците за работна сила за одржување на кодот се пропорционални на неговиот волумен:

Колку програмери се потребни за одржување на претходно напишаниот код?

или

Колку програмери се потребни за одржување на претходно напишаниот код?

Каде

Колку програмери се потребни за одржување на претходно напишаниот код?

Добиваме диференцијална равенка која лесно може да се интегрира. Ако во почетниот момент износот на кодот е нула, тогаш

Колку програмери се потребни за одржување на претходно напишаниот код?

на Колку програмери се потребни за одржување на претходно напишаниот код? функција Колку програмери се потребни за одржување на претходно напишаниот код?И Колку програмери се потребни за одржување на претходно напишаниот код?. И ова значи постепено намалување со текот на времето во развојот на новата функционалност на нула и трансфер на сите ресурси за поддршка.

Меѓутоа, ако во текот на времето Колку програмери се потребни за одржување на претходно напишаниот код? кодот станува застарен и престанува да биде поддржан, а потоа количината на кодот што бара поддршка во исто време Колку програмери се потребни за одржување на претходно напишаниот код? е веќе еднаков Колку програмери се потребни за одржување на претходно напишаниот код? Потоа

Колку програмери се потребни за одржување на претходно напишаниот код?

Колку програмери се потребни за одржување на претходно напишаниот код?

а Колку програмери се потребни за одржување на претходно напишаниот код? е решение на диференцијална равенка со ретардиран аргумент [1]:

Колку програмери се потребни за одржување на претходно напишаниот код?

Решението на таквата равенка е уникатно определено со наведување на вредностите Колку програмери се потребни за одржување на претходно напишаниот код? „пред почетокот на времето“ Колку програмери се потребни за одржување на претходно напишаниот код?. Бидејќи кодот сè уште не бил напишан пред почетниот момент во времето, во нашиот случај Колку програмери се потребни за одржување на претходно напишаниот код? во Колку програмери се потребни за одржување на претходно напишаниот код?.

Ајде да погледнеме неколку примери. Ќе го мериме времето во години, а количината на кодот во илјадници линии. Потоа за Колку програмери се потребни за одржување на претходно напишаниот код? вредностите од редот на десетици се прифатливи, ќе земеме 50 и 100. Тоа е, за една година тимот за развој ќе напише педесет и сто илјади линии код, соодветно. За Колку програмери се потребни за одржување на претходно напишаниот код? прифатливи вредности може да бидат: Колку програмери се потребни за одржување на претходно напишаниот код?, Колку програмери се потребни за одржување на претходно напишаниот код?, Колку програмери се потребни за одржување на претходно напишаниот код?. Ова значи дека развојниот тим може да го поддржи количеството код што го пишува за една година, без разлика дали е четвртина, половина или со полно работно време. Како просечен век на траење на кодот, ќе ги поставиме следните вредности: 1, 2 и 4 години. Решавајќи ја равенката нумерички, добиваме примери за однесувањето на функцијата Колку програмери се потребни за одржување на претходно напишаниот код? за некои комбинации на параметри Колку програмери се потребни за одржување на претходно напишаниот код?.
Колку програмери се потребни за одржување на претходно напишаниот код?
Однесување на функцијата Колку програмери се потребни за одржување на претходно напишаниот код? како што старее кодот, тој се промени. Функцијата повеќе не е монотона, но флуктуациите се „смируваат“ со текот на времето и постои тенденција за Колку програмери се потребни за одржување на претходно напишаниот код? до некоја константна вредност. Графиконите покажуваат: колку повеќе Колку програмери се потребни за одржување на претходно напишаниот код?, Колку програмери се потребни за одржување на претходно напишаниот код? и Колку програмери се потребни за одржување на претходно напишаниот код?, односно, колку побавно старее кодот, толку побрзо се развива новиот код и колку е помал квалитетот на кодот, толку помалку ресурси ќе останат за развој на нова функционалност. Имаше желба да се даде барем еден пример во кој Колку програмери се потребни за одржување на претходно напишаниот код? „стуткана“ блиску до нула. Но, ова бараше избор на многу слаби индикатори за квалитет на развојот и код што не старее долго време. Дури и во долниот лев графикон, останува значителна количина на ресурси за новата функционалност. Затоа, точниот одговор на првото прашање е попрво овој: теоретски - да, тоа е можно; практично - тешко.

Прашања на кои не можеше да се одговори:

  1. Дали е вистина тоа Колку програмери се потребни за одржување на претходно напишаниот код? се стреми кон одредена граница на Колку програмери се потребни за одржување на претходно напишаниот код? за сите Колку програмери се потребни за одржување на претходно напишаниот код?? Ако не за сите, тогаш за кои?
  2. Ако постои граница, од како зависи неговата вредност Колку програмери се потребни за одржување на претходно напишаниот код??

Прашање второ. Дали одржувањето на кодот може да предизвика неограничен раст на бројот на програмери?

Да означиме Колку програмери се потребни за одржување на претходно напишаниот код? бројот на програмери вклучени во развојот на нов код. Како и погоре, Колку програмери се потребни за одржување на претходно напишаниот код? — количината на кодот напишан до одреден момент Колку програмери се потребни за одржување на претходно напишаниот код?. Тогаш

Колку програмери се потребни за одржување на претходно напишаниот код?

Чувајте ја поддршката за кодот зафатена Колку програмери се потребни за одржување на претходно напишаниот код? програмери. Земајќи го предвид кодот за стареење,

Колку програмери се потребни за одржување на претходно напишаниот код?

Каде

Колку програмери се потребни за одржување на претходно напишаниот код?

Ако Колку програмери се потребни за одржување на претходно напишаниот код?, Потоа

Колку програмери се потребни за одржување на претходно напишаниот код?

Така, одговорот на второто прашање е негативен: ако бројот на развивачи на нов код е ограничен, тогаш во услови на стареење на кодот, поддршката не може да предизвика неограничено зголемување на бројот на програмери.

Заклучок

Разгледаните модели се „меки“ математички модели [2]. Тие се многу едноставни. Сепак, зависноста на резултатите од симулацијата од вредностите на параметрите одговара на она што се очекува за реалните системи, тоа зборува во прилог на соодветноста на моделите и доволна точност за да се добијат висококвалитетни проценки.

Референци

1. Елсголтс Л.Е., Норкин С.Б. Вовед во теоријата на диференцијални равенки со отстапувачки аргумент. Москва. Издавачка куќа „Наука“. 1971 година.
2. Арнолд В.И. „Тврди“ и „меки“ математички модели. Москва. Издавачка куќа MCNMO. 2004 година.

Извор: www.habr.com

Додадете коментар