Hur många programmerare krävs för att underhålla tidigare skriven kod?

För en tid sedan ägde ett samtal rum mellan mig och en god vän till mig där följande fraser hördes:

— Antalet programmerare kommer ständigt att växa – eftersom mängden kod växer, och det krävs hela tiden fler och fler utvecklare för att stödja det.
— Men koden börjar bli gammal, en del av den stöds inte längre. Det är till och med möjligt att det finns någon form av jämvikt.

När jag kom ihåg dem några dagar senare undrade jag om att underhålla kod, som kräver mer och mer resurser med tiden, i slutändan kunde förlama utvecklingen av ny funktionalitet, eller skulle det kräva en obegränsad ökning av antalet programmerare? Matematisk analys och differentialekvationer hjälpte till att kvalitativt bedöma mängden stöds beroende av utveckling och hitta svar på frågor.

Fråga ett. Kan stödja "äta upp" alla utvecklingsresurser?

Tänk på ett team av programmerare där antalet deltagare är konstant. Andel av sin arbetstid Hur många programmerare krävs för att underhålla tidigare skriven kod? (Hur många programmerare krävs för att underhålla tidigare skriven kod?) spenderas på att utveckla ny kod, och den återstående delen av tiden Hur många programmerare krävs för att underhålla tidigare skriven kod? går till stöd. Inom modellens antaganden antar vi att den första typen av aktivitet syftar till att öka kodvolymen, och den andra syftar till att ändra den (korrigera fel) och inte har någon signifikant inverkan på kodvolymen.

Låt oss beteckna Hur många programmerare krävs för att underhålla tidigare skriven kod? hela mängden kod som skrivits fram till den tidpunkten Hur många programmerare krävs för att underhålla tidigare skriven kod?. Förutsatt att hastigheten för att skriva kod är proportionell Hur många programmerare krävs för att underhålla tidigare skriven kod?, vi får:

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Det är naturligt att anta att arbetskostnaderna för att upprätthålla koden är proportionella mot dess volym:

Hur många programmerare krävs för att underhålla tidigare skriven kod?

eller

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Var

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Vi får en differentialekvation som enkelt kan integreras. Om mängden kod vid det första ögonblicket är noll, då

Hur många programmerare krävs för att underhålla tidigare skriven kod?

vid Hur många programmerare krävs för att underhålla tidigare skriven kod? funktion Hur många programmerare krävs för att underhålla tidigare skriven kod?Och Hur många programmerare krävs för att underhålla tidigare skriven kod?. Och detta innebär en gradvis minskning över tid i utvecklingen av ny funktionalitet till noll och överföring av alla resurser till support.

Däremot om under tiden Hur många programmerare krävs för att underhålla tidigare skriven kod? koden blir föråldrad och upphör att stödjas, då mängden kod som kräver stöd åt gången Hur många programmerare krävs för att underhålla tidigare skriven kod? är redan lika Hur många programmerare krävs för att underhålla tidigare skriven kod? Sedan

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Hur många programmerare krävs för att underhålla tidigare skriven kod?

а Hur många programmerare krävs för att underhålla tidigare skriven kod? är en lösning på en differentialekvation med ett retarderat argument [1]:

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Lösningen till en sådan ekvation bestäms unikt genom att specificera värdena Hur många programmerare krävs för att underhålla tidigare skriven kod? "före tidernas begynnelse" Hur många programmerare krävs för att underhålla tidigare skriven kod?. Eftersom koden ännu inte hade skrivits före det första ögonblicket, i vårt fall Hur många programmerare krävs för att underhålla tidigare skriven kod? при Hur många programmerare krävs för att underhålla tidigare skriven kod?.

Låt oss titta på några exempel. Vi kommer att mäta tid i år, och mängden kod i tusentals rader. Sedan för Hur många programmerare krävs för att underhålla tidigare skriven kod? värden i storleksordningen tiotal är acceptabla, vi tar 50 och 100. Det vill säga om ett år kommer utvecklingsteamet att skriva femtio respektive hundra tusen rader kod. För Hur många programmerare krävs för att underhålla tidigare skriven kod? acceptabla värden kan vara: Hur många programmerare krävs för att underhålla tidigare skriven kod?, Hur många programmerare krävs för att underhålla tidigare skriven kod?, Hur många programmerare krävs för att underhålla tidigare skriven kod?. Det betyder att ett utvecklingsteam kan stödja mängden kod som det skriver på ett år, oavsett om det är en kvart, halv eller heltid. Som medellivslängd för koden kommer vi att ställa in följande värden: 1, 2 och 4 år. Genom att lösa ekvationen numeriskt får vi exempel på funktionens beteende Hur många programmerare krävs för att underhålla tidigare skriven kod? för vissa parameterkombinationer Hur många programmerare krävs för att underhålla tidigare skriven kod?.
Hur många programmerare krävs för att underhålla tidigare skriven kod?
Funktionens beteende Hur många programmerare krävs för att underhålla tidigare skriven kod? när koden åldras har den förändrats. Funktionen är inte längre monoton, utan svängningarna "lugnar ner" över tid och det finns en tendens att Hur många programmerare krävs för att underhålla tidigare skriven kod? till något konstant värde. Graferna visar: ju fler Hur många programmerare krävs för att underhålla tidigare skriven kod?, Hur många programmerare krävs för att underhålla tidigare skriven kod? и Hur många programmerare krävs för att underhålla tidigare skriven kod?, det vill säga ju långsammare koden åldras, desto snabbare utveckling av ny kod och ju lägre kvalitet på koden, desto mindre resurser kommer att finnas kvar för utveckling av ny funktionalitet. Det fanns en önskan att ge åtminstone ett exempel där Hur många programmerare krävs för att underhålla tidigare skriven kod? "mys" nära noll. Men detta krävde valet av mycket dåliga utvecklingskvalitetsindikatorer och kod som inte åldras under lång tid. Även i det nedre vänstra diagrammet finns en betydande mängd resurser kvar för den nya funktionen. Därför är det korrekta svaret på den första frågan snarare detta: teoretiskt - ja, det är möjligt; praktiskt taget - knappast.

Frågor som inte gick att besvara:

  1. Är det sant att Hur många programmerare krävs för att underhålla tidigare skriven kod? tenderar till någon gräns vid Hur många programmerare krävs för att underhålla tidigare skriven kod? för alla Hur många programmerare krävs för att underhålla tidigare skriven kod?? Om inte för alla, för vilka då?
  2. Om det finns en gräns, hur beror dess värde på Hur många programmerare krävs för att underhålla tidigare skriven kod??

Fråga två. Kan kodunderhåll orsaka obegränsad ökning av antalet programmerare?

Låt oss beteckna Hur många programmerare krävs för att underhålla tidigare skriven kod? antalet programmerare som är involverade i att utveckla ny kod. Som ovan, Hur många programmerare krävs för att underhålla tidigare skriven kod? — mängden kod som skrivits fram till en tidpunkt Hur många programmerare krävs för att underhålla tidigare skriven kod?. Sedan

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Håll kodsupport upptagen Hur många programmerare krävs för att underhålla tidigare skriven kod? programmerare. Med hänsyn till åldringskoden,

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Var

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Om Hur många programmerare krävs för att underhålla tidigare skriven kod?, Sedan

Hur många programmerare krävs för att underhålla tidigare skriven kod?

Sålunda är svaret på den andra frågan negativt: om antalet utvecklare av ny kod är begränsat, kan stöd under förhållanden med åldrande kod inte orsaka en obegränsad ökning av antalet programmerare.

Slutsats

De modeller som övervägs är "mjuka" matematiska modeller [2]. De är väldigt enkla. Ändå motsvarar simuleringsresultatens beroende av parametervärdena vad som förväntas för verkliga system, detta talar till förmån för modellernas adekvathet och tillräcklig noggrannhet för att erhålla högkvalitativa uppskattningar.

referenser

1. Elsgolts L.E., Norkin S.B. Introduktion till teorin om differentialekvationer med avvikande argument. Moskva. Förlaget "Science". 1971.
2. Arnold V.I. "Hårda" och "mjuka" matematiska modeller. Moskva. Förlaget MCNMO. 2004.

Källa: will.com

Lägg en kommentar