2008-09-29 8 views
6

Mir wurde beigebracht, Diagramme in UML zu zeichnen, um die Interaktionen zwischen Klassen, Objekten und Teilnehmern/System und so weiter zu sehen. Ich habe jedoch mehrere Antworten darauf gefunden, dass die UML ein Dokumentationswerkzeug und kein Design-Tool ist.Wenn Sie nicht in UML entwerfen, wofür entwerfen Sie dann?

Wie werden Designs grafisch dargestellt, wenn Sie UML nicht verwenden?

+0

Warum nicht wie die meisten Menschen, Code zuerst, Design später? : P – davr

+2

Weil ich ein Softwareentwickler bin und einen technischen Prozess bevorzuge. Ich mag zwar die agilen Ansätze mit minimalem Design im Vordergrund. Ich bin kein Fan von BDUF. Es endet normalerweise in deinem Gesicht. –

+0

Bah, hast du noch nicht gehört, dass "eine Woche Kodierung dir eine Stunde Design ersparen wird" als die Rechtfertigung für "Code zuerst, Design später"? :) – workmad3

Antwort

8

Scott Ambler verfügt über eine great table on his website, die alle Diagramme auflistet, die normalerweise in Softwareprojekten verwendet werden, mit Links zu Beispielen.

Ich finde die UML-Diagramme nützlich, bin aber ständig verärgert über die Mentalität "everythings a box".

BEARBEITEN: Ich neige dazu, so viel wie möglich von UML-Modellierungswerkzeugen wegzubleiben, weil das Erstellen eines formalen Diagramms zwangsläufig Druck erzeugt, es zu polieren, bis es wie ein Qualitätsprodukt aussieht (unabhängig davon, wie viel Wert es ist) im Diagramm selbst).

Es hilft nicht, dass bis vor kurzem die meisten UML-Editoren wenig Hilfe beim Aufräumen von Diagrammen, z. Zeichnen Sie eine gerade Linie zwischen zwei Boxen und ein "Knick" erscheint in der Mitte, weil die Elemente nicht absolut horizontal sind. Ich habe gesehen, wie Entwickler Stunden damit verschwendet haben, alle Zeilen horizontal oder um 45 Grad zu drehen. Mein persönlicher Lieblingseditor ist MagicDraw, aber Enterprise Architect scheint sehr populär zu sein, also benutze ich es auch sehr.

Wenn ich innerhalb des Teams keine Modellierung ich UML + DFD + Skizzen User Interface bis jeder glücklich ist, dann nehmen Sie ein digitales Foto und schicken Sie es auf der Projekt-Website. Wenn es sich als sehr nützlich erweist, kann es lange genug dauern, um "formalisiert" zu werden - aber die meisten nicht.

+0

Ich möchte, dass die Leute (vielleicht Sie) das weiter ausführen. Welche Werkzeuge sind verfügbar, um diese Diagramme zu erfassen? Ich verwende derzeit StarUML, also schaue ich mir an, ob es andere Dokumenttypen erfassen kann, aber ich würde gerne wissen, wie Sie oder andere die Nicht-UML-Diagramme erfassen. –

+0

Die Tabelle enthält, welche Software verwendet wird. Allerdings sehe ich sehr wenig in der Liste, die direkt mit UML konkurriert; Die meisten Formate scheinen Teil von UML zu sein oder haben direkte Analogien in UML. –

+0

Ich hasste die Verwendung von UML-Tools, bis ich http://yuml.me/ gefunden habe, die eine Art von DSL zur Beschreibung von UML-Diagrammen bietet. Kein Mausfiedeln mehr :-). – helpermethod

3

Ich benutze schnelle UML-esque Skizzen als Design-Tool, und dann vollständige UML-Diagramme aus Code als Dokumentation generiert. Ein vollständiges, genaues UML-Diagramm als Design ist nicht wirklich möglich (zumindest nicht, bis UML eine vollständige grafische Programmiersprache ist), daher scheint dies die beste Methode für mich zu sein.

+0

So haben Sie eine Art von UML-Diagrammen (wenn auch vielleicht unvollständig), wenn Sie beginnen, zeigen die wichtigsten Klassen/Akteure/Systeme/Subsysteme und so weiter? –

9

Ich neige dazu, Stift (cil) und Papier zu verwenden. Oder möglicherweise Sticky Notes und Whiteboard, je nach Komplexität.


Expanded Beispiele von dem, was ich bin jetzt tun:

  • Mein aktuelles Arbeit Projektdesign als Workflow-Typ Diagramm auf meinem Whiteboard, mit Stickies umgesetzt wird. Die Stickies stellen dar, wo im Workflow bestimmte Operationen stattfinden und welche Schnittstellen beteiligt sein sollten. Das System beginnt auf einer Seite, folgt verschiedenen Pfaden von links nach rechts und kommt auf der anderen Seite heraus.
  • Meine Spiel-Projekt läuft auf GAE, die tendenziell zu mehr interessante Datenobjekte, mit einigen Duplizierung innerhalb Ihres Modells für Leistung Willen (Mangel an JOINs) schieben. Meine Entwürfe für dieses Projekt beinhalten tendenziell eine grundlegende Skizze einer Ansicht und eine Übersicht über die Modellobjekte, die verwendet werden, einschließlich ihrer Eigenschaften, um sicherzustellen, dass ich alles habe, was ich brauche. Es gibt keine Links zwischen den Klassen, da ich nicht aus irgendeinem Grund ein paar Objekte durchqueren muss, aus Angst, vom Google Quota Watchdog gequetscht zu werden.
+0

Was Sie auf diese Medien setzen? Ich denke, es ist etwas UML wie (obwohl es nicht jede Regel in der UML-Buch der Gesetze folgen kann) –

+0

Hoffe die Klarstellungen helfen. –

+0

Ja, tut es. Danke, –

11

Kästen und Pfeile auf Papier oder Whiteboard. Alle Gepäck UML Kräfte auf Sie ist in vielen Situationen Overkill, besonders in den frühen Phasen eines Designs.

Natürlich gibt es eine Ebene, nach ein paar Iterationen, wenn es beginnt, nützlich (und sogar notwendig) zu Dokument die vorherigen Entscheidungen im Detail mit einem Standardformat.

1

UML ist ein Dokumentationswerkzeug und kein Designwerkzeug.

Ich würde Mist auf diese Aussage nennen. UML ist eine bewährte Konstruktionsnotation, bietet eine große Tiefe in den verschiedenen Diagrammen und ist standardisiert. Es ist großartig, wenn Sie ein großes Team haben und sicherstellen müssen, dass sich alle hinsichtlich der Architekturentscheidungen auf derselben Seite befinden.

Ich rate, wer diese Aussage gemacht hat, ist einfach müde von UML, versteht nicht, wie man es benutzt, oder beides.

+0

An alle, die negative Antworten auf meine Antwort geben, bitte verteidige dich selbst, indem du einen Kommentar hinzufügst – Huuuze

+1

Ich habe dich nicht abgelehnt, aber ich würde gerne wissen, auf welche Weise UML eine "Design-Methode" ist? eine notiz. –

+0

Sie sind richtig. Mein Eifer zu schreiben führte mich zu der falschen Begriff. – Huuuze

3

UML ist eine Sprache der Kommunikation. Wenn Leute sagen, sie benutzen Kästchen und Pfeile auf Papier, benutzen sie entweder UML oder sie benutzen etwas, was sie jedem erklären müssen, mit dem sie sprechen.

Wenn sie nur mit sich selbst reden, dann sollten sie wahrscheinlich nicht Design machen - Design braucht genetische Vielfalt, wenn es nicht hirngeschädigt wird, ist mir egal, wie gut der Architekt ist .

2

, einige große Worte über Software Engineering, von Richard Feynman, kann here finden. Wirklich eine Lektion auswendig zu nehmen ...

EDIT: bewegte mein Geschwafel unten ... besser zu Feynman zu hören! :)

IMHO gibt es viele Design-Entscheidungen, die schlecht von UML bedient werden.

UML ist in Ordnung, wenn nicht übertrieben ist! Vielleicht sind einige schnelle Skizzen der erste Schritt, der später zu vollständiger UML verfeinert wurde.

Bitte lesen Sie nicht die Top-Down-Methode, die UML (tendiert dazu), zu viel zu ermutigen (wieder IMHO).

1

ich mit dem Whiteboard zu starten, dann gehe ich zu GraphViz einmal das Design hat sich stabilisiert. Es ist einfach, die Quelle mit anderen zu teilen, um alternative Ideen zu untersuchen oder Rollen zu klären.

Dann können Sie eine Kopie der graphviz Quelle offen halten in Ihrem Editor und optimieren Sie das Diagramm, wie Sie die Details Strom mit Ihrem Code zu halten, gehen.

0

Ich habe es nützlich gefunden in Bücher wie this beschrieben in Bezug auf die Baustile zu denken, wenn ich Projekte entworfen haben.

2

Ich denke, die meisten Leute beginnen mit dem Zeichnen von Freiformdiagrammen, die im Grunde UML sind, aber nicht so starr oder wohldefiniert.

Wenn die Diagramme müssen über diese Stufe hinaus fortschreiten, dann können sie in die richtige UML-Diagramme gedreht werden, die allen Regeln einzuhalten.

Ich habe sehr wenige Alternativen zu UML-Diagrammen gesehen. Die meisten von ihnen scheinen ältere Formate zu sein, die direkte Nachfolger in UML haben.

(BTW weigere ich mich unbedingt immer „UML“ in Satz Mangeln Weise zu schreiben!)

+0

Ich würde die Freiformdiagramme "Mind-Maps" nennen. – slashmais

2

ein Blatt Papier und einen Bleistift

0

Ich versuche, im Allgemeinen mit einem simplen Skizze auf einem Blatt Papier zu beginnen, weil Wenn ich das Design aufbaue, finde ich, dass die Dinge oft besser an anderer Stelle angepasst sind, und wenn ich es aufschreibe, wird es mir später besser helfen.

Ich fülle am Anfang nicht immer Typen ein, weil ich nicht immer weiß, was ich brauche (z. B. ein Boolean für eine Checkbox oder eine Enum für eine Tristate-Checkbox).

Nach meinem Grunddesign neige ich dazu, die Klassen und Verbindungen implementieren dann Details nach Klasse auf eine Karteikarte Klasse konkretisieren, bevor eine wirkliche Umsetzung tun

+0

Was Sie beschreiben, ist eine grobe Analyse- und Designphase. Ich bin auf der Suche nach Werkzeugen, die genau dabei helfen - sehe meine Frage und vielleicht wird ein Guru herauskommen und uns auf die Werkzeuge hinweisen. – slashmais

1

ich irgendwo gelesen, dass Menschen mit umreißen würde Post-it Notes, aber Es war ihnen nicht erlaubt, tatsächlich etwas auf sie zu schreiben, und wenn das Design so komplex wurde, dass man sich nicht mehr erinnern konnte, welches Post-It-Modul nicht welche Klasse/Modul/Architekturmerkmal war, musste es vereinfacht werden.

Ich dachte, das war ordentlich. Ich persönlich benutze die UML-ähnlichen Klassen- und Sequenzdiagramme. Echte UML ist meiner Meinung nach einfach zu viel Arbeit.

+0

In meiner persönlichen Erfahrung ist Code mit wenigen Klassen schlecht gekapselt Code. –

+0

Das klingt verrückt! Ich denke, ich würde mit einem System mit nur 5 Klassen stecken, wenn ich das verwendete;) – UpTheCreek

+0

Der Punkt war, die Funktionalität in einem dieser Post-It- "Module" zu kapseln. Sie ordnen 1-zu-1 nicht mit Klassen zu, sie sind nur logische Verkapselungen von Funktionalität. Das grundlegende Design-Prinzip besteht darin, das System in 3-5 Teile aufzuteilen und ihre Interaktionen zu modellieren, um dann in jeden von diesen und zu demselben einzutauchen. Sie tun dies rekursiv, bis Sie fertig sind. Dies ist auch Standard-UML-Praxis (Paketdiagramme und was nicht). Es ist albern zu glauben, dass ein ganzes System in ein einzelnes Klassendiagramm passt, sogar mit Namen/Labels! –

0

Meine eigene schrullige Notation. Felder für Datenhäufchen, ob Arrays, Dateien usw. Skizzenhafte Ideen für Klassen sind nur der Klassenname mit den darunter geschriebenen Elementen und Methoden. Ich beschäftige mich oft mit Hardware, also ist das Datenerfassungssystem, das in einem Auto sitzt, das einem Test unterzogen wird, nur eine niedliche kleine Zeichnung eines Autos. Duh, einfach!

Es gibt ein Pitch-Fork-Look-Ding - ein Kuhprod -, der anzeigt, wenn eine Sache eine andere in Aktion versetzt oder ihre Aktivität steuert. Pfeile für Datenflüsse, die manchmal durch Reifen gingen, zeigten eine Regulierung, Anleitung und Umleitung dieser Daten an.

Ich verwende Pfeile des UML-Typs, um Klassenvererbung anzugeben. Das ist das einzige, was ich von UML geklaut habe. (Was habe ich benutzt, bevor ich auf UML gestoßen bin?) Mein Hintergrund ist Elektronik, daher basiert meine persönliche Schreibweise wahrscheinlich darauf, Blockdiagramme von Radios und Fernsehern als Kind zu sehen.

Ich bin glücklich, dass etwa 90% meiner Arbeit ist Solo, Quellcode ganz unter meinem Kommando, nur fertige oder Testversionen von ausführbaren Dateien an andere geben. Wenn ich in einer großen Firma wäre, würde ich eine Menge komischer Blicke bekommen, wie ein Zirkus-Freak!

0

Vorher verwendete ich einfache Excel, um meine Diagramme und Prozessabläufe zu tun. Sehr einfach und kein Quatsch. Normalerweise verwendete ich zuverlässigere Werkzeuge wie Visio, StarUML, Creately und Lucidchart, um meine Diagramme zu erstellen.