Was macht eine gute Spezifikation aus?
Einem der Elemente in der Joel-Test ist, dass ein Projekt/Unternehmen sollten eine Spezifikation.
Frage ich mich, was macht eine Skillung gut. Einige Unternehmen werden schreibvolumen von nutzlos-Spezifikation, die niemand jemals liest, andere schreiben nicht alles ab, denn "niemand wird Lesen, die es trotzdem". Also, was tun Sie in Ihrem spec? Was ist die gute balance zwischen den beiden extremen? Gibt es etwas, was besonders wichtig ist, dass wirklich, wirklich (!) sollte immer aufgezeichnet werden, in eine Spezifikation?
InformationsquelleAutor der Frage Candidasa | 2008-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die beste Skillung ist, dass
InformationsquelleAutor der Antwort Robert C. Barth
Was in einer spec -
Müssen Sie schauen, dass die Zuschauer von der Skillung und arbeiten heraus, was Sie wissen müssen. Ist es nur ein Dokument zwischen Ihnen und einem business-sponsor? In diesem Fall kann es wahrscheinlich ziemlich leicht. Wenn es eine funktionale Spezifikation für eine 100+ - Mann-Jahr J2EE-Projekt, wird es wahrscheinlich brauchen ein bisschen mehr detail.
Das Publikum
Die entscheidende Frage ist: wer soll das Lesen der spec - spec haben mehrere potenzielle Gruppen von Akteuren:
Den Unternehmer, der Unterzeichnung
schaltet die Anlage aus.
Den Entwickler, baut die
system (die möglicherweise oder möglicherweise nicht werden Sie)
QA-Leute, die schreiben, Testpläne.
Wartungspersonal zu wollen
das system verstehen
Entwickler oder Analysten auf andere Projekte, die
zur Integration anderer Systeme in die it.
Anforderungen von typischen key-Stakeholder:
Den Unternehmer muss eine klare Vorstellung von dem, was die system-workflows und Geschäftsregeln sind, so können Sie eine chance, zu verstehen, was Sie vereinbart haben. Wenn Sie sind die einzige große Publikum von der Skillung, konzentrieren sich auf die Benutzer-Schnittstelle-Bildschirm-screen-workflow-und business-und Daten-Validierungs-Regeln.
Entwickler müssen ein Daten-Modell, die Validierung von Daten Regeln, können einige oder alle der Benutzer-interface-design und genug Beschreibung des erwarteten Verhalten des Systems, so dass Sie wissen, was zu bauen. Wenn Sie sich schriftlich für die Entwickler konzentrieren sich auf die Benutzer-Schnittstelle, die Zuordnung zu Daten-Modell und Regeln in der Benutzeroberfläche. Diese sollte Ausführlicher sein, als wenn Sie die Entwicklung selbst, denn Sie handeln als Vermittler in der Kommunikation zwischen zwei Dritte.
Wenn Sie angeben, eine Schnittstelle zwischen zwei Systemen, dies muss sehr präzise sein.
QA-Mitarbeiter brauchen Sie genügend Informationen, um herauszufinden, wie zu testen und zu validieren, die Logik, die Validierung und die erwarteten Benutzer-Schnittstelle Verhalten der Anwendung. Eine Skillung gedacht für Entwickler und QA-Mitarbeiter sein muss, ziemlich eindeutig.
Wartungspersonal benötigen viel die gleichen Informationen wie Entwickler, plus einer system-roadmap-Dokument, das die Architektur beschreibt.
Integratoren müssen ein Daten-Modell und klare Definitionen der Schnittstellen.
Wichtige Komponenten einer spec:
Gehe ich davon aus, dass man Spezifikationen schreiben für business-apps, also der Inhalt unten ausgerichtet ist. Spezifikationen für andere Arten von Anlagen haben verschiedene Schwerpunkte. In meiner Erfahrung die wichtigsten Elemente einer funktionalen Spezifikation:
Benutzeroberfläche: - screen-mockups und eine Beschreibung der Interaktion Verhalten des Systems und workflow zwischen den Bildschirmen.
Daten Modell: Definition der Datenelemente und die Zuordnung zum user interface. User-interface-mappings werden in der Regel in den bits der spec Beschreibung der Benutzeroberfläche.
- Daten-Validierung und Business Rules:Was überprüft, für die Richtigkeit müssen gemacht werden, auf die Daten und welche Berechnungen gemacht werden, zusammen mit Definitionen. Beispiele können sein sehr nützlich hier.
Definitionen von Schnittstellen: Wenn Sie offen gelegten Schnittstellen, die andere Systeme nutzen können, müssen Sie diese ziemlich eng. Die einfacheren internet RFC ' s geben Recht gute Beispiele für Protokoll-Design und Lage ein guter start für die Beispiele der interface-Dokumente. Die klare Definition der Schnittstellen ist nicht einfach, aber fast sicher, sparen Sie sich Trauer auf die Strecke.
Kleber: dies ist, wo Anwendungsfälle, workflow-Diagramme und andere Anforderungen in Bezug Artefakte helfen. In der Regel eine umfassende Auflistung von diesen ist sinnlos, aber es werden wichtige Bereiche innerhalb der system, wo diese Art der Dokumentation hilft, legen Sie die Artikel in Kontext. Meine Erfahrung ist, dass die selektive Aufnahme von use cases und anderen Anforderungen, die level-Beschreibungen nicht viel hinzuzufügen, Klarheit und Sinn einer Skillung aber das schreiben einer user story für jede einzelne Interaktion mit dem system ist eine Verschwendung von Zeit.
Joel (on software' Ruhm) schrieb gute Serie von Artikeln auf dieser genannt Schmerzlos Funktionale Spezifikationdie ich habe, verwiesen die Menschen auf ein paar Gelegenheiten. Es ist ein ziemlich guter Artikel und ist es Wert, gelesen zu werden. Meiner Meinung nach, Ihr Ziel ist es, klar zu erklären, was das system tun soll, in einer Weise, die minimiert Mehrdeutigkeit. Es ist ganz nützlich, sich die Skillung als Referenz Dokument - was können die verschiedenen Akteure wollen in der Lage, leicht nachschlagen.
Geschrieben haben eine glatte Reihe von Punkten über die Spezifikationen, die klare Kommunikation Teil ist schwerer als es aussieht. Specs sind eigentlich nicht-trivialen, technischen Unterlagen und sind durchaus einen test von einer technischen schreiben und redaktionelle Fähigkeiten. Sie tatsächlich in das Geschäft des Schreibens Dokument, das beschreibt, was jemand soll, zu bauen. Gutes tun-Spezifikationen ist ein bisschen eine Kunst.
Den pay-off für das tun von Spezifikationen ist, dass niemand sonst will es tun. Wie du geschrieben hast, was ist wohl das einzige Dokument, das von Bedeutung für das system erhalten Sie, um zu rufen die Schüsse. Jemand mit einer agenda, die entweder lobby, die Sie zum ändern der Skillung oder irgendwie verhängen eine konkurrierende Spezifikation auf das Projekt. Dies ist ein gutes Beispiel von dem Stift wird mächtiger als das Schwert.
EDIT: Es ist meine Erfahrung gewesen, dass die Debatte über die Unterscheidung zwischen 'wie' und 'was' eher ziemlich egoistisch. Auf jedem nicht-trivialen Projekt, das Datenmodell und die Benutzeroberfläche werden durch mehrere Stakeholder, nicht alle von denen sind die Entwickler. Arbeiten im data-warehousing geben einem einen Geschmack für das chaos, das entsteht, wenn eine Anwendung Daten Modell darf sich ein frei für alle, und PFS sollte man ein Gefühl für den möglichen Akteuren eine spec hat, gerecht zu werden.
Die Tatsache, dass jemand besitzt ein Datenmodell oder user interface design bedeutet nicht, dass dies nur beschlossen, die fiat - es kann ein Diskurs-und aushandlungsprozess. Jedoch, als ein Projekt größer wird, wird der Wert des Eigentums und der Kohärenz in diesen wird größer. Es ist meine Beobachtung in der Vergangenheit, dass die beste Art und Weise zu schätzen den Wert guter analyst ist, um zu sehen, den Schaden, den eine schlechte.
InformationsquelleAutor der Antwort ConcernedOfTunbridgeWells
In meiner Erfahrung eine Skillung haben eine größere chance, gelesen, wenn es die folgenden:
Habe ich gesehen, in Unternehmen, in denen die person schreiben die Skillung nicht das system verstehen. Es ist fast eine Art und Weise des Lernens das system, indem Sie die spec. Dies endet meist in Tränen...
InformationsquelleAutor der Antwort JamesSugrue
Als jemand, der entwickelt maßgeschneiderte software für Kunden, die beste Skillung ist die, die der Kunde unterschrieben hat.
Ist es egal, wie raffiniert deine Skillung ist - wenn der Kunde nicht ausdrücklich schriftlich zugestimmt, werden Sie es ändern und erwarten, dass Sie Rollen mit Ihren änderungen nahtlos, wrecking Ihre schöne Architektur...
InformationsquelleAutor der Antwort Dan Vinton
Gute Angaben sollten enthalten Anforderungen, die messbar und überprüfbar sind. Beim Blick auf jede Anforderung, die Sie sollten in der Lage sein leicht die Frage beantworten, "Wie kann ich beweisen, ich habe erfüllt diese Anforderung?".
InformationsquelleAutor der Antwort dalesmithtx
Gelesen Joel-Reihe von "Schmerzlos Funktionalen Spezifikationen" followups der Joel-Test-Artikel. Sie erscheinen auch in der "Joel on Software" - Buch.
InformationsquelleAutor der Antwort Dave Ray
Hängt davon ab, wie groß das Projekt ist und (wie alle Architektur-Entscheidungen), was die Einschränkungen sind. Ein guter start ist
Grenzen, was die Interaktion mit der
system?
gegebenenfalls
nichtfunktionalen Anforderungen
(Leistung etc).
Best of all, ist um eine Abnahme, dh, eine überprüfbare Erklärung der Dinge, die überprüft werden kann, zusammen mit einer Vereinbarung, dass, wenn diese Dinge erledigt sind, wird das Projekt abgeschlossen ist.
InformationsquelleAutor der Antwort Charlie Martin
Es hilft auch, wenn Sie beginnen, durch die Angabe der Ziel Benutzer hat oder was die Globale Vorstellung von einer bestimmten Funktion, sondern als Füllung in die genaue Umsetzung. Dieser fühlt sich immer zu mir wie die Eingrenzung der Offenheit oder weniger kreative (mehr nutzbar) - Lösungen. So sollte man immer "alle Optionen offen".
Beispiel
Ihrem schreiben eine software nach Maß "X".
Statt, die besagt:
Es hat eine start-Taste und eine speichern-Schaltfläche.
Verwenden:
Der Benutzer muss in der Lage sein, starten Sie eine Messung durch und speichern Sie es.
Warum?
Weil in der ersten situation, die Sie bestimmt schon was mit der Lösung zu sein, während die zweite Lage gibt Ihnen die Flexibilität, auf wie etwas umzusetzen. Nun, dies mag trivial erscheinen, aber ich habe das Gefühl, die "Programmierer" dazu neigen zu denken, mehr in Lösungen statt in Problemen (oder Situationen). Wenn Sie weitere Funktionen hinzuzufügen, wird dies noch offensichtlicher, denn dann wäre es vielleicht besser gewesen, einen Assistenten verwenden, oder Sie automatisieren den Prozess, aber Sie bereits verengt die Idee kommt auf die Verwendung der Tasten.
InformationsquelleAutor der Antwort Ivo Flipse
Für funktionale Anforderungen—oder, genauer gesagt, Verhaltens-Anforderungen—ich mag die Gurke und Gewürzgurken.
Hier ist ein Beispiel für eine einfache und kurze Spezifikation für ein neues feature in einer einfachen mapping-Anwendung. Die Funktion ermöglicht es kleinen Unternehmen, um sich auf die mapping-Plattform und fügen Sie Ihre Niederlassung auf einer Google-Maps-ähnlichen Dienst.
Diese Spezifikation sieht deceivably einfach, aber ist in der Tat sehr mächtig.
Guten Spezifikationen sind klar, eindeutig und konkret. Sie brauchen nicht zu entschlüsseln, um funktionierenden code zu schreiben. Das ist genau das, was Gurke specs sind. Sie sind am besten gedient, kurz und einfach. Statt zu schreiben eine lange Arsch-Spezifikation Dokument, das Sie lassen die Spezifikation suite entwickeln zusammen mit Ihrem Produkt durch das schreiben neuer Spezifikationen in jeder iteration.
Gurke ist ein business-lesbare Sprache für das schreiben einer Spezifikation Dokumente basierend auf der Gegeben-Wenn-Dann-Vorlage. Die Vorlage kann in automatisierten Akzeptanz-tests. Die Automatisierung der Spezifikation gewährleistet bleibt up-to-date, weil das aufgenommene Gespräch ist, die direkt mit testen von code. Diese Art von tests kann verwendet werden, als Dokumentation, weil Gurken-features zu ändern, jedes mal, wenn der code ändert.
Wenn jeder business-Regel gegeben ist eine automatisierte test -, Gurken-Spezifikationen werden so genannte ausführbare Spezifikationen—Spezifikationen ausgeführt werden können, wie computer-Programme. Das Programm prüft, ob die Kriterien für die Annahme wurden korrekt umgesetzt. So am Ende des Tages, erhalten wir eine ja-oder-Nein-Antwort auf die Frage, ob unser Produkt ist eigentlich zu tun, was wir erwarten, es zu tun—die ist in sich sehr wertvoll, da es dazu beiträgt, dass software qualitativ besser.
Die direkte Verbindung zwischen Gurken Spezifikationen und testen von code oft reduziert den Schaden von Abfall durch die Schaffung und Pflege eines Systems des Lebens Dokumentation. Dank häufiger Validierung von tests in continuous integration Systemen, können Sie wissen, dass die Given-When-Thens sind noch immer aktuell—und wenn Sie Vertrauen in Ihre tests verwenden, können Sie die entsprechenden Gurke Spezifikationen als Dokumentation für das gesamte system.
In der Tat, es gibt eine ganze Methodik der sogenannten Spezifikation durch Beispiel-tools wie Gurke. Spezifikation durch Beispiel die Praktiken reduzieren die Möglichkeit für Missverständnisse und Nacharbeiten, indem Sie einen Rahmen für das Gespräch mit business Stakeholdern, indem Sie zu zwingen, konkrete, diskrete, eindeutig Beispiele, die in Ihrer Spezifikation Dokumente.
Wenn Sie möchten Lesen Sie mehr über Gurke, BDD, und die Spezifikation durch Beispiel, schrieb ich ein Buch über das Thema. "Das Schreiben Großer Daten" erforscht die Kunst des Schreibens tolle Szenarien und helfen Ihnen, ausführbare Spezifikationen zu einem wichtigen Teil Ihres Entwicklungsprozesses.
Wenn Sie interessiert sind, in Kauf - "Schreiben Großer Daten," Sie können sparen 39% mit dem promo-code 39nicieja2 🙂
InformationsquelleAutor der Antwort thion
Ich denke, dass das schreiben "Use cases" zu speichern, sollten Sie die Reihe von Seiten
InformationsquelleAutor der Antwort Chanakya
+1 @KiwiBastard und ich möchte hinzufügen, schreiben Kugel-gerne und machen jede Kugel getestet werden.
InformationsquelleAutor der Antwort kenny
Einer Blaupause, die beschreibt alle wesentlichen Informationen, die notwendig für die Implementierung, aber verschwendet keine Mühe auf die Beschreibung aller der triviale oder offensichtliche Informationen, die auch notwendig ist.
Sollte es nur sein, genügend Informationen, um sicherzustellen, dass die Umsetzung "wie erwartet", ohne zu viel zusätzlichen Lärm, die nicht notwendig ist.
In der Praxis, die meisten Menschen verstehen das falsch, da Sie sich auf die einfachen Sachen (das ist die am wenigsten notwendig) und Weg von den harten Sachen (das ist, was Sie wirklich wollen zu sperren). Ich habe gesehen, viel zu viele 2-Zoll-Dokumente, die ganz und gar den Punkt verpassen, und sehr wenige 3 Seite diejenigen, die es getroffen tot auf.
Spezifikationen müssen nicht lang sein, Sie müssen nur enthalten das Zeug!
(Tipp: wenn der Programmierer nicht anschauen, die Seite während dem Programmieren, es war wahrscheinlich nicht erforderlich)
Paul.
InformationsquelleAutor der Antwort Paul W Homer