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

×


Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - [прилетело НЛО и...]

Страницы: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 »
451
Диаграмма ВИ, на которой нет связей включения и/или расширения, может быть верной или неверной. Это зависит от описаний вариантов использования. Диаграмму с include/extend можно привести к виду без include/extend, изменив описания ВИ, и новая диаграмма будет верной и будет описывать ту же систему.
В общем случае, не требуется, чтобы на диаграмме обязательно был include или extend. Требования, которые предъявляет Ваш преподаватель, знает он и, может быть, Вы и Ваши коллеги. Обратитесь к ним, чтобы уточнить, какое именно задание Вам досталось.

P. S. Всё же, обратите внимание, что проводить include от Терапевта и к Терапевту нельзя.

452
от каждого ВУ должна идти связь(пока отбросим тип связи), к какому то другому ВУ или актеру.
Очевидно, что это другое требование. Действительно, не должно быть ни одного "яйца", к которому не идёт ни одной связи (ни связи от действующего лица, ни связи от другого ВИ). Вам следует определиться, что именно требуется: связать все ВИ друг с другом или исключить "яйца", к которым не идут никакие связи. 

453
В смысле?
Наличие/отсутствие связи между двумя вариантами использования зависит от их описания. Вероятно, в рамках Вашего задания ВИ рассматриваются просто как "яйца", разложенные по полю диаграммы. Т. е. Вы обязаны освоить систему обозначений, не вникая глубоко в смыслы этих обозначений.
Нет никакого желания затевать разбирательство относительно правоты/неправоты. Оно никак не поможет сдаче Вами задания, как я полагаю.
Если буквально следовать требованию "связать все", то можно видеть 2 ВИ, не связанные с другими: "Описание симптомов" и "Передача данных". К этим двум "яйцам" Вы, выполняя указанное требование, можете  провести include от "яйца" "Обращение пациента". Повторюсь, что эта рекомендация дана для решения поставленной преподавателем задачи (как Вы о ней тут сообщили).

454
Я моделирую процесс амбулаторного осмотра.
Видимо, это не так. Сам по себе этот процесс может быть представлен одним вариантом использования.
Преподаватель говорит что все ВИ должны быть связанны, поэтому делал так. Предыдущую модель он забраковал т.к. там были висящие ВИ, то есть от АКТЕР ->ВИ и всё. 
Такое сложно комментировать.
То есть мне надо сделать связь от симптомов к заполнению листа приема? А оформление справок(исправлю на глаг.фразу) справок тогда с чем нужно связать?
Имелось с виду, что у связи include на обоих концах должны быть варианты использования. В двух указанных выше случаях на одном из концов у Вас находится действующее лицо ("актёр"). Следует хотя бы поменять тип связи.

455
Чтобы указание ошибок было точным и полным Вам следует:
1) Указать, какую [бизнес] систему Вы  моделируете. Дать её краткое описание.
2) Приложить описания всех вариантов использования и действующих лиц.

Из общих соображений укажу следующее:
Скорее всего, Вы злоупотребляете связями между вариантами использования.
Связь включения не может идти от ВИ (Описание симптомов) к действующему лицу Терапевт и в другую сторону (ДЛ Терапевт -> ВИ Оформление справок).
Обычно названия ВИ -- это глагольные фразы ("Завести амб. карту"), т. е. существительное на первом месте в названии ВИ стоять не должно ("Оформление справок")
Нарушена стандартная нотация UML: связи include и extend должны быть пунктирными стрелками, коммуникации -- сплошными стрелками с обычным, а не треугольным остриём.

456
Здравствуйте, endwar.
Предлагаю Вам определиться, так ли необходим UML. Судя по всему Вы готовите иллюстрацию для презентации и/или текста. То есть схема будет демонстрироваться людям. "Машиночитаемой" она быть не должна. Раз так, можно не связывать себя ограничениями UML. На одной схеме Вы хотите отобразить два (ортогональных) аспекта: членение системы на блоки и набор реализованных методов. Для первого подходит UML-диаграмма компонентов. Для второго --  UML-диаграмма другого типа. То есть, по UMLю вместо одной схемы должно быть две.
Затруднительно представить верный вариант схемы по скудному описанию. Поэтому дам советы общего плана:
1) Определитесь, что важно и должно быть на схеме, а что второстепенно и будет её замусоривать. Например, важно: система, блок препроцессинга, блок решателя, блок постпроцессинга, метод рестартов, метод сопряжённых градиентов, метод Левенберга. Неважно(?): оптимизатор.
2) Определитесь с типами элементов схемы. Для каждого типа подберите способ изображения, отличный от других типов. По списку выше у Вас 3 типа элементов: а) система, б) блок, в) метод. По картинке у Вас 4 типа элементов: а) сплошной прямоугольник со скруглёнными углами, б) пунктирный прямоугольник со скруглёнными углами, в) сплошной прямоугольник, г) сплошной прямоугольник с уголком. Несоответствие.
3) Определитесь с типами связей. Для каждого типа связей подберите способ изображения, отличный от других типов. У Вас 4 типа связей: а) система --состоит-из--> блок, б) блок --связан-по-данным--> блок, в)  блок --реализует--> метод, г) метод --использует--> метод. Все эти связи направленные. На диаграмме лишь два типа связей: а) сплошная стрелка б) ненаправленный(!) пунктир. Опять несоответствие.
4) Дополните схему легендой, раскрывающей Вашу систему обозначений.

457
1. подскажите что за книга
Д. В. Кознов "Основы визуального моделирования"

2. когда диаграммы используются для непосредственного общения или для размышления - вполне нормально отступить от стандарта, но если речь идет о документировании - отступать от какого-то единого понимания стандарта нельзя
Точно замечено. Отступление означает изменение возможной области применения и аудитории.
 
3. если нестандартно, творчески означает: в рамках стандарта (или единого понимания стандарта), но не примитивно, то это не может не приветствоваться
Согласен. Хотя сама книга даёт пример нестандартной трактовки отдельных элементов UML-нотации. Что тоже можно рассматривать как своего рода творчество. Впрочем, офтопик.

Вы и Харел считаете, что историческое псевдосостояние должно иметь входы. Я согласен, да и стандарт не против.
Но стандарт ограничивает количество исходящих переходов из исторического псевдосостояния, ничего не говоря об обязательном наличии хоть одного входящего.

Но тогда появляется вопрос: может ли композитное неортогональное состояние (или регион ортогонального состояния) иметь одновременно псевдосостояния глубокой и неглубокой истории? Стандарт и я считаем, что да (14.5.8.6 первые 2 ограничения).
Да, может. Интересно было бы рассмотреть более-менее реалистичный пример, когда это пригождается.

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

Если речь идет о композитном ортогональном состоянии (с 2 регионами), то переход из финального состояния одного из регионов за пределы этого композитного ортогонального состояния легко интерпретируется: срабатывание триггера имеет результат, если в первом регионе достигнуто финальное состояние, а во втором регионе состояние может быть любым. Причем заменить финальное состояние первого региона обычным состоянием нельзя: есть переход без триггера от композитного состояния - значит в каждом регионе должно быть финальное состояние.
Я имел в виду лишь то, что из финального состояния нельзя явно рисовать переходы.

Дам разъяснение: Харел даёт хорошее, но неформальное описание, стандарт пытается дать формальное, но хорошим его не назовёшь. Я пробую (пока для себя) построить модель (в виде диаграммы классов) абстрактного синтаксиса автомата и если что-то плохо укладывается (вызывает усложнение диаграммы), пытаюсь изменить абстрактный синтаксис автомата (не потеряв ничего существенного).
Такую инициативу можно только поддержать.

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

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

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

немного странно - если есть деятельность, то она может закончиться, а если нет - то и никакого события не возникает. Может правильней иметь событие со смыслом, что уже ничего больше делать не надо (или что всё уже сделано), тогда если do-деятельность пуста, считать что это событие наступает, когда состояние становится активным. Такое поведение будет похоже на поведение с финальным состоянием композитного состояния - если у композитного состояния есть исходящий переход без триггера и с "подходящим" сторожем, то финальное состояние как бы "проскакивается".
Да, такой подход может иметь место. Но к чему он приводит? Насколько он прагматичен? Состояние (с пустой деятельностью и переходом по завершению) превращается не в способ поведения объекта, а в промежуточную проскакиваемую вершину. Такой конструкции легко найти замену -- тот же junction, например. Оправдать использование такой избыточной, по-моему, конструкции затруднительно.
все исходящие переходы без триггера (как и переходы с совпадающим триггером) должны иметь взаимоисключающие сторожа
Для детерминированного автомата такое требование разумно.

P. S. И вообще, попалась тут книга, автор которой призывает использовать UML нестандартно, творчески.) Обдумываю это предложение.)

459
Может далее не будем особо ориентироваться на стандарт - пытаясь улучшить и формализовать Харела он и не улучшил, и не формализовал (формализация без полноты и непротиворечивости не нужна).
Опираться можно на Харела и на здравый смысл (почти цитата получилась :) ).
Принято безоговорочно.)
Где возможны (и даже обязаны быть) переходы без триггера?
  • из начального псевдосостояния
  • из композитного неортогонального состояния, если в нем есть хоть одно финальное состояние
  • где-то ещё

Вопрос: что должно выполняться для исходящих переходов без триггера (из начального псевдосостояния и композитного неортогонального состояния, если в нем есть хоть одно финальное состояние):
  • ровно один переход, без сторожа
  • несколько со сторожами - взаимно исключающими, но полностью перекрывающими все возможностм
  • что-то ещё
Ещё вопрос: может ли совсем не быть исходящих переходов без триггера из композитного неортогонального состояния, если в нем есть хоть одно финальное состояние
В математической модели конечного автомата определено следующее: во-первых, начальное состояние является полноценным состоянием; во-вторых, в детерминированном автомате (вложенные автоматы не рассматриваем) начальное состояние одно. Харел в своей статье 1987 года пишет о начальных состояниях в том же ключе. Это всегда единственное состояние "региона", которое помечается на диаграмме специальным образом: рисуется кружок-точка и от него проводится одно звено к начальному состоянию. Поначалу (см. "Statecharts in the Making") это спец. обозначение оставалось лишь обозначением, но время шло. На рис. 21 из "Statecharts in the Making" можно видеть, что обозначение стало восприниматься [самим Харелом] на основе конкретного синтаксиса как полноценный переход из неполноценного псевдосостояния, которое в UML назвали "начальным". Думаю, что этот рисунок -- причина сумятицы в стандарте, который в 2-х местах запрещает, а в 1-м разрешает триггеры на переходе из начального п/состояния.
Нужно ли ориентироваться на мат. модель? Ответ не очевиден, так как часто на диаграмме начального состояния нет и это сделано специально. А раз допускается меньше одного начального состояния, то почему бы не допустить больше одного [полагая начальными именно состояния а не спец. обозначение]? Опять же, недетерминированный автомат может иметь несколько начальных состояний, а другие элементы недетерминизма на UML-диаграммах состояний возможны (недетерминированная работа choice и junction).
Но что если обратиться к самому понятию "начального" состояния, как это было проделано с "локальностью/нелокальностью" перехода? Что оно обозначает на самом деле? Можно заметить, что начальность связана со входом в состояние. При каждом входе в композитное состояние (при каждом запуске машины состояний) одно из подсостояний является первым, находящимся в начале, трассы меняющихся текущих состояний. То есть, то, что выше называлось "начальным состоянием" следовало полностью называть "начальным состоянием по умолчанию". При переходах извне состояния, оканчивающихся в подсостоянии, начальное состояние указывается явно как цель перехода. При переходах извне, оканчивающихся на границе подсостояния, начальным состоянием является "начальное по умолчанию". При переходах извне, оканчивающихся в предыстории, начальным оказывается "начальное по предыстории".
Исходя из сказанного, я бы предложил "вернуться к корням", т. е. убрать начальное псевдосостояние и добавить метку "начальное по умолчанию" для состояний. Первый недостаток такого решения очевиден. Нельзя будет разместить на "псевдозвене" действия по инициализации вроде тех, что на рис. 21 у Харела. Однако, это легко решить, введя дополнительное состояние. Это делает немного громоздким автомат, но, на мой взгляд, упрощает метамодель и описание языка диаграмм состояний. Второй недостаток -- есть огромная аудитория пользователей языка, которая привыкла к такому обозначению.
Всё это, конечно, не ответ на заданные вопросы, а контекст этих вопросов.
Про финальное состояние можно вести схожее обсуждение. Так, у Харела почти нет примеров со специально обозначенным финальным состоянием, а те, что есть, как я полагаю, появляются под влиянием UML. Финальное состояние находится на [противоположном] конце трассы меняющихся текущих состояний [или участка этой трассы]. Финальное состояние в "математических" автоматах имеет другой смысл по сравнению со стандартом. Стандартный смысл описан отрывочно и неясно. И. т. п. По всему этому можно судить, удачное ли это обозначение, и оправдывает ли удобство [?] его использования усложнение описания языка. 
Третий аспект кроется в том, что метамодель машины состояний предполагает некоторого исполнителя, которого приходится реализовывать некоторым производителям CASE-средств. С позиции реализатора такого исполнителя может быть удобно, чтобы были начальные и финальные состояния.

А теперь, отбросив радикализм), даю свои ответы с умеренно консервативной позиции:
Переходы без триггера возможны:
  • из начального псевдосостояния (единственный, без сторожа, с возможным эффектом)
  • из псевдосостояния истории (для обозначения предыстории по умолчанию: единственный, без сторожа, с возможным эффектом)
  • из композитного неортогонального состояния, если в нем есть хоть одно финальное состояние
  • из простого состояния, если в нем есть do-деятельность
  • из композитного ортогонального состояния, если в каждом его регионе есть одно (или более чем одно) финальное состояние
  • (если под переходами понимаются и звенья-части других переходов) из junction и choice псевдосостояний

Только в случаях спец. обозначений (т. е. начального и исторического) накладываются ограничения единственности и отсутствия сторожа.  В других случаях их нет. Взаимное исключение и т. д. зависит от того какой автомат мы описываем: детерминированный/недетерминированный/блокирующийся.)

Исходящих переходов без триггера из композитного неортогонального состояния, если в нем есть хоть одно финальное состояние, может не быть. Мы вправе игнорировать событие завершения, если таково описываемое нами поведение.

460
Не совсем понял вопрос, но отвечу, как понял :)
Денис не был модератором раздела про Обучение. Была возможность у членов группы "Memeber of CAR" модерировать разделы форума. Данная возможность также у этой группы убрана.
Благодарю за пояснение.
Также еще добавлю, что у модераторов и администрации ресурса не всегда есть время, чтобы пристально следить за дискуссией и делать во время корректирующие действия. Данный ресурс бесплатный и мы уделяем время ему по мере возможности. Поэтому приношу свои извинения, если что-то пошло не так. Мы за мир во всем мире!
У меня есть предложения, которые, учитывая выше процитированное, не обязательно реализовывать:
1) Полагаю удобным для пользователей размещение на каждой странице форума ссылки на правила (там где Начало, Помощь, Поиск...). Так можно было бы увеличить вероятность того, что у всех пользователей будет единое представление об актуальной версии правил.
2) Полагаю разумным оповещать пользователей об изменениях, затрагивающих правила/пользовательское соглашение. Например, не всем интересно следить за данной веткой. Из-за этого кто-то может невольно пропустить важное для него изменение.
3) Полагаю уместным  в разделе правил, посвящённом модерированию, дать текущий список модераторов. Это способствовало бы правильному общему представлению о распределении ролей и обязанностей.
4) В Помощь было бы хорошо добавить раздел о том, в каких случаях и каким образом пользователю следует обращаться за помощью к модератору. Например, моё участие в этой теме, вероятно, "подогрело" сложившуюся ситуацию, хотя такой цели перед собой я не ставил. За этот побочный эффект приношу свои извинения.

461
Я два года размещаю рекламу наших (и чужих) тренингов в разделе «Обучение и тренинги» и являюсь модератором этого раздела.
Прошу также прокомментировать процитированное в части модераторства. Отдельного списка модераторов нет, так что приходится лазить по дереву разделов, а в нём легко заблудиться.

462
Рисуя переход от границы суперсостояния Рамбо, скорее всего, имел в виду то же самое, что и рисуя от границы региона
Согласен. А ведь можно было бы наделить разным смыслом переходы идущие от пунктирной и от сплошной границы.
 
регион Night light switch не имеет начального псевдосостояния, а это делает невозможным повторный вход в регион - это нужно для перехода от границы суперсостояния (хотя здесь, скорее всего, ошибка - на стр. 149 есть фраза:"Подсветка управляется выключателем, поэтому начальное значение для нее не имеет смысла". Желание правильное, то есть в диаграмме должно что-то быть, но не исключение начального состояния, а, например, псевдосостояние решения "ромбик" после начального)
Текст Рамбо показывает, что для него ортогональные регионы -- как бы подмашины.
А вот можно ли рисовать от начального псевдосостояния N-зубец с ромбиком, это вопрос открытый. Параграф 14.2.3.7 говорится, что из него может идти один переход (одно звено?) без сторожа и триггера, на OCL это продублировано в 14.5.6.6 (в другом месте 14.2.4.7 можно указать триггер, если это событие создания экземпляра, а начальное псевдосостояние лежит на верхнем уровне). Куда может идти это звено, об этом не сказано, но можно предположить, что, чтобы ограничения не теряли силу, кончаться оно должно на границе состояния, или псевдосостояния истории. Схожее ограничение есть на переход из псевдосостояния истории. Предположительно, из него тоже нельзя растить многозвенный переход.
нигде ранее ничего на эту тему не говорится
Увы, это так.
рисуя переход от границы региона подчеркивается идея того, что переход внутри суперсостояния это переход внутри региона. Да и любая точка на границе суперсостояния относится ровно к одному региону
Геометрически это верно. Но можно представить себе переход внутри состояния, но не внутри региона с явным форком, от которого идут звенья в регионы. Его первое звено по конкретному синтаксису будет лежать в каком-то из регионов, но по смыслу оно исходит от суперсостояния. Наличие в конкретном синтаксисе явной видимой границы релиона, отделяющей его от суперсостояния, могло бы быть полезно в таком случае.

463
Переход, который "принадлежит" региону (и идущий от пунктирной линии) нужен только тогда, когда относится ко ВСЕМ без исключения состояниям региона. Если не ко всем, то приходится всё равно заводить композитное состояние (принадлежащее региону), в которое включать только те состояния региона, к которым относится переход. Примеры:
  • У Рамбо и Блахи в их книге "UML 2.0. Объектно-ориентированное моделирование и разработка" рис. 6.11 - регион InteractiveDisplay, композитное состояние Setup, переход after (90 sec without input)
  • У Харела в "STATECHARTS: A VISUAL FORMALISM FOR COMPLEX SYSTEMS" Fig. 28. регион chime-status, композитное состояние enabled, переход d (in chime.on) 
Это точно. Просто я подумал, что Рамбо не зря на рис. 6.11 часть переходов (по set day, set clock, view program) нарисовал от границы между регионами, часть (по run program, power on) -- от границы суперсостояния. Или это совпадение.)

В стандарте попалось неясное место (вымарал, т. к. неверно прочёл знак).

464
Изменил соглашение при регистрации, теперь оно соответствует правилам из первого сообщения этой ветки.
Благодарю Вас за пояснения и коррекцию соглашения.

465
Получается, что Фаулер ошибся - если надо, чтобы переход затронул только один регион (но для нескольких состояний этого региона), то в соответствии с UML надо завести композитное состояние на эти состояния и делать переходы от этого композитного состояния (у вас это пунктирная линия).
Возможно. Фаулера не очень заботило соответствие стандарту: часть его диаграмм им самим помечены как ненормативные. Или до версии 2.5 было что-то, что позволяло ему выразить нужный ему смысл именно так. Полагаю, что он и Рамбо, рисуя переходы от границ композитных состояний, исходили из диаграмм Харела (у которого "регион" -- это состояние, и есть представление о "зазоре" между границами "региона" и  суперсостояния, в которое тот входит). Думаю, Фаулеру претила мысль о том, чтобы рисовать лишнюю рамочку. В принципе можно было бы в конкретном синтаксисе установить, что переход от пунктирной линии, разделяющей регионы "принадлежит" региону, а от сплошной границы суперсостояния -- суперсостоянию.
Мне давно хотелось поднять вопрос о терминологии:
  • в описании (спецификации, диаграмме) автомата есть vertex (состояния и псевдосостояния) и transition (звенья)
  • при работе автомата есть конфигурации (как допустимые сочетания состояний, но не псевдосостояний) и переходы (смена одной конфигурации на другую). На самом деле это не совсем точно - например не учитывается "историчность".
Ценное замечание.

Страницы: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 »