Ich sehe einige Beschwerden über Links zu Joels Sachen, anstatt Inline-Text, also hier ist meine Meinung zu dem, was er sagt.
Auf den höchsten Ebenen müssen funktionale Spezifikationen kommunizieren, was das Programm für den Verbraucher oder Kunden erreichen soll. Ich bin zu 100% mit Joel dabei: die englische (gut any!) Sprache, die mit Strenge verwendet wird, ist ein sehr leistungsfähiges Werkzeug, das alle Ihre Kunden Experten im Verdauen werden. Experten bei UML sind sie nicht.
Ein Top-Level-Funktionsspezifikationsdokument (FSD) kann einen logischen Rahmen bereitstellen, der die Anforderungen des Systems in einer Logik Modell erfasst, die die Leute leicht verstehen können.
Reine Anforderungsdokumente - etwas, das einem FSD vorausgeht - sind ein kniffliger Fisch. Sehr wenige Menschen sind in der Lage zu unterscheiden, was eine Anforderung und was Teil der Lösung ist. Am besten ist es, die Anforderungen auf einem sehr hohen Niveau zu halten und sich als Analytiker auf die FSD zu konzentrieren.
Der FSD sollte ein vollständiges Top-Level-Modell des Systems und ein nachfolgender Designprozess zur detaillierteren Modellierung einer Modellhierarchie sein. Die letzte Detailstufe ist echter Code.
Die FSD sollte eine Reihe von einfachen englischen Aussagen enden. Verwenden Sie eine einzelne Überschriftenebene in den Dokumenten, halten Sie paras auf maximal zwei Sätze und nummerieren Sie jedes para. Überprüfen Sie die Paras und stellen Sie sicher, dass jeder etwas Nützliches sagt. Wenn nicht, löschen Sie es. Kurz ist gut!
Denken Sie sehr intensiv über die Sprache in Ihrem FSD nach. Haben Sie strenge Definitionen von Schlüsselbegriffen in Ihren Absätzen. Diese Substantive werden zu deinen Klassen. Die verwendeten Verben werden zu Klassenmethoden. Es ist wirklich so einfach!
Wie Joel sagt, schreiben Sie Sätze, wie Sie sie kompilieren werden. Zum Beispiel schreiben Sie "Wenn stuff passiert dann mehr tun" anstatt "Wenn Sachen passiert, mehr tun" oder "mehr tun, wenn Sachen passiert".
Diese Arten von geschriebenen Modellen können von der Verwendung bestimmter Diagramme, wie z. B. endlicher Zustandsdiagramme, profitieren, aber denken Sie daran, dass Sie ein System mit einer Reihe von UML-Diagrammen erfassen können. Diese Dinge sind einfach nicht mächtig, flexibel oder streng genug, um selbst als vollständige Beschreibung zu dienen. Es ist viel effektiver, mit einem in strengem Englisch geschriebenen Entwurf zu beginnen und diesen bei Bedarf zu ergänzen.
Wie für die Probleme der Iteration, in einer idealen Welt sollten Sie nur die unteren Ebenen des Modells überarbeiten müssen. Wenn Sie die hohen Stufen ändern müssen, ist etwas Ernstes falsch. Wie für UML-Tools, die revising schneller - poppy-cock! Der Schlüssel ist, dass alle diese Beschreibungen KURZ und ÜBERLEGUNG sind. Englisch ist der Weg zu gehen, weil wir alle so lange geübt haben.
Ich habe Leute gesehen, die einen Nachmittag damit verbracht haben, Entity-Diagramme so aussehen zu lassen, dass sie sich in überlappenden Linien sehen lassen. Wie warum? Ist Ihre ultimative Lösung zweidimensionale Boxen und Linien? Nein! Und das ist das Problem mit UML: Die Diagramme werden für den Analytiker zum Selbstzweck und trennen Sie vom Kunden, anstatt die Kommunikation zu unterstützen.
Ich habe dein Englisch bearbeitet. Ich bin mir ziemlich sicher, dass ich weiß, was du meinst ... Ich werde nicht beleidigt sein, wenn du es zurück änderst. :-) –
Suchen Sie nach Tipps zum Schreiben von Spezifikationen für tatsächliche Codestrukturen oder für die rohen Benutzerfunktionen eines Programms? In meiner Firma werden tatsächliche Codestruktur-Spezifikationsdokumente als "Designspezifikationen" und Benutzerfunktionsbeschreibungen als "funktionale Spezifikationen" bezeichnet. Die Joel on Software-Antwort beschreibt die Benutzerfunktionsspezifikationen. –
Ich denke, ich brauche eine "Spec-Dokumente", Danke Paul Nathan – MemoryLeak