Wie schreibe ich eine funktionale Spezifikation?
Schreiben wir immer Funktionen oder Klassen und Ihre Logik ist sehr kompliziert.
Wenn es keine Spezifikation für diese Strukturen, später wird es schwer sein, für uns selbst zu begreifen, die Ideen.
Wie du schreibst Spezifikationen für komplizierte Funktionen und Klassen?
Bitte sagen Sie mir etwas über deine eigenen Erfahrungen, aber nicht nur einen link, Dank.
InformationsquelleAutor der Frage MemoryLeak | 2009-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finde ich die größte Herausforderung, die mit funktionellen Spezifikationen ist nicht das format direkt, sondern halten Sie in sync mit den Dingen, die Sie antreiben (Anforderungen) und die Dinge, die darauf aufbauen (Testfälle, Dokumentation).
Deshalb bevorzuge ich Griff dieses Thema mit einem modellbasierten Ansatz, anstatt eine Papier-getrieben.
Benutze ich ein UML-Modellierungswerkzeug (Enterprise Architect von Sparx Systems, aber viele tools, die so gut funktionieren) zu erfassen alle Artefakte des Projektes an einem Ort und erstellen Sie die traceability zwischen Ihnen. In Enterprise Architect kann ich Nachverfolgbarkeit von einer Anforderung Artefakt, ein design-Artefakt (zum Beispiel) nur darum, Sie beide auf dem gleichen Diagramm und erstellen einen Stecker von einem zum anderen mit einem ziehen mit der Maus.
Mein "Pflichtenheft" ist eigentlich eine Sammlung von Aktivitätsdiagrammen, eine pro use-case in das system. Jeder use-case-Beziehungen wieder auf eine oder mehrere Anforderungen, die erfordern, dass use-case. Auch end-Nutzer finden es einfach genug, zu Folgen, Aktivitätsdiagramme und validieren Sie (wie einfach ist es, um end-Benutzer zu Lesen, geschweige denn verstehen und zu validieren, einem traditionellen, Papier-basierten funktionalen Spezifikation?)
In einer ähnlichen Art und Weise, die ich erstellen kann die Rückverfolgbarkeit von meiner Tätigkeit Diagramme (use cases), um bestimmte design-Elemente wie Klassendiagramme.
QA-Modell der Testfälle und erstellen der Rückverfolgbarkeit von Ihrer Testfälle zu den Anwendungsfällen. So, wir sehen, ob es irgendwelche Anwendungsfälle, die nicht mit Testfällen (oder nicht genug Testfälle).
Die nette Sache über Enterprise Architect als Werkzeug ist, dass all diese Artefakte sind in einer SQL Datenbank gespeichert, so kann ich nur führen Sie einige Abfragen, die ich gebaut habe im Laufe der Zeit zu finden Artefakte mit nichts Ablaufverfolgung zu/von Ihnen.
InformationsquelleAutor der Antwort Eric J.
Check-out Joel on Software. Und hier. Und hier. Es gibt sogar ein real-Welt Beispiel.
InformationsquelleAutor der Antwort user47559
Sollten Sie auf die Forschung auf die folgenden Themen (nicht unbedingt in Reihenfolge):
Diese sind die häufigsten Ansätze für software-Projekte Spezifikation.
InformationsquelleAutor der Antwort rogeriopvl
Sehe ich einige Beschwerden über über links zu Joel ' s Zeug, eher als inline-text, also hier ist mein nehmen auf das, was er sagt.
Auf den höchsten Ebenen, Pflichtenhefte, Bedürfnisse zu kommunizieren, was das Programm zielt darauf ab, zu tun, um den Verbraucher oder Kunden. Ich bin 100% mit Joel auf: Englisch (gut!) Sprache mit strenge ist ein sehr mächtiges Werkzeug, dass alle Ihre Kunden werden von Experten bei der Verdauung. Experten in UML-Sie ist es nicht.
Einer top-level-functional specification-Dokument (FSD) bieten kann, einen logischen Rahmen, die erfasst die Anforderungen an das system innerhalb einer Logik Modelldass die Menschen verstehen können, leicht.
Reinen Anforderungen Dokumente - etwas, das vor einem FSD - sind eine heikle Fische zu behandeln. Nur sehr wenige Menschen in der Lage sind, geistlich zu unterscheiden, was ist eine Anforderung und was ist Teil der Lösung. Also am besten um damit die Anforderungen auf einem sehr hohen Niveau in der Tat, und als analyst, Fokus auf den FSD.
Die FSD sollte eine komplette top-level-Modell des Systems und der anschließenden design-Prozess über die Ausgestaltung einer Hierarchie von Modellen im detail. Die endgültige Detailtiefe echten code.
Die FSD sollte am Ende eine Reihe von einfachen englischen Anweisungen. Verwenden Sie eine einzelne überschrift Ebene-in den Dokumenten, halten ABS und die zwei Sätze, die max und die Anzahl jeweils ABS. Überprüfen Sie die paras und stellen Sie sicher, dass jeder etwas sagt, was nützlich ist. Wenn nicht, löschen Sie es. Kurz ist gut!
Denke sehr intensiv über die Sprache im FSD. Strikte Definitionen der wichtigsten Substantive in Ihrer Absätze. Diese Substantive werden Ihre Klassen. Die Verben, die Sie verwenden, werden die Klassenmethoden. Es ist wirklich ganz einfach!
Als Joel sagt, Sie schreiben Sätze wie Sie gehen, um zu kompilieren. Schreiben Sie zum Beispiel "Wenn Zeug passiert dann mehr tun", anstatt "Wenn Zeug passiert, mehr tun" oder "mehr tun, wenn Sachen passiert".
Diese Art geschrieben-Modelle profitieren von der Verwendung von speziellen Diagrammen, wie finite-state-Diagramme, aber hüten Sie denken, dass Sie können erfassen, ein system mit einer Reihe von UML-Diagrammen. Diese Dinge sind nicht nur leistungsstark, flexibel oder streng genug zu handeln, wie eine vollständige Beschreibung von sich selbst. Es ist viel effektiver, beginnen Sie mit einer Gliederung, geschrieben in der strengen englischen und Ergänzung, die als notwendig.
Als für die Probleme der iteration, in einer idealen Welt, sollten Sie nur brauchen, um Nacharbeit der unteren Ebenen des Modells. Wenn Sie eine änderung an der hohen, etwas ernsthaft falsch war. Für UML-Werkzeuge, die schneller zu ermöglichen revisting - Mohn-Hahn! Der Schlüssel ist, dass alle diese Beschreibungen sind KURZ und PRÄGNANT. Englisch ist der Weg zu gehen, denn wir haben alle übten dies so lange.
Habe ich Menschen gesehen, verbringen Sie einen Nachmittag versucht zu machen, die gerne von entity-Diagramme hübsch Aussehen, in Bezug auf die überlappenden Linien. Wie warum? Ist Ihre ultimative Lösung zwei-dimension-Felder und Linien? Nein! Und das ist das problem mit der UML: die Grafiken werden ein Ende in sich selbst, der Analytiker, und schneiden Sie von der Kunde, sondern als Unterstützung der Kommunikation.
InformationsquelleAutor der Antwort Herc