Was tun Sie, wenn Sie in letzter Minute aufgefordert werden, eine Funktion von einer Version auszuschließen?


8

Es gibt eine Funktion, die die Abnahmetests sowohl intern als auch vom Kunden bereits bestanden hat. Es ist eine voll funktionsfähige Funktion. Es besteht jedoch jetzt die Aufforderung, diese Funktion von einer bevorstehenden Version auszuschließen. Nach Angaben des Kunden sollte diese Funktion entfernt werden, da die Benutzer nicht in der Verwendung geschult wurden.

Was ist die beste Vorgehensweise, um mit dieser Situation umzugehen? Sollten wir Software in der Erwartung entwerfen, dass eine Funktion in letzter Minute mithilfe der Konfigurationseinstellungen ausgeschlossen wird? Gibt es kontextabhängige Lösungen, die in bestimmten Situationen korrekter sind als in anderen?


1
Ich würde fragen, warum es in letzter Minute ausgeschlossen wurde.
Bernard

2
Es liegt oft an einem schwachen Management. Der Kunde hat entschieden, dass er für eine bestimmte Funktion nicht bereit ist, da er seine Benutzer nicht für den Start geschult hat. A informiert B usw. nicht, und der Kaskadeneffekt besteht darin, die Funktion aus der Version zu ziehen.
CarneyCode

11
Es ist besser als die häufigere Anforderung, eine Funktion in letzter Minute hinzuzufügen.
Martin Beckett

Das ist einfacher abzulehnen
CarneyCode

3
Verstecke diese Funktion einfach, damit sie zu einem Osterei wird.
Mouviciel

Antworten:


9
  1. Entfernen Sie die Dokumentation für die Funktion.
  2. Deaktivieren Sie die Benutzeroberfläche für die Funktion (Menüelemente ausblenden oder eine Option aus einem Konsolenbefehl entfernen).

Alles andere ist viel zu gefährlich.


6

Mein früherer Arbeitgeber verkauft Software, die je nach Lizenz unterschiedliche Funktionen ermöglicht. Daher war die Möglichkeit, Funktionen zur Laufzeit zu aktivieren / deaktivieren, eine integrierte Funktion. Im Allgemeinen nennen die Leute dies "funktionsgetriebene Entwicklung" ( Wikipedia-Artikel , anständiges Buch zu diesem Thema ). Es sind viele Tests erforderlich , um Fehler zu finden, die durch das Ein- und Ausschalten von Funktionen verursacht werden können. Da die meisten Mitarbeiter im Büro einen Lizenzschlüssel für alle Funktionen generieren, werden die eingeschränkten Funktionen in der Regel nur unzureichend genutzt (und bei mehr als einer Gelegenheit erst getestet, wenn ein Kunde den Helpdesk angerufen hat).

Für Ihre "Korrektur" in letzter Minute besteht die schnellste Lösung darin, die Menü- / Hotkey- / Tastenbefehle auszublenden, mit denen diese Funktion aktiviert wird. Dies führt zu anderen Fehlern . Seien Sie mit Ihren Kunden und Projektmanagern ganz vorne mit dabei.


1
Diese Politik der
Alternative

4

Ich würde niemals Code so schreiben, dass Funktionen ein- oder ausgeschaltet werden können - es sei denn, diese Anforderung wurde im Voraus festgelegt.

Das Entfernen oder Deaktivieren einer Funktion ist eine Änderung der Spezifikation und erfordert wie jede andere Spezifikationsänderung Zeit zum Implementieren und Überprüfen. Sie müssen sich fragen, warum die Funktion ausgeschlossen wird - ist sie immer noch zu fehlerhaft, um veröffentlicht zu werden? Möchte der Client diese Funktion überhaupt nicht? Gibt es einen geschäftlichen Grund, die Funktion zu verzögern?

Insbesondere in dem Fall, in dem die Funktion als "zu fehlerhaft" für die Veröffentlichung wahrgenommen wird, müssen Sie sich darüber im Klaren sein, ob diese Funktion "fehlerhaft" ist oder ob die Veröffentlichung insgesamt noch nicht zur Veröffentlichung bereit ist und Diese spezielle Funktion ist nur die, bei der die Probleme am häufigsten auftreten. In diesem Fall hilft Ihnen das Deaktivieren dieser Funktion nicht sehr ...


Die Funktion wurde sowohl intern als auch vom Kunden bereits UAT. Es ist also eine anscheinend voll funktionsfähige Funktion. Wie auch immer, ich werde meine Frage bearbeiten.
CarneyCode

3
Wenn Sie sich Ihren Kommentar zu der Frage ansehen, würde ich sagen, dass Sie die Veröffentlichung verzögern und zumindest die UAT-Phase erneut ausführen müssen. Ich vermute, dass der Kunde dies wahrscheinlich nicht tun möchte, aber Sie müssen ihm mitteilen, dass das Entfernen von Funktionen für die Software genauso störend ist wie das Hinzufügen von Funktionen.
Dean Harding

1
Denken Sie daran, dass umschaltbare Funktionen wirklich mit verschiedenen Kombinationen von Schaltern getestet werden sollten, um Fälle zu finden, in denen eine Funktion zufällig von einer anderen abhängt. Wenn Sie dies richtig machen, müssen Sie alle möglichen Kombinationen im Voraus vorbereiten.
David Thornley

3

Wir antworten auf Last-Minute-Anfragen, indem wir besprechen, wie wichtig die Änderung für den Kunden ist. Wenn Sie unmittelbar vor dem Roll-out größere Änderungen vornehmen, wird die gesamte Test- und Akzeptanzphase ungültig. Daher verschieben wir entweder die Änderungsanforderung auf eine spätere Version oder verschieben das Roll-out-Datum, damit die Änderung in letzter Minute korrekt getestet werden kann (Kunden) haben sich oft dafür entschieden, die Änderung auf die nächste Version zu verschieben, wenn sie erfahren, dass die Alternative darin besteht, das Roll-out-Datum zu verschieben :-))

Die optionale Funktionalität wird am besten (imho) über die Konfiguration ein- und ausgeschaltet. Wie Sie bereits erwähnt haben, muss dies von Anfang an gestaltet werden.


2

Ich musste dies in der Vergangenheit tun, manchmal mit Funktionen, die es in die Produktion geschafft haben und sich als Katastrophe herausstellten. Ich habe alle folgenden Schritte ausgeführt.

1) Konfigurationsänderung zum Deaktivieren der Funktion. Funktioniert dort, wo es konfigurierbar ist. 2) Deaktivieren / entfernen Sie alle UI-Entitäten, die die Funktion auslösen. 3) Deaktivieren Sie den Code in der Funktion, damit er nichts tut (aber anscheinend funktioniert). Wir mussten dies tun, wenn wir keinen Zugriff auf den GUI-Shell-Code hatten.

In Bezug auf die Frage, ob Sie Funktionen zum Ein- oder Ausschalten von Funktionen entwerfen sollten, würde ich das Gesamtbild und die Art und Weise betrachten, wie Sie derzeit Funktionen hinzufügen. Es ist kein großer Schritt, Features zu Modulen zu machen, die im schlimmsten Fall dynamisch entdeckt werden. Ich mag modular, also neige ich dazu, diesen Weg zu gehen.


1

Manchmal können Sie eine Funktion als kurzfristige Problemumgehung unzugänglich machen, einfacher als sie tatsächlich zu entfernen. Überprüfen Sie, ob sichtbare Artefakte zulässig sind (z. B. sichtbare, aber deaktivierte Schaltflächen und Menüoptionen).

Sie sollten eine Funktion nur dann leicht umschaltbar machen , wenn Benutzer / Administratoren die Funktion ein- und ausschalten können müssen.

Wenn es einfach genug ist, dass es Ihnen nichts ausmacht, es in Erwartung zu tun, ist es wahrscheinlich genauso einfach, es zu tun, wenn Sie wissen, dass es benötigt wird, und etwas einfacher, es wieder herauszuziehen.

Wenn Sie die Funktion nicht deaktivieren können, ohne dass ein erhebliches Risiko besteht, dass neue Fehler auftreten, teilen Sie dies den Benutzern mit. Andernfalls melden Sie sich freiwillig als Sündenbock, wenn die unvermeidlichen Probleme auftreten, obwohl das eigentliche Problem darin besteht, was auch immer zu dieser Änderung der Anforderungen in letzter Minute geführt hat.


1

Aufgrund Ihrer Änderungen werde ich vermuten, dass dies eine ziemlich wichtige Funktion war. Das Entfernen kann sich auf andere Teile des Systems auswirken. Der Kunde sollte wirklich nicht erwarten können, dass er grundlegende Änderungen am System anfordern kann, ohne dass Kosten entstehen. In diesem Fall müssen Sie dies irgendwie deaktivieren (möglicherweise nur durch Auskommentieren großer Codeflächen) und anschließend erneut testen, um sicherzustellen, dass nichts kaputt ist.

Der einfachste Weg, eine solche Funktion zu "deaktivieren", besteht darin, die Einstiegspunkte auf der höchsten Ebene zu entfernen / auskommentieren. Beispiel: Wenn der einzige Einstiegspunkt für das Feature eine Schaltfläche auf der Benutzeroberfläche ist, kommentieren Sie einfach die Zeile aus, in der die Schaltfläche erstellt wird. Wenn es mehrere Einstiegspunkte gibt, müssen Sie möglicherweise tiefer graben, um sie zu deaktivieren.


0

Kommt sehr darauf an, ob es gefährlich fehlerhaft / kaputt / unerwünscht ist

Wenn es nichts Unsicheres tun kann und es nur aus Gründen der Benutzerfreundlichkeit, mangelnder Schulungsunterlagen oder weil es defekt ist, entfernen wir normalerweise einfach den Einstiegspunkt für diese Funktion von der Benutzeroberfläche und lassen alles andere an Ort und Stelle.

Wenn es gefährlich fehlerhaft ist, tun wir dies und fügen der Kerngeschäftslogik explizite Ausnahmen hinzu, damit es nicht ausgeführt werden kann.

Das Schlimmste ist, wenn das Feature unerwünscht ist (regulatorische Änderungen machen das Konzept beispielsweise illegal) und alle Verweise auf das Feature vollständig entfernt werden müssen.

Wenn Sie sich in der Liste nach unten bewegen, steigt das Fehlerpotential. Abhängig von Ihrer Situation können die erste oder die ersten beiden Optionen schnell umgesetzt werden, die dritte fast nie.

Was das Entwerfen der Funktionsschalter betrifft, es sei denn, der Kunde möchte, dass ich normalerweise nicht in diese Richtung gehe, bis der Kunde nachweislich zu spät eine solche Wahl getroffen hat.


0

Ich gehe davon aus, dass das Management diese Funktion als kostenpflichtiges Add-On verkauft hat und dass der Kunde in letzter Minute sagte, dass er das Add-On nicht bezahlen möchte (wahrscheinlich wird ihm klar, dass es das Geld nicht wert ist).

In Anbetracht dessen hat das Management es vermasselt.


0

Ich habe mit einer Reihe von Systemen gearbeitet, bei denen der Zugriff auf Funktionen durch Sicherheitseinstellungen gesteuert wurde. Dies macht das Deaktivieren dieser Art von Funktionen relativ trivial. Aktivieren Sie die Funktion nur nicht für Sicherheitsgruppen. Sofern die Funktion nicht für alle aktiviert war, wurden Tests mit deaktivierter Funktion durchgeführt.

Andere Funktionen, die leicht deaktiviert werden können, sind an Codewerte gebunden. Diese behandeln im Allgemeinen einen bestimmten Fall von etwas wie einem Produkt, einem Kunden oder was auch immer. Das Deaktivieren dieser Funktionen kann erfolgen, indem die zugehörigen Codewerte nicht aktiviert werden.

Wie andere angemerkt haben, verfügen einige Funktionen über bestimmte Einstiegspunkte für die Benutzeroberfläche, die entfernt werden können. (Die oben genannten Fälle können Sonderfälle sein.) Durch Entfernen der Einstiegspunkte sollten Sie die Funktion versenden können, ohne den Zugriff zu aktivieren. Dies ist normalerweise die am wenigsten riskante Methode, um diesen Fall zu behandeln.

Wenn Features für Feature-Zweige entwickelt werden, sollten Sie in der Lage sein, das Zusammenführen des Feature-Zweigs zu entfernen und erneut zu testen. Dies sollte einfacher sein als andere Methoden zum Deaktivieren des Codes. Durch das Erstellen eines Patches zum Entfernen von Features wird das spätere erneute Aktivieren des Features vereinfacht. Dies gibt Ihnen ein ungefähres Äquivalent eines Feature-Zweigs.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.