Существует ли оригинальный UML-подход к изображению потоков? - PullRequest
29 голосов
/ 05 июня 2009

Мне нравится использовать диаграммы UML для описания моего программного обеспечения. В большинстве случаев диаграммы предназначены для моего собственного использования, и я использую их для более сложных фрагментов кода, взаимодействий и т. Д., Где мне пригодится возможность просмотреть их в будущем.

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

В прошлом я использовал символ в диаграмме последовательности, чтобы показать создание нового потока, но, оглядываясь назад на некоторые диаграммы, делаю так, что иногда это является неоднозначным между временем жизни объекта - для чего предназначены диаграммы последовательности - и временем жизни потока , Есть ли лучший подход для включения потоков в UML?

Ответы [ 8 ]

11 голосов
/ 09 июня 2009

Мне удалось создать диаграмму, которая имеет смысл для меня во время ее рисования. Основная предпосылка заключается в том, что я наложил серые прямоугольники, представляющие экземпляры классов, на синие прямоугольники, представляющие время жизни потоков. Главное, что позволяет мне отслеживать, - это знать, какой поток я буду выполнять при вызове определенных методов.

Нет сомнений, что есть лучшие и более интуитивные способы моделирования потоков и классов. Мера успеха для меня заключается в том, дает ли моя собственная диаграмма тот же уровень понимания, что и через 6 месяцев.

9 голосов
/ 06 июня 2009

Диаграммы активности, последовательности и состояния: все правильные способы отображения поведения потока.

1-й: (против комментариев) В UML есть два набора диаграмм или элементов моделирования: статическая структура, как вы выразились, и поведенческая. Любая книга поможет вам разобраться в расколе, как правило, в содержании / оглавлении, кроме того, это можно увидеть на странице 11 UML-статьи Мартина Фаулера «На мой взгляд, почти дефактный стандарт для начала UML».

2nd: (К вопросу и комментарию sipwiz) Диаграммы действий обычно не понимаются для моделирования бизнес-процессов, однако их можно использовать для этого, и большинство примеров или простых руководств подходят к ним с точки зрения бизнеса .

Обсуждение ваших опций для модельных тем:

Диаграммы действий - Позволяет разветвляться и задавать параллелизм с использованием BAR и строк использования. Обратите внимание, что пример внизу - это не бизнес-процесс, пример . Большинство людей могут читать это, бизнес, менеджмент и разработчики, хотя иногда им может не хватать деталей или они запутываются.

Диаграммы взаимодействия последовательностей - В том же посте, пример , вы увидите диаграммы последовательностей, позволяющие задавать параллельное поведение в последовательности, упаковывая параллелизуемое поведение с меткой «par» Это полезно, чтобы показать читателю, какие методы могут или должны вызываться параллельно, т. е. разными потоками. Это метод, который я бы использовал для подробных разработок, таких как обсуждение создания объекта.

Диаграмма состояний - Диаграмма состояний, также как и операция, допускает параллелизм, используя BAR и строки использования.

ПРИМЕЧАНИЕ: Они не будут моделировать конкретную нить и ее точный цикл подъема, поскольку это является частью уровня моделирования экземпляра / времени выполнения, если это то, что вы хотите уточни свой вопрос и я отвечу. Я бы просто смоделировал его, используя один из вышеперечисленных, поскольку никто, кроме эксперта по MDA / UML, не вызовет вас, и вы не создаете работающую систему.

Также: пожалуйста, обратите внимание, что дополнительную информацию можно найти в большинстве книг UML. Также кредитное плечо: http://www.jguru.com/faq/view.jsp?EID=56322

8 голосов
/ 06 июня 2009

Традиционно нарезка резьбы изображалась схематично с использованием сетей Петри. У Роба Мартина есть статья о многопоточности в UML, которая может оказаться вам полезной.

Обновление - только что вспомнил, что вы можете представлять потоки с вилками в диаграммах деятельности - мне удалось найти что-то, что объясняет это .

Очень трудно найти какие-либо бесплатные учебные пособия для сетей Петри, однако я знаю, что сети Петри хороши для моделирования параллелизма, поэтому я нашел в Google "производитель-потребитель Петри сетей" (моя любимая функция потоков) и нашел это .

Я также нашел несколько слайдов, которые показывают сети Петри , моделирующие семафор .

4 голосов
/ 05 июня 2009

Диаграммы действий UML имеют элементы fork и join для отображения параллельного потока логики.

2 голосов
/ 10 сентября 2012

UML определяется надстройкой UML, вы можете найти ее здесь http://www.omg.org/spec/UML. Если вы прочитаете спецификацию, вы обнаружите, что класс UML может быть активным. Активный класс - это класс с мета-атрибутом isActive, установленным в true. Это также изображено по-другому. Экземпляры объекта активного класса автоматически выполняют «поведение классификатора». Как и для любого поведения, вы можете определить его с помощью действия, в котором вы ожидаете асинхронных сигналов (AcceptEventActions) и вызываете методы (CallOperationAction) или другие поведения (CallBehaviorActions). Вот как активные объекты моделируются в UML. Вам просто нужно прочитать спецификацию UML.

2 голосов
/ 05 июня 2009

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

Наиболее UML-совместимый способ, вероятно, заключался бы в добавлении некоторой аннотации, указывающей, что «объект» представляет поток.

1 голос
/ 30 июля 2013

Диаграммы действий будут моделировать внутреннюю работу вашего программного обеспечения с помощью разветвлений и объединений для представления потоков . Чтобы узнать, точно , как правильно смоделировать это, см. Превосходную серию статей Конрада Бока. Здесь - статья, которая охватывает вилки и объединения, но вы должны перейти по ссылкам к первой статье в серии, чтобы узнать, как правильно моделировать, используя «Цветные сети Петри». Это не то, как вы думаете (и это довольно легко)!

В OMG существует новый действующий стандарт для языка под названием Alf , который обеспечивает более удобную поверхностную запись для диаграмм действий и предназначен для представления код . Из спецификации:

Основная цель языка действий - выступать в качестве поверхностной нотации для указания исполняемого файла поведения в более широкой модели, которая в основном представлена ​​с использованием обычных графических обозначений UML. Например, это может включать методы операций с классами или эффекта перехода поведения на конечных автоматах.

Для программиста вы, вероятно, не можете стать более интуитивным, чем Alf. И он отлично преобразуется в диаграммы активности UML.

0 голосов
/ 05 июня 2009

Самая сильная точка UML - это статическая структура. Если вы используете недолговечные потоки, я также не вижу простого способа их построения. Может быть, вы можете найти решение, немного изменив ситуацию: зачем вы используете / нуждаетесь в потоках? Какую функциональность они предоставляют? Если они взаимодействуют друг с другом и используют какой-то API-интерфейс (для передачи сообщений), рисование их как компонентов может иметь смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...