Is there a rule/guideline about how to display a C# using() statement in UML sequence diagrams?
I'm right now in the last months of my apprenticeship. And to prove, that I'm able to develop software from start to beginning, I have to do a project which has to have a documentation. This documentation will be shown to a jury to rate it.
My thought was to create an activation adding a note to it, saying using(CmSdkScope scope = new CmSdkScope)
, and then adding another activation - like a self call - to it, where I then message other classes.
Here is an example: enter image description here
Is this valid?
-
8Why... I mean, if you’re going to write code, go write code.Telastyn– Telastyn2018年03月20日 11:28:28 +00:00Commented Mar 20, 2018 at 11:28
-
2Code is documentation. Create those uml diagrams from from code. It's madness to try and create them by hand before you actually write your code.David Arno– David Arno2018年03月20日 11:37:48 +00:00Commented Mar 20, 2018 at 11:37
-
1In that case, create whatever diagrams you need to help you understand how your design might work. Since they are for you, do not worry about "proper" UML; draw whatever what makes sense to you. Then throw those diagrams away before you start coding, please.David Arno– David Arno2018年03月20日 11:46:05 +00:00Commented Mar 20, 2018 at 11:46
-
5If you are doing this as part of an end of apprenticeship test, then you should be asking your boss, others in your team (if applicable) and the jury (if possible) what they'd do in this situation. This both shows a willingness to ask for help and you're more likely to get an answer that fits in with the company's approach to such things. Asking random folk on the internet for help in such a specific situation will rarely yield a good answer.David Arno– David Arno2018年03月20日 12:22:24 +00:00Commented Mar 20, 2018 at 12:22
-
4"Asking the jury is not possible, same for my boss". Really, why on earth can you not ask your boss? They are utterly failing in their duty to help you develop and grow as a useful member of the team if they cannot or will not answer such questions.David Arno– David Arno2018年03月20日 12:32:28 +00:00Commented Mar 20, 2018 at 12:32
3 Answers 3
Disclaimer: I'm not a C# programmmer, but I looked at the documentation that shows a simple example:
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
Here's how I'd show this in UML:
What's key to show is that there is a temporary scope. So, it's a rare case where the "X" (end of life of an object) is used in UML sequence diagrams.
This depends on a lot of factors.
If you want to use the sequence diagram to generate code from it, then most tools will not understand this kind of double activation. In that sense, it is not valid.
If it is important to show the lifetime of the CmSdkScope
object, then just a comment explaining that an activation bar corresponds to a using()
statement is too subtle for by taste. Then I would explicitly draw the creation and destruction of the CmSdkScope
object and possibly leave the fact that this is realized with a using statement as an implementation detail.
In most other cases, I would say that it is a perfectly understandable sequence, so I would call it valid.
-
This answer says what @Furmanator answer shows. but I like the additional reasoning And, this question succinctly answers the OP question "is this diagram artifact valid?"radarbob– radarbob2018年03月23日 22:51:19 +00:00Commented Mar 23, 2018 at 22:51
You could use an interaction frame to represent a using block. They can be used to denote loops and conditionals; this is a bit different, but it lends itself well for this kind of representation, IMO.
Interaction frames
Take a look at this for more detail: UML Sequence Diagrams