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

Общий раздел => Теория моделирования и нотации => Тема начата: Telemed от 17 Июня 2008, 15:46:39

Название: Как изобразить функциональную схему?
Отправлено: Telemed от 17 Июня 2008, 15:46:39
Нужна каноническая диаграмма UML, показывающая основной поток информации от источника к получателю (потоковый граф). Вложение 1 - структура системы в виде диаграммы классов, если это так можно назвать ;) Вложение 2 - как хотелось бы представить потоковый граф. Можно так, в виде диаграммы объектов? Поучите новичка, пжл  :)
Название: Re: Как изобразить функциональную схему?
Отправлено: Galogen от 17 Июня 2008, 16:06:14
Диаграмма, показывающая передачу информации, это классический DFD. В UML, конечно, тоже можно изобразить передачу информации,причем разными путями.

Надо сказать что практически все UML диаграммы графовые.

Поток сообщений (информации) можно изобразить диаграммами деятельности, последовательности, коммуникации (collaboration).

На диаграммах деятельности обычно показывают потоки управления, т.е. передачу управления од одной деятельности (действия) другому. Семантически диаграмма деятельности есть сеть Петри, где деятельность есть вершина-позиция, а стрелка вершина-перехода.
Там же существуют и стрелки информационных потоков. Т.к. Вы используете ЕА, то легко их найдете (они даже имеют стереотип "информационный поток")

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

В вашем случае показана диаграмма коммуникации, она же диаграмма объектов. Так что думаю можно
Название: Re: Как изобразить функциональную схему?
Отправлено: Золотая рыбка от 17 Июня 2008, 17:22:59
Не совсем по теме вопроса, но мне хотелось бы уточнить.
Классы 'Регистратор' и 'Монитор' связаны с классом 'Телеметрическая_система' отношением композиции. Правильно ли это? Мне кажется, что здесь скорее следует использовать агрегацию. Ведь монитор не исчезнет, если перестанет существовать телеметрическая система.
Название: Re: Как изобразить функциональную схему?
Отправлено: Galogen от 17 Июня 2008, 17:46:44
Не совсем по теме вопроса, но мне хотелось бы уточнить.
Классы 'Регистратор' и 'Монитор' связаны с классом 'Телеметрическая_система' отношением композиции. Правильно ли это? Мне кажется, что здесь скорее следует использовать агрегацию. Ведь монитор не исчезнет, если перестанет существовать телеметрическая система.
Да, вы правы, что телеметрическая система скорее агрегат, а не композит. Монитор как минимум может быть внешним и стандартным- по сути это же какой-то компьютер с АЦП как понимаю. Тем более в описание говорится об удаленном мониторе
Название: Re: Как изобразить функциональную схему?
Отправлено: bas от 17 Июня 2008, 18:32:32
Вторая (или даже первая) диаграмма больше похожа на Диаграмму Компонентов (component diagram) или Диаграмму Внедрения (deployment diagram), но на них изображают статику - из каких элементов состоит система.
Динамику можно показать на Диаграмме коммуникаций (communication diagram), но там нужно показывать Классы или Объекты, не знаю на сколько корректно показывать блоки Системы (хотя я и сам иногда этим балуюсь).
А вообще очень компактно показаны Диаграммы здесь:
http://www.xpdian.biz/TheUML2Diagrams.html
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 17 Июня 2008, 18:33:30
Да, вы правы, что телеметрическая система скорее агрегат, а не композит. Монитор как минимум может быть внешним и стандартным- по сути это же какой-то компьютер с АЦП как понимаю. Тем более в описание говорится об удаленном мониторе
Спасибо, вы оба правы - я поспешил.
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 17 Июня 2008, 19:01:27
Диаграмма, показывающая передачу информации, это классический DFD.
Моя вторая, или это о принципе DFD?

На диаграммах деятельности ... существуют и стрелки информационных потоков (они даже имеют стереотип "информационный поток")
Есть, <<flow>>, пунктирная. Ее и надо применять, пунктиром вместо сплошной? С этим стереотипом?

В вашем случае показана диаграмма коммуникации, она же диаграмма объектов. Так что думаю можно
Я делал диаграмму объектов, а получилась д. коммуникации? А на ДК без сообщений и с направленными ассоциациями (сплошные линии) можно?
В общем, я так понимаю просто д. объектов здесь применять не желательно?
Название: Re: Как изобразить функциональную схему?
Отправлено: Galogen от 17 Июня 2008, 19:39:34
Моя вторая, или это о принципе DFD?
О принципе. Она так и называетс диаграмма поток данных, коли уж вы говорите об передаче информации. Но... DFD не отображает логику, последовательность работы. Но может отображать направление перехода от процесс к процессу.

Цитировать
Есть, <<flow>>, пунктирная. Ее и надо применять, пунктиром вместо сплошной? С этим стереотипом?
Она самая

Цитировать
Я делал диаграмму объектов, а получилась д. коммуникации? А на ДК без сообщений и с направленными ассоциациями (сплошные линии) можно?
В общем, я так понимаю просто д. объектов здесь применять не желательно?
Ну почему не желательно. Это же просто картинка, которая должна донести некоторый смысл, чтобы при этом он был понятен другим.
По сути вы изобразили некоторую модельную структуру. Изображая безымянные объекты, вы как бы показываете один из возможных путей взаимодействия. Что тут плохого?
Да и все тут ясно, правда почему функциональная схема?
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 17 Июня 2008, 19:45:15
Пожалуйста, проясните еще несколько моментов.
1. На диаграмме классов у меня подразумевается, что между Регистратором и Монитором осуществляется передача данных в одну сторону. Может вместо ассоциации (сплошная) нужно показывать поток информации пунктиром, со стереотипом <<flow>>?
2. Ассоциации классов в нижнем и верхнем ряду на той же диаграмме - сплошные двунаправленные стрелки. В таком контексте это будет пониматься по умолчанию как стереотип <<navigate>>? Какая-то неопределенность тут. Может на диаграмме классов тут вообще ничего не надо показывать?
3. На диаграмме объектов Дисплей в виде граничного элемента "смотрит не в ту сторону". Так можно, или этого нужно избегать?
4. Как изобразить (в ЕА) Источник в виде блока со стереотипом <<system agent>>? Или этого нет в UML 2.x?
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 17 Июня 2008, 19:52:06
Да и все тут ясно, правда почему функциональная схема?
Так называют эти диаграммы в схемотехнике? Модель нужно будет обсуждать с инженерами, привыкшими к таким схемам.
Название: Re: Как изобразить функциональную схему?
Отправлено: Galogen от 17 Июня 2008, 20:16:20
Пожалуйста, проясните еще несколько моментов.
1. На диаграмме классов у меня подразумевается, что между Регистратором и Монитором осуществляется передача данных в одну сторону. Может вместо ассоциации (сплошная) нужно показывать поток информации пунктиром, со стереотипом <<flow>>?
Ни в коем случае. ДК - статическая структура. Она показывает либо реальные объекты их устойчивые отношения, либо программные объекты с аналогичными устойчивыми отношениями либо зависимостями

Цитировать
2. Ассоциации классов в нижнем и верхнем ряду на той же диаграмме - сплошные двунаправленные стрелки. В таком контексте это будет пониматься по умолчанию как стереотип <<navigate>>? Какая-то неопределенность тут. Может на диаграмме классов тут вообще ничего не надо показывать?
При построении ДК концептуального толка навигация не имеет никакого значения и обычно двунаправленная по умолчанию. Навигация важна при реализации и показывает факт видимости одного объекта класса другим

Цитировать
3. На диаграмме объектов Дисплей в виде граничного элемента "смотрит не в ту сторону". Так можно, или этого нужно избегать?
Ну это просто значки. Данный значок мне как аналитику показывает, что я имею дело с интрефейсом, граничным классом или объектом, некой сущностью обеспечивающей взаимодействие внешних объектов и внутрених, вот и все. Кажется ЕА не позволяет менять ориентацию, но кому от этого плохо. Вы вполне можете заменить свои объекты визуально формой представления подобрав соотвествующие картинки

Цитировать
4. Как изобразить (в ЕА) Источник в виде блока со стереотипом <<system agent>>? Или этого нет в UML 2.x?
А что такое системный агент. Да просто добавьте такой стереотип. А если нужна его особая форма, то настройте ее. Такое возможно

Так называют эти диаграммы в схемотехнике? Модель нужно будет обсуждать с инженерами, привыкшими к таким схемам.
Ну суть не в названии, верно.

Я соглашусь с BAS, что по сути у вас представлена не диаграмма классов, а диаграмма компонетов, модулей системы. Хотя конечно никто не запрещает изображать скажем АЦП, как некоторый класс со своим набором свойств и операций. Однако судя по вашим комментариям и высказываниям действительно можно предположить, что вы смешиваете разные диаграммы в одной и сосбвтенно ДК и диаграмму компонентов.
Кстати в вашем случае может быть более полезна нотация SysML, она доступна в VISIO и стенсилсы к ней можно скачать в интернете. Я прицеплю сюда.

Вообще для чего нужны диаграммы? Может их имеет смылс делать в Visio, WorkBench и т.п. инструментах
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 17 Июня 2008, 21:06:28
...у вас представлена не диаграмма классов, а диаграмма компонетов, модулей системы. ... можно предположить, что вы смешиваете разные диаграммы в одной и сосбвтенно ДК и диаграмму компонентов.
Кстати в вашем случае может быть более полезна нотация SysML, она доступна в VISIO и стенсилсы к ней можно скачать в интернете. Я прицеплю сюда.

Вообще для чего нужны диаграммы? Может их имеет смылс делать в Visio, WorkBench и т.п. инструментах

Мы осваиваем ООА/П и начинаем как бы с Reverse Engineering. Сейчас нужен анализ того, что было сделано (и неплохо!) раньше. Сделаем модели тех систем на УМЛ, проанализируем, а потом будем делать по-другому. Скажете, что нужно начинать с контекстной модели, UC-диаграммы. Правильно, мы это делаем, но нужно посмотреть и на основные компоненты (наверное, с этой диаграммы и начали, как заметил BAS). Теперь займемся классами. В общем, для нас важно анализировать и проектировать всю систему в целом, а не только софт.

Спасибо за помощь! Если поделитесь еще какими-то соображениями или ссылками - будем благодарны. (rar, однако, пришел дефектный. Попробую еще).
Название: Re: Как изобразить функциональную схему?
Отправлено: Galogen от 17 Июня 2008, 21:09:01
Попробуйте этот
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 17 Июня 2008, 21:22:13
Кстати в вашем случае может быть более полезна нотация SysML, она доступна в VISIO и стенсилсы к ней можно скачать в интернете.
Зип прошел. В двух словах, пожалуйста, напишите про эту нотацию или дайте ссылку. Вообще-то, от УМЛ отступать мы не можем.
Название: Re: Как изобразить функциональную схему?
Отправлено: Galogen от 17 Июня 2008, 22:30:48
Зип прошел. В двух словах, пожалуйста, напишите про эту нотацию или дайте ссылку. Вообще-то, от УМЛ отступать мы не можем.
У вас скорее всего другая версия рар архива, ну да ладно.
Про SYSML я не супер знаток, но это ветвь UML так-что тут все корректно. А ссылка:
всегда пользуйтесь Википедиа http://ru.wikipedia.org/wiki/SysML или http://en.wikipedia.org/wiki/Systems_Modeling_Language

А насчет отступать от UML не можете, что это значит? У вас принят строгий корпоративный стандарт? У вас требуют в вузе только в стиле UML?

Вообще мне кажется основная задача любой графической нотации - это доступность и наглядность восприятия, возможность передать больше информации, чем в тексте.
Однако все-таки картинки не самоцель и там где проще и понятнее нужно использовать текстовое описание.
Используется ли UML или еще что, мне кажется, должно определяться вами и целесообразностью.
UML конечно создавался как некоторй унифицированный т.е. единый язык моделирования, но возможно в его названии было скрыто не всеобъемность языка, а объединяющий момент для обозначения классов и их взаимодействия.
Далее язык стал развиваться и использоваться в разных областях. Некоторые удачные изыскания вылились в ветви языка такие как SysML или профили типа SPEM.
А нотация Эриксона-Пенкера - по сути попытка привязать IDEF0 и UML, на мой взглад, хотя мотивы у них могли быть совершенно иные :)
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 18 Июня 2008, 12:44:22
А насчет отступать от UML не можете, что это значит? У вас принят строгий корпоративный стандарт? У вас требуют в вузе только в стиле UML?
Стандарт мы будем принимать сами, когда разберемся, что к чему, с Божьей и Вашей помощью :)
Я посмотрел, что мог про SysML. Вижу, что технология относится к разряду "Рекомендованная IEEE практика для архитектурного описания программно-нагруженных систем". Вижу, что уже продается расширение для ЕА, и посмотрел демо. Пока не понятно, годится ли оно для анализа и проектирования собственно программных систем, что прекрасно обеспечивает UML. Архитектура ПО - это главное сейчас.
Вопросы. Можно ли делать архитектуру софта в SysML? Что Вы знаете про это?
Порекомендуйте, пожалуйста, знающих и уравновешенных ;) консультантов. Цель - в короткий срок, полагаясь на толковые советы, выработать и принять правильное решение о выборе технологии.
Название: Re: Как изобразить функциональную схему?
Отправлено: Galogen от 18 Июня 2008, 13:57:21
Telemed, надеюсь  Александр (BAS) что-то ответит по поводу SysML. Я согласен с Вами, что UML вполне достаточен.

Насчет архитектуры ПО советую обратить внимание на книги Фаулера, Лармана, Рамбо. Ну и классическая книга Гради Буча.

Насчет знающих и уравновешенных (а что значит уравновешенных?) конкретно сказать не могу - а чем Вам наше сообщество не подходит?

Посмотрите курсы TEKAMA, Interface.ru. Посмотрите ресурсы у нас на сайте, ресурсы на Intuit.ru, ресурсы http://www.microsoft.com/Rus/Msdnaa/Curricula/Default.mspx
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 18 Июня 2008, 14:44:17
Предыдущий пост, извините, ушел недоделанным.
Одно только еще хотел сказать, что не знал про раздел SysML на вашем форуме.
Название: Re: Как изобразить функциональную схему?
Отправлено: bas от 20 Июня 2008, 00:10:14
Порекомендуйте, пожалуйста, знающих и уравновешенных ;) консультантов. Цель - в короткий срок, полагаясь на толковые советы, выработать и принять правильное решение о выборе технологии.
Напишите мне, можно обсудить
Название: Re: Как изобразить функциональную схему?
Отправлено: Telemed от 20 Июня 2008, 11:40:21
Напишите мне, можно обсудить
Александр! Спасибо! Куда я могу написать, чтобы не обсуждать все публично?

Кстати, я "въехал" в SysML, используя OMG Systems Modeling Language (OMG SysML™) Tutorial. Сейчас желательно что-то прочитать про особенности нотации (отличия от UML) по-английски, а потом какие-нибудь методические статьи на русском (крайне желательно с анализом предметной области, например, в метрологии, физическом эксперименте, телемедицине).

Попал в цейтнот, пытаясь "лепить горбатого к стенке", т.е. UML к нашим телеметрическим задачам. Теперь нужно точное целеуказание от эксперта - буду благодарен.

И еще. Грызет сомнение, что я много потеряю, отказавшись от UML. Надо строить софт, классы, ER, использовать технологию MDA (именно для софта, начиная с платформо-независимых моделей с переходом на конкретные платформы). Знаю, что под Enterprise Architect есть плагин для SysML. Практикуется ли комплексный подход: сначала - сколько можно на SysML, а потом - на UML? Или все нужно делать на одном языке (понятно, что мало найдется желающих затевать проект типа кентавра).

Сейчас нужно порисовать кое-что в SysML. Спасибо Galogen'у, навел на Visio. Однако (из-за цейтнота) есть колебания: можно ли в Visio хорошо сделать диаграммы как, например, в http://www.omgsysml.org/INCOSE-2008-OMGSysML-Tutorial-Final-reva.pdf ?
Название: Re: Как изобразить функциональную схему?
Отправлено: bas от 20 Июня 2008, 12:03:12
Скажу кратко:
* можно комбинировать языки моделирования, но это надо делать осторожно и понимать четко почему Вы это делаете.
* Визио не самое лучшее CASE средство, если Вы хотите генерировать код

З.Ы. Я Вам написал письмо.