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

×


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

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


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

Страницы: « 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 35 »
31
В современной версии UML есть подвид зависимости называемый <<derive>>. Им связывают элементы модели, такие что, один вычисляется из второго. Положение дел до вызова операции -- это базовый элемент, на основе которого вычисляется / <<derive>>-ится второй -- положение дел после вызова. В приведённом примере можно считать, что есть две спецификации экземпляра Class1, соединённые <<derive>>. По смыслу это один и тот же экземпляр, "снятый" в разные моменты времени. В кооперации, описывающей реализацию операции setFS(C,B), можно завести для этого 2 элемента.

32
UML SysML и пр. / Re: Diagram: Activity vs Sequence
« : 25 Июня 2022, 20:21:19 »
Одно и то же поведение может быть описано разными диаграммами. В зависимости от используемой диаграммы будут визуализированы разные аспекты этого поведения. Диаграмма последовательности визуализирует взаимодействие в рамках описываемого поведения, при чём выражает его в виде обменов сообщениями. Диаграмма деятельности визуализирует потоки управления и/или данных в рамках описываемого поведения, выражая их в виде действий и управления. Получается что два типа диаграмм дают два вида проекций. Разные проекции одного и того же поведения могут быть схожи до такой степени, что по потокам управления можно догадаться и/или "прочесть между строк" о том, каким будет взаимодействие. В другую сторону это тоже может быть справедливо. Но это не всегда так. Проекции могут существенно расходится.
Алгоритм, реализация операции могут быть описаны в обеих проекциях.
Выбор типа диаграммы определяется задачей, но это не задача, сформулированная так: "смоделировать алгоритм / операцию / что-то ещё". Это задача в формулировке которой указано, какой аспект важен: передача управления и/или данных между отдельными шагами или обмен сообщениями между объектами.

33
В современном прочтении, то, что соединяет такая связь, является частями (Part). Ассоциация не может соединять Part в нынешней версии стандарта. В другой теме мы обсудили, что вложенные классы и части композитной структуры рисуются сейчас разными. Части соединяет коннектор. Авторы стандарта избегают примеров диаграмм, где бы коннектор выходил за пределы объемлющего класса. И пишут про коннектор так, как-будто у коннектора (и соединяемых им частей) есть общий владелец-классификатор. Абстрактный синтаксис допускает, что у коннектора нет владельца, но примера в стандарте (как и пояснения к внутренней структуре чего относится такой коннектор) нет. Диаграмма из URM может быть допилена, чтобы потрафить стандарту, добавлением объемлющего классификатора и превращением кластера в part. И всё же, понравившийся пример был и останется уколом в дефекты UML, где конкретный синтаксис норовит войти в клинч с абстрактным.

P. S. Банкет от создателей Visual Paradigm:

В их голове это рифмуется с этим:

См. здесь.

34
Трактовка ассоциации, соединяющей актора и ВИ, как пути доступа -- это огрубление и переделывание стандартного смысла.
Если ДВИ рисуется при взгляде на систему как на "чёрный ящик", то о каких "конкретных модулях системы" может идти речь.
Чудесатое обсуждение.

35
Кручу-верчу, запутать хочу.

Средний "пень с глазами" -- это внутренний актор. Если верить, Алистеру Коберну. Т. к. у него SuD (System under Design) -- это актор. Т. к. это он в своей книге "WEUC" делит акторов на внутренних и внешних.
Учитывая подфорум, где задан вопрос, можно попытаться трактовать ситуацию с точки зрения стандарта языка. В стандарте нет следов коберновского деления. В стандарте нет примеров ДВИ с более чем 1 subject-ом. Абстрактный синтаксис не запрещает вкладывать классификаторы друг в друга, что, теоретически, даёт возможность рисовать ДВИ в коберновском стиле, когда система и актор оказываются внутри более крупной объемлющей их системы-сабджекта.

Стандарт лишь запрещает рисовать акторов в виде глазастых пней.)

36
Изначальная постановка вопроса указывает, что речь идёт о взаимодействии. Значит, используя диаграмму деятельности, аспекты взаимодействия изобразить не удастся. Что и подтвердилось в ходе обсуждения.

37
Продолжение тут: https://www.uml-diagrams.org/use-case.html#abstract-use-case
Тема, видимо, неисчерпаемая.

38
Арлоу и Нейштадт тут просто напутали. Выше на стр. 495 написано (тоже с некоторой путаницей), что нет синхронизации параллельных регионов в смысле, что второй не выходит, пытаясь догнать вышедший первый, и что мы не ждём когда выйдут оба. Остальные "просто прерывают выполнение". Т. е. в них жёсткий останов без совершения действий во выходу и т. п..
Путаницу можно усилить, слив два exit point-а в один. Тогда слитный exit point будет работать как join. Т. е. будет синхронизация. Чудеса, да и только.
IBMшики взяли себе за правило рисовать лишь один переход, ведущий в exit point.

39
Вопрошающему стоило указать, реальные решения:
- продублировать decision-ы для потока документов и для потока резолюций;
- укрупнить объектные токены, чтобы в 1 токен влезала пара документ+резолюция;
- забыть про datastore как про страшный сон.

40
Ну как тут мимо пройти...

Infrastructure::Core::Constructs::Operation -- это имя конкретного экземпляра метакласса, взятого из метамодели UML.
Infrastructure::Core::Constructs::Class -- это тип, к которому принадлежит любой экземпляр метакласса.
Нет нужды подставлять имя экземпляра вместо его типа.
В современной версии стандарта есть рис. 12.26, поясняющий это. Если заменить имя (значение слота name) экземпляра метакласса с "Class" на "Operation", то всё встанет на свои места.

41
OCL вроде не поддерживает навигацию по тернарным ассоциациям.
Поддерживает, но кривую. Другими словами, не поддерживает _должным_ образом_, на мой взгляд.
ОК. Дефект исправляем. Превращаем тернарную ассоциацию в класс тернарной ассоциации. Для него есть allInstances() и доступ ко всем концам.
Нашёлся ещё такой файлик, проясняющий по N-арным ассоциациям и OCL.
https://www.eclipse.org/forums/index.php?t=getfile&id=25690
(у меня скачался по VPN)
Там же дан другой рефакторинг решения -- материализация связи.

42
Тема -- жир для некрокопателей.
Behavior -- это глыба, про которую у нас может быть повод нарисовать диаграмму деятельности / диаграмму состояний / диаграмму взаимодействия, чтобы прояснить, что там внутри.
Opaque Behavior -- это глыба, устройство которой мы не хотим описывать визуально на UML (это так в стандарте сформулировано). Её описание мы составим на _текстуальном_ языке, не являющимся UML (вероятно, авторы стандарта считают, что UML может быть текстуальным, невизуальным).
Action -- это кирпичик, строительный материал при описании глыб -- Behavior-ов. Кирпичик проще глыбы, настолько, что для него собственная диаграмма не нужна.
Opaque Action -- это кирпичик с пояснением/телом на текстуальном языке, не являющимся UML. Эти Action-ы используются чаще всего. Авторы стандарта даже считают, что при рисовании диаграмм деятельности (или диаграмм состояний) рисовальщик сначала кладёт Opaque-кирпичик, кумекает, и потом заменяет на что-нибудь более приличное (вспоминаем Рамбо: "В ставке Гитлера все...").
Add Feature Value Action -- это кирпичик не требующий пояснения, т. к. про него всё поясняет UMLьный стандарт. У него есть входной пин. На пин приходит значение. Когда кипричик запущен, он присваивает это значение в поле объекта (иногда затирая старое, если оно было).
Call Behavior Action -- это кирпичик (не требующий пояснения и т. д.). Он запускает чего-то сложное, то есть глыбу-Behavior, для которой может быть нарисована своя UML-диаграмма. Запуск может быть синхронным или асинхронным. Если запускаемое поведение является деятельностью, то на кирпичике ставят визуальный значок-"рубильник". На практике, если диаграмма деятельности получается большой, то бьём её на части и на основном осколке ставим Call Behavior(Activity) Action-ы как ссылки на осколки-продолжения.
Call Operation Action -- это кирпичик (не требующий пояснения и т. д.). У него есть входной пин. На пин приходит объект. Когда кирпичик запущен, он посылает этому объекту сообщение, вызывающее определённую операцию этого объекта.
Create Object Action -- это кирпичик (не требующий пояснения и т. д.). У него есть выходной пин. На пин выдаётся экземпляр класса, создаваемого, когда кирпичик запущен. Это голенький экземпляр объекта, у которого нет никаких значений, ссылок. Примечательность этого кирпичика в том, что он служит не только на диаграммах. С его помощью стандарт UML объясняет жизненный цикл экземпляров объектов.
Value Specification Action -- это кирпичик (не требующий пояснения и т. д.). У него есть выходной пин с именем result. На него выдаётся значение, которое является результатом вычисления спецификации значения (например, выражения). Само вычисление стартует, когда кирпичик запущен. Пример: пишем выражение "1". Получаем Value Specification Action-кирпичик, выдающий при его запуске единицу.

43
Для всех / Re: Алгоритмизация
« : 15 Июня 2022, 00:49:03 »
ДМК-Пресс выдало на гора перевод HtDP на русский.
https://dmkpress.com/catalog/computer/programming/978-5-93700-926-3/
https://htdp.org/

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

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

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