Форум Сообщества Аналитиков

×


Цикл в диаграмме последовательности(Прочитано 22085 раз)
Добрый день!
Есть у меня некая процедура на сервере (ServerProcedure). Она выполняется периодически по таймеру. Также она может быть выполнена по инициативе клиентского приложения. Мне хотелось бы на одной диаграмме последовательности отразить тот факт, что серверная процедура может быть запущена двумя способами. Прилагаю набросок подобной диаграммы - просьба высказать критические замечания :).



Ну не знаю на сколько информативна такая Д. Я бы написал словами или в табличке.
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Есть у меня некая процедура на сервере (ServerProcedure). Она выполняется периодически по таймеру. Также она может быть выполнена по инициативе клиентского приложения. Мне хотелось бы на одной диаграмме последовательности отразить тот факт, что серверная процедура может быть запущена двумя способами. Прилагаю набросок подобной диаграммы - просьба высказать критические замечания :).
И Вам добрый день.

На самом деле тут мы имеем две точки внимания - запуск из клиентского приложения и запуск по таймеру.
Диаграмма последовательности демонстрирует именно временную последовательность.

Т.е. сейчас в вашем случае она говорит - сначал идет запуск из клиентского приложения
Затем происходит запуск по таймеру.

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

Далее как Вы пишите может возникать системное событие времени - оно инициируется Таймером - т.е. внешним по сути актером. Событие это возникает в определнный момент времени - судя по диаграмме запуск осуществляется несколько раз - одна как это происходит не понятно



Диаграмма последовательности служит для представления ОДНОГО сценария (может быть с некоторой алгоритмистикой).
У вас налицо ДВА.
Как вариант вы можете нарисовать ДВЕ диаграммы последовательности.

Если Вы именно на ОДНОЙ диаграмме хотите нарисовать это, то можно воспользоваться диаграммой деятельности или диаграммой автомата.



Денис, а как же быть с элементами alt opt и тп? Напрпимер, описываю я сценарий основной, а у меня валятся ексепшины, мне намнгого удобней показать это на одной диаграмме с помощью элементов альт, чем рисковать несколько сценариев, различающихся только условием и сообщением ошибки.
Если вы не знаете куда идете, то вы вряд ли туда дойдете [Форест Гамп]
www.grigorash.ru



Денис, а как же быть с элементами alt opt и тп? Напрпимер, описываю я сценарий основной, а у меня валятся ексепшины, мне намнгого удобней показать это на одной диаграмме с помощью элементов альт, чем рисковать несколько сценариев, различающихся только условием и сообщением ошибки.
Виталий противоречий нет
альтернатива - она и есть альтернатива - альтернатива возникает в некий последовательный момент времени, происходи выбор, что выполнять....

На диаграмме же золотой рыбке, нет никакого условия, вот если оно появится, тогда можно



а все-таки где-то я видела диаграммы последовательностей с двумя сценариями... кажется в Бучевском букваре или какой-то книге по UMLю. Попытаюсь найти.
Розенберг со своим ICONIX пишет в книгах нечто подобное - указывайте все сценарии ВИ на одной диаграмме последовательности.

Но наверное в этом случае ВИ следует делать достаточно небольшими, иначе вместо ясности будет перебор и непонимание...



Спасибо всем, кто ответил. Ознакомившись с Вашими соображениями и изучив некоторые образцы диаграмм (http://www.sparxsystems.com/uml_tool_guide/visual_execution_analyzer/generating_sequence_diagrams.html; http://www.ibm.com/developerworks/rational/library/3101.html), я смогла нарисовать другой вариант ДП, вероятно, более правильный, хотя с практической точки зрения для меня не очень приемлемый (поскольку таймер как самостоятельный объект мне совершенно не нужен :)). Все же выкладываю, просто как идею:



Прошелся по ссылкам из предыдущего поста. Не понял идей, которые привели к такому рисунку...

Думаю, что если попросить кого-то объяснить что тут нарисовано, то вряд ли получиться что-то похожее на текст из самого первого поста.

Маленький коммент к рисунку. Время на диаграмме последовательности течет сверху вниз. Если поток управления "застрянет" в верхнем loop, то до нижнего управление никогда не дойдет.

Можно конечно поизвращаться с составным шагом par, но все равно показать, что какая-то функция вызывается ПО ТРЕБОВАНИЮ клиентского приложения дьявольски трудно.


Эдуард, помнишь про диаграммы использования писали? Зачем они нужны и пр.
Вот, пожалуйста, наглядный пример использования диаграммы для других целей, нежели те, для которых она предназначена.



Эдуард, помнишь про диаграммы использования писали? Зачем они нужны и пр.
Вот, пожалуйста, наглядный пример использования диаграммы для других целей, нежели те, для которых она предназначена.
Да это факт.



В целом я согласна с тем, что здесь проще пояснить
Цитировать
словами или в табличке
И все же было бы интересно отобразить визуально.
Цитировать
а все-таки где-то я видела диаграммы последовательностей с двумя сценариями... Попытаюсь найти.
Буду очень рада взглянуть, ну если не трудно найти, конечно :)
Цитировать
поток управления "застрянет" в верхнем loop
Вы совершенно правы. Из первого цикла (Автозапуск) мы действительно не выйдем, пока существует объект 'Таймер'. Если мне удалось наглядно это отобразить, значит, я до определенной степени преуспела в своих творческих изысканиях.
Цитировать
...то до нижнего управление никогда не дойдет
Почему? На ДП отображаются взаимодействия объектов, упорядоченные по времени. Таймер посылает серверу в бесконечном цикле асинхронные сообщения - ну и что? Что мешает объекту 'Клиент_Х' послать сообщение объекту 'Сервер' в любой момент времени?



Почему? На ДП отображаются взаимодействия объектов, упорядоченные по времени. 

Диаграмма последовательности безусловно показывает взаимодействие объектов. Но это взаимодействие должно придерживаться определенного ПРОТОКОЛА. У вас нет протокола. Вы просто склеили (по общей стороне) две независимые диаграммы. Сложили два протокола взаимодействия. Вот результат.




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19