2009-08-26 9 views
5

Dlaczego późniejsze wykrycie usterki jest bardziej kosztowne?Dlaczego późniejsze wykrycie usterki jest bardziej kosztowne?

Wiele już słyszałem, ale staram się zrozumieć i umieścić w tym kontekście/przykłady.

+2

http://www.joelonsoftware.com/articles/fog0000000043.html # 5 –

+3

Bardziej powszechne stwierdzenie jest takie, że "jest bardziej kosztowne, aby naprawić wadę, gdy zostanie wykryte później w procesie". – MSalters

Odpowiedz

8

Im dłużej to trwa do znalezienia błędu, a następnie:

  • tym bardziej zachowanie bug mogły zostać zaakceptowane prawidłowe, a więcej innych rzeczy może stać się zależne od tego zachowania (Windows jest znany z tego).

  • Im ściślej zintegrowany system prawdopodobnie się stał, a tym trudniej będzie wyodrębnić błąd.

  • im większe prawdopodobieństwo, że błędne zachowanie błędu zostanie zduplikowane w innym miejscu z powodu wklejenia kopii lub w przypadku klientów używających błędnego kodu.

  • Im dłużej trwa pisanie kodu i tym trudniej go zrozumieć.

  • mniej prawdopodobne będzie, że osoby, które rozumieją oryginalną część systemu, będą w pobliżu, aby to naprawić.

1

Ponieważ więcej osób będzie spędzać czas z wadliwym oprogramowaniem.

Jeśli wcześniej poprawisz błąd i być może recenzent kodu poświęci temu trochę czasu.

Jeżeli zostanie wydana do klientów i zgłaszane jako błąd, trzeba będzie kodowany, ktoś może Sprawdziliśmy, ktoś może testowałem to, że ktoś może go nawet udokumentowane i tak dalej ...

3

Im później znajdziesz błąd, tym gorzej. Kiedy znajdziesz błąd zaraz po napisaniu kodu, masz na myśli wszystkie zachowania i dokładnie wiesz, jakie zmiany spowodowały to. Będziesz mógł skupić się na problemie, gdy tylko dowiesz się, gdzie się znajduje.

Po długim okresie programowania programiści nie pamiętają już dokładnie, jak to działa, a jest wiele innych miejsc do zbadania, aby znaleźć błąd. Być może programista, który zakodował błąd, nie pracuje już w firmie.

Ponadto, w miarę upływu czasu, więcej części kodu będzie prawdopodobnie zależeć od kodu błędu i może być konieczne ich naprawienie.

Wreszcie są problemy z udziałem użytkowników. Jeśli znajdziesz błąd po wydaniu, więcej użytkowników będzie nim sfrustrowanych, a obraz produktu będzie gorszy. Użytkownicy mogą również używać obejścia tego błędu, co może się nie powieść po naprawieniu błędu.

Podsumowanie: Gdy trwa długo, aby znaleźć błąd

  • Twój zakres do zbadania jest większy
  • Deweloper, który stworzył ten błąd nie może być tam więcej, a inni deweloperzy będą musieli studiować Kod więcej, aby go znaleźć, zrozumieć i naprawić.
  • Może być również konieczne naprawienie części zależnych od błędnego kodu (i będzie więcej takich części).
  • Użytkownicy będą już sfrustrowani przez błąd i obraz produktu zostanie uszkodzony
13

Budujesz dom. Układasz rury kanalizacyjne w fundamenty, ale nieznana ci jedna z rur jest zablokowana przez martwego jeża.

Wolałbyś dowiedzieć się:

  • Tuż przed wlać beton
  • Po zakończeniu dom i nowy właściciel stara się skorzystać z toalety?

(Istnieje „przepełnienie stosu” żart gdzieś w tej analogii. 8-)

+1

Głupie jeże !! Przynajmniej nie jest borsukiem ... – Zoidberg

+0

Podziel się żywopłotem, proszę! – MSalters

+2

świetna analogia! Często używam analogii "domowych" przy tłumaczeniu problemów programistycznych użytkownikom w mojej pracy. –

1

Mogą istnieć inne zależności (wewnętrznego lub zewnętrznego), które będą miały wpływ na ustalenie wady.

Na przykład - jeśli mogę rozwiązać tę wadę, może muszę naprawić coś innego

1

Imagine piszesz esej o tym, dlaczego jest to bardziej kosztowne odkryć wadę później w procesie, a ty nagle uświadomić sobie jedną z przesłanek, na których opiera się większość twoich esejów, jest fałszywe.

Jeśli nadal planujesz, masz tylko pół strony planu do zmiany. Jeśli twój esej jest już prawie skończony, nagle musisz zgarnąć dużo i zacząć od nowa. Jeśli już to przekazałeś, błąd będzie cię kosztował twoją ocenę.

Powód taki sam.

3

Można to zilustrować prostym (choć nie banalnym) przykładem.

Wykonaj prosty dialog z komunikatem i po prostu dwoma przyciskami "OK" i "Anuluj".

Załóżmy, że błąd jest błędem w pisowni.

Jeśli zostanie znaleziony po wydaniu produktu, należy wydać nową wersję produktu wraz z wszystkimi związanymi z tym kosztami. Instrukcje będą musiały zostać przedrukowane.

Jeśli zostanie to znalezione podczas ostatecznego testu, należy ponownie wydrukować instrukcję. Kod będzie musiał zostać przepisany, a testy ponownie uruchomione.

Jeśli zostanie to znalezione podczas programowania, koszt naprawy zostanie naprawiony.

Jeśli zostanie to znalezione podczas projektowania, kod zostanie zapisany poprawnie po raz pierwszy - bez kosztów.

+0

+1: Tak naprawdę napotkaliśmy coś takiego. Klient podarował nam kilka etykiet w języku całkowicie niezrozumiałym dla nas. Jedynym, na co mogliśmy to zweryfikować, było przepracowanie każdego okrętu każdej skręconej postaci i potwierdzenie, że było to właściwe. Klient odrzucił pracę) +: Pierwsze słowo w każdej etykiecie było odpowiednikiem "Przykładu". – Everyone

1

Dla produktu owiniętego folią termokurczliwą: Jeśli znajdziesz błąd po przejściu produktu do sklepów, będziesz musiał pomóc użytkownikom w nawiązywaniu połączeń z pomocą techniczną, zaproponować obejście lub nawet przywrócić produkt/wydanie do dodatku Service Pack.

Dla strony internetowej: Opóźnienia i opóźnienia w witrynie kosztują Cię pieniądze. Utrata klienta w wyniku złej/nieprawidłowo działającej witryny kosztuje więcej. Proces debugowania jest również kosztowny.

2
  1. Nikt nigdy nie rozumie kodu tak dobrze, jak Ty, kiedy go piszesz.
  2. Ludzie mogą polegać na robaku.
  3. Być może trzeba będzie naprawić wiele złych danych, które błąd zapisał.
  4. Może zaistnieć potrzeba wprowadzenia nowej wersji lub poprawki oprogramowania.
  5. Twój helpdesk może być zmuszony do wysłania całej liczby połączeń.
  6. Być może będziesz musiał wypełnić paczki dokumentów, wyjaśniając, dlaczego ten błąd istnieje i jakie problemy on powoduje, i co zamierzasz zrobić, aby upewnić się, że nigdy, nigdy się to nie powtórzy.
0

Z powodu procesu rozwoju i wszystkich prac związanych z naprawieniem wady.

Wyobraź sobie, że znajdziesz problem w funkcji, którą wczytałeś wczoraj, po prostu wymelduj się, napraw, odpraw się, kropka. Jest wciąż świeży w twoim umyśle, wiesz o co chodzi i że twoja poprawka nie będzie miała żadnych skutków ubocznych.

Teraz wyobraź sobie znalezienie tego samego błędu w ciągu sześciu miesięcy od teraz. Czy pamiętasz, dlaczego funkcja została zakodowana w ten sposób? Nadal będziesz pracował nad tym projektem/firmą? Musisz otworzyć raport o usterce, musisz wydać nową wersję oprogramowania, kontrola jakości musi potwierdzić poprawkę. Jeśli oprogramowanie zostało wdrożone, wówczas wszystkie instancje muszą zostać zaktualizowane, klienci wezwą wsparcie ...

Prawdą jest, że krzywa przedstawiająca koszt jest sporządzana w celu zilustrowania punktu; to zależy od procesu rozwoju.

1

Prawdopodobnie jest to błąd autora pytania, ale faktyczne pytanie brzmi: "Dlaczego wykrycie usterki w późniejszym etapie procesu jest bardziej kosztowne" W tym pytaniu koszt usunięcia błędu i możemy mieć nadzieję również oznacza to naprawić. Większość odpowiedzi radzi sobie dobrze z opisem kosztów naprawy i dlaczego lepiej jest je naprawić wcześniej niż później. I naprawdę nie zgadzam się z żadnym z nich. Ale to nie jest całe pytanie.

Mam regularne serie ezoterycznych argumentów z niektórymi o kosztach odkrycia. Ile testów wymagałoby znalezienie konkretnego błędu (bez pomyłki). Czy w przypadku testowania automatycznego i scenariusza zajmie Ci to więcej niż 3 miesiące zautomatyzowanych lub manualnych testów?

W praktyce należy sprawdzać jak najwięcej, ale stwierdzając, że punkt równowagi nie jest tak łatwy, jak mogłoby się wydawać wielu osobom. Większość programów jest zbyt duża, aby zapewnić 100% pokrycie kodu. 100% pokrycie kodu to zwykle tylko ułamek wszystkich możliwych scenariuszy, które musi obsłużyć kod.

Innym czynnikiem wpływającym na koszt błędu jest koszt firmy związany z błędem. Czy jest tam 5 milionów skrzyń z botami? Czy musisz zrobić wycofanie produktu? Czy wygeneruje połączenia X do punktu obsługi gwarancyjnej? Czy spowoduje to pewną klauzulę w umowie, która będzie odpowiedzialna za szkody? W bardzo prosty sposób, dlatego oprogramowanie napisane w medycynie kosztuje więcej za LOC niż oprogramowanie do tworzenia stron internetowych.

0

Powiedziałbym, że najbardziej kosztowne jest znalezienie defektu i niech to będzie. Im dłużej pozwalasz żyć wadzie, tym bardziej staje się ona kosztowna.

Byłem w firmie w czasie, kiedy mieli polisę, że gdy podjęli decyzję, trzymają się jej.System, nad którym pracowałem, był pełen błędów z powodu głupich ram korporacyjnych, z których byliśmy zmuszeni korzystać, oraz głębokiego niezrozumienia właściwego korzystania z usług internetowych.

Po dziś dzień uważam, że najtańszym sposobem na uzyskanie przez pracujący system użytecznego użytku byłoby porzucenie całego systemu i przepisanie go od zera.

Tak więc chodzi mi o to, że nie uważam, że znalezienie defektu na późnym etapie jest problematyczne. Ale ignorowanie wady do późnego etapu jest niezwykle problematyczne.

Powiązane problemy