Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Некаторы час таму паміж мной і маім добрым сябрам адбылася размова, у якой прагучалі такія фразы:

- Колькасць праграмістаў будзе пастаянна расці - бо колькасць кода расце, і для яго падтрымкі пастаянна патрабуецца ўсё больш распрацоўшчыкаў.
- Але код старэе, частка яго сыходзіць з падтрымкі. Не выключана нават наяўнасць нейкай раўнавагі.

Успомніўшы іх праз некалькі дзён, я задумаўся, ці сапраўды падтрымка кода, патрабуючы з цягам часу ўсё больш і больш рэсурсаў, можа ў канчатковым рахунку паралізаваць распрацоўку новага функцыяналу, альбо запатрабуе неабмежаванага павелічэння колькасці праграмістаў? Якасна ацаніць залежнасць аб'ёму падтрымкі ад распрацоўкі і знайсці адказы на пытанні дапамаглі матэматычны аналіз і дыферэнцыяльныя ўраўненні.

Пытанне першае. Ці можа падтрымка "з'есці" ўсе рэсурсы распрацоўкі?

Разгледзім калектыў праграмістаў, у якім колькасць удзельнікаў пастаянна. Доля іх працоўнага часу Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? (Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?) прыпадае на распрацоўку новага кода, а астатняя доля часу Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? сыходзіць на падтрымку. У рамках дапушчэнняў мадэлі выкажам здагадку, што першы від дзейнасці накіраваны на павелічэнне аб'ёму кода, а другі - на яго змяненне (выпраўленне памылак) і істотнага ўплыву на аб'ём кода не аказвае.

Абазначым Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? увесь аб'ём кода, напісаны да моманту часу Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?. Лічачы хуткасць напісання кода прапарцыйнай Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?, атрымліваем:

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Натуральна выказаць здагадку, што працавыдаткі на падтрымку кода прапарцыйныя яго аб'ёму:

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

або

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Адкуль

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Атрымліваем дыферэнцыяльнае раўнанне, якое лёгка інтэгруецца. Калі ў пачатковы момант часу аб'ём кода роўны нулю, то

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Пры Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? функцыя Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?, А Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?. І гэта азначае паступовае скарачэнне з цягам часу распрацоўкі новага функцыяналу да нуля і пераход усіх рэсурсаў на падтрымку.

Аднак, калі за час Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? код састарваецца і перастае падтрымлівацца, то аб'ём кода, які патрабуе падтрымкі, у момант часу Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? роўны ўжо Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? Тады

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

а Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? з'яўляецца рашэннем дыферэнцыяльнага раўнання з запазняльным аргументам [1]:

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Рашэнне такога ўраўнення адназначна вызначаецца заданнем значэнняў Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? «да пачатку часоў», пры Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?. Бо да пачатковага моманту часу кода напісана яшчэ не было, то ў нашым выпадку Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? пры Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?.

Разгледзім некалькі прыкладаў. Будзем вымяраць час у гадах, а аб'ём кода ў тысячах радкоў. Тады для Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? прымальнымі з'яўляюцца значэння парадку дзясяткаў, мы возьмем 50 і 100. Гэта значыць, за год група распрацоўкі напіша пяцьдзесят і сто тысяч радкоў кода адпаведна. Для Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? прымальнымі могуць быць велічыні: Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?, Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?, Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?. Гэта азначае, што група распрацоўнікаў здольная падтрымліваць аб'ём кода, які напісаны ёй жа за год, пры занятасці на чвэрць, на палову ці для гэтага патрабуецца поўная занятасць. У якасці сярэдняга часу жыцця кода зададзімся велічынямі: 1, 2 і 4 гады. Вырашаючы раўнанне лікава, атрымаем прыклады паводзін функцыі Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? для некаторых камбінацый параметраў Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?.
Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?
Характар ​​паводзін функцыі Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? ва ўмовах старэння кода змяніўся. Функцыя перастала быць манатоннай, але ваганні з часам "супакойваюцца", назіраецца тэндэнцыя імкнення Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? да некаторага сталага значэння. Графікі паказваюць: чым больш Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?, Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? и Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?, гэта значыць чым павольней старэе код, чым хутчэй адбываецца распрацоўка новага кода і чым ніжэй якасць кода, тым менш рэсурсаў будзе заставацца для распрацоўкі новага функцыяналу. Было жаданне прывесці хаця б адзін прыклад, у якім Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? прыціснулася блізка да нуля. Але гэта запатрабавала падбору вельмі дрэнных паказчыкаў якасці распрацоўкі і доўга не які старэе кода. Нават на левым ніжнім графіку на новы функцыянал застаецца адчувальная колькасць рэсурсаў. Таму правільны адказ на першае пытанне хутчэй такі: тэарэтычна - так, гэта магчыма; практычна - ці наўрад.

Пытанні, на якія не ўдалося атрымаць адказ:

  1. Ці дакладна, што Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? імкнецца да некаторай мяжы пры Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? для ўсіх Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?? Калі не для ўсіх, дык для якіх?
  2. Калі мяжа існуе, то як яго значэнне залежыць ад Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код??

Пытанне другое. Ці можа падтрымка кода стаць прычынай неабмежаванага росту колькасці праграмістаў?

Абазначым Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? колькасць праграмістаў, занятых распрацоўкай новага кода. Як і вышэй, Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? - аб'ём кода, напісанага да моманту часу Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?. Тады

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Няхай падтрымкай кода заняты Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код? праграмістаў. З улікам старэння кода,

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Адкуль

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Калі Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?, То

Колькі трэба праграмістаў, каб падтрымліваць раней напісаны код?

Такім чынам, адказ на другое пытанне адмоўны: калі колькасць распрацоўшчыкаў новага кода абмежавана, то ва ўмовах старэння кода падтрымка не можа стаць прычынай неабмежаванага росту колькасці праграмістаў.

Заключэнне

Разгледжаныя мадэлі з'яўляюцца "мяккімі" матэматычнымі мадэлямі [2]. Яны вельмі простыя. Тым не менш, залежнасць вынікаў мадэлявання ад значэнняў параметраў адпавядае чаканай для рэальных сістэм, гэта сведчыць у карысць адэкватнасці мадэляў і дастатковай дакладнасці для атрымання якасных адзнак.

Спіс літаратуры

1. Эльсгольц Л.Э., Норкін С.Б. Увядзенне ў тэорыю дыферэнцыяльных ураўненняў з адхіляюцца аргументам. Масква. Выдавецтва "Навука". 1971.
2. Арнольд У.І. "Жорсткія" і "мяккія" матэматычныя мадэлі. Масква. Выдавецтва МЦНМА. 2004.

Крыніца: habr.com

Дадаць каментар