Ich verstehe, was sie bestimmen, aber ist es wirklich nützlich, diese den gefundenen Problemen zuzuordnen? Ich meine, es muss entweder schnell behoben werden oder nicht.
Ich weiß, wie man sie einstellt, kategorisiert usw. Ich weiß, dass IEEE / ISO dies erfordert. Ich verstehe einfach nicht warum.
Antworten:
Es ist absolut möglich, dass sich diese Werte unterscheiden. Wenn Sie einen Verkauf an eine wichtige Regierungsbehörde tätigen müssen, die eine hohe Leistung erfordert, aber niemals Modul X verwendet, ist es wirtschaftlich sehr sinnvoll, einen geringfügigen Datenbankverfügbarkeitsfehler früher als einen schwerwiegenden Fehler im X-Modul zu beheben. Grundsätzlich sind technische Gründe nicht der einzige Faktor, wenn Sie ein Software- Geschäft betreiben .
quelle
Datums- und Zeitfehler
Fehler: Die Verarbeitung zum Jahresende beschädigt Ihre Datenbank vollständig. Das ist eindeutig ein schwerer Fehler.
Datum: 15. Dezember. Der Fehler hat eine sehr hohe Priorität.
Datum: 1. Februar. Der Fehler hat eine niedrige Priorität.
Versehentlicher Start des Raketenwanzen
Fehler: Die ICBM-Steuerungssoftware kotzt, wenn sie vom 28. Februar bis zum 1. März in Jahren durch 4 teilbar ist. Das Ergebnis ist ein nicht befohlener Start.
Das ist ein so schwerwiegender Fehler wie möglich. Die Priorität ist jedoch sehr niedrig. Gibt es eine realistische Chance, dass die Software verwendet wird, wenn die Bedingung ausgelöst wird?
Versehentliche "schlechte" Wörter auf dem Bildschirm
Fehler: Nachrichten, die ihren Platz auf dem Bildschirm überschreiten, führen dazu, dass versehentlich ein profaner Verweis auf Bob angezeigt wird. (Reale Welt: Wir hatten Leute, die in der Abteilung "Final Ass" arbeiteten. "Ass" = "Assembly".)
Leider machen Sie morgen eine Präsentation, in der der Verkauf für das Unternehmen ein Kinderspiel ist. Sie halten die Präsentation für jemanden namens "Bob". Schweregrad: Sehr niedrig. Priorität: Sehr hoch.
quelle
Sie schrieben:
Das ist richtig. Wenn Sie jedoch wie die meisten Unternehmen sind, sind Ihre Ressourcen begrenzt. Entweder haben Sie nicht genug Leute, um alle Probleme zu beheben, oder Sie haben nicht genug Zeit.
Angesichts der Tatsache, dass ein Fehler entweder schnell behoben werden muss oder nicht und Sie viele Fehler haben, die behoben werden müssen, beantwortet "Priorität" die Frage "Welchen behebe ich zuerst"?
Der Schweregrad hingegen ist ein Indikator, der von der Person verwendet wird, die die Priorität festlegt. Aus Entwicklersicht ist der Schweregrad ein strittiger Punkt. Aus der Sicht des Auftraggebers ist der Schweregrad eine wichtige Information, die bei der Entscheidungsfindung hilft.
All dies sind natürlich sehr allgemeine Informationen. Wenn Sie ein Team mit einem unglaublich langen Rückstand an Fehlern sind, bedeuten Priorität und Schweregrad etwas völlig anderes als in einem Team mit einer nahezu leeren Fehlerdatenbank.
Wenn Sie in einem Team mit "hoher Schweregrad == hohe Priorität" arbeiten, spielt dies keine Rolle und Sie benötigen nicht beide Metriken. Letztendlich sind dies nur Werkzeuge. Ihr Team muss entscheiden, wie es sie verwendet. Für Ihr Team ist es möglicherweise nicht sinnvoll, beide zu verwenden.
quelle
IMHO, sowohl Priorität als auch Schweregrad zu setzen, ist nur Bürokratie.
In der Praxis benötigen Sie nur ein Maß für "Wichtigkeit". Oft wird Priorität dafür verwendet, und der Schweregrad wird dann als Fachbegriff wie "hoch = System stürzt ab oder macht es unbrauchbar", "mittel = fehlerhaftes Verhalten, potenziell schädlich", "niedrig = lästig, ärgerlich, aber harmlos" verwendet.
In der Regel geht die Priorität mit der Schwere einher. Einige Gegenbeispiele sind ein "Ärgernis, bei dem sich jeder immer beschwert" oder ein "Absturz, der einmal in einer exotischen Umgebung aufgetreten ist".
... aber am Ende müssen Sie als Entwickler (oder Manager usw.) nur wissen, in welcher Reihenfolge Sie die Dinge reparieren / verbessern sollten, das ist alles. Eine Maßnahme reicht also aus.
Die Notwendigkeit der Priorität ist klar: Es ist zu wissen, in welcher Reihenfolge die Fehlerberichte behandelt werden sollen. Der andere, IMHO wie üblich, ist Bürokratie. Warum brauchst du es? Es ist anscheinend nutzlos zum Sortieren, weil Priorität dies tut. Und die Konsequenzen (Schweregradbeschreibung) sind ohnehin im Fehlerbericht beschrieben.
Ich denke sogar, dass es schädlich ist, weil es weniger klar macht, welcher Fehler wichtiger ist:
quelle
Stellen Sie sich neben anderen Antworten das folgende Szenario vor: Die Behebung von Fehler A dauert 30 Minuten und hat einen "niedrigen" Schweregrad. Es kann mehr als 2 Wochen dauern, bis Fehler B behoben ist und einen hohen Schweregrad aufweist. Darüber hinaus kann Fehler B im Entwicklerteam und möglicherweise außerhalb des Teams viel Diskussion und Koordination erfordern. Fehler A kann sofort von einem einzelnen Entwickler behoben werden. Es ist vollkommen in Ordnung, Fehler A mit höherer Priorität zu versehen.
Natürlich können "Schweregrad" und "Priorität" unterschiedlich interpretiert werden.
In einem kleinen Bug-Tracker, den ich für meinen eigenen Gebrauch erstellt habe, habe ich stattdessen "Schwierigkeit" und "Priorität" bevorzugt, bei denen Probleme mit hohem Schweregrad immer die höchste Priorität haben, und ich könnte mich entscheiden, die Bearbeitung aufgrund von Schwierigkeiten zu verzögern.
Eine Sache, die ich an der Schwere nicht mag, ist, dass sie nur für Fehler und nicht für Funktionen gilt. Es ist möglicherweise besser, eine einzige Liste aller Themen zu haben, die nach Priorität und Schwierigkeitsgrad geordnet sind, da es direkter hilfreich ist, zu entscheiden, woran ich als Nächstes arbeite.
quelle
Ich habe Prozesse in einem Softwareunternehmen entworfen und implementiert, die nach ISO9001: 2007 zertifiziert sind. Der Standard wurde seit 2007 aktualisiert, daher gibt es möglicherweise zusätzliche Anforderungen, die mir nicht bekannt sind ... jedoch:
Mit der Norm ISO9001 soll sichergestellt werden, dass Ihr Unternehmen Prozesse mit Rückkopplungsschleifen zur Verbesserung des Prozesses entwirft und implementiert, wenn Produkt- und Prozessfehler festgestellt werden.
Während der Entwurfsphase konzentrieren sich die Anforderungen darauf, ob die vorgeschlagene Lösung bei korrekter Implementierung den Entwurfsauftrag tatsächlich lösen würde (Validierung) und ob die Implementierung tatsächlich fehlerfrei implementiert wurde (Überprüfung).
Wenn in der Rückkopplungsschleife Fehler erkannt werden, reicht es nicht aus, dass sie aufgezeichnet werden. Ein Defekt muss auch auf seinen Schweregrad untersucht und die Nacharbeit priorisiert werden.
Der entscheidende Teil ist, dass die Art und Weise, wie Ihr Unternehmen entscheidet, den Schweregrad zu bewerten und Entscheidungen über die Priorität zu treffen, nicht durch den ISO-Standard definiert ist. Es ist ein Handels- und Governance-Problem für das Unternehmen, zu entscheiden und zu dokumentieren.
Da dies als Anforderung in den Standard geschrieben ist, hat jedes zertifizierte Unternehmen einen Prozess zur Bewertung der Schwere eines Fehlers und einen Prozess zur Bestimmung der Priorität der Arbeit zur Behebung des Fehlers. Es sind definitiv zwei getrennte Entscheidungen, die getroffen werden müssen.
Der Schweregrad des Fehlers ist nur ein Datenpunkt. Auswirkungen auf den Kunden Ist ein weiterer Datenpunkt. Es werden auch Anstrengungen unternommen, um das Alter, das verbleibende Geschäftsleben des Produkts und alle anderen Faktoren, die das Unternehmen in seine Entscheidungsfindung einbezieht, zu beheben, Fehler zu beheben. Die eine Sache sollte nicht als „gegenwärtiger Fehler für den Produktmanager zur Entscheidung über die Priorität“ geschrieben werden, da dies nur die Befugnis definiert, die Entscheidung zu treffen, und nicht den Prozess, dem sie folgen, um die Entscheidung zu treffen.
Ich bevorzuge die Priorisierung, die darauf ausgerichtet ist, eine hohe Rate kleiner und wichtiger Änderungen zu erzielen, da dies den besten Beitrag zur allgemeinen Produktzuverlässigkeit zu leisten scheint. Dies bedeutet, dass ein schwerwiegender Fehler, dessen Behebung viel Arbeit erfordert, in kleinere Teile zerlegt werden muss, um eine ausreichende Priorität für die Planung zu erhalten.
quelle
Aus Gründen, die Priorität und Schweregrad stark unterscheiden:
Ein einfaches Beispiel. Stellen Sie sich vor, Sie haben eine enge Stelle, die eine Skalierung Ihres Systems verhindert - einige Algorithmen haben die Komplexität O (N ^ 3), wobei N die Anzahl der Kundenspeicher ist. Der Kunde sagt, dass im nächsten Jahr 200 neue Geschäfte eröffnet werden und die erforderlichen Berechnungen (Warenverteilung, Transportplanung usw.) nicht rechtzeitig abgeschlossen werden. Derzeit verfügt dieser Client jedoch nur über 30 Filialen, und die Ressourcen reichen aus. Die Aufgabe, diesen Algorithmus zu optimieren (auf O (N ^ 2) oder besser), ist definitiv wichtig (Sie verlieren den Client, wenn er nicht implementiert wird), aber wahrscheinlich nicht dringend: Sie haben einige Monate Zeit, um den neuen Algorithmus zu implementieren.
Beispiel 2: Eine Anwendung stürzt systematisch ab, diese Version wird jedoch aufgrund eines Upgrades oder einer Migration innerhalb weniger Tage nicht mehr verwendet. Das Beheben ist dringend, da Abstürze die Benutzererfahrung wirklich beeinträchtigen, aber von geringer Bedeutung sind.
Natürlich werden beide Parameter unter Verwendung einer Metrik (entweder formell oder informell) vereinheitlicht, um einen kurzfristigen Arbeitsplan zu erstellen, da letzterer eindimensional ist (Abfolge von Aufgaben). Langfristig sollen sie jedoch nicht vereinheitlicht werden.
quelle