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

×


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

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


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

Страницы: « 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 »
316
Когда я прилетело со своей родной планеты мне тоже было в новинку, что здесь НЛО, кофе и виски имеют средний род. Но я законопослушное, а хабрахабр и вслед за ним энциклопедический, толковый и орфографический словари не могут ошибаться. ;D

317
Замечу, что допустимы на основе OCL-ограничения, не нашедшего явного подкрепления (как и опровержения) в английском тексте.

Странное ограничение для начального псевдосостояния в тексте подтверждается, там также указано: "не более одного выходящего звена" (в стандарте 2.4.1 в тексте было "единственное выходящее звено", а OCL-такой же). Весь большой OCL-фрагмент про входные/выходные звенья псевдосостояний взят из 2.4.1 без изменений.

Слить entry и exit можно, но иногда это повлияет на смысл, ведь сторожа на звеньях, исходящих из состояния (пусть и проходного), проверяются до exit'ов и, естественно, после entry.

Есть она курьёзная картинка Fig. 27 в статье "On visual formalisms" Communications of the ACM, 1988. Правда, к ней дан комментарий как к 28й.

318
Choice может иметь и несколько входов [стандарт 14.5.6.6: "In a complete statemachine, a choice Vertex must have at least one incoming and one outgoing Transition.
inv: (kind = PseudostateKind::choice) implies (incoming->size() >= 1 and outgoing->size() >= 1)
"], в том числе (в отличие от junction) и рефлексивные как раз за счет того, что "С choice'ами условия-части проверяются "динамически"".
Удивительно [для меня]! Совсем недавно видело указание про единственный вход и [мне] казалось, что с опорой на стандарт (старый?). Что это было? Спутало с fork? Благодарю за подмеченный Вами факт. Есть множество примеров, где choice разветвляет, но ни одного, где соединяет и [тем более] циклит рефлексивным звеном. Явно указано, что мёржить звенья надо junction'ом, что можно расценить как рекомендацию. В спецификации стандарта 2.1.1 [как минимум] указано про одно входящее звено. В UML 2 Certification Guide говорится, что choice не мёрджит. В Rational SA у choice 1 вход.

Кстати или нет, рядом висит ограничение про то, что из начального псевдосостояния выходит неболее чем одно звено. Интересно, что имели в виду авторы стандарта под начальным псевдосостоянием без выходящего звена?)

Entry и exit -- это полезный синтсахар, его ещё Харел добыл. Он упрощает диаграмму за счёт сокращения надписей (попутно усложняя её чтение).

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

319
Радо новой встрече.

Написанное справедливо при обратной замене состояний, заместивших собой choice'ы. В общем случае замена на choice возможна не всегда. Choice одновходовый, а "неустойчивое" состояние может иметь столько входящих переходов, сколько нужно (в том числе рефлексивные), а также действия по входу и по выходу, которых choice лишён. Отметим момент: что если бы вместо choice имелась возможность метить состояние как неустойчивое ("зависание" в котором = ill formed)? Было бы выразительнее, не находите? Замещающее choice "неустойчивое" состояние может не только его имитировать, но и описывать более сложное поведение.

С junction'ами все действия по выходу выполняются после проверки сторожевых условий, составленных из условий-частей на звеньях, составляющих композитный переход. А действия по входу -- после выполнения композитных действий по переходу, составленных из действий-частей на звеньях. С choice'ами условия-части проверяются "динамически" (цитирую стандарт), т. е. перед проверкой будут выполнены некоторые действия по выходу и действия-части на ранее пройденных звеньях. Поэтому расположение junction'ов неважно, но важно пересечение звеньями границ состояний. Например, два нижних junction'а можно поместить в St01, а два верхних -- в St0. Смысл диаграммы не изменится, т. к. звенья сохранят свою топологию. Перемещение choice'ов изменит поведение автомата. Также поведение изменится, если звено выгнется и пересечёт дополнительно какую-то границу.

Про регион-владелец стандарт пишет странное (мы уже обсуждали). Можно заметить, что на диаграмме абстрактного синтаксиса из метамодели UML у перехода нет владельца, но есть... контейнер. Далее контейнер и владелец объявляются синонимами.) Рекомендованным стандартом контейнером-владельцем является расположенный глубже всех и содержащий вершину(ы)-начало(а) перехода и вершину(ы)-конец(цы). В нашем примере стандартным владельцем будет регион состояния St0. Это не позволяет где-либо кроме как на диаграмме увидеть, что переход пересекает границы St0.

320
Продолжим эксперимент. Заменим все choice на junction. После этого перестаёт иметь значение то, где расположены псевдосостояния. Только что это было важно, а теперь перестало быть важным. Но то, границы каких состояний пересекаются звеньями, осталось важным, хотя и по-другому. Заметим, что метамодель UML позволяет точно отслеживать только расположение состояний и псевдосостояний. Узнать о пересечении переходом границ состояния, влияющем на выполнение действий по входу/выходу, можно только с диаграммы.

321
Вот ещё пара копеек про составные переходы.
Примеры с псевдосостояниями выбора обычно таковы, что эти псеводсостояния находятся на одном уровне с состоянием-исходом и целевыми состояниями. Придумаем [довольно бессмысленный] пример, где будет по-другому. В "матрёшке" композитных состояний расположим псевдосостояния выбора на разных уровнях. Приправим блюдо действиями по входу и выходу. Получится что-то вроде приложенной картинки.
Что мы видим? Что псевдосостояние выбора это "синтаксический сахар". Заменим мысленно все ромбики на разрезающие составной переход на части обычные состояния [переходы из которых будут происходить по событию завершения]. Работать обновлённая машина состояний будет также.
Но "синтаксический сахар" у нас странного свойства. Представим, что в каждом ветвлении у нас "плохой" набор условий: вместо [guard] и [else] -- [guard1] и [guard2], которые могут быть одновременно ложны. Диаграмма с псевдосостояниями выбора становится ill formed, а с аналогичными обычными состояниями вполне себе "well formed". При чём well formed диаграмма будет "зависать" также, как ill formed. Ей почему-то это разрешено.
Что в итоге? Выявлен элемент нотации, обогащающий язык единственным дополнительным смыслом -- лишним запретом.

322
Думаю, помощь не прийдёт.
P. S. На моей планете бывает и химическая аналитика. Но в этом нет повода, чтобы размещать посты, не ознакомившись предварительно с тематикой форума.

323
Задачник Рамбо и Блахи называется "UML 2.0. Объектно-ориентированное моделирование и разработка". Англоязычное издание сопровождалось решебником для преподов. К некоторым упражнениям ответы даны в самой книге.

324
У Фаулера была заметка, в которой он расшифровал UML как Unwanted Modeling Language. Полагаю, что большинство программистов сойдутся на том, что UML ориентирован на кого-то другого, на аналитиков, например.)

325
Подфорум про книжки тут: http://www.uml2.ru/forum/index.php?board=27.0
Как подробное описание, близкое к стандарту хороша "чёрная" книга "троих друзей" из серии "Классика CS", т. е. Буч, Якобсон, Рамбо. "UML. Классика CS. 2-е издание".
Как учебник-задачник от одного из авторов языка хороша книга Рамбо, Блаха "UML 2.0. Объектно-ориентированное моделирование и разработка".

326
Введём акцию водка+селедка+горбушка за 1/2 цены.
Кладём в чек три ВСГ-набора.
Удаляем одну водку (из первого набора). Имеем два ВСГ-набора за полцены + СГ за полную цену.
Удаляем одну селёдку (из второго набора). Имеем один ВСГ-набор за полцены + СГ + ВГ за полную цену.
Удаляем одну горбушку (из оставшегося набора). Имеем 2В+2С+2Г за полную цену.

327
Есть статья британского учёного (тм) с исследованием 2013 года: https://goo.gl/lrDYpw
Если сравнивать, то питерцы из 2008-го очень продвинуты в использовании UML.)
Другая публикация той же свежести посвящена исследованию проиндексированных гуглем EA-проектов. На 121й модели из открытых источников сосчитали частоту использования диаграмм, элементов языка, стереотипов и т. д.: http://subs.emis.de/LNI/Proceedings/Proceedings225/289.pdf
Хороший источник развлекательных вставок в слайды.)

328
В докторской диссертации Д. В. Кознова есть статистика по использованию UML в Питере (правда, собранная в 2008 году).
См. https://disser.spbu.ru/disser2/706/disser/Dissertation_Koznov.pdf стр. 31 и далее.
Цитировать
41 из 76 используют UML. 32 из 41 -- как рисуночки. 23 из 41 рисуют не карандашом на бумаге, а в программах. 31 из 41 сами захотели UML, не из-под палки. Топ 3 нужных UML-диаграмм: диаграммы классов, диаграммы ВИ, диаграммы последовательности.

329
Я хотело обратить внимание на курьёз: версии одной и той же диаграммы используются и для того, чтобы указать на бессмысленность диаграмм ВИ, и для того, чтобы обосновать пользу от их рисования.
P. S. Статья по ссылке имеет мало отношения к диаграммам ВИ как таковым. Полагаю, Григорий может пополнить свою коллекцию "смешных диаграмм".

330
История началась в 1999 году с выходом книги "Программист-прагматик", авторы которой решили поехидничать над диаграммами вариантов использования. На страницы книги они поместили рисуночек usd1.jpg, приписав It seems incredible to us...
Второй эпизод отыграл Алистер Коберн, добавивший цитату из "Программиста-прагматика" в своей книге "Writing Effective Use Cases" в 2000-м: usd2.jpg. "Кто-то думает, что эти 'яйца' и есть ВИ..."
Финал случился в 2016-м. Креативно переосмысленная диаграмма в хабрахабрской статье подкрепляет мысль о пользе рисования диаграмм ВИ: usd3.jpg
 

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