![]() In this case and depending on the case, I use color coding with each arrow (e.g. Sometimes, I want to have multiple flows within a component diagram. Multiple and options flows in a component diagram It is a bit strange, but order in rendering seems to follow a reverse order of appearance in the script. l->) but when that doesn’t work, I try to achieve an optimal layout by reorganizing the appearance of the components, especially when they are nested with e.g. You can try to provide some guidelines to the rendering component by adding directions in the arrows (e.g. ![]() When using the component diagram, often the layout seems to have a mind of it’s own. With this post I want to share some tips and tricks from my experience using it. Also, it is great for Confluence when the PlantUML Diagrams for Confluence add-on is enabled. The fact that the format is in text is so powerful in software engineering because it can be attached to any process with change management over source control. It has it’s limitations but if the size and the complexity of the diagrams can be contained, then it offers great benefits. However to be clear, this is not a property of the messaging or the interaction between the two but rather internal detail of how A, in this case, is implemented, which may actually be off topic depending on what the diagram is intended to depict.I love PlantUML. If we want to describe the internal threading of one or the other, we can illustrate, say, a response being received out of the activation. There is no such thing as sending an async message over the web - it is just sending a message over the web, which is either request/command or a reply, if you will.įirst, we should focus on behavior (is there one or more response for a given request/command) and timing (how much delay do we expect) this is the high level takeaway of the interaction between A & B. ![]() It is an adjective that describes implementation detail and timing of external events relative to the internal threading design of either a client or a server, and evokes strategies to handle such events as the main program may be doing something else at the time.Īt the high level when talking about messages between client and server or two servers (and we are not diving into internal implementation details of either one) we can talk about one way messages, requests/commands (i.e. Async describes an event (message or otherwise) that happens independent of the main flow of the program (here, A or B). The term async doesn't really apply at this level. That means you have a book to hand new employees. If that standard comes out of some version of a UML book so much the better. The most important thing is that your shop have a standard way to do it so you can understand each other. When async is involved predicting object life time this way becomes very complicated. To depict flow of control and to predict object life time so you know when it's safe to delete them. Traditionally sequence diagrams have had two jobs. Really you have two different flows of control marching through A at that point. If you have a call back to A it makes more sense to have a 'return' arrow. In those cases the safest depiction is no return arrow at all. Most likely you don't even know which will happen. Your "or here" line tells me that when B terminates you expect A to have already terminated. Your "response here" line tells me that when B terminates you expect A to still be processing and, because you put it right at the end, to terminate when it see's B respond. Async doesn't really fit in this diagram because being async means you have your own damn y axis. In this metaphor a slant would be lag not asynchronicity. One thing you'll notice is that almost no one puts a slant on the arrows. I can prove this with a google image search. ![]() I'm not going to tell you how because every dang shop has their own way of doing them.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |