Диаграмма последовательности чтения

У меня есть следующая диаграмма последовательности, состоящая из двух линий жизни и синхронного сообщения.

введите здесь описание изображения

Я прочитал это следующим образом:

Lifeline1 представляет собой объект, выполняемый в течение определенного периода времени.

Во время выполнения lifelin1 и точно в красном круге «lifeline1» нужно что-то от «lifeline2», чтобы иметь возможность завершить свое выполнение.

So,

1) «спасательный круг1» приостанавливает выполнение, а затем

2) вызвать синхронное сообщение (пожалуйста, уточните это немного в своем ответе)

Розовая линия представляет собой продолжительность времени, в течение которого «спасательный круг1» должен достичь «спасательного круга2» для выполнения.

3) Синий прямоугольник представляет продолжительность выполнения сообщения.

4) И пунктирная линия представляет собой продолжительность времени, в течение которого «спасательный круг2» должен достичь «спасательного круга2», чтобы возобновить свое выполнение.

5) черный прямоугольник представляет собой период, когда линия жизни1 не использовалась.

Я правильно читаю?

Я пропустил какой-либо шаг?


person user2019510    schedule 01.02.2013    source источник


Ответы (2)


Lifeline1 представляет собой объект, выполняемый в течение определенного периода времени.

Пунктирная вертикальная линия представляет время жизни объекта. Поле «спецификация выполнения» рисуется на линии, когда объект активен/выполняется/имеет управление.

Во время выполнения lifelin1 и точно в красном круге «lifeline1» нужно что-то от «lifeline2», чтобы иметь возможность завершить свое выполнение.

Если ему нужно что-то для начала выполнения, оно не будет отображаться со спецификацией выполнения для начала, а вместо этого будет показано, что оно становится активным после получения сообщения.

Вместо этого блок показывает, что lifeline1 отображается как активный и отправляет синхронное сообщение.

1) «спасательный круг1» приостанавливает выполнение, а затем

Эта диаграмма последовательности не подразумевает паузы (или другого времени).

2) вызвать синхронное сообщение (пожалуйста, уточните это немного в своем ответе)

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

Розовая линия представляет собой продолжительность времени, в течение которого «спасательный круг1» должен достичь «спасательного круга2» для выполнения.

Эта диаграмма последовательности не подразумевает временных характеристик — она показывает только последовательность операций. Время продолжительности показано с использованием обозначений «Ограничение продолжительности» и «Наблюдение продолжительности», показанных в таблице 14.1 OMG UML2. Надстройка.

3) Синий прямоугольник представляет продолжительность выполнения сообщения.

На этапе процесса, представленном синим прямоугольником, в ответ на сообщение выполняется объект lifeline2. Выражение «выполнение сообщения» немного расплывчато — выполняется объект, а не сообщение.

4) И пунктирная линия представляет собой продолжительность времени, в течение которого «спасательный круг2» должен достичь «спасательного круга2», чтобы возобновить свое выполнение.

Пунктирная линия — ответное сообщение. Поскольку сообщение, отправленное из "lifeline1", является синхронным, оно не продолжит выполнение до тех пор, пока не будет получено ответное сообщение.

5) черный прямоугольник представляет собой период, когда линия жизни1 не использовалась.

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

Я бы выбрал несколько более формальный подход и сказал, что выполнение не должно отображаться там, где оно находится, а должно начинаться после получения возвращаемого сообщения, чтобы показать, что lifeline1 продолжается - точно так же, как метод a, который вызывает метод в другом объекте, не получить поток управления обратно, пока вызов не вернется.

Тем не менее, очень часто объект, ожидающий ответного сообщения, отображается со спецификацией выполнения, поскольку он все еще контролирует последовательность операций.

(К сожалению, UML такой большой и пушистый, что почти любой пример, который кто-либо придумывает, может быть прочитан по-разному. жесткая интерпретация, чем тот, кто, скажем, пишет на доске, чтобы объяснить что-то соразработчику)

Группа управления объектами, которая поддерживает стандарты UML, а не как в «Боже мой, это огромно», хотя это также применимо.

person Pete Kirkham    schedule 02.02.2013
comment
спасибо, я прокомментировал следующую ссылку, потому что она немного длинная: mediafire.com/?cm3q8w8m1r5rxne - person user2019510; 02.02.2013
comment
@user2019510 user2019510 этот формат не очень подходит для перехода туда и обратно, но в ответ на два ваших пункта - обычно диаграмма последовательности запускается внешним субъектом, отправляющим сообщение, или с одним активным объектом, но это может быть отключено, если показаны только некоторые взаимодействия. Что касается того, как любой пример, который кто-либо придумал, может быть прочитан по-разному, может произойти - спецификация UML имеет низкую строгость и самосогласованность, поэтому разные пользователи будут интерпретировать ее по-разному. Он не комментирует, как передача управления влияет на выполнение спецификаций. - person Pete Kirkham; 03.02.2013
comment
спасибо, мистер @Pete Kirkham, за ваш добрый отзыв и, пожалуйста, примите мои глубочайшие извинения за включение неподходящих форматов, я опубликую здесь свое заключение 1) lifeline1 является вызывающим абонентом, а lifeline2 является вызываемым объектом. 2) линия жизни будет активна при получении сообщения - person user2019510; 04.02.2013
comment
3) линия жизни - это объект (пунктирная вертикальная линия представляет время жизни объекта), если мы вернемся к основной идее объекта в ООП, мы заметим, что объект имеет набор переменных экземпляра и набор методов, и объект вызывает метод ( здесь активный) в противном случае он не активен. я думаю, что та же идея применяется в UML SD, вы так думаете? - person user2019510; 04.02.2013
comment
4) Я бы выбрал несколько более формальный подход и сказал, что выполнение не должно отображаться там, где оно находится, но должно начинаться после получения возвращаемого сообщения, чтобы показать, что lifeline1 продолжается - точно так же, как метод a, который вызывает метод в другом объекте не получает поток управления обратно до тех пор, пока вызов не вернется. я полностью согласен с вами, но мне интересно, применялось ли это в спецификации UML или нет? - person user2019510; 04.02.2013
comment
@user2019510 user2019510 спецификация uml говорит: «Обычно начальное вхождение и конечное вхождение будут представлять OccurrenceSpecifications, такие как получение OccurrenceSpecification (сообщения) и отправка OccurrenceSpecification (ответного сообщения). Он не указывает, означает ли отправка синхронного сообщения и ожидание его возврата, что объект перестает выполняться — большую часть времени он по-прежнему отображается как выполняющийся, когда он находится «в стеке», и ожидает начала выполнения, когда вызов возвращается, но это не имеет смысла в непроцедурном коде. - person Pete Kirkham; 04.02.2013
comment
когда исходная линия жизни заблокирована от других операций, она может отображаться как выполняющаяся, но я думаю, что это семантически неверная диаграмма. Ты так думаешь? - person user2019510; 05.02.2013
comment
Вся семантика, которую навязывает UML, содержится в кавычках, начинающихся с «обычно». Я бы согласился с вами в более формальной обстановке, но общепринятым является соглашение о том, что заблокированные операции отображаются как выполняемые до тех пор, пока они не вернутся, и это не является неверным в соответствии с UML. Обычно разные группы или компании согласовывают собственное разъяснение семантики UML там, где спецификация оставляет ее неясной. Если вы изучаете это для класса, используйте те, которые дал вам учитель. - person Pete Kirkham; 06.02.2013

Быстрое предложение

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

Длинный скучный развернутый ответ

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

В диаграммах последовательности есть столбцы, где находится экземпляр класса (актер, таблица, граница, любой объект), и есть строки, где выполняются операции.

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

Некоторые «ячейки» доски находятся в одном столбце (линия жизни объекта).

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

.......................................................
.........+--------------+............+--------------+..
.........| * : FooClass |............| * : BarClass |..
.........+------+-------+............+------+-------+..
................|...........................|..........
................|...........................|..........
............+---+---+...................+---+---+......
.....start..|   |   |......enter()......|   |   |......
..(*)======>|   |   |==================>|   |   |---+..
............|   |   |...................|   |   |...|..
............+---+---+...................+---+---+...|..
............|   |   |.......return......|   |   |...|..
........+---|   |   |<------------------|   |   |<--+..
........|...|   |   |...................|   |   |......
........|...+---+---+...................+---+---+......
........|...|   |   |....PlayChess()....|   |   |......
........+-->|   |   |==================>|   |   |---+..
............|   |   |...................|   |   |...|..
............+---+---+...................+---+---+...|..
............|   |   |.......return......|   |   |...|..
........+---|   |   |<------------------|   |   |<--+..
........|...|   |   |...................|   |   |......
........|...+---+---+...................+---+---+......
........|...|   |   |..HaveRootBeer()...|   |   |......
........+-->|   |   |==================>|   |   |---+..
............|   |   |...................|   |   |...|..
............+---+---+...................+---+---+...|..
............|   |   |......return.......|   |   |...|..
........+---|   |   |<------------------|   |   |<--+..
........|...|   |   |...................|   |   |......
........|...+---+---+...................+---+---+......
........|...|   |   |...GetSandwich()...|   |   |......
........+-->|   |   |==================>|   |   |---+..
............|   |   |...................|   |   |...|..
............#"""+"""#...................+---+---+...|..
............!   |   !...GetFriesAlso()..|   |   |...|..
............!   |   !...............+---|   |   |<--+..
............!   |   !...............|...|   |   |......
............#"""+"""#...............|...+---+---+......
............!   |   !...............|...|   |   |......
............!   |   !...............+-->|   |   |---+..
............!   |   !...................|   |   |...|..
............#"""+"""#...................+---+---+...|..
....finish..|   |   |...................|   |   |...|..
...(O)<-----|   |   |<------------------|   |   |<--+..
............|   |   |...................|   |   |......
............+---+---+...................+---+---+......
................|...........................|..........
................|...........................|..........
................|...........................X..........
.......................................................

Линии жизни указывают, что операция или «сообщение» выполняются конкретным объектом, обратите внимание, в примере, что некоторые части линий жизни имеют разные символы («цвета»), чтобы указать, когда объект простаивает или занят.

Ваше здоровье.

person umlcat    schedule 01.02.2013
comment
спасибо за помощь, но я до сих пор не знаю, правильно ли я читаю SD? - person user2019510; 02.02.2013