Использование UML для описания процесса голосования и комментирования - PullRequest
0 голосов
/ 11 февраля 2011

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

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

Я не думаю, что это в любом случае понятно, поэтому я хочу спросить: как правильно описать это с помощью UML?

1 Ответ

0 голосов
/ 12 февраля 2011

Если вы хотите описать правила (то есть отношения), тогда диаграмма классов, вероятно, более подходит, чем диаграмма действий. Вот довольно грубый, но тем не менее представительный пример: class diagram: question-answer-vote

Диаграммы действий подходят для описания связанных действий (процессов). Однако в этом случае поведение довольно простое; Пользователь может отправлять сообщения (вопросы или ответы), а также голосовать за сообщения.

На диаграмме собраны следующие правила (чтение непосредственно из отношений):

Each User may submit many Posts
A User need not submit any Posts
Each Post must be submitted by exactly one User
Each User may vote on many Posts
A User need not vote on any Posts
Each Post may be voted on by many Users
A Post need not be voted on by any Users
Each Vote has a type which is either up or down
A Post is either a Question or an Answer
A Question may have many Answers
A Question need not have any Answers
Each Answer must be a response to exactly one Question

Обратите внимание, что в модели отсутствуют некоторые важные правила (например, вы не можете голосовать за свои сообщения). Также отсутствуют комментарии (другой подтип поста) и другие существенные атрибуты (например, имя пользователя, текст поста и т. Д.). Надеюсь, достаточно представительный для цели.

НТН.

PS: я взял на себя смелость с синтаксисом для Vote.type. Это действительно должно быть определено как перечисление, но для этих целей способ, которым это показано, является достаточным. Извиняюсь перед любой скрытой полицией UML: -)

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