2010-02-28 6 views
5

Ich habe es schwer gehabt, vor UML zu sitzen und einen Wert daraus zu ziehen, weil es fast so viel Arbeit zu haben scheint wie das Programmieren (wenn man eine ausdrucksstarke Sprache benutzt). Ich finde, dass das Schreiben natürlicher Sprache mir mehr über ein Software-Projekt erzählt als das Erstellen komplizierter Diagramme. Ich bin neu, obwohl UML und ich fragte mich, von anderen, die UML gut kennen:Design Dokumente vs UML oder beides?

  1. Ist UML wert die ganze Zeit es/tun, auch für kleine bis mittlere Projekte zu lernen dauert?
  2. Können gut ausgearbeitete Entwurfsdokumente, während sie noch höher liegen, ausreichen, um Programmierer auf dem richtigen Weg zu halten, den richtigen Code auch in Teams zu erstellen?

Antwort

3

Ich glaube nicht, dass UML alleine ausreicht.

Ich habe eine harte Zeit hatte von UML vor sitzen und Wert immer aus ihm weil es fast wie so viel Arbeit als Programmierung scheint (wenn Sie eine expressive Sprache verwenden).

Ich stimme dem zu. UML kann Methodensignaturen zur Verfügung stellen, aber Sie geben nicht das Fleisch der Methode an. Schlimmer noch, Sie können nichts mit TDD mit UML machen. Bei einer Wahl hätte ich lieber TDD und funktionierenden Code als UML-Diagramme.

Ich finde, dass natürliche Sprache zu schreiben mich mehr über ein Software-Projekt als das Erstellen komplizierte Diagramme erzählt.

Spot auf. Bilder können hilfreich sein, es sei denn, sie sind schlechte Bilder. Sequenzdiagramme neigen dazu, für alle außer trivialen Flüssen unmöglich kompliziert zu werden.

Ist UML wert die ganze Zeit es braucht, um zu lernen/tun, auch für kleine und mittlere Projekte?

Lieferanten und Architekten werden Ihnen sagen, UML ist unverzichtbar, aber ich bin nicht einverstanden. Ich falle in die "skecher" camp of UML users.

Kann gut Design-Dokumente ausgearbeitet, während noch höheres Niveau, genügen, um halte Programmierer auf Ziel den richtigen Code zu erstellen, auch in Teams?

Ich weiß nicht, was ausreicht, um Programmierer am Ziel zu halten, aber ich würde vermuten, dass UML kein großer Teil davon ist. Architekten neigen dazu, es zu lieben, weil UML-Tools sie beschäftigen, aber die meisten Entwickler kümmern sich nicht um Boxen und Pfeile auf Whiteboards.

1
  1. nicht meiner Meinung nach. Ich habe einmal ein OO-Design-Modul als Teil eines MSc in Informatik gemacht und UML wurde kaum erwähnt (obwohl meiner Meinung nach hätte es viel mehr diskutiert werden, da es Einfluss hat).

  2. Es gibt mehr Möglichkeiten, Mehrdeutigkeiten im geschriebenen Text zu reduzieren als in einem UML-Diagramm, die meisten UML-Dagramme lassen viel Interpretationsspielraum. Davon abgesehen bin ich ein großer Fan von der Verwendung von Diagrammen in Software-Design-Dokumenten und viele der UML-Diagramme sind extrem kurz: Deployment, State, Class und Activity sind meine Favoriten. Wenn ich UML-Diagramme erstelle, versuche ich, mich grob an die Konventionen zu halten, aber ich lasse sie nicht in die Quere kommen, wenn sie das Konzept, das ich zu vermitteln versuche, nicht darstellen können.

2

Ich würde antworten:

Nichts, absolut nichts, ersetzt die Notwendigkeit für eine gute Kommunikation zwischen Programmierern auf einem Programmierteam und Management.

Dies bedeutet ein bestimmtes Niveau der Aufgliederung der Aufgabe in einfache "Was wir tun müssen" -Aussagen für Manager und die Erklärung von Roadblocks.

Ich arbeitete an einem kleinen Projekt, bei dem die gesamte Klassenstruktur des Programms von jemandem in UML entworfen wurde, bevor irgendein Code geschrieben wurde. Großartig, aber die Entwickler haben nicht vorausgesehen, wie die Klassen verwendet werden könnten, oder die Notwendigkeit, bestimmte Strukturen so zu ändern, dass sie besser zur Programmlogik passen. Sie haben einfach ein Design ausgeworfen, von dem sie glaubten, dass es funktionieren würde.

Ich bin noch jemanden zu treffen, der ein Programm in ihrem Kopf entwerfen und genau das produzieren kann, wenn es über sehr einfache Sachen hinausgeht. Der Prozess ist sehr organisch und die Dinge müssen sich auf dem Weg ändern, wenn Programmierer ihre früheren Fehler erkennen und korrigieren. Ich kann sehen, warum Feature Creep auftritt und das ist, wo Management muss verstehen, was vor sich geht, in der Schleife gehalten und aktualisiert werden. Gute Manager werden darauf hören, was ihre Programmierer ihnen sagen und die Sehenswürdigkeiten entsprechend anpassen.

Also, von Ihren zwei Optionen würde ich für das High-Level-Design-Dokument gehen: Wir wollen die Software dies tun, auf dieser Plattform laufen, diese Art von Eingabe akzeptieren und so etwas ausspucken. Das funktioniert, wenn das obige eingehalten wird.

UML, soweit es mich betrifft, ist es nicht wert.

0

Wir können die UML nicht völlig ignorieren, da einige der Diagramme hilfreich sind, wenn es um komplexe Funktionen oder lange Arbeitsabläufe und Szenarien geht, in denen die Entwickler einige Fälle übersehen können, wenn die Szenarien nicht gezeichnet/entworfen werden. Eine weitere wichtige Rolle von UML besteht darin, sich in Zukunft zu merken, wie das System funktioniert und wie seine Module miteinander kommunizieren, um sicherzustellen, dass das Projekt skalierbar ist, ohne dass es zu enormen Fehlern kommt, die unendlich und ernst sein könnten. Sowohl das geschriebene Designdokument als auch die UML sind für jedes Medium oder jedes große Projekt wichtig.