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

×


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

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


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

Страницы: « 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 »
436
Может далее не будем особо ориентироваться на стандарт - пытаясь улучшить и формализовать Харела он и не улучшил, и не формализовал (формализация без полноты и непротиворечивости не нужна).
Опираться можно на Харела и на здравый смысл (почти цитата получилась :) ).
Принято безоговорочно.)
Где возможны (и даже обязаны быть) переходы без триггера?
  • из начального псевдосостояния
  • из композитного неортогонального состояния, если в нем есть хоть одно финальное состояние
  • где-то ещё

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

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

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

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

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

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

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

440
Переход, который "принадлежит" региону (и идущий от пунктирной линии) нужен только тогда, когда относится ко ВСЕМ без исключения состояниям региона. Если не ко всем, то приходится всё равно заводить композитное состояние (принадлежащее региону), в которое включать только те состояния региона, к которым относится переход. Примеры:
  • У Рамбо и Блахи в их книге "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) -- от границы суперсостояния. Или это совпадение.)

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

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

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

443
Почему Вы считаете, что это способ поражения в правах?
Я так не считаю. Я считаю, что это способ регулирования рекламы, предложенный одним из участников (цитирую: "Сделайте в конце концов подраздел ... — и там сходите с ума"). По прецеденту можно было бы отделить вопросы обучения от рекламы ШСА тем же самым путём, что и в случае с Cradle.

444
Да, он имеет право публиковать сообщения рекламного характера, согласно правилам форума. Регистрационные правила следует уточнить, спасибо за наблюдение. Но хотелось бы услышать причину, которая побудила написать это сообщение. Это возможно?
1) В марте я заметил, что новички ограничены в правах строже старожилов. Например, приняв соглашения, я обязался не размещать никаких рекламных сообщений, хотя мог бы пригласить молодых исследователей в области SE участвовать в одной из (некоммерческих) научных конференций.  Захотел проверить, продолжает ли действовать дискриминация новичков.
2) Также я заметил, что появление информационных сообщений по системе Cradle на форуме теперь ограничено -- для них выделен специальный подфорум. Хотелось понять, это специальный случай, или пример действия новой системы регулирования рекламы, которая пока касается не всех?

445
Задаю схожий вопрос о сообщении выше. Соглашение запрещает размещать на форуме сообщения, являющиеся ложными, клеветническими, неточными, оскорбительными, вульгарными. На кого распространяется действие этого запрета из нового соглашения?

446
Текущая версия регистрационного соглашения запрещает рекламу на форуме. Является ли разрешённым сообщение руководителя ШСА о записи в блоге, где первым обучателем ИТ-аналитиков представлен один из экспертов ШСА?

447
Была мысль продолжить ряд примеров 1-2-3 из этого сообщения примерами 4 и 5, где рефлексивный переход из композитного состояния нарисован так, что его дуга пересекает границы одного или двух вложенных состояний. По стандарту такое обозначение нельзя объяснить, как мне кажется. Но почему бы его не допустить, считая, что при таких переходах выполняется цепочка входов, затем действие при переходе, затем цепочка выходов?

448
Хороший пример, вызвал вопрос - в примере из предыдущего сообщения (рис. 14.34 с состоянием s2) какими (локальными или внешними) будут переходы, если бы они были нарисованы внутри s0 (мой вариант в скобках):
  • из s0 в s0 (локальный, он и нарисован слева внизу)
  • из s0 в s1 (локальный, он и нарисован слева в середине)
  • из s1 в s0 (не знаю!, стандарт считает внешним)
  • из s1 в s2 (внешний)
В стандартных терминах локальности/внешности так и будет.

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

449
Тогда как будет выглядеть ответ на вопрос в первом топике не по стандарту, а по Харелу?
По Харелу диаграмма состояний основывается на формализме higraph'ов (хайграфов), введённым им же (см.).
В хайграфе ребро-переход соединяет между собой два блоба (blobs) -- набора вершин-состояний, соединённых связками И- и ИЛИ-. Каждый такой блоб-набор определяет некоторое множество допустимых конфигураций состояний. Блоб в терминах UML -- это состояние или композитное состояние и, может быть, регион. И это важно, что переход, фактически, описывает биекцию между наборами конфигураций состояний.

Если диаграмма нарисована в соответствии с замыслом Фаулера, то она выглядит так как в приложении.
DisplayAlarm & PlayCD --radio--> DisplayAlarm & PlayRadio
другие части биекции, описываемой переходом по radio:
DisplayAlarm & PlayRadio --radio--> DisplayAlarm & PlayRadio
DisplayCurrent & PlayCD --radio--> DisplayCurrent & PlayRadio
DisplayCurrent & PlayRadio --radio--> DisplayCurrent & PlayRadio

Если нужно, чтобы переход по radio затрагивал оба региона, то стрелку следует рисовать от границы состояния On. В этом случае описываемая переходом биекция:
DisplayAlarm & PlayCD --radio--> DisplayCurrent & PlayRadio
DisplayAlarm & PlayRadio --radio--> DisplayCurrent & PlayRadio
DisplayCurrent & PlayCD --radio--> DisplayCurrent & PlayRadio
DisplayCurrent & PlayRadio --radio--> DisplayCurrent & PlayRadio

Как-то так.

450
А если так: на рис. 14.34 левый нижний (и верхний) переход не внутренний, а локальный потому, что целью является композитное состояние (s0) и в целевую конфигурацию состояний должно войти то элементарное состояние, на которое есть переход от начального псевдосостояния. Пример: дополним рис. 14.34 состоянием s2 и начальным псевдосостоянием внутри s0 с переходом к s2. Тогда для исходной конфигурации {s0, s1} внутренний переход (для s0!) приведет к той же конфигурации {s0, s1}, а локальный переход - к конфигурации {s0, s2}.
Разбираемый пример показывает, что описание локальных и внутренних переходов в стандарте дано неаккуратно и не отражено должным образом в метамодели. Так мне кажется.
Очевидно, что нет особой необходимости запрещать рефлексивные локальные переходы. Если составителю диаграммы нужно, чтобы осуществлялся выход из всех вложенных подсостояний, но не выход композитного, он нарисует стрелкой рефлексивный локальный переход. Если не нужно -- он напишет текстом внутренний переход.
К сказанному Вами замечу, что мы не можем считать переход внутренним или локальным не по его свойствам, а по наличию/отсутствию начального псевдосостояния в суперсостоянии и перехода из него. Так мне кажется.)

Страницы: « 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 »