Czy zgnilizna oprogramowania odnosi się przede wszystkim do wydajności, czy do niechlujnego kodu?

22

Definicja Wikipedii z oprogramowania zgniliznę skupia się na wydajności oprogramowania. To jest inne zastosowanie niż ja; Myślałem o tym znacznie bardziej pod względem czystości i wyglądu kodu - pod względem tego, że kod ma wszystkie standardowe cechy jakościowe: czytelność, łatwość konserwacji itp. Teraz wydajność prawdopodobnie spadnie, gdy kod stanie się nieczytelny, ponieważ nikt nie wie, co się dzieje. Ale czy termin rotacja oprogramowania ma specjalne odniesienie do wydajności? czy mam rację sądząc, że odnosi się to do czystości kodu? a może jest to przypadek wielu zmysłów tego terminu, które jest powszechnie używane - z perspektywy użytkownika ma to związek z wydajnością; ale dla twórcy oprogramowania musi to zrobić bardziej szczegółowo z tym, jak odczytuje kod?

Kazark
źródło
1
Wikipedia wymienia 3 przyczyn, z których 2 nie są związane z wykonywaniem, kod Nieużywany i rzadko zaktualizowanego kodu ...
Izkata
2
„Oprogramowanie może z czasem pogarszać się pod względem„ wydajności ”i stać się tak zwaną„ starszą ”wersją, ponieważ działa i gromadzi błędy; nie jest to ogólnie uważane za zgniliznę oprogramowania, choć może mieć takie same konsekwencje”. Myślę, że jest jasne, że zgnilizna oprogramowania nie ma związku z wydajnością.
zzzzBov
1
Jedyną funkcją ponownego wykorzystania na całej stronie wikipidii jest ostrzeżenie tagu, że nie ma odniesienia do źródeł rellibale.
mattnz

Odpowiedzi:

39

Termin ten nie jest związany z wydajnością, a przynajmniej nigdzie go nie widziałem.

Dotyczy to w szczególności kodu, który nie jest dobrze utrzymywany i staje się ... brudny ... zgniły. Chodzi o kod, którego projekt nie został zaktualizowany w związku z wprowadzonymi zmianami i jest trudny do odczytania i zrozumienia.

Oded
źródło
1
Słyszałem, że odnosiło się to do wydajności: np. „Zgnilizna systemu Windows”, uczucie, że trzeba formatować i ponownie instalować system Windows tak często, jak z czasem staje się wolniejszy.
Carson63000,
3
Tak ... ale „zgnilizna oprogramowania” i „zgnilizna okien” to różne terminy.
Stephen C
4
@Oded - analogia nie jest zabrudzona. Jest to rodzaj zgnilizny, która występuje w starych budynkach, co powoduje, że nie mają one strukturalnej stabilności.
Stephen C
18

Spojrzmy prawdzie w oczy. „Zgnilizna oprogramowania” nie jest dobrze zdefiniowaną koncepcją techniczną. Jest to raczej pejoratywny opis tego, co dzieje się, gdy oprogramowanie jest źle obsługiwane.

Strona Wikipedii reprezentuje jeden widok, ale istnieją wyraźnie alternatywne widoki. I można powiedzieć, że różne poglądy odzwierciedlają różne priorytety i obawy osoby zajmującej te poglądy:

  • Ktoś, kto koncentruje się na szybkim tworzeniu oprogramowania, będzie bardziej skłonny szukać dowodów na „zgniliznę oprogramowania” w działaniu.

  • Ktoś, kto skupia się na projektowaniu / architekturze (np. Ponieważ musi dodać nową funkcjonalność lub naprawić błędy funkcjonalne), zobaczy „zgniliznę oprogramowania” z tej perspektywy.

I nie jest tak naprawdę użyteczne stwierdzenie, czyja perspektywa jest bardziej właściwa. (To trochę jak kłótnia, czy turkus jest bardziej zielony czy bardziej niebieski).

Stephen C.
źródło
1
Ponieważ post OP dotyczył wikipedii, przedstawiam: Turkusowy (kolor) - To „zielony”, ale jego „niebieskawy odcień”. Myślę więc, że twój argument jest trafny :).
Ben Lee,
6

Powiedziałbym, że termin „zgnilizna oprogramowania” ogólnie odnosi się do przydatności do danego zadania. Oprogramowanie może stać się mniej odpowiednie do zamierzonego zadania z powodu kolejnych poprawek błędów, nowych funkcji i drobnych poprawek. Podsumowując, mogą one negatywnie wpłynąć zarówno na łatwość konserwacji, jak i wydajność. Ponadto potrzeby organizacji prawdopodobnie zmienią się z czasem, a oprogramowanie może zostać zmuszone do pełnienia ról, do których nigdy tak naprawdę nie został zaprojektowany. Wszystkie te czynniki powodują, że oprogramowanie staje się mniej dostosowane do potrzeb organizacji, co może się zdarzyć nawet przy wspólnych staraniach o utrzymanie oprogramowania.

Caleb
źródło
6

Wikipedia twierdzi, że zgnilizna oprogramowania i zgnilizna kodu są takie same. Nie zgadzam się.

Zgnilizna kodu to stopniowa utrata czytelności i łatwości konserwacji wraz z wprowadzaniem coraz większej liczby zmian w kodzie.

Zgnilizna oprogramowania to stopniowa utrata wydajności w miarę przenoszenia oprogramowania z jednego emulatora środowiska do drugiego. Jednym z przykładów jest całe oprogramowanie Data PDP działające na emulatorach. W rzeczywistości środowisko gnije, a nie oprogramowanie.

Gilbert Le Blanc
źródło
+1. wikipedia utożsamiała zgniliznę oprogramowania z zgnilizną kodu. Powinniśmy to edytować. Jest więcej zgnilizny oprogramowania. Jednym z przykładów jest nieużyteczny / trudny w użyciu interfejs GUI. Przyczynia się również nieaktualna / niewłaściwa dokumentacja.
Jayan
3

Oprogramowanie nie psuje się, nie starzeje, nie zużywa się ani nie „gnije” w tradycyjnym tego słowa znaczeniu.

Jeśli środowisko, w którym działa oprogramowanie, nie ulegnie zmianie, oprogramowanie zasadniczo będzie trwać wiecznie. Dlatego tak mnie denerwuje, gdy ktoś pyta, czy jakaś biblioteka jest „martwa”, ponieważ autor nie dokonał aktualizacji w ciągu ostatnich 5 minut (przesadzając tylko nieznacznie dla efektu).

Ale środowisko zwykle się zmienia; systemy operacyjne są łatane i aktualizowane, komputery zastępowane są mocniejszymi i instalowane są nowe programy (takie jak najnowsza wersja klienta, takiego jak Internet Explorer, sterowniki urządzeń lub inne biblioteki), od których może zależeć oprogramowanie. Dlatego oprogramowanie musi zostać zaktualizowane, aby uwzględnić te zmiany.

Istnieją systemy oprogramowania, które działały nieprzerwanie i niezawodnie przez dosłownie dziesięciolecia, bez konieczności znacznej aktualizacji lub konserwacji. Przychodzi mi na myśl oprogramowanie COBOL działające na komputerach mainframe obsługujących transakcje bankowe (choć w 1999 r. Wszystkie musiały zostać zmodyfikowane, aby obsługiwały Y2K).

Nacisk Wikipedii na wydajność wydaje się nie mieć sensu; wiele aplikacji faktycznie uzyskuje wzrost wydajności, gdy są instalowane w nowszym środowisku. Artykuł z Wikipedii wydaje się być bardziej zaniepokojony wzdęciem oprogramowania .

Robert Harvey
źródło
Nadęty program - tak, dobra uwaga. W moim rozumieniu tego terminu, kiedy zadałem to pytanie, zgnilizna oprogramowania miała związek z faktem, że była ona nadal modyfikowana przez grupę programistów, których standardy czyszczenia i projektowania kodu były podrzędne.
Kazark
3

„Zgnilizna oprogramowania” - jest bardzo niejasnym terminem i może oznaczać różnorodność rzeczy dla każdego, w zależności od tego, jak postrzegasz koncepcję, a także jaki jest twój kąt widzenia .

Definicja Wikipedii dotycząca oprogramowania Zgnilizna nie ustanawia standardu, ponieważ jest również napisana przez niektóre osoby. Myślę, że termin ten ma różnorodne znaczenie i należy go rozbić na konkretne obszary, w których się go odnosi.

  • Programiści mogą rozumieć to jako niemożliwą do utrzymania bazę kodu z pełną anty-wzorcami, bez konsekwencji w nazewnictwie i stylu kodowania.
  • Administratorzy systemu mogą to rozumieć jako niską wydajność, pełne przecieków pamięci i piekła. konserwacja.
  • Użytkownik końcowy może zrozumieć to jako bardzo skomplikowane, nieintuicyjne i ciężkie w obsłudze oprogramowanie.
EL Yusubov
źródło
2

Zawsze myślałem o gniciu oprogramowania jako warunku, który występuje, gdy nie używasz oprogramowania przez pewien czas. W jakiś sposób oprogramowanie zmienia się w stan, w którym nie da się go zbudować. Następnie, gdy dojdziesz do punktu, w którym możesz go zbudować, nie będzie on działał z wejściami i wyjściami, jak wcześniej. To prawie tak, jakby kod faktycznie zdegradował się w formie, mimo że jest przechowywany cyfrowo.

Kent
źródło
1
Ponieważ zmieniło się środowisko (kompilator, biblioteki itp.)? Wikipedia o tym dyskutuje.
Kazark