www.mikrocontroller.net

Forum: PC-Programmierung UML Sequenzdiagramm Frage


Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

http://de.wikipedia.org/wiki/Sequenzdiagramm#Notat...

hier steht unter anderem ..

Synchrone und asynchrone Nachrichten werden in Sequenzdiagrammen mit 
unterschiedlichen Pfeilen dargestellt. Nachrichten, die asynchronen 
Signalen entsprechen, werden gleich dargestellt wie asynchrone 
Operationsaufrufe. Synchrone Nachrichten werden mit einer gefüllten 
Pfeilspitze, asynchrone Nachrichten mit einer offenen Pfeilspitze 
gezeichnet.

Ich hab damit ein kleines Verständnisproblem worauf dort leider
nicht eingegangen wird. Wenn ich einen Thread habe, dann läuft
doch dort sowieso alles synchron ab. Sprich Objekt A ruft
am Objekt B eine Methode, wartet auf deren Return.

Die einzige plausible Erklärung die ich finden konnte ist die,
dass asynchron lediglich dann Sinn macht, wenn es 2 Threads gibt.
Dann gibt es im Thread 1 ein Objekt A und Controlfluss durch
den Thread 1, im Thread 2 gibt es ein Objekt B der auf A eine
Methode aufruft und wiederum auf einen Return wartet.
Der Unterschied ist nur der, dass Code der Methode von B
nicht synchron zum Controllflus durch Thread 1 läuft.

Ist meine Erklärung falsch?

Grüsse, Daniel

Autor: B. Gips (alabasterboy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe beide Pfeile schon gesehen. Im Zusammenhang der synchronen 
Abfolge sind sie mir jedoch noch nicht begegnet. Bisher hielt ich sie 
für einen Indikator der Zeitkompaktheit.
Zeitliche zügig aufeinander folgende Nachrichten sind ausgefüllt. 
Problematiken die nicht eine sofortige Reaktionen erfordern, werden 
durch einen offenen Pfeil visualisiert.
In den Beispielen meiner Univeranstaltungen wurde kein Unterschied 
zwischen offenen und geschlossenen Pfeilen gemacht, soweit ich das in 
Erinnerung habe.

Das Wikipediabeispiel unterscheidet noch die Empfangszeit. Danach 
erfolgt beim synchronen Senden der Empfang vor dem Senden der zweiten 
Nachricht. Beim asynchronen Versenden ist die Empfangszeit nicht 
spezifiziert. Sofern keine Antwort von B erwartet wird und die 
Empfangszeit von Nachricht A nicht nach der von Nachricht B liegt, ist 
der Fall eigentlich uninteressant.

Nach dem Wikipediabeispiel sind ausgefüllte Pfeile dann wohl die sichere 
Variante.

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke jetzt, dass man die synchronen Nachrichten sich
am besten durch einfache Methodenaufrufe vorstellen kann.
(Je nach ihrer Verschachtelungstiefe wächst der Stack)
Die asynchronen Nachrichten dagegen sind entweder durch
Flags setzen oder durch eine Messagequeue implementiert.

Flags kennt wahrscheinlich jeder Programmierer ..
int durty = 0; //global
...
if(something_changed())
   durty = 1;
...
if(durty)
   flash_to_harddisk();

damit fungiert durty zum Nachrichtenübermittlung,
eben nicht synchron,sofort sondern immer dann
wenn die entsprechende Prüfroutine die Daten anfördert.

würde mich gerne von einem UML Experten korrigieren lassen :)

Grüsse, Daniel

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn ich einen Thread habe, dann läuft doch dort sowieso alles synchron ab.
>Die einzige plausible Erklärung die ich finden konnte ist die, dass asynchron 
>lediglich dann Sinn macht, wenn es 2 Threads gibt.
Das stimmt beides, du kannst in einem Thread eine Methode asyncron 
aufrufen,
das wird intern mit einem 2. Thread gelöst, du mußt dich aber um die 
Erstellung dieses Threads nicht mehr kümmern.
Vgl. Linux Syslets Treadlets
Windows irgendwo in der MSDN ;-)

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BTW: wer von Euch benutzt denn UML aktiv in der Praxis?

Autor: dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sag ja

ok ich lerne es inner schule... wir machen viel damit .. :(

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.