Mis on tarkvara evolutsioon?

Tarkvara arendamine on protsess, mille käigus kommertsarvutiprogramm vajab pidevat ajakohastamist, hooldamist ja täiustamist, et see jääks elujõuliseks tooteks. Sellega seoses juhivad tarkvara arengut välised äri- ja tarbijavajadused, mis muutuvad, kui muud tarkvara ja tehnoloogiad selle ümber arenevad. Tarkvara evolutsiooni käivitav tegur on aga sageli sisemine tegur, mis keskendub toote tootnud insenerimeeskonnale ja ettevõttele, kelle kasumlikkus sõltub selle edust. Inglismaal Londoni Imperial College’is kuulutas esmakordselt välja kolm tarkvaraarengu põhiseadust 1970. aastate alguses, mida on alates 2011. aastast laiendatud kokku kaheksa seaduseni. Protsessi kvantifitseerimiseks on tehtud ka muid katseid, kasutades selliseid mudeleid nagu Lineaarne järjestusmudel ja prototüübimudel, kuid tarkvara entroopia elutsüklitega näib kõige paremini sobivat paradigma paradigma, mis meenutab elusolendite Darwini evolutsiooni.

Tarkvaraarhitektuuri muutuste peamised tõuketegurid sarnanevad samadele jõududele, mis motiveerivad ettevõtteid ühiskonna vajaduste muutudes tööstuslikke masinaid või standardseid tööprotseduure uuendama. Kuna tarkvara kasutatakse üha enam, ilmnevad selle jaoks uued vajadused või funktsioonid, mida tuleb toote hilisemates versioonides edasi arendada. Kogu tarkvara väljastatakse ka varem tundmatute vigadega, mistõttu tuleb perioodiliselt teha paigad ja hooldusprotseduurid, et parandada selliseid olukordi nagu turvalüngad, mis võivad muuta ettevõtte tarkvara enda kaudu rünnakute suhtes haavatavaks. Tarkvara arengu võtmeks on ka tõsiasi, et selliseid programme tuleb üha enam kohandada töötama erinevat tüüpi tekkivate arvutiseadmetega ja erinevate operatsioonisüsteemide arhitektuuridega, et programmil oleks laiem atraktiivsus.

Kõigi nende vajaduste rahuldamine on otsustava tähtsusega tarkvaraprogrammi elujõulisuse kindlakstegemiseks, ja kuna tarkvaravarad on 2011. aasta seisuga infomajanduse ülioluline aspekt, on tarkvara evolutsioonist saanud ettevõtte kohanemise ja kasvu põhiaspekt. Londoni Imperial College’i arvutiteadlane Meir Lehman on tunnustatud Lehmani seaduste loomise eest, mis määratlesid lühidalt tarkvara evolutsiooni protsessi ja juhendasid arendajaid tarkvara visualiseerimise edasiviivas mõtlemises. Lehmani seadused põhinevad eeldusel, et tarkvara areneb, kui tagasiside selle jõudluse kohta suureneb ja et selle vältimatu tendents on muutuda üha keerukamaks.

Lehman on väitnud, et tarkvara evolutsiooni olemus peegeldab loomulikke muutusi, nagu äädikakärbeste mutatsioonid, linnade laienemise viis aja jooksul ja sõjaliste struktuuride järkjärguline täiustamine relvasüsteemides. Protsessi kolm esimest seadust jäljendavad neid suundumusi, kirjeldades üksikasjalikult jätkuvaid muutusi, suurenevat keerukust ja nn suure programmi arengut. Jätkuv muutus viitab tõsiasjale, et programmi tuleb kohandada nii, et see vastaks praegustele reaalsetele äritingimustele ja see peegeldab kasvavat keerukust, kuna programm peab vastama üha suurenevatele ootamatutele vajadustele. Large Program Evolution viitab vajadusele vigade parandamise ja programmi uute versioonide järele, mis on vääramatult seotud turu nõudmistega.

Viiest järelejäänud tarkvara evolutsiooni seadusest number neli on organisatsiooni stabiilsus ja viitab asjaolule, et programmi kasv hakkab oma elu käima, sõltumata sellele tahtlikult pühendatud ressursside tasemest, ja number viis on tuttavuse säilitamine. mis väidab, et programmi järkjärguline kasv on vältimatu. Kaheksa Lehmani seaduste seas on number kuus jätkuv kasv, mis on vajalik tarbijate nõudluse rahuldamiseks, ja number seitse on langev kvaliteet, mis rõhutab tõsiasja, et kogu tarkvara funktsionaalsuse piirangud, mida see ei suuda täita, rõhutab. Tarkvara evolutsiooni viimane Lehmani seadus on tagasisidesüsteem ise, mis seob kokku kõik jõud, mis mõjutavad tarkvaraprogrammi elujõulisust, et viia see kiiresti kas suurema eduni või vältimatule vananemisele ja surmale.