Ich möchte erklären, warum die Spezifikation während des Entwicklungszeitraums nicht geändert werden darf

11

Ich möchte erklären, warum die Spezifikation während des Entwicklungszeitraums nicht an den neuen Mitarbeiter der Planungsabteilung geändert werden darf.

Sungguk Lim
quelle
4
Das Programmieren gegen ein sich bewegendes Ziel ist der halbe Spaß!
Anthony Pegram
1
Ich würde sagen, muss ein zu starker Begriff sein. Eine Spezifikation ist eine Blaupause, aber manchmal gibt es sehr gute Gründe, Änderungen vorzunehmen.
7
"Auf dem Wasser zu laufen und Software aus einer Spezifikation zu entwickeln, ist einfach, wenn beide eingefroren sind." - Edward V Berard
Jason Hall
1
Die meisten Spezifikationen ändern sich. Lassen Sie sie einfach wissen, dass sich ihre Änderungen höchstwahrscheinlich auf die Frist auswirken. Wenn wir an meinem Arbeitsplatz eine Spezifikation geben und eine Änderung erforderlich ist, müssen sie uns einen vollständigen Überblick über die Änderung geben, und wir geben die Zeit an, die dafür benötigt wird, und sie akzeptieren die Änderung entweder oder nicht (oder machen uns) bleib lange)
Johnny Quest
1
Wenn die Spezifikation geändert werden muss, entweder weil sich die Anforderungen geändert haben oder weil festgestellt wurde, dass sie falsch ist, sollte die Spezifikation so schnell wie möglich geändert werden. Stellen Sie einfach sicher, dass die Kosten der Änderung allen Parteien bekannt sind.
user16764

Antworten:

18

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.

DVK
quelle
Ist in Ordnung; Ich steckte es wieder hinein.
Ein weiterer Grund, die Spezifikationen nicht zu ändern, was paradoxerweise auch ein Grund ist, sie zu ändern, sind gesetzliche Anforderungen. Viele Software-Teile beschäftigen sich damit. Solange sich die Gesetze, mit denen sie sich zufrieden geben müssen, nicht ändern, sind diese Anforderungen statisch. Sobald sie sich ändern, ändern sich die Anforderungen. Und das liegt völlig außerhalb der Hände des Entwicklungsteams oder seiner Kunden (es sei denn, diese Kunden sind die Personen, die diese Gesetze direkt erlassen, was äußerst selten ist).
Jwenting
9

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.

tylerl
quelle
6

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.

Larry Watanabe
quelle
3

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.


quelle
Dies ist eine schlechte Analogie. Wir schreiben Software, weil sie viel einfacher zu ändern ist als ein Haus, zumindest wenn sie pro Benutzer berechnet wird. Software ist so viel einfacher zu ändern als ein Haus, dass das einzige, was sie gemeinsam haben, ist, dass beide menschliche Aktivitäten sind.
Kevin Cline