Frage

Ich habe noch nie geschrieben funktionale Spezifikationen, ziehe ich in den Code und Design Dinge zu springen, wie ich gehe. Bisher sein funktionierte gut, aber für ein letztes persönliches Projekt, das ich einige Spezifikationen auszuzuschreiben, die all Merkmale des Produkts beschreiben, und wie es soll ‚arbeiten‘, ohne ins Detail zu gehen, wie es umgesetzt wird, und ich bin finden es sehr wertvoll.

Was sind Ihre Gedanken, tun Sie schreiben Spezifikationen oder fangen Sie einfach Kodierung und planen, wie Sie gehen, und die Praxis ist besser?

War es hilfreich?

Lösung

Wenn Sie von zu Hause bis zum nächsten Lebensmittelgeschäft unterwegs sind, werden Sie wahrscheinlich nicht brauchen eine Karte. Aber ...

Wenn Sie an einen Ort, fahren du noch nie zuvor in einem anderen Zustand bist, haben Sie wahrscheinlich.

Wenn Sie sich um zufällig für den Fahrspaß fahren, brauchen Sie vermutlich keine Karte. Aber ...

Wenn Sie versuchen, irgendwo in der effektivste Art und Weise zu bekommen (Abstand minimieren, die Zeit zu minimieren, macht drei spezifische Stationen auf dem Weg, etc.) Sie wahrscheinlich tun.

Wenn Sie selbst unterwegs sind und können so lange dauern, wie Sie mögen, zu stoppen, immer wenn Sie etwas Interessantes oder zu überdenken Ihr Ziel oder eine Route zu sehen, können Sie nicht eine Karte benötigen. Aber ...

Wenn Sie sich als Teil eines Konvois fahren, und alle brauchen Nahrung und Übernachtungsmöglichkeiten machen hält zusammen, und müssen zusammenkommen, werden Sie wahrscheinlich tun.

Wenn Sie denken, ich spreche nicht über die Programmierung, Sie wahrscheinlich nicht brauchen eine funktionale Spezifikation, Geschichte Karten, Erzählung, CRCs, etc. Aber ...

Wenn Sie denken, ich bin, könnte man zumindest eine der oben zu betrachten.

; -)

Andere Tipps

Für jemanden, der „in den Code springt“ und „Design [s], wie sie gehen“, ich würde sagen, das Schreiben etwas mit einer funktionalen Spezifikation ist besser als die aktuellen Methoden. Viel Zeit und Mühe gespart werden, wenn Sie die Zeit nehmen, um es zu durchdenken und sie zu entwerfen, bevor Sie selbst starten.

  • Anforderungen helfen zu definieren, was Sie brauchen, um zu machen.
  • Design hilft definieren, was Sie auf Herstellung planen.
  • Benutzerdokumentation definiert, was du hast machen.

Sie werden feststellen, dass die meisten Plätze werden einige Variationen dieser drei Dokumente haben. Die funktionale Spezifikation kann in das Design-Dokument in einen Topf geworfen werden.

Ich würde empfehlen, lesen Rapid Development wenn Sie nicht überzeugt. Sie können wirklich Arbeit schneller erledigen, wenn Sie mehr Zeit für die Planung und Gestaltung nehmen.

Jumping „direkt zum Code“ für große Softwareprojekte würde fast sicher zum Scheitern führen (wie immediatley posing Ziegel Starten eine Brücke würde zu bauen).

Die Jungs von 37 Signalen würde sagen, dass besser ist, ein kurzes Dokument auf Papier zu schreiben, als ein Schreiben Komplex spec. Ich würde sagen, dass dies für spöttische schnell neue Websites wahr sein könnte (wo das Design und die Idee könnten besser als ein starres Schema führen), aber nicht immer akzeptabel in anderen Situationen der wirklichen Lebens.

Man denke nur an der (rechtlichen, auch) Bedeutung ein spec Dokument von Ihrem Kunden unterzeichnet hat.

Die Moral wahrscheinlich ist: sein flexibel , und planen mit funktionellen oder technischen Spezifikationen so viel wie Sie müssen nach Szenario Ihres Projekts

.

Für Einmal Hacks und kleine Dienstprogramme, kümmern sich nicht darum.

Aber wenn Sie eine schwere, große Anwendung zu schreiben, und haben anspruchsvolle Kunden und haben für eine lange Zeit laufen, dann ist es ein Muss. Lesen Sie Joels großen Artikel zu den Themen - sie ist ein guter Anfang ist

Ich mache es in beiden Richtungen, aber ich habe etwas von Test Driven Development gelernt ...

Wenn Sie in Codierung mit einer Roadmap gehen Sie bis zum Ende der Reise schneller ein verdammt viel bekommen, als Sie, wenn Sie nur zu Fuß die Straße hinunter starten, ohne eine Ahnung zu haben, wie es geht in der Mitte gabeln.

Sie müssen jedes Detail nicht aufschreiben, was jede Funktion tun wird, sondern definieren Sie Grundlagen, so dass die Art und Weise wissen Sie, was Sie getan sollte alles gut zusammen arbeiten.

Alles wird gesagt, ich brauchte eine Reihe von Ausnahmebehandler gestern zu schreiben, und ich tauchte nur direkt, ohne es zu Architekten zu versuchen, überhaupt aus. Vielleicht sollte ich meine eigenen Ratschläge nachzulesen;)

Was für eine Menge Leute will nicht zugeben oder zu erkennen ist, dass die Software-Entwicklung ist eine Engineering-Disziplin. Man kann viel gelernt werden, wie sie die Dinge angehen. Abbildung heraus, was Ihr in einer Anwendung zu tun, gehen nicht unbedingt lebenswichtig für kleine Projekte, wie es normalerweise leichter zu schnell ist zurück und fixieren Sie Ihre Fehler. Sie sehen nicht, wie viel Zeit verschwendet wird, im Vergleich zu aufschreiben, was das System zuerst tun wird.

In der Realität in großen Projekten seines fast notwendig Straßenkarte zu haben, wie das System funktioniert und was es tut. Nennen Sie es eine Functional Spec wenn man so will, aber in der Regel haben Sie etwas haben, die Ihnen zeigen können, warum folgt der Schritt b ein Schritt. Wir alle denken, wir denken, es kann im laufenden Betrieb (ich bin auf jeden Fall dafür zu schuldig), aber in Wirklichkeit ist es bringt uns Probleme. Denken Sie zurück und fragen Sie sich, wie oft Sie etwas gestoßen und sagte zu sich selbst „Mann, ich wünschte, ich hätte dieses früher gedacht?“ Oder jemand anderes sehen, was du getan hast, und zeigte Ihnen, dass Sie drei Schritte zu unternehmen haben könnte eine Aufgabe zu erfüllen, wo Sie 10. nahm

es Einlochen auf dem Papier wirklich zwingt Sie darüber nachdenken, was Ihr tun würde. Sobald es auf dem Papier ist, ist es kein nebulösen Gedanken mehr und dann kann man es auch dreht und bewerten, ob, was Sie wirklich dachten Sinn macht. ein ein seitiges Dokument zu ändern, ist einfacher als 5000 Zeilen Code zu ändern.

Wenn Sie in einem XP (oder ähnlich) Umgebung arbeiten, werden Sie mit Geschichten Entwicklung führen zusammen mit vielen Einheit und Flur useability Prüfung (Ich habe die Kool-Aid , nehme ich an).

Allerdings gibt es einen Bereich, in dem eine Spezifikation ist unbedingt erforderlich: wenn sie mit einem externen Team zu koordinieren. Ich hatte ein Projekt mit einer großen Versicherungsgesellschaft, wo wir benötigen, um eine Einigung über bestimmte Programmverhalten zu haben, einige Aspekte des Datenbank-Designs und eine Reihe von Datei-Layout. Ohne die spec war ich breit offen für eine kreative Interpretation dessen, was wir versprochen hatte. Das waren gute Leute - ich vertraute ihnen und gern mit ihnen zu arbeiten. Aber nach wie vor, ohne dass spec wäre es ein Todesmarsch gewesen sein. Mit der Spezifikation konnte, habe ich immer darauf hinweisen, wo sie von dem vereinbarten zu abgewichen waren Layout oder wo fragen sie für zusätzliche Maßarbeit ($$!). Wenn mit einer semi-antagonistischen Beziehung arbeitet, kann die Spezifikation Sie spart aus noch schlimmer:. Einer Klage

Ach ja, und ich stimme mit Kieveli. „Recht auf Code springen“ ist so gut wie nie eine gute Idee,

Ich würde sagen, es ist total „hängt“ von der Art des Problems. Ich neige dazu, mich zu fragen, bin ich es im Interesse der es oder für die Schichten über Sie schreiben. Ich hatte auch diskutiert diese und meine persönliche Erfahrung sagt, Sie sollten, da sie das Projekt auf dem richtigen Weg mit den Erwartungen halten (und nicht abgehend natürlich).

Ich mag alle nicht triviale Probleme losen auf dem Papier zersetzen zuerst, anstatt in Springen zu Code, für eine Reihe von Gründen;

  • Die Sachen, die ich auf dem Papier schreiben muss nicht kompilieren oder keinen Sinn für einen Computer
  • machen
  • Ich kann an beliebigen Abstraktionsebenen auf Papier arbeiten
  • Ich kann Bilder und Grafiken hinzufügen wirklich leicht
  • kann ich denke, durch und debuggen ein Konzept sehr schnell

Wenn das Problem, das ich mit zu tun habe ist wahrscheinlich entweder eine erhebliche Menge an Zeit zu beteiligen, oder eine Reihe von anderen Menschen, ich werde es als Umriss funktionale Spezifikation aufzuschreiben. Wenn ich von jemandem anderes bezahlt werden, um die Software zu entwickeln, und es gibt jeden mögliche Mehrdeutigkeit, werde ich genug extra Detail hinzufügen, um diese Mehrdeutigkeit zu entfernen. Ich mag auch für die Entwicklung von automatisierten Testfällen diese Dokumentation als Ausgangspunkt verwenden, sobald die Software geschrieben wurde.

Um es anders auszudrücken, schreibe ich genug von einer funktionalen Spezifikation die Software korrekt verstehe ich mich schreibe, und alle possibile Mehrdeutigkeiten für jedermann zu lösen anderen Beteiligten.

Ich fühle mich selten die Notwendigkeit einer funktionalen Spezifikation. OTOH Ich habe immer den Benutzer verantwortlich für die Funktion einen Anruf entfernt, so kann ich sie immer für funktionale Anforderungen abfragen, wie ich gehen.

Für mich eine funktionale Spezifikation ist eher ein politisches Werkzeug als technisches. Ich denke, wenn Sie eine spec haben, können Sie immer die spec Schuld, wenn Sie später Probleme bei der Umsetzung zu entdecken. Aber wer schuld ist wirklich nicht von Interesse für mich, das Problem wird noch da sein, auch wenn Sie einen Sündenbock finden, besser als die Umsetzung zu überdenken und versuchen, es richtig zu machen.

Es ist praktisch unmöglich, eine gute spec zu schreiben, da Sie genug von entweder nicht wirklich wissen, dem Problem oder den Werkzeugen oder zukünftiger Veränderungen in der Umwelt, es richtig zu tun.

Also ich denke, es ist viel wichtiger, einen agilen Ansatz für die Entwicklung und widmet genug Ressourcen und Zeit zu überdenken und Refactoring anzupassen, wie Sie gehen.

wichtig Es ist nicht, sie zu schreiben: Es gibt nichts Funktionelles über ein Functional Spec

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top