Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

For en tid siden fant en samtale sted mellom meg og en god venn av meg der følgende fraser ble hørt:

— Antallet programmerere vil stadig vokse – fordi mengden kode vokser, og stadig flere utviklere er pålagt å støtte det.
— Men koden begynner å bli gammel, noe av den støttes ikke lenger. Det er til og med mulig at det er en slags likevekt.

Da jeg husket dem noen dager senere, lurte jeg på om vedlikehold av kode, som krever mer og mer ressurser over tid, til slutt kunne lamme utviklingen av ny funksjonalitet, eller ville det kreve en ubegrenset økning i antall programmerere? Matematisk analyse og differensialligninger bidro til å kvalitativt vurdere støttebeløpets avhengighet av utvikling og finne svar på spørsmål.

Spørsmål en. Kan støtte «spise opp» alle utviklingsressurser?

Tenk på et team av programmerere der antall deltakere er konstant. Andel av arbeidstiden deres Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? (Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?) brukes på å utvikle ny kode, og resten av tiden Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? går til støtte. Innenfor modellens forutsetninger antar vi at den første typen aktivitet er rettet mot å øke volumet av kode, og den andre er rettet mot å endre den (korrigere feil) og ikke har en vesentlig innvirkning på kodevolumet.

La oss betegne Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? hele mengden kode skrevet frem til det tidspunktet Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?. Forutsatt at hastigheten på å skrive kode er proporsjonal Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?, vi får:

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Det er naturlig å anta at lønnskostnadene for å opprettholde koden er proporsjonale med volumet:

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

eller

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Hvorfra

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Vi får en differensialligning som enkelt kan integreres. Hvis kodemengden i det første øyeblikket er null, da

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

ved Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? funksjon Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?Og Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?. Og dette betyr en gradvis reduksjon over tid i utviklingen av ny funksjonalitet til null og overføring av alle ressurser til support.

Men hvis i løpet av tiden Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? koden blir foreldet og slutter å bli støttet, deretter mengden kode som krever støtte om gangen Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? er allerede lik Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? Deretter

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

а Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? er en løsning på en differensialligning med et retardert argument [1]:

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Løsningen til en slik ligning bestemmes unikt ved å spesifisere verdiene Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? "før tidenes begynnelse" Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?. Siden koden ennå ikke var skrevet før det første øyeblikket, i vårt tilfelle Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?.

La oss se på noen få eksempler. Vi vil måle tid i år, og mengden kode i tusenvis av linjer. Så for Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? verdier i størrelsesorden ti er akseptable, vi tar 50 og 100. Det vil si at om et år vil utviklingsteamet skrive henholdsvis femti og hundre tusen linjer med kode. Til Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? akseptable verdier kan være: Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?, Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?, Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?. Dette betyr at et utviklingsteam kan støtte mengden kode det skriver i løpet av et år, enten det er kvart, halv eller heltid. Som gjennomsnittlig levetid for koden vil vi sette følgende verdier: 1, 2 og 4 år. Løser vi ligningen numerisk, får vi eksempler på funksjonens oppførsel Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? for noen parameterkombinasjoner Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?.
Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?
Funksjonens oppførsel Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? etter hvert som koden eldes, har den endret seg. Funksjonen er ikke lenger monoton, men svingningene «roer seg» over tid, og det er en tendens til Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? til en eller annen konstant verdi. Grafene viser: jo mer Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?, Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? и Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?, det vil si at jo langsommere koden eldes, jo raskere utvikling av ny kode og jo lavere kvalitet på koden, jo mindre ressurser vil det være igjen for utvikling av ny funksjonalitet. Det var et ønske om å gi minst ett eksempel der Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? "koset seg" nær null. Men dette krevde valg av svært dårlige utviklingskvalitetsindikatorer og kode som ikke eldes på lenge. Selv i grafen nederst til venstre er det en betydelig mengde ressurser igjen for den nye funksjonaliteten. Derfor er det riktige svaret på det første spørsmålet snarere dette: teoretisk - ja, det er mulig; praktisk talt - neppe.

Spørsmål som ikke kunne besvares:

  1. Er det sant det Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? har en tendens til en viss grense ved Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? for alle Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?? Hvis ikke for alle, så for hvilke?
  2. Hvis en grense eksisterer, hvordan avhenger verdien av den Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode??

Spørsmål to. Kan kodevedlikehold forårsake ubegrenset vekst i antall programmerere?

La oss betegne Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? antall programmerere som er involvert i å utvikle ny kode. Som ovenfor, Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? — hvor mye kode som er skrevet frem til et tidspunkt Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?. deretter

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Hold kodestøtte opptatt Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode? programmerere. Med tanke på aldringskoden,

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Hvorfra

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Hvis Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?deretter

Hvor mange programmerere skal til for å vedlikeholde tidligere skrevet kode?

Dermed er svaret på det andre spørsmålet negativt: hvis antallet utviklere av ny kode er begrenset, kan støtte ikke forårsake en ubegrenset økning i antall programmerere under forhold med aldrende kode.

Konklusjon

Modellene som vurderes er "myke" matematiske modeller [2]. De er veldig enkle. Likevel, avhengigheten av simuleringsresultatene på parameterverdiene tilsvarer det som forventes for virkelige systemer, dette taler til fordel for tilstrekkeligheten til modellene og tilstrekkelig nøyaktighet til å oppnå estimater av høy kvalitet.

Referanser

1. Elsgolts L.E., Norkin S.B. Introduksjon til teori om differensialligninger med avvikende argumentasjon. Moskva. Forlaget "Science". 1971.
2. Arnold V.I. "Harde" og "myke" matematiske modeller. Moskva. Forlag MCNMO. 2004.

Kilde: www.habr.com

Legg til en kommentar