Есть ли инструмент для моделирования / симуляции параллелизма программного обеспечения?

Есть ли хороший инструмент, который может моделировать схему параллелизма / блокировки приложений в графическом виде и может имитировать некоторые аспекты?

Я знаю, что для этого более или менее можно использовать сети Петри, но я не знаю хорошего инструмента с графическим интерфейсом, который может проектировать и моделировать.

Можно ли использовать UML для таких целей?

Любые хорошие ссылки очень ценятся.

7 ответов

Решение

Диаграммы активности UML могут быть выражены в виде сетей Петри (например, см. Эту статью). К сожалению, я не знаю хороших промышленных инструментов для моделирования сетей Петри или Диаграммы Деятельности (но есть много академических проектов, которые вы легко можете найти).

Вы уверены, что хотите смоделировать свою модель (под симуляцией я подразумеваю, что вы действительно хотите сидеть и смотреть, как выполняется ваша сеть Perti)? Обычно этот тип анализа применим для небольших и простых алгоритмов. В реальной ситуации вы, вероятно, хотели бы сделать проверку модели вашего алгоритма, а не симуляции. Я бы порекомендовал вам проверить SPIN (используется многими компаниями, например, Siemens). Также у меня есть положительный опыт работы с Alloy и Prism. Но если вы сосредоточены на проверке параллельных алгоритмов, я бы посоветовал вам сначала рассмотреть SPIN.

Изменить: я проверил некоторые инструменты для моделирования, и я могу посоветовать, глядя на

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

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

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

Я сомневаюсь, что это то, что вы ищете, но я добавлю два моих цента:

В моем университете, в нашем классе по параллельным программным системам, мы используем инструмент под названием Labeled Transition System Analyzer (LTSA). На самом деле это язык, который вы можете использовать для моделирования поведения системы.

"Код" превращается в диаграмму состояний и таблицу переходов.

SPIN - это популярный инструмент для проверки распределенных систем, но я думаю, что это только командная строка. Но на веб-странице Spin есть ссылка на тесно связанный инструмент GUI под названием GOAL

Вы можете проверить Petri Net Sim, чтобы имитировать обычные / синхронизированные / цветные Petrinets, он поставляется с хорошим графическим интерфейсом, который отображает выполнение Petri Net в режиме реального времени.

Вот интерактивный Java-апплет, который может спроектировать и запустить сеть Петри.

Прошло много времени с тех пор, как я смотрел на это, но, похоже, Птолемей подойдет.

Попробуйте использовать инструмент параллелизма LTSA. Java программа. (С пометкой Transition System Analyzer), для имитации программ. Вы можете скачать его с:

http://www.doc.ic.ac.uk/ltsa/

Но вы должны быть терпеливы, используя его, может потребоваться несколько часов, чтобы изучить, как использовать это. Вероятно, лучше всего работает при моделировании программ Java.

И конечно, всегда хорошо использовать UML-модели:)

Другие вопросы по тегам