Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Před časem mezi mnou a mým dobrým přítelem proběhl rozhovor, ve kterém zazněly následující fráze:

— Počet programátorů bude neustále růst – protože množství kódu roste a stále více a více vývojářů je neustále vyžadováno, aby jej podporovali.
— Ale kód stárne, některé už nejsou podporovány. Je dokonce možné, že existuje nějaká rovnováha.

Když jsem si je o pár dní později vzpomněl, přemýšlel jsem, zda údržba kódu, vyžadující postupem času stále více zdrojů, může nakonec ochromit vývoj nové funkcionality, nebo bude vyžadovat neomezený nárůst počtu programátorů? Matematická analýza a diferenciální rovnice pomohly kvalitativně posoudit závislost výše podpory na vývoji a nalézt odpovědi na otázky.

Otázka jedna. Může podpora „sežrat“ všechny rozvojové zdroje?

Zvažte tým programátorů, ve kterém je počet účastníků konstantní. Podíl jejich pracovní doby Kolik programátorů je potřeba k údržbě dříve napsaného kódu? (Kolik programátorů je potřeba k údržbě dříve napsaného kódu?) je vynaloženo na vývoj nového kódu a zbývající část času Kolik programátorů je potřeba k údržbě dříve napsaného kódu? jde na podporu. V rámci předpokladů modelu předpokládáme, že první typ činnosti je zaměřen na zvýšení objemu kódu a druhý je zaměřen na jeho změnu (opravu chyb) a nemá významný dopad na objem kódu.

Označme Kolik programátorů je potřeba k údržbě dříve napsaného kódu? celé množství kódu napsaného do tohoto okamžiku Kolik programátorů je potřeba k údržbě dříve napsaného kódu?. Za předpokladu, že rychlost zápisu kódu je úměrná Kolik programátorů je potřeba k údržbě dříve napsaného kódu?, dostaneme:

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Je přirozené předpokládat, že mzdové náklady na údržbu kódu jsou úměrné jeho objemu:

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

nebo

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Odkud

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Získáme diferenciální rovnici, kterou lze snadno integrovat. Pokud je v počátečním okamžiku množství kódu nulové, pak

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

na Kolik programátorů je potřeba k údržbě dříve napsaného kódu? funkce Kolik programátorů je potřeba k údržbě dříve napsaného kódu?a Kolik programátorů je potřeba k údržbě dříve napsaného kódu?. A to znamená postupné snižování v čase vývoje nové funkcionality na nulu a přesun všech zdrojů na podporu.

Pokud však během doby Kolik programátorů je potřeba k údržbě dříve napsaného kódu? kód se stane zastaralým a přestane být podporován, pak množství kódu vyžadujícího podporu najednou Kolik programátorů je potřeba k údržbě dříve napsaného kódu? je již rovný Kolik programátorů je potřeba k údržbě dříve napsaného kódu? Pak

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

а Kolik programátorů je potřeba k údržbě dříve napsaného kódu? je řešením diferenciální rovnice s retardovaným argumentem [1]:

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Řešení takové rovnice je jednoznačně určeno zadáním hodnot Kolik programátorů je potřeba k údržbě dříve napsaného kódu? "před počátkem času" Kolik programátorů je potřeba k údržbě dříve napsaného kódu?. Protože kód ještě nebyl napsán před počátečním okamžikem, v našem případě Kolik programátorů je potřeba k údržbě dříve napsaného kódu? na Kolik programátorů je potřeba k údržbě dříve napsaného kódu?.

Podívejme se na pár příkladů. Budeme měřit čas v letech a množství kódu v tisících řádků. Pak pro Kolik programátorů je potřeba k údržbě dříve napsaného kódu? hodnoty řádově desítky jsou přijatelné, vezmeme 50 a 100. To znamená, že za rok vývojový tým napíše padesát, respektive sto tisíc řádků kódu. Pro Kolik programátorů je potřeba k údržbě dříve napsaného kódu? přijatelné hodnoty mohou být: Kolik programátorů je potřeba k údržbě dříve napsaného kódu?, Kolik programátorů je potřeba k údržbě dříve napsaného kódu?, Kolik programátorů je potřeba k údržbě dříve napsaného kódu?. To znamená, že vývojový tým může podporovat množství kódu, které napíše za rok, ať už je to čtvrtina, polovina nebo plný úvazek. Jako průměrnou životnost kódu nastavíme tyto hodnoty: 1, 2 a 4 roky. Numerickým řešením rovnice získáme příklady chování funkce Kolik programátorů je potřeba k údržbě dříve napsaného kódu? pro některé kombinace parametrů Kolik programátorů je potřeba k údržbě dříve napsaného kódu?.
Kolik programátorů je potřeba k údržbě dříve napsaného kódu?
Chování funkce Kolik programátorů je potřeba k údržbě dříve napsaného kódu? jak kód stárne, změnil se. Funkce již není monotónní, ale výkyvy se časem „uklidňují“ a dochází k tendenci k Kolik programátorů je potřeba k údržbě dříve napsaného kódu? na nějakou konstantní hodnotu. Grafy ukazují: čím více Kolik programátorů je potřeba k údržbě dříve napsaného kódu?, Kolik programátorů je potřeba k údržbě dříve napsaného kódu? и Kolik programátorů je potřeba k údržbě dříve napsaného kódu?, to znamená, že čím pomaleji kód stárne, čím rychlejší je vývoj nového kódu a čím nižší je kvalita kódu, tím méně prostředků zbude na vývoj nové funkcionality. Bylo tu přání uvést alespoň jeden příklad, ve kterém Kolik programátorů je potřeba k údržbě dříve napsaného kódu? „přitulený“ blízko nule. To ale vyžadovalo výběr velmi špatných indikátorů kvality vývoje a kódu, který dlouho nestárne. I v levém dolním grafu zůstává značné množství prostředků pro novou funkcionalitu. Správná odpověď na první otázku je tedy spíše tato: teoreticky - ano, je to možné; prakticky - sotva.

Otázky, na které nebylo možné odpovědět:

  1. Je to pravda? Kolik programátorů je potřeba k údržbě dříve napsaného kódu? má tendenci k nějakému limitu Kolik programátorů je potřeba k údržbě dříve napsaného kódu? pro všechny Kolik programátorů je potřeba k údržbě dříve napsaného kódu?? Když ne pro všechny, tak pro které?
  2. Pokud limit existuje, na čem závisí jeho hodnota Kolik programátorů je potřeba k údržbě dříve napsaného kódu??

Otázka dvě. Mohla by údržba kódu způsobit neomezený růst počtu programátorů?

Označme Kolik programátorů je potřeba k údržbě dříve napsaného kódu? počet programátorů zapojených do vývoje nového kódu. Jak je uvedeno výše, Kolik programátorů je potřeba k údržbě dříve napsaného kódu? — množství kódu zapsaného do určitého okamžiku Kolik programátorů je potřeba k údržbě dříve napsaného kódu?. Pak

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Udržujte podporu kódu zaneprázdněnou Kolik programátorů je potřeba k údržbě dříve napsaného kódu? programátory. S ohledem na kód stárnutí,

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Odkud

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Jestliže Kolik programátorů je potřeba k údržbě dříve napsaného kódu?pak

Kolik programátorů je potřeba k údržbě dříve napsaného kódu?

Odpověď na druhou otázku je tedy negativní: pokud je počet vývojářů nového kódu omezený, pak v podmínkách stárnutí kódu nemůže podpora způsobit neomezený nárůst počtu programátorů.

Závěr

Uvažované modely jsou „měkké“ matematické modely [2]. Jsou velmi jednoduché. Nicméně závislost výsledků simulace na hodnotách parametrů odpovídá tomu, co se očekává u skutečných systémů, hovoří to ve prospěch přiměřenosti modelů a dostatečné přesnosti pro získání vysoce kvalitních odhadů.

Reference

1. Elsgolts L.E., Norkin S.B. Úvod do teorie diferenciálních rovnic s odchylným argumentem. Moskva. Nakladatelství "Science". 1971.
2. Arnold V.I. „Tvrdé“ a „měkké“ matematické modely. Moskva. Vydavatelství MCNMO. 2004.

Zdroj: www.habr.com

Přidat komentář