2009-07-13 9 views
6

Ich habe ein ziemlich einfaches ereignisbasiertes C# -System, aber ich bin mir nicht sicher, wie ich es in UML modelliere. Ich möchte offensichtlich den Event-Publisher, Abonnenten, Handler und EventArgs-Klassen zeigen. Ich denke, Sie verwenden "Signale", aber ich kann keine Beispiele finden. Kann jemand mich auf ein Beispiel hinweisen oder irgendein Licht abwerfen?Wie kann eine ereignisbasierte Architektur in einem statischen UML-Modell dargestellt werden?

Dank

Edit: ich ein statisches Modell erschaffe, brauche ich nicht Staat oder Pfade durch den Prozess darzustellen. Entschuldigung Wenn ich das in der ersten Frage nicht klargestellt habe ..

Antwort

0

Verwenden Sie ein Zustandsdiagramm oder ein Aktivitätsdiagramm.

0

schauen Sie sich here für Beispiele von Zustandsdiagramm und here für Aktivitätsdiagramm, dann wählen Sie, was Ihren Bedürfnissen entspricht!

2

Wie von lexu und John angezeigt, können Sie mithilfe von Statecharts und Aktivitätsdiagrammen einige der dynamischen Aspekte Ihres Systems modellieren.

Für Ihr statisches Modell können Sie die Ereignisse modellieren, die eine Klasse als Operationen behandeln kann. Sie können einen Stereotyp (<<event>>) verwenden, um diese Operationen von anderen zu unterscheiden (z. B. synchron aufgerufene Methoden).

0

Ich würde wahrscheinlich nur eine logische Komponenten-Modell verwenden, um die Quellen/Verbraucher und klischee Operationen darstellen, die Wechselwirkungen zu beschreiben ..

jedoch als Linkauffangene Idee - ein weiteres possbility ocurrs mir .... .

Ich frage mich, ob Sie einige Aspekte von BPMN verwenden könnten. - eine Reihe von UML Tools wie Sparx EA enthalten es

Seine Messagesyntax sollte es Ihnen ermöglichen, Quell-Ereignisse zu beschreiben, und Sie können Verbraucher/Handler mit Pools oder Aktivitäten beschreiben - ohne sich unbedingt mit dem zu beschäftigen internes Verhalten ähnlich (ich bin eine Abstraktionsebene ähnlich wie bruce siver des „ebenen1“ BPMN denke), könnten Sie Messaging interactionns verwenden, um die Nutzlasten/EventArgs Marke, die benötigen

wenn Sie;. re somthing ähnlich wie Sparx verwenden, Sie könnten wahrscheinlich Trace-Abhängigkeiten von den BPM-Elementen zum "echten" Klassenmodell des C# -Codes hinzufügen.

4

Das "Publisher-Subscriber" -Paar-Muster (a.k.a "Observer") kann in jedem Programmier- (Sprach-) Framework anders implementiert sein, daher anders entworfen, in U.M.L.

Jeder Weg, konzeptionell, wenn ein Ereignis ("Signal" oder "Nachricht") gesendet wird, von einem Herausgeber (aka "Server") zu jedem Abonnenten ("Client"), manchmal eine "ID" zu identifizieren ein bestimmtes Ereignis, von anderen Ereignissen, seine zur Verfügung gestellten und einige zusätzliche Parameter oder Daten werden ebenfalls gesendet.

Wie andere Antworten bereits erwähnen, benötigen Sie möglicherweise ein (Klassen-) Diagramm, um das statische Modell zu beschreiben. (Beachten Sie, dass es eine „Aggregation“, nicht „Zusammensetzung“, „Verein“ verwendet werden kann):

.............................. 
+--------------------------+.. 
|  <<Publisher>>  |.. 
|  VectorDrawApp  |.. 
+--------------------------+.. 
| [+] create()    |.. 
+--------------------------+.. 
| [+] send(EventArgs e) |.. 
+------------+-------------+.. 
............/ \............... 
............\ /............... 
.............|................ 
.............|................ 
+------------+-------------+.. 
|  <<Subscriber>>  |.. 
|   Figure   |.. 
+--------------------------+.. 
| [+] create()    |.. 
+--------------------------+.. 
| [+] receive(EventArgs e) |.. 
+--------------------------+.. 
.............................. 
+--------------------------+.. 
|  <<Event>>   |.. 
|  EventArgs   |.. 
+--------------------------+.. 
| [+] Sender: TObject  |.. 
+--------------------------+.. 
| [+] receive(EventArgs e) |.. 
+------------+-------------+.. 
.............|................ 
.............+................ 
............/ \............... 
...........+---+.............. 
.............|................ 
+------------+-------------+.. 
|  <<Event>>   |.. 
| FillEventArgs: EventArgs|.. 
+--------------------------+.. 
| [+] ForeColor   |.. 
| [+] BackColor   |.. 
| [+] FillStyle   |.. 
+--------------------------+.. 
.............................. 

Und auch, können Sie ein Diagramm benötigen das dynamische Modell zu beschreiben:

......................................... 
+----------------+..+----------------+... 
| <<Publisher>> |..| <<Subscriber>> |... 
| VectorDrawApp |..|  Figure |... 
+--------+-------+..+--------+-------+... 
.........|...................|........... 
.......+-+-+...............+-+-+......... 
.......| |...send(fill)..| |..Fill(). 
.......| +==============>+ +---+..... 
.......| |...............| |...|..... 
.......| |...<<return>>..| |...|..... 
.......| |<--------------+ +<--+..... 
.......| |...............| |......... 
.......+-+-+...............+-+-+......... 
.........|...................|........... 
.........X...................X........... 
......................................... 

Stereotypen, in UML, sind Ihre "Saufkumpel", und ermöglichen es Ihnen, zu beschreiben oder einzuschränken, was ein Akteur, Objekt, Klasse, Merkmal oder Schnittstelle tut.

Wenn Sie sie verwenden, markieren, wenn ein Objekt oder eine Klasse, Subklassen einer Klasse sind, oder implementieren, eine Schnittstelle, die für die Aktivitäten relevant ist, das Modell gewesen, auch wenn es andere Eltern-Klassen sind, oder Schnittstellen.

Prost.

+0

Liebe diese bezaubernden ASCII-Diagramme! +1 –

0

Annäherung an das Problem von einer Entität Lebensgeschichte Winkeln (event-Modellierung, ref, zum Beispiel Jackson System [of] Development.):

UML and Data Modeling: A Reconciliation By David C. Hay Ref. S.34

Software Evolution with UML and XML edited by Hongji Yang 'Entity-Life Histories - Fragen und Probleme', P142 - Ich bin nicht einverstanden btw, eine Folge diag. könnte relativ leicht angewendet werden, wenn sie auf die betreffende Entität beschränkt ist, während ein Staat diag. Erfolgreich illustriert in Software Systems Architecture, Nick Rozanski, Eoin Woods, 'Information Lifecycle Models', S. 317.

+0

Die Technik, die ich denke, wäre, einen UML-Anwendungsfall zu skizzieren und die Ereignisarchitektur mit einem Zustandsdiagramm zu modellieren, wobei letzteres in das erstere eingebettet wird, wie in 'http://www.uml-diagrams.com beschrieben .org/use-case-diagrams-how-to.html - die gleiche Webseite schlägt auch vor UML schließt nicht die Verwendung anderer Modellierungstechniken aus, ein ELH ist eigentlich recht einfach im Textmodus zu skizzieren, erfordert nicht die Benennung von ein Zustand (praktisch, wenn nicht anfänglich offensichtlich), und auch wenn er in ein Zustandsdiagramm umgewandelt wird, kann die ELH-Struktur (einschließlich der abstrakten Ebenen) auch übertragen werden. – user5321531

+0

Die Erklärung eines erweiterten Anwendungsfalls, um Bedingungen zu spezifizieren, wäre ein anderer Ansatz? Ref. 'UML Use Case Extend' http://www.uml-diagrams.org/use-case-extend.html#extension-point, siehe auch diesen Beitrag https://stackoverflow.com/questions/23223704/precondition-in- Anwendungsfall – user5321531