Vad är mjukvaruutveckling?
Mjukvaruutveckling är en process där ett kommersiellt datorprogram kräver kontinuerlig uppdatering, underhåll och förbättring över tid för att det ska förbli en livskraftig produkt. I detta avseende drivs mjukvaruutveckling av externa affärs- och konsumentbehov som förändras när annan mjukvara och teknik utvecklas kring den. Den drivande faktorn bakom mjukvaruutvecklingen är emellertid ofta en intern fokuserad på ingenjörsteamet som producerade produkten och företaget som är beroende av dess framgång för lönsamhet. Imperial College of London, England, tillkännagav först tre grundläggande lagar för mjukvaruutveckling i början av 1970-talet, som sedan har utvidgats till totalt åtta lagar från och med 2011. Andra försök har också gjorts för att kvantifiera processen med hjälp av modeller såsom den linjära sekvensmodellen och prototypmodellen, men paradigmet som verkar bäst passa programcentrets livscykler är det som liknar den darwinistiska utvecklingen för levande saker.
De grundläggande drivfaktorerna bakom förändringar i mjukvaruarkitektur liknar samma krafter som motiverar företag att uppgradera industrimaskiner eller standardförfaranden när samhällets behov förändras. I takt med att programvara i ökad utsträckning används, framgår nya behov eller funktioner för det som måste bearbetas till senare utgåvor av produkten. All programvara släpps också med tidigare okända fel, så periodiska korrigeringar och underhållsprocedurer måste utföras för att korrigera situationer som säkerhetsslingor som kan göra ett företag sårbart för attacker genom själva programvaran. En nyckel till mjukvaruutveckling är också det faktum att sådana program i allt högre grad måste anpassas för att arbeta med olika typer av ny datorutrustning och inom olika operativsystemarkitekturer så att programmet har bredare tilltal.
Att uppfylla alla dessa behov är avgörande för att avgöra om ett program fortfarande är livskraftigt, och eftersom programvarutillgångar är en så avgörande aspekt av informationsekonomin som 2011 har mjukvaruutveckling blivit en grundläggande aspekt av affärsanpassning och tillväxt. Meir Lehman, en datavetare vid Imperial College of London, krediteras med att skapa Lehmans lagar, som kortfattat definierade processen för mjukvaruutveckling och vägledde utvecklare i framtiden att tänka på visualisering av mjukvara. Lehmans lagar bygger på förutsättningen att mjukvara utvecklas när feedback på dess prestanda ökar och att dess oundvikliga tendens är att bli allt mer komplex.
Lehman har sagt att beskaffenheten av mjukvaruutveckling speglar naturliga förändringar som mutation i fruktflugor, hur städer expanderar över tid och hur militära strukturer stegvis förbättras på vapensystem. Processens tre första lagar emulerar dessa trender när det gäller att fortsätta förändra, öka komplexiteten och vad som kallas Large Program Evolution. Fortsatt förändring hänvisar till det faktum att programmet måste anpassas för att möta de nuvarande verkliga förhållandena i världen, och detta återspeglar ökande komplexitet eftersom programmet måste möta en ständigt växande mångfald av oväntade behov. Stor programutveckling hänvisar till nödvändigheten av felkorrigering och nya utgåvor av programmet som är orubbligt knutna till marknadens krav.
Av de fem återstående lagarna i mjukvaruutveckling är nummer fyra organisatorisk stabilitet och hänvisar till det faktum att tillväxten av ett program tar sitt eget liv oavsett vilken resursnivå som avsiktligt ägnas åt den, och nummer fem är Bevarande av bekanta som säger att stegvis tillväxt av programmet är oundvikligt. Nummer sex i de åtta Lehman-lagarna fortsätter tillväxten, vilket är nödvändigt för att tillgodose konsumenternas efterfrågan, och nummer sju är Minskande kvalitet, vilket betonar det faktum att all programvara så småningom står inför gränser för funktionalitet som den inte kan uppfylla. Den sista Lehman-lagen för mjukvaruutveckling är själva återkopplingssystemet, som binder samman alla krafter som påverkar programvarans livskraft för att snabbt driva det antingen till större framgång eller oundviklig föråldring och död.