Hva er programvareutvikling?
Programvareutvikling er en prosess der et kommersielt dataprogram krever kontinuerlig oppdatering, vedlikehold og forbedring over tid for at det skal forbli et levedyktig produkt. I denne forbindelse er programvareutvikling drevet av eksterne forretnings- og forbrukerbehov som endrer seg etter hvert som annen programvare og teknologi utvikler seg rundt det. Den drivende faktoren bak programvareutvikling er imidlertid ofte en intern fokusert på ingeniørteamet som produserte produktet og selskapet som er avhengig av suksess for lønnsomhet. Imperial College of London, England, kunngjorde først tre grunnleggende lover for programvareutvikling på begynnelsen av 1970-tallet, som siden har blitt utvidet til totalt åtte lover fra og med 2011. Andre forsøk er også blitt gjort på å kvantifisere prosessen ved bruk av modeller som f.eks. den lineære sekvensmodellen og prototypemodellen, men paradigmet som ser ut til å passe best mulig til livssykluser fra programvareentropi, er det som ligner den darwinistiske evolusjonen for levende ting.
De grunnleggende drivfaktorene bak endringer i programvarearkitektur ligner de samme kreftene som motiverer virksomheter til å oppgradere industrimaskiner eller standard driftsprosedyrer når samfunnets behov endres. Etter hvert som programvare blir stadig mer brukt, fremgår det nye behov eller funksjoner for det som må jobbes med senere utgivelser av produktet. All programvare blir også utgitt med tidligere ukjente feil, så periodiske oppdateringer og vedlikeholdsprosedyrer må utføres for å rette opp situasjoner som sikkerhetsmåler som kan gjøre et selskap sårbart for angrep gjennom selve programvaren. En nøkkel til utvikling av programvare er også det faktum at slike programmer i økende grad må tilpasses for å jobbe med forskjellige typer fremvoksende datautstyr og innenfor forskjellige operativsystemarkitekturer slik at programmet har bredere appell.
Å imøtekomme alle disse behovene er avgjørende for å avgjøre om et program forblir levedyktig, og siden programvareeiendeler er et så viktig aspekt av informasjonsøkonomien som i 2011, har programvareutvikling blitt et grunnleggende aspekt av virksomhetstilpasning og vekst. Meir Lehman, dataforsker ved Imperial College of London, får kreditert å lage Lehmans lover, som kortfattet definerte prosessen med programvareutvikling og ledet utviklere i fremtiden til å tenke programvarevisualisering. Lehmans lover er basert på forutsetningen om at programvare utvikler seg når tilbakemeldinger om ytelsen øker, og at dens uunngåelige tendens er å bli stadig mer komplisert.
Lehman har uttalt at arten av programvareutvikling speiler naturlige forandringer som mutasjon i fruktfluer, måten byer utvides over tid og hvordan militære strukturer trinnvis forbedres på våpensystemer. De tre første lovene i prosessen etterligner disse trendene når det gjelder detaljering av kontinuerlig endring, økning av kompleksitet og det som kalles Large Program Evolution. Fortsettende endring refererer til det faktum at programmet må tilpasses for å oppfylle gjeldende forretningsforhold i den virkelige verden, og dette gjenspeiler økende kompleksitet da programmet må oppfylle et stadig voksende mangfold av uventede behov. Stor programevolusjon viser til nødvendigheten av feilretting og nye utgivelser av programmet som er ubønnhørlig knyttet til markedets krav.
Av de fem gjenværende lovene innen programvareutvikling er nummer fire organisatorisk stabilitet og refererer til det faktum at veksten av et program tar et eget liv uavhengig av nivået på ressurser som med hensikt er viet det, og nummer fem er Conservation of Familiarity som sier at trinnvis vekst av programmet er uunngåelig. Nummer seks i de åtte Lehman-lovene fortsetter veksten, noe som er nødvendig for å tilfredsstille forbrukernes etterspørsel, og nummer syv er Declining Quality, som understreker det faktum at all programvare til slutt står overfor grenser for funksjonalitet som den ikke kan oppfylle. Den endelige Lehman-loven for utvikling av programvare er selve Feedback System, som binder sammen alle kreftene som påvirker levedyktigheten til et program for raskt å drive det enten til større suksess eller uunngåelig foreldelse og død.