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

Общий раздел => Теория моделирования и нотации => UML SysML и пр. => Тема начата: Vadim от 07 Сентября 2010, 14:41:19

Название: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 07 Сентября 2010, 14:41:19
В некоторых случаях (см. далее пример) хочется использовать нотацию структурированного классификатора для изображения композитной агрегации, как наиболее выразительную и компактную. Примеров на эту тему немного и они слишком просты (если я ошибаюсь - поправьте и направьте).

Рассмотрим пример.
Период - интервал времени (с, по) с точностью до дня. Периоды классифицируются по типам: год, месяц, рабочая неделя, учебная четверть, ... Периоды одного типа: 1) либо следуют один за другим (год, месяц), т.е. следующий начинается сразу по окончании предыдущего, такой тип периода назовем "без промежутков"; 2) либо нет (рабочая неделя, учебная четверть - прерываются на выходные, каникулы), такой тип периода назовем "с промежутками". Примеры периодов: "январь 2010 года" - начинается 01.01.2010, заканчивается 31.01.2010, "1 четверть 2010/2011 учебного года" - начинается 01.09.2010, заканчивается 05.11.2010. Периоды "с промежутками" описываются датами начала и конца. Периоды "без промежутков" можно описать только датой конца, а дату начала определять по дате конца предыдущего периода того же типа. Для самого первого периода, у которого нет предыдущего, дата начала определяется за счет того, что в описание типа периода входит дата начала.

Во вложении - что получилось. Так можно? нужно? нельзя?
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Galogen от 07 Сентября 2010, 17:11:03
Очень интересную вы затронули тему. Однако.

1. Почему Период является частью композита Тип периода. Как-то не очень сопоставимо. Сравните: Род - Семейство - Вид - Подвид. Но означает ли, что удаляя РОД мы таким образом удаляем все что входит в него по иерархии?

2. чем отличается понятие Период от Понятие ТипПериода?
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Денис Иванов от 07 Сентября 2010, 17:32:16
Не знаю как тут может помочь структурированный классификатор.
Должно получиться что-то такое.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 07 Сентября 2010, 18:17:01
2 Денис Иванов

Состав типов периодов (и периодов, конечно) должен управляться пользователем: год, месяц, четверть и неделя - только примеры.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 07 Сентября 2010, 18:27:18
Цитировать
1. Почему Период является частью композита Тип периода. Как-то не очень сопоставимо. Сравните: Род - Семейство - Вид - Подвид. Но означает ли, что удаляя РОД мы таким образом удаляем все что входит в него по иерархии?

2. чем отличается понятие Период от Понятие ТипПериода?

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

2. Пример: тип периода - месяц, периоды - декабрь 2009, январь 2010.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Денис Иванов от 07 Сентября 2010, 18:32:56
2 Денис Иванов

Состав типов периодов (и периодов, конечно) должен управляться пользователем: год, месяц, четверть и неделя - только примеры.

Главное то, что они известны заранее. Ведь так?
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 07 Сентября 2010, 18:34:45
Нет, не известны.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Денис Иванов от 07 Сентября 2010, 19:05:32
Тогда должна быть описана универсальная структура для описания любых возможных периодов. И где она?
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 08 Сентября 2010, 11:31:41
Цитировать
Тогда должна быть описана универсальная структура для описания любых возможных периодов. И где она?

В сообщении
Цитировать
Период - интервал времени (с, по) с точностью до дня. Периоды классифицируются по типам: год, месяц, рабочая неделя, учебная четверть, ... Периоды одного типа: 1) либо следуют один за другим (год, месяц), т.е. следующий начинается сразу по окончании предыдущего, такой тип периода назовем "без промежутков"; 2) либо нет (рабочая неделя, учебная четверть - прерываются на выходные, каникулы), такой тип периода назовем "с промежутками". Примеры периодов: "январь 2010 года" - начинается 01.01.2010, заканчивается 31.01.2010, "1 четверть 2010/2011 учебного года" - начинается 01.09.2010, заканчивается 05.11.2010. Периоды "с промежутками" описываются датами начала и конца. Периоды "без промежутков" можно описать только датой конца, а дату начала определять по дате конца предыдущего периода того же типа. Для самого первого периода, у которого нет предыдущего, дата начала определяется за счет того, что в описание типа периода входит дата начала.
И формализованное представление - там же во вложении.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Денис Иванов от 08 Сентября 2010, 11:42:21
Нарисуйте диаграмму объектов, на которой изобразите для примера "январь 2010 года", "1 четверть 2010/2011 учебного года"
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 08 Сентября 2010, 12:48:02
Диаграмма объектов во вложении.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Денис Иванов от 08 Сентября 2010, 13:30:12
значения атрибутов забыли
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 08 Сентября 2010, 13:50:54
Атрибуты:
ПерваяЧетверть2010/2011 - начало=01.09.2010; конец=05.11.2011
Месяц - начало=01.12.2009
Декабрь2009 - конец=31.12.2009
Январь2010 - конец=31.01.2010

Понимаю, что лучше бы на диаграмме, но не владею ЕА для диаграммы объектов.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 08 Сентября 2010, 13:56:33
Ошибка! Вместо 05.11.2011 надо 05.11.2010
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Денис Иванов от 08 Сентября 2010, 14:19:13
Я не из праздного любопытства спрашиваю...

Хотел понять практическую ценность такого представления (и честно говоря не понял) и поэтому попросил нарисовать диаграмму объектов.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 08 Сентября 2010, 15:19:45
Попробую определить изначальную проблемму, к которой пример служит только иллюстрацией.

Далее все разбиения на подклассы (SetGeneralization) считаются полными и непересекающимися {complete, disjoint}.
Достаточно часто встречается ситуация, когда:1) объект класса Б (период) ассоциируется ровно с 1 объектом класса А (тип периода); 2) класс А имеет подклассы (с промежутками и без промежутков); 3) класс Б тоже имеет подклассы, причем взаимно-однозначно соответствующие подклассам А; 4) любой объект класса Б относится к тому подклассу Б, который соответствует подклассу А, к которому относится объект класса А ассоциированный с объектом класса Б.
В модели (и диаграмме) можно, конечно, воспользоваться приемами: ограничения, {subset}, обобщение ассоциаций и др., они описаны в учебниках. Но они маловыразительны и/или запутывают диаграмму, особенно когда их много (а в практических задачах их много).
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: [прилетело НЛО и...] от 31 Января 2022, 15:39:02
Пример интересный, поэтому лезу в раскоп.
По идее (если ориентироваться на картинки из стандарта), внутри должны быть роли (и/или части), которые не являются классами. То есть класс Период должен лежать снаружи, а его имя должно использоваться как тип у роли/части.
То, что названо типом периода, на мой взгляд, больше похоже на последовательность периодов, т. е. на некоторый контейнер.
Вероятно, у периода всегда есть обе оконечные точки, и если периоды входят в состав некоторого контейнера, то одна из точек является выводимой.
Вероятно, периоды не тянут на классы, а являются структурированными типами (<<datatype>>). Например, в примере дубли одного и того же периода, входящие в состав разных контейнеров должны быть различными экземплярами или одним и тем же экземпляром?
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 01 Февраля 2022, 14:49:00
По идее (если ориентироваться на картинки из стандарта), внутри должны быть роли (и/или части), которые не являются классами. То есть класс Период должен лежать снаружи, а его имя должно использоваться как тип у роли/части.
Можно и как в стандарте - не класс, а роль, но:
   1. с указанием класса
   2. с именем роли как у полюса ассоциации
   3. с множественностью роли как у полюса ассоциации
А если посмотреть https://www.utdallas.edu/~chung/Fujitsu/UML_2.0/Rumbaugh--UML_2.0_Reference_CD.pdf рис.14-84, то ...
То, что названо типом периода, на мой взгляд, больше похоже на последовательность периодов, т. е. на некоторый контейнер.
Контейнер, кроме объединения периодов, имеет собственные информационные свойства, например Наименование. 
Вероятно, у периода всегда есть обе оконечные точки, и если периоды входят в состав некоторого контейнера, то одна из точек является выводимой.
У периодов, связанных с типом периода с промежутками обе оконечные точки задаются, у периодов, связанных с типом периода без промежутков задается только точка конца, а точка начала является выводимой.
Вероятно, периоды не тянут на классы, а являются структурированными типами (<<datatype>>). Например, в примере дубли одного и того же периода, входящие в состав разных контейнеров должны быть различными экземплярами или одним и тем же экземпляром?
Тянут, в составе разных контейнеров (типов периода) дубли одного и того же периода должны быть различными экземплярами.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: [прилетело НЛО и...] от 01 Февраля 2022, 23:55:02
С тех пор прошло много времени и Рамбо сказал своё знаменитое "В ставке Гитлера (т. е. в IBM) все сумасшедшие", давая интервью о том, почему UML3 не будет.
В нынешнем стандарте истребили следы того, что рамка пакета или компонента и рамка класса или кооперации вели себя схожим образом. Внутри рамки класса не может быть другого класса или типа. Внутри компонента может.
2 оконечные точки или одна зависит от того верим ли мы в LSP, строя модель. Почему-то кажется, что традиционный способ за-redefine-ть периоды, входящие в состав "без промежутков", указав, что у них точка становится выводимой.
Попутно замечу траблы (14-31) одного из трёх друзей относительно мощностей при полюсах тернарной ассоциации. Быть может, опечатались.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 02 Февраля 2022, 11:33:57
С тех пор прошло много времени и Рамбо сказал своё знаменитое "В ставке Гитлера (т. е. в IBM) все сумасшедшие", давая интервью о том, почему UML3 не будет.
Можно ссылочку и цитату?
Внутри рамки класса не может быть другого класса или типа. Внутри компонента может.
Возможные варианты отражения ситуации на диаграмме при строгом следовании стандарту:
   1. цитата: То есть класс Период должен лежать снаружи, а его имя должно использоваться как тип у роли/части.
   2. что-то похожее на рис.14-33 из того же источника 
2 оконечные точки или одна зависит от того верим ли мы в LSP, строя модель. Почему-то кажется, что традиционный способ за-redefine-ть периоды, входящие в состав "без промежутков", указав, что у них точка становится выводимой.
В Liskov substitution principle мы верим всегда. Не выходя за рамки этой веры можно:
   1. Не указывать производные (derived) элементы вообще - как и сделано
   2. Указать, что Период имеет атрибут "Конец:Дата", который для Периода типа "Без промежутков" является производным (ну тогда уж и как вычисляется)
В реальной жизни я бы скорее использовал 2., но для обозначения ситуации 1. попроще.
Попутно замечу траблы (14-31) одного из трёх друзей относительно мощностей при полюсах тернарной ассоциации. Быть может, опечатались.
Для меня мощности при полюсах n-арной ассоциации, отличные от 0..* и 1..*, всегда что-то "не то".
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: [прилетело НЛО и...] от 02 Февраля 2022, 13:36:31
Изначально цитата, понятно, взята из "В бой идут одни старики". Произносит её механик Макарыч (Алексей Смирнов). Что-то близкое по смыслу Рамбо сказал Бьянкуцци и Уордену, а они записали в своей книге "Пионеры программирования" https://vk.com/wall-54530371_793 в главе об UML. Двое других из "троих друзей" были настроены не так воинственно.
14-33 мне тоже нравится, в частности, тем, что мне неизвестна UML-среда (а не графическая рисовалка), позволяющая это нарисовать. В реальной среде возможны либо redefines-ы на полюсах, либо подвески классов ассоциаций и обобщения между ними.
Допущения в первоначально составленной модели прояснились. Не думаю, что хоть чего-то стоят мои уточнения к ней. Было приятно потрындеть, спасибо.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 02 Февраля 2022, 14:20:52
Изначально цитата, понятно, взята из "В бой идут одни старики". Произносит её механик Макарыч (Алексей Смирнов). Что-то близкое по смыслу Рамбо сказал Бьянкуцци и Уордену, а они записали в своей книге "Пионеры программирования" https://vk.com/wall-54530371_793 в главе об UML. Двое других из "троих друзей" были настроены не так воинственно.
Спасибо, книга "Пионеры программирования" вроде есть, перечитаю.
14-33 мне тоже нравится, в частности, тем, что мне неизвестна UML-среда (а не графическая рисовалка), позволяющая это нарисовать. В реальной среде возможны либо redefines-ы на полюсах, либо подвески классов ассоциаций и обобщения между ними.
1. Мне 14-33 НЕ нравится для указанной ситуации - Период связан ровно с одним ТипПериода, который имеет подтипы, значит Период тоже имеет тот же набор подтипов, причем специализация по этим подтипам является вычислимой. Это не должно требовать такого "громоздского" представления на диаграмме, как 14-33.
2. В MagicDraw 16.6 мне удалось сделать обобщение между ассоциациями.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: [прилетело НЛО и...] от 02 Февраля 2022, 22:08:20
Фигасе, VP тоже научилось наследованиям между ассоциациями. Спасибо за пинок в верном направлении.
Мы смотрим на 14-33 немашинным взглядом. Если делать модель в расчёте на скармливание какой-нибудь софтине, то и не такое рисуется (иногда даже не рисуется, так как модель не содержит диаграмм, являясь лишь деревцем в проводнике.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: [прилетело НЛО и...] от 02 Февраля 2022, 22:38:15
Офтопик. Интересно VP работает наследование между тернарными ассоциациями. Вдруг, оказывается, что обобщение соединяет в таком случае не ассоциации, а их отдельные хвосты. Ещё VP позволяет соединять обобщениями ассоциации без учёта их арности. Тернарная может стать наследницей бинарной. Ну, то есть, в этой части VP -- всё ещё рисовалка по большей мере.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: [прилетело НЛО и...] от 03 Февраля 2022, 00:39:11
Гуру UML-стандартов Kirill Fakhroutdinov завёл отдельное описание "вложенных классов": https://www.uml-diagrams.org/nested-classifier.html
Пишу об этом, т. к., например, вложенные пакеты в другом пакете UML позволяет рисовать внутри рамок этого пакета. То же справедливо для владеемых пакетом элементов (т. е. классов, типов и проч. описанных в самом пакете). К слову вложенные пакеты не являются владеемыми. Понятия вложения и владения в UML 2.x начали расходиться по смыслу. В UML 1.x это были синонимы. Метамодель UML разрешает классу вложенные классификаторы, но не объясняет, как их изображать. Fakhroutdinov даёт возможную версию с явной линией, заканчивающейся позитроном. VP разрешает так рисовать, но также он разрешает вложенный класс помещать внутрь рамок класса на диаграмме составной структуры (рисуя при этом предупреждающий знак, но съедая нарисованное). В обоих случаях в дереве модели вложенный класс появляется как дочерняя вершина класса, в который он вкладывается.
Учитывая написанное, можно полагать, что визуально вложенные в рамки класса другие классы являются вложенными, в смысле UML (их описание действует внутри пространства имён объемлющего класса).
VP позволяет рисовать к вложенному классу ассоциацию от объемлющего класса. Так что изначальная диаграмма может иметь место, если классы вложенные и если к ним провести таки композиции. 
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 03 Февраля 2022, 15:14:04
Офтопик. Интересно VP работает наследование между тернарными ассоциациями. Вдруг, оказывается, что обобщение соединяет в таком случае не ассоциации, а их отдельные хвосты. Ещё VP позволяет соединять обобщениями ассоциации без учёта их арности. Тернарная может стать наследницей бинарной. Ну, то есть, в этой части VP -- всё ещё рисовалка по большей мере.
Не могу попробовать VP. Но в MagicDraw работает так:
1.   Тернарная (и выше) ассоциация имеет отдельный знак – «ромбик».
2.   Чтобы нарисовать «хвосты» используются бинарные ассоциации между «ромбиком» и классами.
3.   Эти бинарные ассоциации и другие «обычные» бинарные ассоциации являются объектами для соединения с помощью обобщения. Можно даже сделать, что один «хвост» обобщает другой. Единственное ограничение – обобщения не могут зацикливаться.
4.   Нельзя делать обобщения между «ромбиками».
Подозреваю, что VP работает так же.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: Vadim от 03 Февраля 2022, 15:54:16
Мы смотрим на 14-33 немашинным взглядом. Если делать модель в расчёте на скармливание какой-нибудь софтине, то и не такое рисуется (иногда даже не рисуется, так как модель не содержит диаграмм, являясь лишь деревцем в проводнике.
Если смотреть "машинным" взглядом, то ситуация становится ещё "жэстачайшэ" - машине надо объяснить, где информационное свойство является избыточным (может/должно быть выведено - derived), а где только ограничение (constraint).
Я расцениваю 14-33 как желание отобразить:
1. 2 класса связаны ассоциацией
2. оба класса имеют одинаковый набор подклассов
3. ассоциироваться могут только одноименные подклассы
4. мощность "подчиненных" ассоциаций - такая же, как у "обобщающей" ассоциации
Пусть хотя бы с одной стороны мощность ассоциации такова, что становится обязательной (1..1 или 1..*). Тогда, например если model имеет мощность 1..1 или 1..*, то разбиение Symbol на OrderSymbol и CustomerSymbol становится выводимым из разбиения Subject на Order и Customer.
Если же с обеих сторон мощность необязательна (0..1 или 0..*), то имеем дело с ограничением.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: [прилетело НЛО и...] от 04 Февраля 2022, 18:37:02
Не могу попробовать VP. ...
Подозреваю, что VP работает так же.
Да, верно. Мы видим, как конкретный синтаксис, осязаемый руками/курсором, начинает превалировать над абстрактным.
Можно припомнить, что даже бинарная ассоциация может быть нарисована с ромбиком по середине. И задуматься, сколько обобщений нужно проводить -- к каждому полюсу или к ромбику?
VP ещё позволяет мощности указывать с обеих сторон хвоста, растущего из ромбика в сторону класса. У кого-то читало, как это можно осмысленно использовать при арности N>2.
Название: Re: Нотация структурированного классификатора для изображения композитной агрегации
Отправлено: [прилетело НЛО и...] от 04 Февраля 2022, 18:56:42
В продолжение про вложенное / владеемое.
В стандарте 2.5.1 есть иллюстрация 11.48. Там не класс, а компонент, но можно видеть, что полоска с внутренней структурой и полоска со вложенными определениями классов нарисованы отдельно.
И можно осознать, что компонент не связан композициями со своими частями из внутренней структуры. А класс, выходит, связан. Но это вытекает не из картинки (т. к. они визуально схожи), а из свойств класса. То есть это положение выводимое, а не определяющее. Ну и всё такое.