Wir haben "Prioritäts" - und "Schwere" -Felder in unserem Fehlerverfolgungssystem. Wir definieren den Schweregrad als "Auswirkungen auf den Benutzer" und die Priorität als "Auswirkungen auf das Produkt".
Meine Frage bezieht sich darauf, wie eine Aufgabe zur Codeverbesserung nach Schweregrad und Priorität kategorisiert werden kann. Angenommen, die Verbesserung ändert kein Verhalten, macht es jedoch zu einem "besseren Code". Insgesamt erwarten wir eine langfristige Verbesserung der Wartung, die sich jedoch nur schwer quantifizieren lässt.
Wenn wir unsere Definitionen für Priorität und Schweregrad verwenden, erhält eine Codeverbesserung die niedrigsten Werte für beide, es sei denn, Sie bringen einige schwer vorhersehbare langfristige Vorteile in das Bild ein. Daher impliziert dies, dass die Code-Verbesserung eine gefährliche Aufgabe ist und niemals versucht werden sollte.
Ich halte es jedoch für entscheidend, den Code ständig zu verbessern und zu überarbeiten, weil:
- Die Softwareentwicklung selbst ist ein kontinuierlicher Lernprozess, und ohne eine Verbesserung des Codes kann man ihn nicht verbessern.
- Ein Team sollte stolz auf seinen Code sein.
- Zukünftige Wartungsarbeiten werden weniger Zeit in Anspruch nehmen und auf lange Sicht erhebliche Einsparungen bringen.
Oder glauben Sie, dass solche Aufgaben niemals erstellt und solche Verbesserungen nur "auf Anfrage" durchgeführt werden sollten, "wenn sie mit einem Fehler verbunden sind"? Wäre das nicht ein Diskussionspunkt bei einer Codeüberprüfung, auch wenn es sich um einen Fehler handelt, z. B. "Warum haben Sie diese drastische Strukturänderung vorgenommen?".
quelle
Wenn Sie Ihren Code überarbeiten möchten, legen Sie die Priorität der Aufgabe gemäß Ihrer Definition fest (z. B. "Auswirkungen auf das Produkt"). Einige Umgestaltungen wirken sich je nach Umfang der erforderlichen Arbeiten nicht wesentlich auf das Produkt aus, andere wiederum nicht. Wenn Sie eine höhere Priorität festlegen, müssen nach Abschluss des Refactorings weitere Tests durchgeführt werden, um sicherzustellen, dass keine unerwarteten Ereignisse aufgetreten sind.
Möglicherweise möchten Sie auch eine neue Kategorie in Ihr Bug-Tracking-System aufnehmen, um diese Art von Aufgaben als "Refactoring" -Aufgaben zu kategorisieren. Auf diese Weise können Sie den Prioritätswert interpretieren. Das heißt, eine höhere Priorität bedeutet eine größere Auswirkung, und daher sind mehr Tests erforderlich.
quelle
Was fehlt, ist die Überprüfung Ihrer Vermutungen über den vorhandenen Code: Wenn wir den Code verbessern, können weniger Zeit und erhebliche Einsparungen erzielt werden. Ist das kosmetisch oder gibt es ernste Probleme?
Überprüfen Sie Ihre Debugging- und Verbesserungsschätzungen. Wenn sie länger dauern und ständig Kommentare dazu eingehen, dass der Code zuerst überarbeitet oder bereinigt werden muss, ist dies möglicherweise die beste Messung. Dann können Sie Ihre Codebasis wie folgt identifizieren: Gut, muss geringfügig überarbeitet oder gründlich überarbeitet werden.
All dies ist relativ. Es ist schwierig, diese hohe Priorität einzuräumen, wenn Kunden mehr Funktionen wünschen und bereit sind, die abrechenbaren Stunden sofort zu bezahlen.
quelle
Interessante Frage.
Ich denke, Sie müssten abschätzen, wie viele Codezeilen und wie viele Module von einer Änderung betroffen sein könnten.
Vielleicht könnten Sie sich ansehen, wie viele Unit-Tests, wenn Sie sie haben, durch die Änderung kaputt gehen. Dies würde wahrscheinlich bedeuten, zuerst die Änderung in einer Zweigstelle zu versuchen, um eine Idee zu bekommen.
Geben Sie dann Schwellenwerte für die Priorität und den Schweregrad dieser Übereinstimmungsstufen an.
Sie sollten auch berücksichtigen, dass viele Tester-Tests beteiligt sein müssen. Wenn die Änderung eine große Oberfläche der App berührt, müssen möglicherweise viele Systemtests erneut durchgeführt werden.
quelle
Beginnen wir hier mit zwei Annahmen.
Angesichts dieser beiden Annahmen besteht niemals die Notwendigkeit einer expliziten "Code-Verbesserung". Ihr Code verbessert sich beim Schreiben des Systems. Dies bedeutet, dass nicht der gesamte Code Ihren neuesten und besten Standards für Wartbarkeit entspricht, sondern "Wenn er nicht kaputt ist, beheben Sie ihn nicht." Ich betrachte das Refactoring von Code, der nicht geändert werden muss, um "vergoldet" zu werden, ebenso wie das Hinzufügen nicht benötigter sichtbarer Funktionen. Wenn der Code in irgendeiner Weise beschädigt ist, schreiben Sie einen gültigen Test, der fehlschlägt. einen Fehler melden; und dann umgestalten, um diesen Fehler zu beheben.
quelle
Ich würde die Agile-Bewegung stehlen:
Geben Sie den Fehler ein, machen Sie grobe Vermutungen für Schwere und Priorität,
Überprüfen Sie dann täglich, wöchentlich oder monatlich alle neuen Bugs und stimmen Sie über deren Bewertungen ab. Idealerweise tun Sie dies während eines Sprint-Planungsmeetings mit Endbenutzern. Dann können Sie auch über die nächsten Features zu diesem Zeitpunkt sprechen und positiv sein,
quelle