Antaŭ iom da tempo okazis interparolo inter mi kaj mia bona amiko, en kiu aŭdiĝis jenaj frazoj:
— La nombro da programistoj konstante kreskos - ĉar la kvanto de kodo kreskas, kaj pli kaj pli da programistoj estas konstante postulataj por subteni ĝin.
— Sed la kodo malnoviĝas, iuj el ĝi ne plu estas subtenataj. Eblas eĉ ke ekzistas ia ekvilibro.
Memorante ilin kelkajn tagojn poste, mi demandis min, ĉu konservado de kodo, postulanta pli kaj pli da rimedoj laŭlonge de la tempo, povus finfine paralizi la disvolviĝon de novaj funkcioj, aŭ ĉu ĝi postulus senliman kreskon de la nombro de programistoj? Matematika analizo kaj diferencialaj ekvacioj helpis kvalite taksi la dependecon de la kvanto de subteno sur evoluo kaj trovi respondojn al demandoj.
Demando unu. Ĉu povas subteni "manĝi" ĉiujn disvolvajn rimedojn?
Konsideru teamon de programistoj en kiu la nombro da partoprenantoj estas konstanta. Divido de ilia labortempo () estas elspezita por evoluigi novan kodon, kaj la restantan parton de tempo iras por subteni. Ene de la supozoj de la modelo, ni supozas, ke la unua speco de agado celas pliigi la volumon de kodo, kaj la dua celas ŝanĝi ĝin (korekti erarojn) kaj ne havas gravan efikon sur la volumo de kodo.
Ni signu la tuta kvanto de kodo skribita ĝis tiu punkto en tempo . Supozante la rapidecon de skribado de kodo estas proporcia , ni ricevas:
Estas nature supozi ke la laborkostoj por konservado de la kodo estas proporciaj al ĝia volumeno:
aŭ
De kie
Ni akiras diferencialan ekvacion kiu povas esti facile integrebla. Se en la komenca momento la kvanto de kodo estas nula, tiam
ĉe karakterizaĵo kaj . Kaj ĉi tio signifas laŭgradan redukton kun la tempo en la disvolviĝo de novaj funkcioj al nulo kaj la translokigo de ĉiuj rimedoj por subteni.
Tamen, se dum la tempo la kodo iĝas malnoviĝinta kaj ĉesas esti subtenata, tiam la kvanto de kodo postulanta subtenon samtempe estas jam egala Tiam
а estas solvo al diferenciala ekvacio kun malfruiĝinta argumento [1]:
La solvo al tia ekvacio estas unike determinita per specifado de la valoroj "antaŭ la komenco de la tempo" . Ĉar la kodo ankoraŭ ne estis skribita antaŭ la komenca momento en la tempo, en nia kazo ĉe .
Ni rigardu kelkajn ekzemplojn. Ni mezuros tempon en jaroj, kaj la kvanton da kodo en miloj da linioj. Tiam por valoroj de la ordo de dekoj estas akcepteblaj, ni prenos 50 kaj 100. Tio estas, en jaro la disvolva teamo skribos respektive kvindek kaj cent mil liniojn de kodo. Por akcepteblaj valoroj povas esti: , , . Ĉi tio signifas, ke evolua teamo povas subteni la kvanton da kodo, kiun ĝi skribas en jaro, ĉu ĝi estas kvarono, duono aŭ plentempe. Kiel la averaĝa vivdaŭro de la kodo, ni starigos la sekvajn valorojn: 1, 2 kaj 4 jaroj. Solvante la ekvacion nombre, ni akiras ekzemplojn de la konduto de la funkcio por iuj parametraj kombinoj .
Konduto de la funkcio dum la kodo maljuniĝas, ĝi ŝanĝiĝis. La funkcio ne plu estas monotona, sed la fluktuoj "trankviliĝas" laŭlonge de la tempo, kaj estas tendenco al al iu konstanta valoro. La grafikaĵoj montras: des pli , и , tio estas, ju pli malrapida la kodo maljuniĝas, des pli rapida la evoluo de nova kodo kaj ju pli malalta la kvalito de la kodo, des malpli da rimedoj restos por la disvolviĝo de novaj funkcioj. Estis deziro doni almenaŭ unu ekzemplon en kiu "snuggled" proksime al nulo. Sed ĉi tio postulis la elekton de tre malbona evolukvalita indikiloj kaj kodo, kiu ne maljuniĝas dum longa tempo. Eĉ en la malsupra maldekstra grafikaĵo restas grava kvanto da rimedoj por la nova funkcio. Tial, la ĝusta respondo al la unua demando estas prefere ĉi tiu: teorie - jes, ĝi eblas; praktike — apenaŭ.
Demandoj, kiuj ne povis esti responditaj:
- Ĉu vere estas tio tendencas al iu limo je por ĉiuj ? Se ne por ĉiuj, do por kiuj?
- Se ekzistas limo, kiel dependas ĝia valoro ?
Demando du. Ĉu koda prizorgado povus kaŭzi senliman kreskon de la nombro da programistoj?
Ni signu la nombro da programistoj implikitaj en evoluigado de nova kodo. Kiel supre, — la kvanto de kodo skribita ĝis momento . Tiam
Tenu kodan subtenon okupata programistoj. Konsiderante la maljuniĝan kodon,
De kie
se , tiam
Tiel, la respondo al la dua demando estas negativa: se la nombro da programistoj de nova kodo estas limigita, tiam en kondiĉoj de maljuniĝanta kodo, subteno ne povas kaŭzi senliman kreskon de la nombro da programistoj.
konkludo
La modeloj konsiderataj estas "molaj" matematikaj modeloj [2]. Ili estas tre simplaj. Tamen, la dependeco de la simulaj rezultoj de la parametraj valoroj respondas al tio, kion oni atendas por realaj sistemoj, tio parolas favore al la taŭgeco de la modeloj kaj sufiĉa precizeco por akiri altkvalitajn taksojn.
Referencoj
1. Elsgolts L.E., Norkin S.B. Enkonduko al la teorio de diferencialaj ekvacioj kun devia argumento. Moskvo. Eldonejo "Scienco". 1971.
2. Arnold V.I. "Malmolaj" kaj "molaj" matematikaj modeloj. Moskvo. Eldonejo MCNMO. 2004.
fonto: www.habr.com