Sam jestem raczej stronniczy w stosunku do streszczenia Wikipedii :
Dotychczasowy system to stara metoda, technologia, system komputerowy lub program aplikacyjny, który jest nadal używany, zwykle dlatego, że nadal działa na potrzeby użytkowników, mimo że dostępne są nowsze technologie lub bardziej wydajne metody wykonywania zadania.
Wiele z tego, co inni opisują w swoich odpowiedziach, jest powodem, dla którego kod staje się „dziedzictwem”. Ale samo zasadnicze pytanie brzmi:
Ale nadal jest używany w systemach produkcyjnych - czy to naprawdę jest dziedzictwo? A co sprawia, że jest to dziedzictwo?
Fakt, że jest nadal używany w produkcji, właśnie sprawia, że jest to dziedzictwo . Jeśli kod nie działa poprawnie lub nie jest już używany w środowisku produkcyjnym, kod ten jest odpowiednio „uszkodzony” lub „wycofany”. Starsza wersja oznacza, że nadal jest używana i działa dobrze, ale zawiera projekty lub techniki, które nie są już w powszechnym użyciu.
Każdy kod lub system, który (a) chciałbyś zaktualizować / zaktualizować, ale nie możesz, lub (b) wciąż jest w trakcie aktualizacji, jest systemem starszym. Nie oznacza to refaktoryzacji ani ogólnego czyszczenia kodu, oznacza znaczące zmiany w projekcie, być może przy użyciu nowej platformy, a nawet nowej platformy.
Istnieje wiele powodów, dla których systemy lub kod mogą stać się dziedzictwem:
Brak regularnej konserwacji lub zepsucia oprogramowania . Oczywiście, jeśli aplikacja nie jest regularnie utrzymywana, nie dotrzyma kroku głównym zmianom w świecie oprogramowania. Może to wynikać z prostego zaniedbania lub celowych wyborów opartych na priorytetach biznesowych lub ograniczeniach budżetowych.
Brak testowania. Inna odpowiedź odwołuje się do hiperbolicznego twierdzenia popularnego autora na temat dowolnego kodu nieobjętego testami będącymi starszym kodem. To naprawdę nie jest dokładna definicja, ale jest to możliwa przyczyna; bez dobrych testów (automatycznych lub ręcznych) programiści stają się nieśmiali i boją się wprowadzić poważne zmiany, ponieważ martwią się o coś, co może popsuć, prowadząc w ten sposób „zgniliznę oprogramowania” powyżej.
Blokowanie obrotów, często pomijany czynnik, który jest szczególnie podstępny w projektach wykorzystujących duże biblioteki lub frameworki typu open source (chociaż widziałem, że dzieje się tak również z narzędziami komercyjnymi). Często do frameworku / biblioteki zostanie wprowadzone duże dostosowanie, co sprawi, że aktualizacja będzie niemożliwie trudna lub kosztowna. W ten sposób system staje się starszy, ponieważ działa na starszej (i prawdopodobnie już nieobsługiwanej) platformie.
Kod źródłowy nie jest już dostępny, co oznacza, że system można tylko dodawać, a nie zmieniać. Ponieważ systemy te muszą zostać przepisane w celu aktualizacji - w przeciwieństwie do przyrostowych / iteracyjnych zmian - wiele firm nie będzie się tym przejmować.
Wszystko, co spowalnia lub zatrzymuje aktualizacje bazy kodu, może spowodować, że baza kodu stanie się dziedzictwem.
Teraz osobne, niepotwierdzone, ale dorozumiane pytanie brzmi: co jest nie tak ze starszym kodem? Jest często używany jako pejoratywny termin, stąd pytanie:
Czy powinniśmy unikać tej nieuzasadnionej etykiety doskonale działającego kodu?
Odpowiedź brzmi: nie, nie powinniśmy; etykietowanie jest uzasadnione, a sam termin wyraźnie oznacza funkcjonujący kod. Nie chodzi o to, że jest to funkcja, ale o to, jak działa.
W niektórych przypadkach nie ma nic złego w starszym kodzie. To nie jest złe słowo. Starsze kody / systemy nie są złe. Właśnie zebrali trochę kurzu - czasem trochę, czasem dużo.
Dziedzictwo staje się przestarzałe, gdy system nie jest już w stanie zaspokoić (wszystkich) potrzeb klienta. Ta etykieta jest tym, na którą musimy uważać. W przeciwnym razie jest to po prostu równanie kosztów i korzyści; jeśli koszt aktualizacji byłby niższy niż koszt jego korzyści (w tym niższe przyszłe koszty utrzymania), to zaktualizuj, w przeciwnym razie pozostaw to w spokoju. Nie musisz wyrzucać słowa „dziedzictwo” w tym samym tonie, który zwykle rezerwujesz dla „kontroli podatkowej”. Jest to całkowicie OK sytuacja.