Wat is software-evolutie?
Software-evolutie is een proces waarbij een commercieel computerprogramma in de loop van de tijd voortdurend moet worden bijgewerkt, onderhouden en verbeterd om een levensvatbaar product te blijven. In dit opzicht wordt software-evolutie aangedreven door externe bedrijfs- en consumentenbehoeften die veranderen naarmate andere software en technologieën eromheen groeien. De drijvende factor achter software-evolutie is echter vaak een interne factor gericht op het engineeringteam dat het product heeft geproduceerd en het bedrijf dat afhankelijk is van het succes ervan voor winstgevendheid. Het Imperial College in Londen, Engeland, heeft in het begin van de jaren zeventig voor het eerst drie fundamentele wetten van software-evolutie afgekondigd, die sinds 2011 zijn uitgebreid tot in totaal acht wetten. Andere pogingen zijn ondernomen om het proces te kwantificeren met behulp van modellen zoals het lineaire sequentiële model en het prototypemodel, maar het paradigma dat het beste lijkt te passen bij de levenscycli van software-entropie, is dat van iemand die lijkt op de Darwiniaanse evolutie voor levende wezens.
De basisfactoren achter veranderingen in software-architectuur lijken op dezelfde krachten die bedrijven motiveren om industriële machines of standaard operationele procedures te upgraden naarmate maatschappelijke behoeften veranderen. Naarmate software steeds meer wordt gebruikt, worden nieuwe behoeften of functies duidelijk die moeten worden verwerkt in latere releases van het product. Alle software wordt ook uitgegeven met voorheen onbekende fouten, dus periodieke patches en onderhoudsprocedures moeten worden uitgevoerd om situaties zoals beveiligingslekken te corrigeren die een bedrijf kwetsbaar kunnen maken voor aanvallen via de software zelf. Een sleutel tot software-evolutie is ook het feit dat dergelijke programma's in toenemende mate moeten worden aangepast om te werken op verschillende soorten nieuwe computerapparatuur en binnen verschillende besturingssysteemarchitecturen, zodat het programma een bredere aantrekkingskracht heeft.
Het voldoen aan al deze behoeften is cruciaal om te bepalen of een softwareprogramma levensvatbaar blijft, en aangezien softwareactiva vanaf 2011 zo'n cruciaal aspect van de informatie-economie zijn, is software-evolutie een fundamenteel aspect van bedrijfsaanpassing en groei geworden. Meir Lehman, een computerwetenschapper aan het Imperial College in Londen, is gecrediteerd voor het maken van Lehman's wetten, die het proces van software-evolutie beknopt hebben gedefinieerd en ontwikkelaars hebben geleid bij het vooruitdenken van softwarevisualisatie. De wetten van Lehman zijn gebaseerd op het uitgangspunt dat software evolueert naarmate de feedback op zijn prestaties toeneemt en dat zijn onvermijdelijke neiging steeds complexer wordt.
Lehman heeft verklaard dat de aard van software-evolutie natuurlijke veranderingen weerspiegelt, zoals mutaties in fruitvliegen, de manier waarop steden zich in de loop van de tijd uitbreiden en hoe militaire structuren incrementeel verbeteren op wapensystemen. De eerste drie wetten van het proces volgen deze trends bij het detailleren van voortdurende verandering, toenemende complexiteit en wat bekend staat als grote programma-evolutie. Continue verandering verwijst naar het feit dat het programma moet worden aangepast om te voldoen aan de huidige zakelijke omstandigheden in de praktijk, en dit weerspiegelt de toenemende complexiteit omdat het programma moet voldoen aan een steeds groeiende diversiteit van onverwachte behoeften. Grote programma-evolutie verwijst naar de noodzaak van foutcorrectie en nieuwe releases van het programma die onlosmakelijk verbonden zijn met de eisen van de markt.
Van de vijf resterende wetten in software-evolutie, is nummer vier Organisatorische stabiliteit en verwijst naar het feit dat de groei van een programma een eigen leven gaat leiden, ongeacht het niveau van middelen dat er bewust aan is gewijd, en nummer vijf is behoud van bekendheid dat stelt dat incrementele groei van het programma onvermijdelijk is. Nummer zes in de acht Lehman-wetten is voortdurende groei, wat nodig is om aan de vraag van de consument te voldoen, en nummer zeven is dalende kwaliteit, wat het feit benadrukt dat alle software uiteindelijk beperkingen op de functionaliteit tegenkomt waaraan het niet kan voldoen. De laatste wet van Lehman voor software-evolutie is het Feedback-systeem zelf, dat alle krachten die de levensvatbaarheid van een softwareprogramma beïnvloeden, verbindt om het snel tot groter succes of onvermijdelijke veroudering en dood te brengen.