Yazılımın geliştirilmesi, ticari bir bilgisayar programının uygulanabilir bir ürün olarak kalması için zaman içinde sürekli güncelleme, bakım ve iyileştirme gerektiren bir süreçtir. Bu bağlamda, yazılım evrimi, diğer yazılım ve teknolojiler onun etrafında ilerledikçe değişen dış işletme ve tüketici ihtiyaçlarından kaynaklanmaktadır. Bununla birlikte, yazılım evriminin arkasındaki itici faktör, genellikle ürünü üreten mühendislik ekibine ve karlılık başarısına bağlı olan şirkete odaklanan dahili bir faktördür. İngiltere, Londra İmparatorluk Koleji, ilk olarak 1970'lerin başlarında üç temel yazılım evrimi kanunu çıkardı; bu, 2011'den beri toplam sekiz yasaya kadar genişletildi. Bu gibi modelleri kullanan süreci ölçmek için başka girişimlerde bulunuldu. Doğrusal Sıralı Model ve Prototip Model, ancak yazılım entropi yaşam döngülerine en uygun görünen paradigma, Darwinist canlılar için evrimine benzeyen bir modeldir.
Yazılım mimarisindeki değişikliklerin arkasındaki temel itici faktörler, işletmeleri endüstriyel makineleri yükseltmeye ya da toplumsal ihtiyaçlar değiştikçe standart işletim prosedürlerine teşvik eden güçlere benzer. Yazılım gittikçe daha fazla kullanıldığından, daha sonraki sürümlerde çalışılması gereken yeni ihtiyaçlar veya işlevler ortaya çıkmaktadır. Tüm yazılımlar ayrıca önceden bilinmeyen hatalarla da yayınlanır, bu nedenle bir şirketi yazılımın kendisine saldırmaya karşı savunmasız bırakabilecek güvenlik boşlukları gibi durumları düzeltmek için periyodik yamalar ve bakım prosedürleri gerçekleştirilmelidir. Yazılımın gelişmesinin anahtarı, bu tür programların artan bilgisayar donanımları ve çeşitli işletim sistemi mimarileri üzerinde çalışmak için artan bir şekilde adapte edilmesi gerektiği ve böylece programın daha geniş bir çekiciliğe sahip olmasıdır.
Tüm bu ihtiyaçların karşılanması, bir yazılım programının uygulanabilir olup olmadığını belirlemek için çok önemlidir ve yazılım varlıkları 2011 itibariyle bilgi ekonomisinin çok önemli bir parçası olduğu için, yazılım evrimi iş adaptasyonu ve büyümenin temel bir yönü haline gelmiştir. Londra İmparatorluk Koleji'nden bir bilgisayar uzmanı olan Meir Lehman, yazılım evrimi sürecini net bir şekilde tanımlayan ve yazılımcıların görselleştirilmesinde ileri görüşlülüğü yönlendiren geliştiricilere rehberlik eden Lehman Yasalarını oluşturma konusunda kredilendirildi. Lehman Kanunları, yazılımın performansı hakkındaki geri bildirimler arttıkça geliştiği ve kaçınılmaz eğiliminin giderek daha karmaşık hale geleceği öncüllerine dayanmaktadır.
Lehman, yazılım evriminin doğasının, meyve sineklerinde mutasyon, şehirlerin zaman içinde genişlemesi ve askeri yapıların silah sistemleri üzerinde artan şekilde nasıl geliştiği gibi doğal değişiklikleri yansıttığını belirtti. Sürecin ilk üç yasası, bu Değişimi Devam Eden Değişim, Artan Karmaşıklık ve Büyük Program Evrimi olarak bilinenlerin ayrıntılandırılmasında taklit eder. Sürekli Değişim, programın mevcut gerçek dünyadaki iş koşullarını yerine getirmek için adapte edilmesi gerektiği ve programın giderek artan bir şekilde beklenmedik ihtiyaçların çeşitliliğini karşılaması gerektiği için, Artan Karmaşıklığı yansıtmaktadır. Büyük Programın Evrimi, hata düzeltme ve pazarın taleplerine karşı çıkılmaz bir biçimde bağlı olan programın yeni sürümlerinin gerekliliği anlamına gelir.
Yazılım geliştirmedeki kalan beş yasadan dördüncüsü Örgütsel İstikrardır ve programın büyümesinin kasıtlı olarak tahsis edilen kaynakların seviyesine bakılmaksızın kendi başına bir yaşam sürdüğü ve beşincisinin de Bilinenlerin Korunması olduğu anlamına gelir. Bu, programın artımlı büyümesinin kaçınılmaz olduğunu belirtir. Sekiz Lehman Yasasında altı numara, Tüketici talebini karşılamak için gerekli olan Sürekli Büyümedir ve yedi numara, tüm yazılımların sonunda karşılayamayacağı işlevsellik sınırlarıyla karşı karşıya olduğu gerçeğini vurgulayan Kalite Kalitesindedir. Yazılımın gelişimi için son Lehman Yasası, bir yazılım programının uygulanabilirliğini etkileyen tüm güçleri bir araya getirerek ya daha büyük başarılara veya kaçınılmaz eskimeye ve ölüme hızlı bir şekilde itme kabiliyetini etkileyen güçleri birbirine bağlayan Geri Bildirim Sistemi'nin kendisidir.


