Czy istnieje anty-wzorzec opisujący historycznie rozwijany system oprogramowania, w którym wielu programistów właśnie dodało nowe funkcje do systemu, ale nikt tak naprawdę nie pilnował ogólnej architektury ani nigdy nie przeprowadzono refaktoryzacji?
Wydaje mi się, że dzieje się tak, gdy zarząd / klient ciągle prosi o nową funkcję i nikt nigdy niczego nie refaktoryzuje, tylko dodaje do tego, czego inni programiści wcześniej nie robili.
Powodem może być również to, że programista jest po prostu przytłoczony systemem oprogramowania i tak naprawdę nie rozumie, jak obecnie działa, a następnie po prostu dodaje / klei swój kod na samym końcu (zamiast refaktoryzować kod i go zmieniać).
Z biegiem czasu utrzymanie systemu staje się coraz trudniejsze.
(Zastanawiam się, czy są zdjęcia tego rodzaju anty-wzoru, aby uczynić to bardziej zrozumiałym dla nikogo, kto programuje - jak samochód, który został zbudowany po prostu dodając coraz więcej funkcji bez myślenia o ogólnym projekcie. Jakby ktoś musiał holować przyczepy podczas jazdy do tyłu, a następnie inżynier po prostu przysparza hak holowniczy do przedniej części samochodu. Praca wykonana. Ale teraz osłona już się nie otwiera).
Odpowiedzi:
Masz na myśli dług techniczny .
Wszyscy naliczamy dług techniczny od produktów, które opracowujemy z czasem; refaktoryzacja jest jednym z bardzo powszechnych i skutecznych sposobów zmniejszenia tego zadłużenia technicznego, chociaż wiele firm nigdy nie spłaca zadłużenia technicznego. Firmy te często uważają, że ich oprogramowanie jest wyjątkowo niestabilne, a dług techniczny staje się tak okropny, że nie można go spłacać stopniowo, ponieważ spłacanie go w ten sposób trwałoby zbyt długo.
Dług techniczny ma termin, ponieważ wynika z tych samych zachowań długu. Dostajesz dług i dopóki będziesz go wydawać (tworzyć funkcje) i nie spłacać tego długu, będzie on tylko rósł. Podobnie jak dług, gdy staje się zbyt duży, dochodzisz do punktów, w których możesz chcieć całkowicie go przelać za pomocą niebezpiecznych zadań, takich jak pełne przepisywanie. Podobnie jak prawdziwy dług, ponieważ narasta do pewnego momentu, utrudnia całkowicie wydawanie (tworzenie funkcji).
Po prostu wrzucając do miksu inny termin, spójność odnosi się do tego, jak dobrze system, mikro do poziomu linii lub makro do poziomu systemu, pasują do siebie. Bardzo spójny system sprawi, że wszystkie jego elementy będą bardzo dobrze do siebie pasować i będą wyglądać, jakby napisał je jeden inżynier. Twoje powyższe odniesienie do kogoś, kto po prostu przyklei kod do końca, naruszałoby spójność tego systemu.
Zarządzanie długiem technicznym
Istnieje wiele sposobów zarządzania długiem technicznym, chociaż tak jak w przypadku długu rzeczywistego najlepszym podejściem jest spłacanie go często. Niestety, tak jak w przypadku prawdziwego długu, czasem lepiej jest zgromadzić więcej na krótki okres, w którym na przykład czas na wprowadzenie na rynek funkcji może podwoić lub potroić przychody. Trudna część polega na wyważeniu tych konkurencyjnych priorytetów, a także ustaleniu, kiedy ROI zadłużenia nie jest tego warte dla danej funkcji, a kiedy jest.
Czasami więc warto naliczać dług na krótki okres, ale rzadko tak jest, i jak w przypadku wszystkich długów, im krótszy okres, tym lepiej. Więc w końcu (najlepiej szybko ) po narosnięciu długu technicznego musisz go spłacić, są to powszechne podejścia:
źródło
Twój opis pasuje do Big Ball of Mud Foote and Yoder :
źródło