Ich möchte erklären, warum die Spezifikation während des Entwicklungszeitraums nicht an den neuen Mitarbeiter der Planungsabteilung geändert werden darf.
Ich möchte erklären, warum die Spezifikation während des Entwicklungszeitraums nicht an den neuen Mitarbeiter der Planungsabteilung geändert werden darf.
Antworten:
Eine Spezifikation ändert sich fast immer während der Entwicklung für andere als die einfachsten Projekte.
Die Gründe sind:
Die Entwicklung oder wahrscheinlichere Integrationstests des Projekts decken Dinge auf, die bei der Erstellung der ursprünglichen Spezifikation nicht bemerkt wurden - von Randfällen bis hin zu wichtigen Aspekten. Beispielsweise bemerkt der Entwickler, dass möglicherweise nicht in der Reihenfolge befindliche Nachrichtenbestätigungen eintreffen.
Der reale Zustand, der die Spezifikation bestimmt, wird nicht eingefroren. Beispielsweise wird ein neues Finanzprodukt erstellt, das der Direktverarbeitungsspezifikation hinzugefügt werden muss.
Termindruck führt zum Beschneiden von Merkmalen.
Zusätzliche Stakeholder des Projekts werden entdeckt (z. B. wird in der Mitte des Projekts ein ähnliches Projekt in einem anderen Bereich entdeckt, und gemeinsame Subsysteme müssen zentralisiert / gemeinsam genutzt werden - dies ist mir in der Mitte des zweijährigen Projekts passiert, was zu einer erheblichen Wiederbelebung geführt hat Architektur).
Zusätzliche Sponsoren des Projekts haben neue Spezifikationsanforderungen (eines der bekanntesten Beispiele ist die Entwicklungsgeschichte des Bradley Fighting Vehicle).
Warum sich die technischen Änderungen nachteilig auswirken (Sie können nicht sagen, dass "nicht passieren darf", da es, wie Sie sehen, viele Gründe dafür gibt, fast alle außerhalb Ihrer Kontrolle und viele aus gutem Grund) -
Spezifikationsänderungen führen zu Codeänderungen und lenken Sie davon ab, die noch nicht geschriebenen Projektteile fertigzustellen (wie wir alle wissen und von Joel Spolsky evangelisiert, sind Fokusänderungen für Entwickler sehr schlecht).
Einige Spezifikationsänderungen (manchmal SEHR geringfügig) können dazu führen, dass das System komplett neu konstruiert / architektiert werden muss, da eine Auswahl zwischen zwei Architekturen auf der Grundlage einer aus der Spezifikation übernommenen Annahme getroffen wurde .
Im Falle von TDD kann ein großer Teil der in Tests eingesetzten Arbeit ungültig werden.
Wenn die Spezifikationsänderungen von zusätzlichen Stakeholdern stammen, wie oben erwähnt, können sie im Widerspruch zu bestehenden Spezifikationen stehen, was zu einer signifikanten Abnahme der Produktqualität führt (siehe Fighting Vehicle, Bradley).
Die Spezifikationsänderung verstößt möglicherweise gegen eine bestehende Geschäftsanforderung, die dem Wechsler / Anforderer möglicherweise nicht bekannt war oder die er nicht betreut hat (dies ist wirklich derselbe Punkt wie der letzte Aufzählungspunkt).
Dies alles ist natürlich ein verlängerter (manchmal erheblich) Liefertermin des Projekts und möglicherweise eine erhöhte Wahrscheinlichkeit von Fehlern.
Als bestes Beispiel dafür, wie eine geringfügige Änderung der Spezifikation zu extremen Problemen führen kann, habe ich drei Buchstaben für Sie:
Y2K .
Alles, was sie getan haben, war die Spezifikation zu ändern, um zu sagen " muss nach dem Jahr 2000 funktionieren ".
Darüber hinaus in einigen Situationen ist es tatsächlich der Fall ist, dass die Spezifikation MUST ändert nicht (im Gegensatz zu „nicht ohne Grund ändern“):
Ein Teil der Spezifikation ist (oder ist abhängig von) einer Spezifikation eines externen Systems, mit dem Schnittstellen verbunden sein müssen.
Ein Teil der Spezifikation ist (oder ist abhängig von) einer Hardware, auf der das System implementiert ist.
Vertragsanforderungen mit einem Kunden (obwohl die Einschränkung streng genommen darin besteht, die Spezifikation zu ändern, ohne zuerst die Änderungen mit dem Kunden durchzuarbeiten und den Vertrag zu ändern, im Gegensatz zu lediglich der Tatsache der Änderung)
Ein System muss möglicherweise bestimmte gesetzliche oder behördliche Anforderungen erfüllen, unabhängig von den Kundenpräferenzen. Beispiele: Kreditkartenverschlüsselung, Schutz von Steuerdaten.
Das Verbieten von Änderungen an der Spezifikation während der Entwicklung ist ideal für den Programmierer, aber in einer realen Umgebung nicht realistisch. Die Leute werden immer Änderungen vornehmen wollen, auch wenn das Ding aus der Tür verschickt wird. Es hört nie auf. Und einige dieser Leute unterschreiben möglicherweise Ihren Gehaltsscheck. Je mehr sie sich interessieren, desto mehr denken sie darüber nach und desto öfter möchten sie das Design überarbeiten. Sie müssen es tolerieren können, das Design vor der Fertigstellung zu ändern, auch wenn dies einen Neuanfang bedeutet.
Wichtig ist, die Konsequenzen von Änderungen klar zu kommunizieren, damit jeder realistische Erwartungen an den Designprozess hat.
Änderungen müssen ordnungsgemäß besprochen werden, und die für die Sache verantwortliche Person muss ein klares Verständnis dafür haben, welche Auswirkungen die Änderungen auf den Liefertermin haben werden. Um das zu bekommen, muss er mit dem Entwickler sprechen. Da jedoch eine fortlaufende Diskussion über Änderungen den Entwickler überschwemmt und verhindert, dass echte Arbeit geleistet wird, müssen die Änderungen in geplanten, seltenen Abständen in die Warteschlange gestellt und diskutiert werden. Das hoffen Sie natürlich.
Im Idealfall weisen Sie die Mitarbeiter an, die Änderungen, die sie vornehmen möchten, zu notieren und sie in der wöchentlichen / zweiwöchentlichen / monatlichen / beliebigen Koordinierungssitzung zur Sprache zu bringen. Während des Meetings wird jede Änderungsanforderung besprochen, einschließlich einer Diskussion der zugrunde liegenden Änderungen, die vorgenommen werden müssen, um die angeforderte Funktion zu implementieren, und damit die Auswirkungen auf das Abschlussdatum. Sobald die "Kosten" der Änderung festgelegt sind, können sie bestimmen, ob sie aufgenommen werden sollen oder nicht.
Das Wichtige, was dieser Prozess einführt, ist die Vorstellung, dass jede Änderung mit Kosten verbunden ist und die Kosten im Allgemeinen umso höher sind, je weiter das Projekt fortgeschritten ist, da mehr Arbeit dupliziert werden muss. Menschen, die nicht in der Entwicklung arbeiten, haben normalerweise keine Ahnung, wie viel eine Änderung kosten wird. Die einzige Möglichkeit für sie, dies zu sagen, besteht darin, es vorzuschlagen und Ihre Reaktion einzuschätzen. Das Erstellen eines genau definierten Überprüfungsprozesses für Änderungen hilft sowohl ihnen als auch Ihnen.
Beachten Sie, dass Programmierer entweder äußerst optimistisch sind, wie einfach eine Änderung ist, oder äußerst pessimistisch, wie unmöglich dies sein wird. Versuchen Sie herauszufinden, was Sie sind, indem Sie Ihre ursprünglichen Schätzungen mit den Ergebnissen vergleichen, und passen Sie sie entsprechend an.
Vielleicht ist es besser zu sagen, dass sich die Spezifikation nicht ohne eine gültige Änderungsanforderung und einen gültigen Änderungsprozess ändern darf. Das Anfordern einer Spezifikationsänderung hat Auswirkungen auf Zeitplan und Kosten, daher müssen diese bei der Genehmigung berücksichtigt werden.
Angesichts eines ordnungsgemäßen Änderungsmanagementprozesses ist das Ändern von Spezifikationen nichts "Falsches", aber es ist wahrscheinlich sehr teuer, sodass Ihre Kunden möglicherweise nicht allzu glücklich sind. Sie können sie vor sich selbst schützen, indem Sie versuchen, einige gute Anforderungen und Spezifikationen im Voraus zu erhalten, sodass weniger Änderungen erforderlich sind.
Die beste Analogie, die ich habe, ist es, sie mit dem Bau eines Hauses zu vergleichen. Der Architekt erstellt die Pläne und erstellt dann einen Kostenvoranschlag. Der Kunde stimmt dem Plan dann zu (oder auch nicht). Wenn der Kunde ein zusätzliches Badezimmer wünscht, wird die Arbeit eingestellt, die Pläne müssen geändert werden, ein neuer Kostenvoranschlag wird erstellt und der Kunde stimmt zu (oder nicht).
Das Schreiben von Software ist nicht anders. Sobald die Vereinbarung getroffen wurde (nach dem Entwurf und der Schätzung), müssen die Arbeiten unterbrochen werden, um einen neuen Plan erstellen zu können. Die neue Schätzung wird dann genehmigt (oder nicht), und die Arbeit wird fortgesetzt.
Wo immer ich sagte oder nicht, bedeutet entweder, dass das Projekt ohne die neuen Änderungen fortgesetzt wird. Natürlich gibt es immer Zeit und Material, um neue Pläne und Schätzungen zu erstellen.