Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a tool to model/simulate software concurrency?

Is there a good tool out there that can model an application concurrency/locking scheme in a graphical way and that can simulate some of the aspects?

I know that Petri nets can be used for that more or less, but I don't know a good GUI tool that can design and simulate.

Is UML in any way usable for such purposes?

Any good links are very appreciated.

like image 515
Andrey Adamovich Avatar asked Dec 22 '09 19:12

Andrey Adamovich


3 Answers

UML Activity Diagrams can be expressed as Petri nets (e.g. see this paper). Unfortunately I don't know any good industrial oriented tools for simulation of Petri Nets or Activity Diagram (but there are many academic projects which you can easily find).

Are you sure that you want to simulate your model (by simulation I mean that you actually want to sit and look how your Perti net is being executed)? Usually this type of analysis is applicable for small and simple algorithms. In real world situation you probably would like to do model checking of your algorithm rather than simulation. I would recommend you to check SPIN (used by many companies, e.g. Siemens). Also I have a positive experience with Alloy and Prism. But if your focus is on verifying parallel algorithms I would suggest you to consider SPIN first.

Edit: I checked some tools for simulation and I can advise looking at

1) http://sourceforge.net/projects/visual-petri/

2) http://www.renew.de/

3) http://www.winpesim.de/index.html

like image 195
Alexey Kalmykov Avatar answered Sep 21 '22 05:09

Alexey Kalmykov


SPIN is a popular tool for verification of distributed systems but is command line only I think. But on the Spin webpage there is a link to a closely related GUI tool called GOAL

like image 21
caerwyn Avatar answered Sep 18 '22 05:09

caerwyn


I'm doubt this is what you are looking for, but I'll throw in my two cents:

At my university, in our class on concurrent software systems, we use a tool called Labelled Transition System Analyser (LTSA). It's actually a language that you can use to model the behavior of a system.

The "code" is turned into a state diagram and a transition table.

like image 27
Thomas Owens Avatar answered Sep 20 '22 05:09

Thomas Owens