Frage

Lassen Sie uns sagen, dass ich eine Liste von Begriffen gemacht habe werde ich meine Domain Model zeichnen verwenden. Außerdem habe ich ein paar Use Cases, von denen ich ein paar System-Sequenzdiagramme haben.

Wenn Sie das Domain Model zeichnen, ich weiß nie, wo aus zu starten:

  1. Gestaltung des Modells, wie ich das System zu sein glauben. Das ist, wenn ich einen der menschlichen Körpers bin Modellierung, beginne ich durch die Klassen Konzepte von Herz-Zugabe, Gehirn, Darm, Magen, Augen, Kopf, etc.
  2. Starten Sie durch Entwerfen, was der Use Cases müssen getan. Das ist, wenn ich einen Use Case haben, die über, den menschlichen Körper schlucken etwas ist, würde ich zuerst die Klasse Konzepte für Mund ziehen, Kehle, stomatch, Därme, etc.

Die Reihenfolge, in der ich die Dinge tun, ist irrelevant? Ich würde sagen, es wahrscheinlich am besten sein würde, um zu versuchen aus den Use Case Konzepte zu entwerfen, wie sie in der Regel sind das, was Sie arbeiten möchten mit, nicht andere Art von Begriffen, dass, obwohl Hilfe das gesamte System gut, viel von der Zeit könnte beschreiben nicht einmal für das aktuelle Projekt benötigt werden. Gibt es einen anderen Ansatz, dass ich hier nicht in Betracht nehme? Wie nähern Sie sich in der Regel das?

Danke

War es hilfreich?

Lösung

ich durch eine Zeichnung, die ein Klassendiagramm mit allen Beziehungen beginnen würde und nur die Klassen implementieren, die notwendig sind, entsprechend den Anforderungen der Anwendung.

Sie können einen anämischen Ansatz (Attribut und Getter und Setter) verwenden, um Dinge einfach zu halten und den Schritt des Schreibens Geschäftslogik im gleichen Schritt zu vermeiden. Mit einem anämischen Modell, würde die Logik in eine entsprechenden Service-Klasse. Auf diese Weise können Use Cases betrachten können später.

Ich weiß, dass einige Leute nicht schätzen diese Art und Weise, Dinge zu tun, aber es hilft bei der Wartung und vermeidet einige Abhängigkeitsprobleme.

Antwort auf verschlungene elysium Frage unter :

Im Hinblick auf die Analyse, beginnend mit Use Cases (Was) und dann auf das Klassendiagramm fortfahren (Wie) klingt wie eine gute Faustregel. Ich persönlich würde das Sequenzdiagramm tun (Wann und Wer?) Danach, wie Sie zwischen denen Prozesse wissen bräuchten / Objekte Nachrichten gesendet werden müssen.

Darüber hinaus meine Sicht auf die Dinge ist, dass UML ist einfach eine Möglichkeit, ein System / Projekt und nicht eine Methode, die von sich selbst zu modellieren (im Gegensatz zu Merise, RAD, RUP, Scrum, etc.). Es gibt nichts, jemanden zu stoppen mit jedem Diagramm Anfahren solange sie die ausreichenden Informationen verfügen, um es zu vervollständigen. In der Tat, sollten sie gleichzeitig durchgeführt werden, da jede der Diagramme eine andere Perspektive des gleichen Systems / des Projekts ist.

Alles in allem also hängt es davon ab, wie Sie die Analyse gehen über. Während meines Studiums war ich den starren Wasserfall Ansatz gelehrt, wo Sie eine vollständige Analyse von Anfang bis Ende, bevor einige Codes zu erzeugen. Aber die Dinge können in der Praxis unterschiedlich sein, wie der Imperativ eine funktionierende Anwendung in den am wenigsten Zeit möglich zu produzieren sein könnte.

Zum Beispiel wurde ich in der Scrum-Methodik vor kurzem für eine Übung beteiligt die Schaffung einer Website, wo die Menschen ihre Fiktionen veröffentlichen können. Da es eine Zeitbeschränkung und eine klare Vorstellung davon, war das, was erreicht werden soll, begannen wir sofort mit einem nackten Knochen Klassendiagramm, das die Domänenmodell . Die Anwendungsfälle wurden dann aus einer Reihe von Mock Bildschirmen leiten wir produziert haben.

Aus dem Gedächtnis waren die Klassen Story, Kapitel, Benutzer und Kategorie. Diese letzte Klasse wurde zugunsten einer flexibleren Tag Klasse auslaufen. Wie würden Sie sich vorstellen, würde die komplette Klassendiagramm des bestehenden Projekts wesentlich komplexer fällig Domain Driven Design und die Besonderheiten der Java-Programmiersprache anwenden.

Dieser Ansatz könnte als schlampig eingesehen werden. Allerdings ist eine Website wie diese leicht in ein paar Wochen gemacht werden könnte einen iterativen Prozess unter Verwendung von und nach wie vor gut ausgebildet sein. Der Vorteil ein iterativer Prozess über den Wasserfall Ansatz hat, ist, dass Sie immer wieder Anforderungen anpassen können, wie Sie gehen. Häufige Anforderungen zu ändern ist eine Realität, da die Menschen oft ihre Meinung ändern und die Möglichkeit, nach jeder Iteration eine funktionierende Anwendung erzeugen kann einen Kurs sozusagen zu bleiben.

Natürlich, wenn Sie ein Projekt an einen Kunden zu präsentieren, eine vollständige Analyse mit UML-Diagramme und einige Mock Bildschirmen wäre besser, so dass sie eine Vorstellung davon haben, was Sie anbieten. Hier wird der UML kommt in. Wenn Sie einige der visuellen Konventionen erklärt habe, sollte ein Individuum in der Lage sein, die Diagramme zu verstehen.

Zum Abschluss, wenn Sie in der Situation, wo Sie versuchen zu bestimmen, was ein Kunde will, ist es wahrscheinlich eine gute Idee, um allmählich einen Fragebogen aufzubauen Sie mitbringen können. eine Person interviewen ist der einzige Weg, können Sie bestimmen, welche Konzepte / Merkmale sind für eine Anwendung wirklich benötigt, und Sie sollten gehen, um wieder zu klären, bestimmte Aspekte erwarten. Ein weiterer Tipp wäre, eine schnelle Forschung auf dem Web zu tun, wenn Sie mit einem Thema konfrontiert sind egal, du bist nicht kennen.

In Ihrem EXAmple, das wäre gehen Sie durch die Grundlagen der Anatomie. Unter anderem wird diese Ihnen helfen, zu entscheiden, was das Modell enthalten sollte und welche Granularität sollte es haben (Was Gruppe von Organen berücksichtigt werden sollten? Wie genau muss es sein? Sie nur die Organe müssen modelliert oder sollten sie in zerlegt werden ihre Bestandteile wie Gewebe, Zellen, chemische Zusammensetzung, usw.?).

Andere Tipps

Ob DDD, oder nicht, würde ich mit der Bestimmung der allgegenwärtige Sprache (UL) empfehlen, indem das Produkt Eigentümer Befragung (n). Aufbau der Kommunikation in einer Weise, dass Sie und die Produktbesitzer die gleiche Sprache sprechen nicht nur Helfer in der Kommunikation, aber in der Lage, über das Projekt gemeinsam Begriffe haben neigt das Domänenmodell definieren sich selbst zu helfen.

So ist meine Antwort im Grunde zu diskutieren, zuhören und lernen. Software dient eine Notwendigkeit. das Modell aus der Sicht der Experten zu verstehen, die solide Grundlage für die Anwendung legen.

ich glaube, den Ort zu starten wäre, was fühlt sich logisch und komfortabel. Es ist wahrscheinlich am besten mit den Anwendungsfällen beginnen, da sie Ihnen eine klare Richtung und Ziele geben, und helfen Sie YAGNI Situationen zu vermeiden. Vorausgesetzt, dass Sie sollten ein starkes Domain-Modell zu entwickeln versuchen, sollte es nicht wirklich wichtig, wie das ganze Bild der Domäne wichtig ist.

Ich möchte meine Erfahrung für diese Art von Situationen teilen. Ich beginne in der Regel mit dem Schreiben von Tests und Code. Und versucht, ein Ende zu decken Anwendungsfall zu beenden. Das gibt mir fair genug Ahnung von Problem und am Ende habe ich auch etwas mit mir zu arbeiten, die ich Fall zu meinen Klienten zeigen. Die meisten der Zeit nach Geschichten auf dem vorherigen, aber es passiert mir auch, dass nachfolgende Geschichten erfordern Änderungen in dem Vorgängermodell kam ich mit. Aber dies hat Auswirkungen auf mich nicht wie ich bereits gute Testabdeckung hat. Auf diese Weise kam ich mit dem Modell auf die Passungen für das aktuelle Problem, nicht das Modell, das die reale Welt abbildet.

Sie beginnen mit den Geschäftsanforderungen, die formalisiert werden können oder nicht. Wenn formalisiert würden Sie Use Case-Diagramme verwenden.

Zum Beispiel ist hier Use Case-Diagramme für einen E-Commerce-App: http://askuml.com/blog/e-commerce/

http://askuml.com/files/2010 /07/e-commerce-use-case.jpg http://askuml.com/files/2010/07/ E-Commerce-use-case2b.jpg

Aus diesen Anwendungsfällen können Sie natürlich auch die Geschäftseinheiten ableiten. Produkt, Produktkategorie, Einkaufswagen, ... die Klassendiagramme vorzubereiten beginnen

Dies ist am besten in der Praxis viele Methoden, aber das ist auch nur der gesunde Menschenverstand und natürlich.

Kurze Antwort

Wählen Sie einen Anwendungsfall, eine Zusammenarbeit Diagramm zeichnen (und ein Klassendiagramm) die Domäne zu erkennen, Objekte beteiligt. Konzentrieren Sie sich nur auf diesen Objekten beteiligt, um Use-Case-Ziel zu erreichen. Write TDD Testfall die Erwartung zu setzen und nach und nach Ihren Domain-Klassen modelliert, um die Erwartungen zu erfüllen. TDD ist sehr hilfreich, um die erwarteten Verhaltensweisen zu verstehen, und es hilft, das Reiniger Domänenmodell zu erhalten. Sie werden Ihre Domain entwickeln sich allmählich zusammen mit den TDD Erwartungen sehen.

Lange Antwort

Meine persönliche Erfahrung mit DDD war nicht einfach. Das war, weil wir nicht notwendige Grundlagen in erster Linie haben. Unser Team hatte viele Schwachstellen in verschiedenen Bereichen; Anforderungen wurden nicht richtig erfasst, und wir hatten nur einen Vertreter des Kunden, die nicht wirklich hilfreich (nicht beteiligt) war. Wir haben nicht eine richtige Release-Plan und Entwickler hatte einen Mangel an objektorientierte Konzepte, am besten Prinzipien und so weiter. Das größte Problem, das wir hatten, war zu verbringen so viel Zeit versucht, die Domain-Logik zu verstehen. Wir skizzierte viele Klassendiagramme und wir haben nie das Domain-Modell richtig, so tun wir gestoppt, dass und fand heraus, was schief gelaufen ist. Das Problem war, dass wir zu hart versucht, die Domain-Logik zu verstehen und anstelle der Kommunikation haben wir Annahmen auf die Anforderungen. Wir entschieden uns, unser Konzept zu ändern, wir angewendet TDD, begannen wir das erwartete Verhalten zu schreiben und codiert das Domänenmodell der TDD Erwartungen gerecht zu werden. Manchmal bekamen wir stecken Schreiben TDD Testfälle, weil wir nicht die Domäne verstanden. Wir sofort an den Kunden Vertreter gesprochen und versucht, mehr Input zu bekommen. Wir änderten unsere Release-Strategie; agile Methodik und Release angewandt häufig so, dass wir echtes Feedback von den Endanwender bekamen. Allerdings benötigt der Endanwender Erwartung, um sicherzustellen, wurde auf der richtigen Ebene festgelegt. Wir Refactoring basierend auf dem Feedback, und auf diese Weise das Domänenmodell entwickelt sich allmählich. Anschließend wandten wir Entwurfsmuster Wiederverwendbarkeit und Wartbarkeit zu verbessern. Mein Punkt ist, dass DDD allein nicht überleben können, müssen wir das Ökosystem aufbauen, die die Domäne umfasst, müssen die Entwickler stark OOP-Konzepte haben und müssen TDD und Unit-Test zu schätzen wissen. Ich würde sagen, DDD sitzt oben auf alle den OOP-Techniken und Praktiken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top