Czym jest ewolucja oprogramowania?
Ewolucja oprogramowania jest procesem, w którym komercyjny program komputerowy wymaga ciągłej aktualizacji, konserwacji i doskonalenia w miarę upływu czasu, aby mógł pozostać opłacalnym produktem. Pod tym względem ewolucja oprogramowania jest napędzana zewnętrznymi potrzebami biznesowymi i konsumenckimi, które zmieniają się wraz z rozwojem innych programów i technologii. Czynnikiem napędzającym ewolucję oprogramowania jest jednak często wewnętrzna koncentracja na zespole inżynierów, który wyprodukował produkt, i firmie, która jest zależna od sukcesu pod względem rentowności. Imperial College of London, England, po raz pierwszy ogłosił trzy podstawowe prawa ewolucji oprogramowania na początku lat siedemdziesiątych, które od tego czasu zostały rozszerzone do ośmiu praw od 2011 roku. Podjęto również inne próby kwantyfikacji procesu z wykorzystaniem modeli takich jak: liniowy model sekwencyjny i model prototypowy, ale paradygmat, który wydaje się najlepiej pasować do cykli życia entropii oprogramowania, przypomina model ewolucji darwinowskiej dla istot żywych.
Podstawowe czynniki napędzające zmiany w architekturze oprogramowania przypominają te same siły, które motywują firmy do modernizacji maszyn przemysłowych lub standardowych procedur operacyjnych wraz ze zmianami potrzeb społecznych. Ponieważ oprogramowanie jest coraz częściej wykorzystywane, nowe potrzeby lub funkcje stają się oczywiste, że należy je wprowadzić w późniejszych wersjach produktu. Całe oprogramowanie jest również wydawane z poprzednio nieznanymi błędami, dlatego należy przeprowadzać okresowe łaty i procedury konserwacyjne, aby korygować sytuacje, takie jak luki bezpieczeństwa, które mogą narazić firmę na ataki za pośrednictwem samego oprogramowania. Kluczem do ewolucji oprogramowania jest również fakt, że takie programy muszą być w coraz większym stopniu dostosowywane do pracy z różnego rodzaju nowymi urządzeniami komputerowymi oraz w różnych architekturach systemów operacyjnych, aby program miał szerszy urok.
Zaspokojenie wszystkich tych potrzeb ma kluczowe znaczenie dla ustalenia, czy oprogramowanie jest opłacalne, a ponieważ zasoby oprogramowania są tak istotnym aspektem gospodarki informacyjnej od 2011 r., Ewolucja oprogramowania stała się podstawowym aspektem adaptacji i rozwoju firmy. Meir Lehman, informatyk z Imperial College of London, jest uznawany za twórcę przepisów Lehmana, które zwięźle definiują proces ewolucji oprogramowania i kierują programistami w myśleniu o wizualizacji oprogramowania. Prawa Lehmana opierają się na założeniu, że oprogramowanie ewoluuje wraz ze wzrostem informacji zwrotnych na temat jego wydajności i że jego nieunikniona tendencja staje się coraz bardziej złożona.
Lehman stwierdził, że natura ewolucji oprogramowania odzwierciedla naturalne zmiany, takie jak mutacja muszek owocowych, sposób, w jaki miasta rozwijają się wraz z upływem czasu, oraz w jaki sposób struktury wojskowe stopniowo poprawiają systemy broni. Pierwsze trzy prawa tego procesu naśladują te trendy w szczegółowym opisie ciągłych zmian, rosnącej złożoności i tak zwanej ewolucji dużych programów. Ciągłe zmiany odnoszą się do faktu, że program musi być dostosowany do bieżących warunków biznesowych w świecie rzeczywistym, a to odzwierciedla rosnącą złożoność, ponieważ program musi spełniać stale rosnącą różnorodność nieoczekiwanych potrzeb. Duża ewolucja programu odnosi się do konieczności korekcji błędów i nowych wydań programu, które są nieubłaganie związane z wymaganiami rynku.
Spośród pięciu pozostałych praw ewolucji oprogramowania, czwarta to stabilność organizacyjna i odnosi się do faktu, że rozwój programu nabiera własnego życia bez względu na poziom zasobów celowo mu poświęconych, a numer pięć to ochrona znajomości stwierdza, że przyrostowy wzrost programu jest nieunikniony. Numer sześć w ośmiu przepisach Lehman to ciągły wzrost, który jest niezbędny do zaspokojenia popytu konsumentów, a numer siedem to obniżająca się jakość, co podkreśla fakt, że całe oprogramowanie ostatecznie musi sprostać ograniczeniom funkcjonalności, których nie może spełnić. Ostatecznym prawem Lehmana dotyczącym ewolucji oprogramowania jest sam System Sprzężenia, który łączy wszystkie siły wpływające na żywotność programu, aby szybko doprowadzić go do większego sukcesu lub nieuniknionego starzenia się i śmierci.