Hvad er softwareudvikling?
Softwareudvikling er en proces, hvor et kommercielt computerprogram kræver kontinuerlig opdatering, vedligeholdelse og forbedring over tid for at det forbliver et levedygtigt produkt. I denne henseende er softwareudvikling drevet af eksterne forretnings- og forbrugerbehov, der ændrer sig, efterhånden som anden software og teknologier skrider frem omkring det. Den drivende faktor bag softwareudvikling er dog ofte en intern fokuseret på ingeniørteamet, der producerede produktet og det firma, der er afhængig af dets succes for rentabilitet. Imperial College i London, England, udstedte først tre grundlæggende love om softwareudvikling i de tidlige 1970'ere, som siden er blevet udvidet til i alt otte love fra 2011. Andre forsøg er også blevet gjort på at kvantificere processen ved hjælp af modeller som f.eks. den lineære sekventielle model og prototypemodellen, men det paradigme, der ser ud til at passe bedst til softwareentropi-livscyklusser, er det, der ligner en darwinistisk udvikling for levende ting.
De grundlæggende drivfaktorer bag ændringer i softwarearkitektur ligner de samme kræfter, der motiverer virksomheder til at opgradere industrimaskiner eller standardprocedurer, når samfundsbehov ændres. Efterhånden som software i stigende grad bruges, fremgår nye behov eller funktioner til det, der skal bearbejdes til senere udgivelser af produktet. Al software frigives også med tidligere ukendte fejl, så periodiske programrettelser og vedligeholdelsesprocedurer skal udføres for at korrigere situationer, såsom sikkerhedssløjfe, der kan gøre et firma sårbart over for angreb gennem selve softwaren. En nøgle til softwareudvikling er også det faktum, at sådanne programmer i stigende grad skal tilpasses til at arbejde på forskellige typer nye computere og inden for forskellige operativsystemarkitekturer, så programmet har bredere appel.
At imødekomme alle disse behov er afgørende for at afgøre, om et softwareprogram forbliver levedygtigt, og da softwareaktiver er et så vigtigt aspekt af informationsøkonomien som i 2011, er softwareudvikling blevet et grundlæggende aspekt af forretningstilpasning og vækst. Meir Lehman, en computer videnskabsmand ved Imperial College i London, krediteres med at skabe Lehman's Laws, som kortfattet definerede processen med softwareudvikling og ledede udviklere i fremtiden til at tænke på softwarevisualisering. Lehmans love er baseret på den forudsætning, at software udvikler sig, når feedback på dens ydeevne stiger, og at dens uundgåelige tendens er at blive stadig mere kompliceret.
Lehman har udtalt, at softwarevolutions karakter afspejler naturlige ændringer som mutation i frugtfluer, den måde, byer udvider sig over tid, og hvordan militære strukturer trinvis forbedres med våbensystemer. De første tre love i processen emulerer disse tendenser til detaljering af Fortsat ændring, øget kompleksitet og hvad der er kendt som Large Program Evolution. Fortsat ændring henviser til det faktum, at programmet skal tilpasses til at imødekomme de nuværende forretningsforhold i den virkelige verden, og dette afspejler stigende kompleksitet, da programmet skal imødekomme en stadigt voksende mangfoldighed af uventede behov. Stor programevolution henviser til nødvendigheden af fejlkorrektion og nye udgivelser af programmet, der er ubundeligt bundet til markedets krav.
Af de fem resterende love inden for softwareudvikling er nummer fire Organisatorisk stabilitet og henviser til det faktum, at væksten af et program tager sit eget liv uanset niveauet af ressourcer, der med vilje er afsat til det, og nummer fem er Bevarelse af velkendskab der siger, at trinvis vækst af programmet er uundgåelig. Nummer seks i de otte Lehman-love fortsætter væksten, hvilket er nødvendigt for at imødekomme forbrugernes efterspørgsel, og nummer syv er Faldende kvalitet, som understreger det faktum, at al software i sidste ende står over for grænser for funktionalitet, som den ikke kan opfylde. Den sidste Lehman-lov for softwareudvikling er selve Feedback System, som binder alle kræfter, der påvirker levedygtigheden af et softwareprogram, til hurtigt at drive det enten til større succes eller uundgåelig forældelse og død.