English for Software Engineers (with UML)
I’ve just started writing the new series for the Russian version of my blog. It is called English for Software Engineers (in Russian) where I found new uses for UML (Unified Modeling Language) to teach important grammar patterns and concepts. Just to show you an example, here are two sequence diagrams depicting the difference between Present Perfect Tense and Past Tense:

- Dmitry Vostokov @ DumpAnalysis.org -
July 28th, 2008 at 8:53 am
Hehe, now there’s an original sequence diagram idea!
You might want to find yourself a better sequence diagram editor though, those self calls look really weird ;o)
Looks like Visio.. Is it?
I’m not really familiar with Win crash dumps (been doing java the last few years), but would it be useful (and feasible!) to automatically generate sequence diagrams for crash dumps? Or is the necessary information simply not available?
July 28th, 2008 at 10:09 am
Yes, it is Visio. Now I have a more powerful laptop and can try other editors written in Java. Yes, it is possible to draw sequence diagrams from them where timing information is available even implicitly, for example, stack traces (backtraces), LPC/RPC calls. I would also say that component diagrams capture statics like component relationships, interfaces, subsystem hierarchies. However I’m not aware of any tool that automatically generates such diagrams, but sure it might be useful sometimes, for visualization and at least, teaching purposes.
July 28th, 2008 at 11:58 am
The reason I’m asking is that Trace Modeler has a really simple (text-based) file format, so it would be rather trivial to write a sequence diagram generator.
For example, the text
# targets
OBJECT target0 "Controller"
OBJECT target1 "Model"
OBJECT target2 "View"
# trace
CALL target0 "handleEvent"
CALL target1 "service"
CALL target1 "notify"
CALL target2 "update"
CALL target2 "display"
CALL target1 "getData"
RETURN ""
RETURN ""
RETURN ""
CALL target0 "update"
CALL target1 "getData"
RETURN ""
RETURN ""
RETURN ""
RETURN ""
RETURN ""
Produces this UML sequence diagram. So you see it is pretty straightforward to generate diagrams if you have the necessary information you want to depict.
As I said, I’m not that familiar with what you’re doing so I can’t write the generator myself, but I’m always interested in new contexts for Trace Modeler. So if that is something you wish to try out, let me know and I’ll see what I can do to help you.
July 28th, 2008 at 12:00 pm
Hmm, let’s try that again with a ‘pre’ tag :
# targets
OBJECT target0 “Controller”
OBJECT target1 “Model”
OBJECT target2 “View”
# trace
CALL target0 “handleEvent”
CALL target1 “service”
CALL target1 “notify”
CALL target2 “update”
CALL target2 “display”
CALL target1 “getData”
RETURN “”
RETURN “”
RETURN “”
CALL target0 “update”
CALL target1 “getData”
RETURN “”
RETURN “”
RETURN “”
RETURN “”
RETURN “”
July 28th, 2008 at 12:38 pm
This is cool! I’ll try with stack traces together with IPC and other stuff and let you know.
Thanks,
Dmitry
September 29th, 2008 at 4:06 pm
Hi Dmitry,
I’m curious, were you able to produce anything useful in your experiments with Trace Modeler? Let me know!
Best regards,
Yanic
October 6th, 2008 at 10:05 am
Not yet, as I was busy with other projects, but give it a try when I resume my English language related posts soon! Thanks for reminding me, anyway it is still on my list. By the way, if I use your trial version to draw diagrams, can I later include them in my books?
October 7th, 2008 at 7:19 am
Sure, no problem. Looking forward to it!
October 13th, 2008 at 9:03 pm
Interesting idea, but I don’t think those diagrams truly explain the difference between the two tenses. It’s something I’ve thought about quite a lot as my wife is French and sometimes has trouble with this.
The problem is that after doing something else, one might sometimes say “I sent the fix” and sometimes say “I have sent the fix.” It depends on the context. Let me give two examples.
Example 1.
X: You keep on saying that you’re going to send the fix, but you never do.
Y: Yes, I’m very sorry about that, but I’ve been extremely busy recently.
Y works on the fix, sends it, and then does something else. Much later:
Y: You’ll never believe this, but I’ve sent the fix.
X: At last!
Example 2.
X: Do you want to go for a drink at 8.00 with me and a few friends?
Y: I’d love to but I’ve set that time aside for sending the fix.
Y works on the fix and sends it. The next day:
Y: Did you have a good evening yesterday?
X: Yes we did. Pity you couldn’t be there. How did you get on?
Y: Well, I sent the fix.
The difference between these two conversations is that in the second one Y is referring to a specific time, and is therefore telling a story about the past, so to speak. In the first conversation, Y is referring to his/her present state, the state of having sent the fix. One way to describe the difference is that to say, “I have done ***,” is to say, “The action of my doing *** is complete,” whereas to say, “I did ***,” is to say, “At a specified (or implied, or understood) time the action of my doing *** occurred.”
October 21st, 2008 at 8:18 am
Tim, I completely agree, if you don’t mind, I put a Russian translation of your comment on my Russian blog! Thanks, Dmitry
October 24th, 2008 at 1:09 am
I’ve been trying to contact you, don’t know if that worked though. Let me know if it didn’t.
October 24th, 2008 at 7:43 am
It finally worked
Thank you!