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

×


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

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


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

Страницы: « 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 »
17
Некрокопания псто.
Группы изображаем как классы: Material, Method, Tool.
Соединяем их классом тернарной ассоциации Matches
Material-0..*---┓
Method-0..*---⃟-- -- --Matches
Tool-0..*-------┛
Чтобы были тройки вместо NULL заводим объекты-плейсходлеры undefined-material:Material, undefined-tool:Tool, undefined-method:Method.
Конкретные тройки связанных экземпляров рисуем на диаграмме объектов (есть лакуна в стандарте UML по части того, как должно рисовать тройки, соединённые экземпляром тернарной ассоциации). В книгах авторы просто повторяют то, что на диаграмме классов, полагая, что если экземпляр бинарной ассоциации выглядит также, как она сама, то это справедливо и для тернарной.

Нормальной онлайн-рисовалки, как выяснилось, нет.

18
RUP (по неясно откуда взявшейся традиции, называя его UMLем) не только увязывают бегом на месте, но и заявляют, что он тянет аналитиков в прошлое. Так прямо и заявлено в одном выступлении на аналитич-фесте, а затем понабросано на нескольких площадках -- на хабре и далее везде. То есть технология, придуманная NASA-вскими разрабами надёжных программ для шаттлов (а именно они и создали Rational, а значит и RUP), не пускает аналитика в светлое будущее, где проги, с которыми ты вынужен обращаться в обиходе постоянно сбоят, и вместо этого отправляет в тёплое ламповое прошлое, когда надёжность обеспечивалась и за счёт процесса разработки, а не только лишь за счёт личных качеств исполнителей.

19
В продолжение про вложенное / владеемое.
В стандарте 2.5.1 есть иллюстрация 11.48. Там не класс, а компонент, но можно видеть, что полоска с внутренней структурой и полоска со вложенными определениями классов нарисованы отдельно.
И можно осознать, что компонент не связан композициями со своими частями из внутренней структуры. А класс, выходит, связан. Но это вытекает не из картинки (т. к. они визуально схожи), а из свойств класса. То есть это положение выводимое, а не определяющее. Ну и всё такое.

20
Не могу попробовать VP. ...
Подозреваю, что VP работает так же.
Да, верно. Мы видим, как конкретный синтаксис, осязаемый руками/курсором, начинает превалировать над абстрактным.
Можно припомнить, что даже бинарная ассоциация может быть нарисована с ромбиком по середине. И задуматься, сколько обобщений нужно проводить -- к каждому полюсу или к ромбику?
VP ещё позволяет мощности указывать с обеих сторон хвоста, растущего из ромбика в сторону класса. У кого-то читало, как это можно осмысленно использовать при арности N>2.

21
Гуру UML-стандартов Kirill Fakhroutdinov завёл отдельное описание "вложенных классов": https://www.uml-diagrams.org/nested-classifier.html
Пишу об этом, т. к., например, вложенные пакеты в другом пакете UML позволяет рисовать внутри рамок этого пакета. То же справедливо для владеемых пакетом элементов (т. е. классов, типов и проч. описанных в самом пакете). К слову вложенные пакеты не являются владеемыми. Понятия вложения и владения в UML 2.x начали расходиться по смыслу. В UML 1.x это были синонимы. Метамодель UML разрешает классу вложенные классификаторы, но не объясняет, как их изображать. Fakhroutdinov даёт возможную версию с явной линией, заканчивающейся позитроном. VP разрешает так рисовать, но также он разрешает вложенный класс помещать внутрь рамок класса на диаграмме составной структуры (рисуя при этом предупреждающий знак, но съедая нарисованное). В обоих случаях в дереве модели вложенный класс появляется как дочерняя вершина класса, в который он вкладывается.
Учитывая написанное, можно полагать, что визуально вложенные в рамки класса другие классы являются вложенными, в смысле UML (их описание действует внутри пространства имён объемлющего класса).
VP позволяет рисовать к вложенному классу ассоциацию от объемлющего класса. Так что изначальная диаграмма может иметь место, если классы вложенные и если к ним провести таки композиции. 

22
Офтопик. Интересно VP работает наследование между тернарными ассоциациями. Вдруг, оказывается, что обобщение соединяет в таком случае не ассоциации, а их отдельные хвосты. Ещё VP позволяет соединять обобщениями ассоциации без учёта их арности. Тернарная может стать наследницей бинарной. Ну, то есть, в этой части VP -- всё ещё рисовалка по большей мере.

23
Фигасе, VP тоже научилось наследованиям между ассоциациями. Спасибо за пинок в верном направлении.
Мы смотрим на 14-33 немашинным взглядом. Если делать модель в расчёте на скармливание какой-нибудь софтине, то и не такое рисуется (иногда даже не рисуется, так как модель не содержит диаграмм, являясь лишь деревцем в проводнике.

24
Изначально цитата, понятно, взята из "В бой идут одни старики". Произносит её механик Макарыч (Алексей Смирнов). Что-то близкое по смыслу Рамбо сказал Бьянкуцци и Уордену, а они записали в своей книге "Пионеры программирования" https://vk.com/wall-54530371_793 в главе об UML. Двое других из "троих друзей" были настроены не так воинственно.
14-33 мне тоже нравится, в частности, тем, что мне неизвестна UML-среда (а не графическая рисовалка), позволяющая это нарисовать. В реальной среде возможны либо redefines-ы на полюсах, либо подвески классов ассоциаций и обобщения между ними.
Допущения в первоначально составленной модели прояснились. Не думаю, что хоть чего-то стоят мои уточнения к ней. Было приятно потрындеть, спасибо.

25
С тех пор прошло много времени и Рамбо сказал своё знаменитое "В ставке Гитлера (т. е. в IBM) все сумасшедшие", давая интервью о том, почему UML3 не будет.
В нынешнем стандарте истребили следы того, что рамка пакета или компонента и рамка класса или кооперации вели себя схожим образом. Внутри рамки класса не может быть другого класса или типа. Внутри компонента может.
2 оконечные точки или одна зависит от того верим ли мы в LSP, строя модель. Почему-то кажется, что традиционный способ за-redefine-ть периоды, входящие в состав "без промежутков", указав, что у них точка становится выводимой.
Попутно замечу траблы (14-31) одного из трёх друзей относительно мощностей при полюсах тернарной ассоциации. Быть может, опечатались.

26
Некротрединга псто.
Название ВИ должно отражать то, что в нём происходит. Кажется, что Ваши ВИ "Upload file" и "Download file" в переводе на русский не должны содержать в названии "Получить доступ", т. к. цель в обоих случаях другая (чтобы пачки данных переместились).
Само по себе получение доступа, после того как юзер залогинился, представляет собой один шаг системы ("чекнуть права учётной записи, от имени которой пришёл запрос".
Сценарий upload-а, как и сценарий download-а скорее всего имеет альтернативный поток, хотя бы один.
Постусловие не может быть дополнительным шагом, который доделывается после того, как выполнение ВИ завершилось. В самом сценарии должны быть шаги обеспечивающие истинность постусловия. Мы видим довольно сомнительное описание ВИ Download в котором шаг 3 описан примерно так: User осуществляет download. Это какая-то дурная рекурсия. Сам сценарий составлялся ради того, чтобы по шагам раздробить download, а не для того, чтобы констатировать, что этого сделать нельзя и что download есть download.

27
Пример интересный, поэтому лезу в раскоп.
По идее (если ориентироваться на картинки из стандарта), внутри должны быть роли (и/или части), которые не являются классами. То есть класс Период должен лежать снаружи, а его имя должно использоваться как тип у роли/части.
То, что названо типом периода, на мой взгляд, больше похоже на последовательность периодов, т. е. на некоторый контейнер.
Вероятно, у периода всегда есть обе оконечные точки, и если периоды входят в состав некоторого контейнера, то одна из точек является выводимой.
Вероятно, периоды не тянут на классы, а являются структурированными типами (<<datatype>>). Например, в примере дубли одного и того же периода, входящие в состав разных контейнеров должны быть различными экземплярами или одним и тем же экземпляром?

28
Связь есть, и она проходит через головы тех, кто строит модель. ДП определяет некоторые трассы, а ДС --, образно говоря, карту, по которой эти трассы проходят и правила передвижения.
Приводимый пример не точен в этой части:
Цитировать
Пусть на ДП объект X посылает объекту Y сообщение mes(). ... в ДС X есть состояние с входным эффектом mes() (/entry mes() ).
Первое, отправка сообщения Y.mess() может быть в любом эффекте, не обязательно в эффекте входного действия.
Второе, ДП может моделировать трассу, на которой X и Y не взаимодействуют или взаимодействуют так, что вызов Y.mess() не происходит.
Третье. Y может игнорить отправляемые ему вызовы Y.mess(). Значит, неточно и это:
Цитировать
...для некоторого состояния в ДС Y есть переход по событию mes().

29
Если верить стандарту UML (в текущей версии), то:
Class
A
|
Behavior
A
|
StateMachine
Если верить в принцип Барбары Лизковы, то StateMachine-ы можно соединять обобщениями (и ассоциациями). Возможно, что авторы нотации расширяемых StateMachine не верят в ПрБЛ или в стандарт и потому изобрели свой велосипед.
Выше верно отмечено, что State не может участвовать в обобщениях. Но у некоторых State может быть вложенная StateMachine. А вот она-то может участвовать в обобщениях и её потомок может рассматриваться как сама вложенная StateMachine. От открывающихся перспектив по построению конструкций, которые затруднительно будет осмыслить, у меня захватывает дух. Поэтому умолкаю.
Ещё один повод замолчать в том, что ни один из участников ветки так ничего и не нарисовал. Уверено, что расширяемые состояния для моделирования не потребовались бы.
Дальше немного трындежа:
+ Пользователь, которого надо чекать, может передаваться как параметр в сообщении. Сторожевое условие -- проверка параметра сообщения на равенство со ссылкой на пользователя из самой заявки -- вполне себе всё моделирует.
+ Так как на диаграмме можно предусмотреть событие относительного времени и переход по нему, то можно отлавливать истечение месяца и реакцию на это.
+ Протокольный автомат ломается, если что-то пошло не так. Поведенческий просто игнорит не предусмотренные события и продолжает жить припеваючи.

30
О. Вот интересная тема, подходящая для раскопа.
Сначала отложим в сторону Continuation. Визуально они схожи со State invariant, но смыслы у них разные (привет авторам UML!). Continuation -- элемент управляющий, так как рассказывает, куда дальше может пойти трасса. State invariant -- элемент разметки, который позволяет проверить валидна ли трасса или нет (но управлять её ходом он не может).
На приклеенной диаграмме у нас State invariant-ы.
Изначальный вопрос, видимо, про фичи Sparx, т. е. сделали соответствующую кнопочку или пункт в менюшке.
В общем случае мы вряд ли сможем восстановить всю диаграмму состояний. Мы можем восстановить только ту часть, которая кроется трассами, смоделированными диаграммой (диаграммами) последовательности. И для этого нам надо, чтобы на диаграмме в State invariant-ы были с именами состояний, а не такие как в примере: JDBC == BEGIN. Пример говорит нам лишь о том, что для того, чтобы трасса была валидна, в соответствующих точках должны быть выполнены условия. Мы можем догадываться, что условия из примера не совместны, но в общем случае Sparx-у это понять затруднительно. Без человеческой головы и рук тут не справиться.
Обратная задача -- построить диаграмму последовательности по имеющейся диаграмме состояний тоже достойна рассмотрения. Там тоже мы не достигнем полного восстановления требуемой диаграммы, но предположительно, полученные куски будут более осмыслены. Гипотетически, автомат много больше сообщает о возможных трассах, чем набор трасс -- об автомате.

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