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

Пре извесног времена догодио се разговор између мене и мог доброг пријатеља у коме су се чуле следеће фразе:

— Број програмера ће стално расти – јер количина кода расте, а све више програмера је стално потребно да га подржавају.
— Али код стари, неки од њих више нису подржани. Могуће је чак и да постоји нека врста равнотеже.

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

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

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

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

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

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

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

или

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

Одакле

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

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

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

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

Међутим, ако током времена Колико је програмера потребно за одржавање претходно написаног кода? код постаје застарео и престаје да буде подржан, тада количина кода захтева подршку у исто време Колико је програмера потребно за одржавање претходно написаног кода? већ је једнака Колико је програмера потребно за одржавање претходно написаног кода? Онда

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

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

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

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

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

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

Питања на која се није могло одговорити:

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

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

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

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

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

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

Одакле

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

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

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

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

Закључак

Разматрани модели су „меки” математички модели [2]. Они су веома једноставни. Ипак, зависност резултата симулације од вредности параметара одговара ономе што се очекује за реалне системе, што говори у прилог адекватности модела и довољној тачности за добијање висококвалитетних процена.

Литература

1. Елсголтс Л.Е., Норкин С.Б. Увод у теорију диференцијалних једначина са девијантним аргументом. Москва. Издавачка кућа „Наука”. 1971. године.
2. Арнолд В.И. „Тврди” и „меки” математички модели. Москва. Издавачка кућа МЦНМО. 2004.

Извор: ввв.хабр.цом

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