UML Sequenzdiagramm Maik Aicher https://www.youtube.com/watch?v=GUWmQr6cdQk Transkript (automatisch erstellt) 0:00 [Musik] ich kann es euch zu einem weiteren video der berufsschule 7 diesmal soll es um speziellen jetzt um 0:22 die sequenz diagramm gehen zielgruppe ist die elfte klasse fachinformatiker aber auch durchaus zwölfte klasse die sich das ganze noch 0:32 mal anschauen wollen vor vonns die eigenschaften ansehen überlegen wir erst mal wofür wir einen sequenz diagramm brauchen und zwar ein 0:41 sequenz diagramm modelliert den zeitlichen ablauf von nachrichten flüssen zwischen objekten oder eigentlich kommunikations teilnehmern 0:51 und auf diesem grund oder auf dieser basis definieren sich auch die wichtigsten eigenschaften zum einen ist es ablauf orientiert das heißt wir 1:01 können den ablauf die sequenzen der nachrichten nachverfolgen dann ist wie ich schon gesagt hat der fokus auf den nachrichtenaustausch das 1:11 heißt darum soll es wirklich gehen es gibt eine zeitachse die läuft von oben nach unten die ist fest definiert beim sequenz diagramm und wir wollen 1:23 hier auch die nutzeraktivitäten modellieren das heißt wann kann der nutzer irgendeine aktion ausführen und deswegen geht es auch so ein bisschen 1:32 hand in hand mit dem use case diagramm wo eben der nutzer eben eigentlich auch definieren oder sieht wasser machen kann was er machen möchte und das sequenz 1:43 diagramm würde das noch etwas mehr detaillieren kommen wir zu den innovations- elementen das wichtigste notation element vom 1:53 sequenz diagramm ist die lebenslinien zwar wenn die jetzt beispielsweise eine person haben die in irgendeiner form interagiert dann gibt es hier so eine 2:04 lebenslinie und diese lebenslinie existiert so lange der teilnehmer interagiert das heißt solange irgendwie mit diesem prozess was zu tun hat für 2:15 personen also wie wir es jetzt hier gerade gezeichnet hat mit diesen typischen uml strichmännchen gilt wenn er nicht mehr an diesen gesamten 2:24 kommunikationsprozess beteiligt ist dann endet diese lebenslinie und wir werden dann gleich sehen bei objekten dutzend andere möglichkeiten diese lebenslinie 2:36 zu beenden dann gibt es den typ der lebenslinie das ist hier jetzt der user aber es ist oftmals auch wenn du jetzt nicht von 2:45 usern oder personen sprechen ein klassen name und das während der instanz name oder in dem fall jetzt der name des der person 2:57 es ist allerdings so dass man auch gerne mal den namen der person weglässt einfach weil das bringt üblicherweise keinen mehrwert und macht die ganze 3:07 sache nur ja voller die zeitachse habe ich ja schon erwähnt geht immer von oben nach unten sie wird aber nicht gezeichnet das heißt jeder der ein 3:18 sequenz diagramm sieht weiß die zeit läuft einfach von oben nach unten kommen wir nun zu einem anderen typ von lebenslinie und das wird jetzt so 3:30 aussehen dass wir jetzt ein ein teilnehmer des systems wie man so schön sagt im wesentlichen ist es jetzt irgendein technisches gerät oder für uns 3:41 eben im regelfall ein objekt und dieses objekt hatten nahmen das wäre dann hier die bestellung und was für eine klasse ist es dass die mail das heißt es wäre 3:50 jetzt eine bestellen melden und das sind so die beiden wesentlichen typen wie ihr sie oftmals eben in sequenz diagramm sehen links eben die 3:58 person rechts ein objekt das eben auch interagiert jetzt kommt noch ein wichtiger punkt und zwar so wie wir die beiden teilnehmer jetzt gezeichnet haben 4:10 sind sie einfach nur da wenn sie aber aktiv was tun dann zeichnet man das durch so ein balken 1 das symbolisiert mir jetzt die aktive 4:20 zeit des teilnehmers und während in dieser aktiven zeit dann kann er wirklich was tun ein mails erstellen und nachrichten 4:28 senden empfangen usw das ist eben an der stelle wahrscheinlich der wichtigste oder das wichtigste elemente der lebenslinie wenn 4:39 wir das obere aktive nennen das unseren natürlich auch einen namen und dann hat man das einfach passive zeit des teilnehmers genannt also liegt 4:47 eigentlich auf der hand jetzt können wir auch notieren dass der user so eine mail erstellt und in der 4:57 objektorientierung wäre das ja einen aufruf des konstrukteurs- und in ml ist es eine 1 erzeugungs nachricht dass mit diesem pfeil erzeugen wir ein objekt der 5:11 klasse mail ja und das netz bestellung weil wir wissen dass soll die bestell mail sein und dann kann eben der user im rahmen 5:19 seiner aktiven zeit auch interagieren mit diesen mit dieser mail und kann jetzt nachrichten oder aufrufe an dieses objekt schicken nachrichten wenn man 5:28 gleich noch mal etwas genauer uns anschauen und jetzt ist es auch so wenn der user die mails losschickt dann verschwindet 5:39 sie ja aus seinem interaktions bereich und dann würden wir eben diese mail terminieren und dazu hat die der sequenz diagramm eigenes symbol dass das hier 5:52 dieses stopp symbol und dadurch wird jetzt auch diese diese senden nachrichte destruktion nachricht da das wiederum nach noch mal wenn wir über die 6:01 nachrichten sprechen aber so viel sei schon mal gesagt hiermit können wir dieses ding dann eben auch stoppen 6:09 gut jetzt schauen wir uns nochmal was interessantes an und zwar hab ich jetzt hier ein mailprogramm also ein etwas aufwendigeres konstrukt also das muss 6:18 nicht immer eine einzelne klasse sein sondern es kann auch etwas aufwendiger sein und wenn ich jetzt in dieses programm 6:25 rein gucken möchte und die inneren kommunikation auch darstellen möchte dann kann ich eine die komposition vornehmen das heißt ich kann jetzt hier 6:33 gehen wir mal davon aus das ist ein nach dem mvz angeschrieben dieses mail programm kann ich jetzt beispielsweise diese drei elemente eben auch 6:41 detailliert darstellen so und dann kann ich hier intern auch irgendwelche nachrichten hin und herschieben und kann dann sozusagen den internen 6:53 datentransfer die nachrichtenaustausch den intern auch modellieren und gerade das ist für manche situationen hilfreich die die komposition sieht man es nicht 7:04 allzu häufig aber wie gesagt es ist es ist machbar also es ist erlaubt so diese internen kommunikation kann man auch etwas komprimierter darstellen wenn 7:19 ich jetzt nicht zeigen möchte wie mein element mein teilnehmer intern aufgebaut ist und dazu kann man ihn sozusagen interne nachrichten auf einer ebene 7:29 darstellen das würde dann so aussehen das wäre zu sagen eine nachricht an sich selbst hier 7:41 kann man rückmeldungen machen muss man nicht zwingend durchführen man sieht relativ häufig dass diese get data data gestrichelte rückmeldung fall nicht da 7:52 ist weil wir sowieso innerhalb dieser dieses programms oder dieses teilnehmer sind aber wie gesagt so würde jetzt eine nachricht an sich selbst aussehen das 8:01 wäre wenn ich sozusagen intern in meinem programm einen unter programm aufrufen würde und da in entsprechend eine nachricht schicken würde 8:10 so die nächste notation elemente die uns anschauen sind die nachrichten ich habe jetzt mal zwei teilnehmer hingeschrieben also eine applikation und 8:18 eine datenbank also zwei technische teilnehmer keine news mehr und die wollen jetzt in irgendeiner form miteinander kommunizieren beginnen wir 8:27 mal mit einer einfachen nachricht und zwar ein insert statement das jetzt bei der datenbank aus geführt werden soll und das ist jetzt hier als sogenannte 8:34 asynchrone nachricht modelliert und das bedeutet dass die applikation wenn diese nachricht geschickt wird nicht auf irgendein feedback wartet das heißt die 8:48 applikation kann jetzt sofort mit einem neuen statement oder irgendeiner anderen aktivität weitermachen das heißt in der konsequenz dass die 8:57 datenbank keine antwort schickt also kein keine bestätigung oder sonst irgendwas das jetzt dem der applikation indiziert dass jetzt diese diese dieser 9:07 internet funktioniert hat diese nachrichten sind in der realen welt entweder irgendwelche funktions aufrufe oder methoden aufrufe und was auch 9:19 möglich ist so genannte signale das heißt wenn irgendwo ein signal passiert und dass irgendein anderen teilnehmer geschickt wird dann wäre das in aller 9:28 regel auch eine asynchrone nachricht gut wenn es synchrone nachrichten gibt gibt es offensichtlich auch synchrone nachrichten dass wir jetzt hier 9:37 beispielsweise select statement select soldaten auf einer datenbank rausholen und dann würde ich auch gerne wissen welche daten die datenbank ausgespuckt 9:45 hat also warte ich hier auf eine nachricht und die antwort nachricht wird dann eben mit so einer gestrichelten linie modelliert und und damit haben wir 9:56 eben den der den informationsaustausch einmal zur datenbank wieder zurück fertig wenn man sich jetzt die asynchronen nachricht des inns 10:05 statements und die synchrone nachricht des select seitens ansieht fällt uns auf dass bei dem einen ein offener pfeil ist beim in statement und beim select 10:14 statement ein geschlossener pfeil und zwar ausgemalt und uml ist es ja grundsätzlich so dass die die formen von pfeilen symbolen et cetera immer sehr 10:26 klar definiert sind und das bedeutet auch wenn wir das per hand zeichnen dass wir uns eben daran diese vorgaben auch halten müssen also asynchronen 10:33 nachrichten haben eine offene fall spitze synchrone nachrichten eine ausgefüllte geschlossene pfeilspitze so bei einer synchronen nachricht ist es so 10:48 dass der anrufer tatsächlich wartet bis er irgendwas neues machen kann und bekommt in aller regel eine antwort man modelliert manchmal auch ohne aber 10:59 eigentlich sollte man immer eine antwort wirklich ein malen modellieren und diese antwort pfeil ist eine gestrichelte linie mit einem offenen pfeil sowie was 11:08 hier gerade sehen was sind das für situation synchrone nachrichten sind eigentlich immer funktions aufrufe keine signale signale sind in aller regel als 11:22 synchron und synchron sind dann die funktions aufrufe aber es gibt auch asynchrone funktions aufrufen 11:31 jetzt schauen wir uns nochmal diese nachrichten etwas genauer an wir haben ziehe eine nachricht ohne einen parameter 11:39 das heißt wir informieren denn lesen denn des ml diagramms einfach darüber es soll irgendein select passieren und die antwort nachricht sieht in aller 11:49 regel so aus dass dieses dieser begriff select an der stelle so der name der anfrage dass das der ersten nachricht in der replay oder return nachrichten sich 12:03 wiederfindet so dass wir wissen h von dem select ist das eben das ergebnis dann steht nach dem doppelpunkt der rückgabe wert da werden uns nachher 12:13 nochmal ein paar alternativen anschauen aber das wäre jetzt die information dass die das leck statement hat jetzt hier irgendwelche daten zurück liefern 12:24 und wie ich vorhin schon gesagt habe bei signalen finden wir so was in aller regel nicht hier habe ich jetzt mal eine nachricht 12:32 mit einem parameter modelliert dass jetzt diese 123 in diesen runden klammern und diese nachricht dieser parameter kann entweder als die 12:44 dezidierte wert oder als variable formuliert werden und in der antwort nachricht habe ich jetzt hier entsprechend dann den antwort wert aber 12:56 auch das kann ein wert oder eine variable sein so ja das ist doch schon mal nicht schlecht da kann man schon einigermaßen was modellieren 13:06 jetzt kann es aber auch so machen dass ich eine variable eine zuweisung oder einer variablen eine zuweisung meinem eines methoden aufrufs mache und dann 13:18 würde ich hier stehen name ist gleich ein ganzer username 123 da gibt es noch ein paar andere möglichkeiten aber das was ich jetzt gerade gezeigt habe das 13:25 sind so die eigentlich die sinnvollsten dann gibt's noch ein paar spezielle nachrichten 13:33 zum einen sei da erwähnt die sogenannte gefundene nachricht also eine gefundene nachricht ist etwas wo der absender unbekannt ist das hat erst mal außerhalb 13:46 unseres betrachtung des rahmens die kommt hat irgendwo her und das ist so sagen würde mir jetzt keinen mehrwert liefern diesen die den ursprung dieser 13:56 temperaturänderung in dem fall jetzt in irgendeiner form zu modellieren und das wäre dann wie gesagt eine gefundene nachrichtenportal dazu wird die 14:05 verlorene nachricht das heißt wenn ich irgendeine nachricht raus schicke und es ist mir jetzt für diesem für dieses modellierungs diagramm jetzt erst mal 14:14 egal wer was damit macht dann würde ich das als eine sogenannte verlorene nachrichten modellieren und als indikator dafür haben wir hier eben 14:23 diesen punkt der eben hier sein schwarzes loch fungiert die idee hinter einem einer verlorenen nachricht ist eben dass ich keinerlei relevante 14:40 informationen in meinem himmel diagramm hinterlegen möchte oder kann die für die verarbeitung dieses signals irgendwie wichtig ist und deswegen ist es eine 14:50 verlorene nachricht die aber durchaus gesendet wird also modelliert sie dann gibt es noch eine spezielle nachricht über die haben wir schon ein 14:59 bisschen gesprochen und zwar die erzeugungs nachricht das ist eine nachricht die ein objekt oder ein teilnehmer in irgendeiner form erzeugt 15:10 im programmieren werde es ein konstrukt der aufruf und das wird eben mit so einem fall dargestellt dann aber auch schon darüber gesprochen dass wir wenn 15:21 wir jetzt fertig sind mit unserer interaktion mit der mail eine destruktion nachricht durchführen oder oder senden und die wird dadurch auch 15:32 impliziert dass am ende dieses diese destruktion nachricht hier auch dieses stopp symbol auftaucht und dadurch getrieben dass die destruktion nachricht 15:43 ein weiteres element ist der sogenannte interaktions rahmen der soll diese ganze kommunikation kapseln und ja fast im ganzen auch einen namen das heißt alles 15:54 was in diesem rahmen abläuft ist eben für genau diese interaktion wichtig in dem fall user laden ass de steht für sequenz diagramm und damit infizieren 16:05 wir eben auch dass es sich um eine sequenz diagramm handelt das wird so von uml vorgegeben und dann macht er das auch so 16:14 beim interaktions rahmen oder gerkan wir auch parameter übergeben das heißt es im aufruf dieses interaktions rahmens in dem fall wer ist 16:25 jetzt die id des users das dass wir dann beispielsweise für die select benötigen und es taucht dann hier unten wieder auf es gibt noch mehrere möglichkeiten mit 16:34 variablen und ähnlichen innerhalb von einem mail sequenz diagramm zu arbeiten aber das wird jetzt an der stelle glaube ich doch zu weit führen und ich glaube 16:43 mit diesem mit dieser mutation kann man die allermeisten dinge schon erschlagen dann gibt es noch den rückgabe wert der würde hier oben mit doppelpunkt und den 16:53 datentyp formuliert werden und das würde man dann so realisieren dass wir hier unten so ein objekt erzeugt nennt das genauso wie den interaktions rahmen und 17:05 ausgabewert an den string das wäre dann so etwas wie ich sozusagen mit dem eingabe parameter daten rein kriege um rückgabe wert oder rückgabe 17:14 parameter nennt müsse auch wieder rausbekommen jetzt haben noch ein paar spezial symbole die nennt man auch kombinierte 17:25 fragmente oder nur fragmente und ich fange mal mit der alternative an dazu schauen wir uns mal folgendes an ich habe wieder ein user und ein server 17:33 und der möchte jetzt hier irgendein login machen mit weiteren passwort der server checkers und liefert jetzt die op zurück 17:44 aber das soll ja nur dann durchgeführt werden wenn die log in informationen korrekt sind das heißt was mache ich wenn er jetzt 17:53 beispielsweise was falsches rein schickt das heißt hier brauche ich irgendeine art verzweigung eben in sequenz diagramm sprich alternative und das ganze sieht 18:04 dann so aus ich habe jetzt hier den positiven 2 das heißt wenn passwort okay in diesen eckigen klammern 18:11 dann wird eben login passwort ok zurückgegeben und im elz zweig dann was sich die neue beispielsweise diese dieses passwort ok diesen ecken klammer 18:27 nennt man das und die müssen im falle der alternative des jungs sein dh ich darf hier keine überschneidungen haben und deswegen macht man meistens am 18:38 schluss einfach elsen und das ist sagen alles andere her also wenn quasi keines der vorigen bedingungen gilt und ich habe schon erwähnt das heißt es 18:47 gibt eben quasi auch die möglichkeit mehrfach verzweigungen zu realisieren das sehen wir jetzt hier ich habe jetzt hier passwort okay dann wird eben ok 18:59 zurückgeliefert wenn es nicht okay ist und der fehler zähler kleiner drei dann werden einfach nur die neue zurückgeschickt und wenn es eben nicht 19:08 kleiner 13 größer gleich drei das wäre 12 dann würde irgendein passen der user gelockt werden was auch immer und das wäre jetzt inflation führen drei zweige 19:22 so das stück das wir jetzt die option und bei auktionen ist es so dass ich nur prüfe ob etwas der fall ist und wenn nicht wird alles 19:31 wird sozusagen dieser bereich innerhalb dieser option einfach übersprungen ich habe jetzt hier beispielsweise wenn das passwort nicht okay ist dann wird diese 19:43 bereiche übersprung da merkt man gleich auf irgendwelche allgemein sind informationen und wenn es eben okay ist dann liefert mir mein mann mein server 19:54 irgendwelche user präferenz ist fast immer so dass wir die option in der rotation für die struck programme wie hat es eine so genannte einseitige 20:05 verzweigung so dann fehlt uns noch die schleife das sieht so aus dass ich hier das 20:14 schlüsselwort luca oben drin habe und dann gibt es hier eine schleife bedingung für die wiederholung man interpretiert ist in aller regel als 20:21 kopfgesteuert schleife und so halt dass die bei einem war heizwert die wiederholung durchgeführt wird hier steht eben entweder ein guter wert 20:32 drin der eben die wiederholung darstellt es gibt aber auch eine andere möglichkeit wenn ich ein min oder bis max werthein trage dann wäre das eine 20:42 zeitschleife also null zehn hätte ich nichts schleife von 0 bis 10 oder eine dritte option wäre an der stelle ein stern das würde dann einfach bedeuten 20:54 die schleife million endlich laufen dann würde man noch abbruch bedingungen formulieren können aber das würde jetzt auch hier an der stelle zu weit führen 21:01 das video wird ohnehin wahrscheinlich sehr lang es gibt noch weitere fragmente aber da würde ich einfach sagen wer wirklich da noch tiefer rein will 21:14 in solche sachen wie kritische bereiche relevante relevante nachrichten usw sollte sich das dann eben anderweitig noch mal näher bringen ich glaube das 21:24 was wir jetzt haben sind aus meiner sicht wirklich die wichtigsten elemente ja dann kommen wir schon zu einem beispiel wo wir das ganze mal anwenden 21:33 und ich habe nicht alles drin aber doch einiges und deswegen habe ich jetzt einfach mal geld page täter genannt wir haben hier einen user der 21:45 interagiert einen server und eine datenbanken beginnen wir damit dass der user jetzt irgendwie page informationen benötigt 21:57 mit ergibt seine regieren und würde der server irgendwelche login-daten irgendwelche passworteingabe meldungen oder sowas zeigen und wir haben eine 22:10 zwei phasen authentifizierung das heißt er schreibt jetzt irgendwie oder erzeugt jetzt erstmals ohne so eine mail wohin eine code erzeugt wird dann sagt er 22:21 schickt email los der user kriegt jetzt die mail und holt sich dort eben diesen code raus und parallel dazu liefert jetzt der server die die information 22:34 also die page täter geben dann braucht um eben den login und seinen code einzugeben 22:42 so damit er das machen kann oder damit er sich auch mal vertippen kann habe ich jetzt hier einfach loop eingebaut das ist jetzt nicht besonders festgekettet 22:50 also keinen abbruch und ohne alles aber egal das wesentliche kommt darüber der user gibt es ein login ein code id und passwort und der server verifiziert ist 23:04 das der jackpot ob das alles so weit okay ist und solange es nicht okay sollte halt noch ein geben bis zum jüngsten tag und wenn das komplett 23:14 verpasst muss halt einfach den kompletten prozess neu starten das ist jetzt hier nicht modelliert am schluss gibt dann der server wenn er eben über 23:24 diesen coup hinaus ist diese user data usd/t soll ist für user data stehen das eben der user eben seinen persönlichen kram auf der seite sieht 23:35 und entsprechend dann an der stelle weitermachen kann jetzt habe ich hier noch eine alternative eingebaut dh wenn der user 23:47 kein atmen ist dann sagt einfach bitte gebt mir meine userdaten mit der id der server holt sich von der datenbank jetzt sehen diese userdaten die werden 23:59 zurückgeschickt und dann an den user weitergeleitet um 11 2 also wenn es ein admin ist dann sagte schick mir alle daten erhalten weil sie eine andere 24:09 funktionalität wird dann aufgerufen diese funktionalität holt sich dann von der datenbank eben entsprechend auch alle daten die gehen zurück und werden 24:19 dann eben an den user zurückgeliefert und er sitzt dann okay ja damit einmal die wesentlichen elemente des sequenz diagramm sitz uns 24:30 angeguckt und hoffentlich verstanden ich glaube das ist auch wirklich das wichtigste es gibt noch mehr das ist richtig aber da kann man sich dann auch 24:38 entsprechend online dann noch mal schlau machen dann wirklich noch mehr in die tiefe gehen will aber das was wir jetzt hier heute 24:44 irgendwie sehen haben das sind aus meiner sicht wirklich die wesentlichen elemente und ich glaube damit komme auf jeden fall ganz gut über die runden 24:54 das war s dann von meiner seite ich bedanke mich für die aufmerksamkeit und ihr habt es zum nächsten video