Gibt es einen geringfügigen Vorteil bei der Behebung von Fehlern?

27

Ich habe von einem ehemaligen Kollegen gehört, dass nicht alle Fehler behoben werden müssen, da der Anwendungsfall, der diesen Fehler verursacht, mit zunehmender Priorität undeutlicher wird oder die Kundenzufriedenheit abnimmt. Aber Sie müssen noch viel Zeit aufwenden, um diesen Fehler zu beheben.

In dem Bemühen, unseren Produktbesitzer von diesem Konzept zu überzeugen, konnte ich keine guten Ressourcen finden. Ich konnte nur Diskussionen darüber finden, ob die Softwareentwicklung Grenzkosten verursacht oder nicht.

Gibt es wirklich nur einen geringen Vorteil bei der Behebung von Fehlern? Gibt es einen anderen Begriff, der dieses Konzept erklärt?

Gökhan Kurt
quelle
2
Ihre Frage ist ziemlich unklar. "Es müssen nicht alle Fehler behoben werden" bedeutet, dass es einige gibt, die es nicht wert sind, behoben zu werden. "Gibt es wirklich einen geringfügigen Vorteil bei der Behebung von Fehlern?" Kannst du bitte Erklären?
Doc Brown
2
Ist das nicht für den Produktbesitzer herauszufinden? Warum glaubst du, musst du sie davon überzeugen?
Hören Sie auf, Monica
@Goyo Ich stelle diese Frage nicht speziell, um sie zu überzeugen. Dies war ein Konzept, auf das ich vor einiger Zeit gestoßen bin, aber keine weiteren Ressourcen finden kann. Auch ist es nicht ungewöhnlich, dass ein Softwareentwickler eine Führungsposition innehat. Ich selbst benötige diese Informationen also möglicherweise in Zukunft.
Gökhan Kurt
2
@ GökhanKurt: Aus "Alle Fehler müssen behoben werden" folgt nicht, dass sie alle gleich wichtig sind. Einige können störender sein als andere und haben daher eine höhere Priorität.
JacquesB

Antworten:

66

Aus betriebswirtschaftlicher Sicht unterscheidet sich eine Fehlerbehebung nicht von einer Funktionsanforderung. Es hat bestimmte Kosten in der Entwicklungszeit und einen bestimmten Wert für die Kunden. Wenn ein Fehler nicht kritisch ist, kann es durchaus wirtschaftlich sinnvoll sein, eine wichtige Funktion vor der Fehlerbehebung zu priorisieren.

Aber aus technischen Sicht Bugs kann kritischer sein, weil sie einen Fehler in einem Fundament geben an, welche anderer Code könnte / build verwendet auf, wobei in diesem Fall der Fehler „ansteckend“ ist und erhöht die Kosten für zukünftige Wartung. Also nicht einen Fehler Festsetzung ist eine technische Schulden , die Verwaltung erfordern, während nicht ein Merkmal der Umsetzung haben nicht wirklich eine laufende Kosten. Die Höhe der durch einen Fehler verursachten technischen Schulden hängt jedoch stark von der Art des Fehlers ab.

All diese Faktoren sollten bei der Priorisierung berücksichtigt werden.

Ob die Behebung von Fehlern einen geringfügigen Vorteil hat: Dies ist eine Selbstverständlichkeit. Da nicht alle Bugs gleich stark sind, priorisieren Sie natürlich zuerst die wichtigsten Bugs. Je mehr Fehler Sie beheben, desto geringer ist der Grenzwert für die Behebung des nächsten Fehlers. Aber ob es jemals das Level erreicht, bei dem die Behebung des Fehlers den Aufwand nicht wert ist, ist eher eine Geschäftsentscheidung als eine technische Entscheidung.

JacquesB
quelle
Diese Antwort gefällt mir, aber ich würde nicht sagen, dass eine neue Funktion keine laufenden Kosten verursacht. Normalerweise muss der Code allgemeiner gestaltet werden, um die neuen Funktionen zu berücksichtigen, und Sie müssen mit der höheren Abstraktionsebene leben, unabhängig davon, wie viel Wert das Feature tatsächlich bietet.
Doval
25
@Doval Du missverstehst. Was Jacques sagte, war ein Feature, das noch nicht geschrieben wurde und keine laufenden Kosten verursacht. Mit anderen Worten, das Fehlen einer Funktion erschwert die Implementierung einer anderen Funktion nicht (es sei denn, letztere hängt natürlich von der ersteren ab). Ein Fehler macht es andererseits schwieriger, etwas anderes zu tun, als es zu beheben. Daher unterscheiden sich "ungeschriebene Funktionen" und "nicht behobene Fehler" darin, dass sich die erstere nicht auf Ihre Codebasis auswirkt, während die letztere dies tut.
Sebastian Redl
3
Ich möchte hinzufügen, dass ein Fehler auch einen großen Einfluss auf das Image des Programms (und damit auf das gesamte Produkt und das Unternehmen, das es erstellt hat) haben kann einen Fehler hinterlassen, wenn gefunden, kann das Unternehmen einige Kunden und / oder Unternehmen kosten?
Olivier Dulac
2
Ein Beispiel für ansteckende Fehler: In einem meiner Projekte funktionierte alles einwandfrei, mit der Ausnahme, dass der Speicher in einem Code freigegeben wurde, der nicht immer ausgeführt wurde. In all dem Code, den ich bis dahin geschrieben hatte, war es immer so. Ich hatte weder Speicherlecks noch doppelte Frees, nur einige Debugging-Protokolle, die nicht in Ordnung zu sein schienen. Da die Dinge funktionierten, habe ich es nicht behoben. Dann fügte ich etwas mehr Code hinzu, die nicht mehr aufgereiht waren, und ich bekam Speicherlecks. Solche Fehler sind geringfügig, aber es lohnt sich, sie zu beheben. Leider sind sie auch schwer von kleineren Fehlern zu unterscheiden.
Fund Monica's Lawsuit
5
Nur um den Punkt von @ OlivierDulac zu erläutern, kann ein Fehler den Endbenutzer auf die Idee bringen, "Ich kann dieser Software nicht vertrauen, dass sie zuverlässig ist", und sie trotz ihrer Funktionen über Bord werfen. Ich bin mir sicher, dass wir alle eine Software installiert haben, die nur ein paar Minuten später wirklich nützlich schien, um sie zu deinstallieren, weil sie unangenehm wirkte. Während eine fehlende Funktion möglicherweise bemerkt wird, denkt der Endbenutzer "Ich werde diese Funktion weiterhin verwenden, weil ich die Funktionen mag, die sie hat". Ich denke nicht, dass Bugs und Features aus geschäftlicher Sicht als gleichwertig angesehen werden sollten.
Jon Bentley
12

Hier ist eine gute Referenz

http://www.joelonsoftware.com/articles/fog0000000043.html

Beheben Sie Fehler, bevor Sie neuen Code schreiben? Die allererste Version von Microsoft Word für Windows galt als "Todesmarsch" -Projekt. [...] weil die Fehlerbehebungsphase nicht Teil des offiziellen Zeitplans war [...]

Microsoft hat allgemein anerkannt, dass es [...] höchste Priorität ist, Fehler zu beseitigen, bevor neuer Code geschrieben wird. [...] Je länger Sie mit der Behebung eines Fehlers warten, desto kostspieliger (in Bezug auf Zeit und Geld) ist die Behebung im Allgemeinen .

Sie können sicher sein, dass es umso länger dauert, bis diese Fehler behoben sind, sobald sie Priorität haben. Anstatt jetzt einen Rohnutzen zu haben, vermeiden Sie in Zukunft einen kostspieligeren Verlust.

Eine gute Möglichkeit, dies zu handhaben, besteht darin, eine bestimmte Zeitspanne für die Bearbeitung von Rückstandsproblemen festzulegen. Dies würde nicht so viel Aufwand verursachen wie Microsoft, aber es wird sicherstellen, dass zukünftige Probleme behoben werden, wenn sie noch nicht Ihr Problem sind, auch wenn es den Kunden nicht wirklich interessiert.

Walfrat
quelle
3

In dem Bemühen, unseren Produktbesitzer von diesem Konzept zu überzeugen, konnte ich keine guten Ressourcen finden.

Angenommen, Sie arbeiten für eine kommerzielle Organisation, dann gibt es mit Sicherheit jemanden, der sich mit der Kosten-Nutzen-Analyse auskennt .

Ihre Organisation verfügt über eine begrenzte Menge an Entwicklerressourcen und eine unendliche Liste nützlicher Aufgaben. Zu diesen nützlichen Dingen gehört sowohl das Hinzufügen neuer Funktionen als auch das Entfernen vorhandener Fehler. Das Entfernen eines Fehlers verbessert die Software ebenso wie das Hinzufügen einer neuen Funktion.

Es ist also offensichtlich, dass Entscheidungen getroffen werden müssen, wie diese endliche Ressource dieser unendlichen Liste zugeordnet werden soll, und es ist nicht besonders überraschend, dass das Ergebnis ist, dass einige Fehler derzeit, in der nächsten Woche, im nächsten Jahr oder in der nächsten Woche nicht behoben werden Tatsache überhaupt.

Wenn Sie hier einen strukturierteren Ansatz suchen, können Sie das PEF / REV-System ausprobieren, das den Benutzer- und Programmiereransichten eines Fehlers Nummern zuweist , um zu entscheiden, was behoben wird - und was nicht.

Siehe auch diese beiden Beiträge hier auf Software Engineering:

Das Lösen der Fehler bietet den größten Kostenvorteil

Fast jeder gemeldete Fehler ist ein Fehler mit hoher Priorität

AakashM
quelle
2

Nicht alle unbeabsichtigten oder unerwünschten Aspekte des Softwareverhaltens sind Fehler. Wichtig ist, sicherzustellen, dass die Software über eine Reihe nützlicher und dokumentierter Bedingungen verfügt, unter denen eine nützliche Funktionsweise gewährleistet ist. Stellen Sie sich zum Beispiel ein Programm vor, das zwei Zahlen akzeptieren, multiplizieren und die Ergebnisse ausgeben soll und das eine falsche Zahl ausgibt, wenn das Ergebnis bei mehr als 9,95, aber weniger als 10,00, mehr als 99,95, aber weniger als 100,00 usw. Liegt Wenn das Programm zum Zweck der Verarbeitung von Zahlen geschrieben wurde, deren Produkt zwischen 3 und 7 lag, und niemals zur Verarbeitung anderer aufgefordert werden würde, würde das Reparieren seines Verhaltens mit 9,95 es für den beabsichtigten Zweck nicht nützlicher machen. Es kann jedoch sein, dass das Programm für andere Zwecke besser geeignet ist.

In einer Situation wie der oben beschriebenen gibt es zwei sinnvolle Vorgehensweisen:

  1. Beheben Sie das Problem, wenn dies praktisch ist.

  2. Geben Sie Bereiche an, in denen die Programmausgabe zuverlässig ist, und geben Sie an, dass das Programm nur für Daten geeignet ist, von denen bekannt ist, dass sie Werte innerhalb gültiger Bereiche liefern.

Ansatz 1 würde den Fehler beseitigen. Ansatz Nr. 2 macht den Fortschritt möglicherweise für einige Zwecke weniger geeignet als ansonsten. Wenn jedoch keine Programme zur Behandlung der problematischen Werte erforderlich sind, ist dies möglicherweise kein Problem.

Auch wenn die Unfähigkeit, die Werte 99,95 bis 100,0 richtig zu handhaben, auf einen Programmierfehler zurückzuführen ist (z. B. die Entscheidung, zwei Stellen links vom Dezimalpunkt auszugeben, bevor auf eine Stelle nach dieser Stelle gerundet wird, was 00,00 ergibt), sollte nur a berücksichtigt werden Fehler, wenn das Programm in solchen Fällen ansonsten als aussagekräftig bezeichnet würde. [Übrigens trat das oben erwähnte Problem im printf-Code von Turbo C 2.00 auf; in diesem Zusammenhang ist es eindeutig ein Fehler, aber Code, der den fehlerhaften printf aufruft, wäre nur fehlerhaft, wenn er Ausgaben in den problematischen Bereichen erzeugen könnte.

Superkatze
quelle
0

In einem losen Sinne müssen ja nicht alle Fehler behoben werden. Es geht darum, das Risiko-Nutzen-Verhältnis zu analysieren.

Was im Allgemeinen passiert, ist, dass das Unternehmen ein Treffen mit technischen Leitern und Interessenvertretern hat, um Fehler zu besprechen, die nicht unbedingt behoben werden müssen. Sie werden entscheiden, ob sich die Zeit (= Geld), die in die Behebung des Fehlers investiert wurde, für das Unternehmen lohnt.

Beispielsweise kann ein "kleiner Fehler" ein geringfügiger Rechtschreib- / Grammatikfehler im Abschnitt "Allgemeine Geschäftsbedingungen" einer Website sein. Die Person, die dies angesprochen hat, hält es möglicherweise für zu geringfügig, um es zu ändern, aber das Unternehmen würde erkennen, welchen potenziellen Schaden es für die Marke verursachen könnte und wie einfach es ist, einige Zeichen zu ändern.

Auf der anderen Seite könnten Sie einen Fehler haben, der wichtig erscheint, der jedoch schwer zu beheben ist und nur eine vernachlässigbare Anzahl von Benutzern betrifft. Beispielsweise ist ein untergeordneter Schaltflächenlink für Benutzer, die eine ältere Version von Google Chrome verwenden, nicht mehr funktionsfähig. Außerdem ist Javascript deaktiviert.

Andere Gründe, warum das Unternehmen einen Fehler NICHT behebt, könnten sein, dass die investierte Zeit das Projekt unerwartet lange zurückwirft oder dass die Zeit des Entwicklers besser für die Bearbeitung anderer Fehlerbehebungen / Programmierungen aufgewendet wird. Es kann auch sein, dass der Fehler geringfügig genug ist, um live geschaltet zu werden und zu einem späteren Zeitpunkt behoben zu werden.

Hoffe das erklärt das Konzept ein bisschen besser! Ich würde sicher davon absehen, allgemein darüber nachzudenken - jeder Fehler ist einzigartig und sollte als solcher behandelt werden.

Korthalion
quelle
-4

Denn wenn Sie die Prioritätenliste der Fehler durchgehen, wird der Anwendungsfall, der diesen Fehler verursacht, dunkler oder die Kundenzufriedenheit nimmt ab.

Also ist ihr "Argument" tatsächlich

Wenn Sie den Fehler lange genug ignorieren, wird der Benutzer das Problem vergessen oder einen Weg finden, es zu umgehen.

Bugs sollten genau wie neue Feature Requests priorisiert und "in der richtigen Reihenfolge" behandelt werden (wohl aber über letztere hinaus).

Phill W.
quelle
3
Nein, sein Argument ist, dass Bugs mit niedrigerer Priorität nur selten auftreten können und nicht wirklich viel zur Korrektur beitragen (z. B. wenn die Uhr auf Ihrer Website eine halbe Minute abläuft oder wenn Sie eine Website sind) Fehler um Mitternacht am ersten Januar an Benutzer in Moldawien)
Anzeigename