2010-01-14 8 views
5

Meiner Erfahrung nach waren die meisten Architekturdokumente bestenfalls ad-hoc, und abgesehen von strukturierteren Dead-Tree-Arten des Schreibens muss ich noch formale UML im eigentlichen Gebrauch sehen, und ich habe gearbeitet mit wenigen, wenn überhaupt Entwickler, die in der Lage wären, UML-Diagramme klar oder korrekt zu erstellen - es scheint eher als eine Art "graphischer Pseudokode" verwendet zu werden.Allgemeine Verwendung von UML

Vor diesem Hintergrund bin ich neugierig, ob jemand Erfahrung mit UML in interne Dokumentation und Kommunikation Systemfunktion zwischen Teammitgliedern hat. Ist das ein Werkzeug/eine Art der Kommunikation, die Menschen wirklich im Alltag nutzen? Ist es hilfreich, überspezifiziert? Haben Sie in Umgebungen gearbeitet, in denen präzise UML wichtig oder nützlich waren?

Antwort

1

In meiner Arbeitsumgebung haben wir UML-Klassendiagramme ausgiebig verwendet, während wir große Webanwendungen im Unternehmensmaßstab schreiben. Manchmal verwenden wir Sequenzdiagramme. Aber wir verwenden keinesfalls die vollständige UML-Suite von Diagrammen oder kommen uns sogar nahe. UML kann nur wirksam sein, wenn man das Fleisch kaut und die Knochen ausspuckt. Es ist ein großartiges Kommunikationswerkzeug, aber zu viel von seiner Funktionalität kann Menschen verwirren.

3

Die UML (The Unified Modeling Language) ist flexibel. Es ist nicht notwendig, ständig "volle" UML zu verwenden.

Ja, ich habe UML verwendet, um Design zu kommunizieren. Ich habe Domänen-, Klassen-, Aktivitäts-, Anwendungsfall-, Sequenz- und Bereitstellungsdiagramme für verschiedene Zwecke verwendet.

Einige dieser Zwecke waren jenseits der "offensichtlichen" Verwendung des Diagramms. Zum Beispiel habe ich Deployment-Diagramme verwendet, um Sätze von virtuellen Maschinen zu dokumentieren. Da das Node-Element ein UML- "Classifier" ist, kann es mit Vererbung verwendet werden. Ich habe dies verwendet, um zu zeigen, wie eine virtuelle Basismaschine spezialisiert ist. Zum Beispiel ist die Basis nur Windows Server 2008, aber eine Spezialisierung von dieser hat SQL Server installiert, und eine Spezialisierung dieser wird als Datenbankserver verwendet.

0

Meiner Erfahrung nach habe ich festgestellt, dass die UML-Sequenzdiagramme am nützlichsten für Leute sind, die versuchen, ein System oder einen bestimmten Prozess des Systems zu verstehen.

Der Grund ist wahrscheinlich, dass es zeigt, wie verschiedene Komponenten zusammenarbeiten und indirekt, was die Verantwortung von jedem von ihnen haben. Die vertikale Dimension zeigt die Zeit und das Diagramm ist sehr intuitiv zu verstehen, auch für Personen ohne UML-Kenntnisse.

1

Ich habe die Verwendung von UML-Klassendiagrammen für die automatische Code-Generierung gesehen. Der Ablauf war ungefähr so, Enterprise Architect wurde verwendet, um ein XML-Schema aus dem Klassendiagramm zu generieren. Dieses Schema wurde dann als Eingabe für JAXB verwendet, um generierte Java-Klassen zu generieren, die einen programmatischen Zugriff auf die im UML-Modell dargestellten Daten ermöglichen.

+0

+1 für die Erwähnung von Enterprise Architect - ein großartiges Werkzeug, obwohl eines mit einer "einzigartigen Schnittstelle". –

0

Ich habe festgestellt, dass das UML-Klassendiagramm für ein logisches Datenmodell oder Domänenmodell viel hilfreicher ist als ein Entity-Relationship-Diagramm. Es ist expressiver, hat Verallgemeinerung (dh Vererbung) und spezifische n-zu-n-Beziehungen. Versuchen Sie, diese in einem ER-Diagramm :)

alt text

1

UML Diagramme, die nützlich sind zur Modellierung für die Erfassung und Kommunikation Anforderungen und sicherzustellen, dass das System diese Anforderungen erfüllt. Sie können iterativ und während verschiedener Phasen der Planung, des Entwurfs, der Entwicklung und des Testens verwendet werden.

Vom Thema: Modelle im Entwicklungsprozess bei http://msdn.microsoft.com/en-us/library/dd409423%28VS.100%29.aspx

Ein Modell können Sie in der Welt helfen zu visualisieren, in dem Ihr System funktioniert, Bedürfnisse der Nutzer zu klären, definiert die Architektur des Systems Analysieren Sie den Code und stellen Sie sicher, dass Ihr Code die Anforderungen erfüllt.

Wenn Sie UML-Diagramme von Grund auf neu erstellen nicht möchten, können Sie Sequenzdiagramme, Abhängigkeitsdiagramme und Schichtpläne von Code, und verwenden Schicht Validierung, um sicherzustellen, dass Änderungen im Code nicht in Konflikt mit dem angegebenen erstellen Design. Ich beschreibe dies mit mehr Detail in dem folgenden Beitrag:

Wie man "gutes Software-Design/Architektur" lernt? unter https://stackoverflow.com/questions/268231/how-to-learn-good-software-design-architecture/2293489#2293489