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

×


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

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


Сообщения - Vadim

Страницы: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 »
61
Получается, что подобные тонкости лучше описывать на простом языке, без каких либо излишеств?
"Это зависит..." (Капитан Очевидность)

Ещё момент: если между блоками "И"("ИЛИ"), то между фильтрами имеет смысл только "ИЛИ"("И").

62
Наверно, проще будет приложить макет.
На картинке изображена такая фильтрация:
[(Стоимость приобретения >= 200 000) И (Тип оборудования <> Автомобиль) И (Является средством измер... = Нет)]
ИЛИ
[(Стоимость приобретения >= 500 000) И (Тип оборудования = Автомобиль)]

Что здесь фильтр, что здесь блок?

Судя по:
Получается, что пользователь, может добавить фильтр.
Для этого фильтра указать:
  • поле обьекта
  • условие(<,>,= и т.д)
  • значение по умолчанию (не обязательно)
имеется 5 фильтров и 2 блока?
значение по умолчанию (не обязательно)
А почему необязательно, ведь мы должны сравнивать значение поля, для чего надо знать с чем сравнивать? (разве что для логического типа данных может быть попроще)
При этом при добавлении второго и последующих фильтров появляется возможность указать между ними условные операции.
Скорее не "возможность", а "необходимость".
И вот я не понимаю, как это можно описать в сценариях да и стоит ли?
Если кратко:
можно? - Можно
стоит? - Не стоит

63
ИМХО ещё для определения состава и содержимого ВИ:
  • Если фильтров больше 1, между ними необходимо указывать логические операции (and, or, not).
    Должна быть возможность объединять фильтры в блоки и указывать между блоками логические операции  (and, or, not).
это относится только к "and" и "or", а "not" имеет смысл именно для одного фильтра/блока
  • надо бы детальнее разобраться, что такое "фильтр", что такое "блок":
    • если 2 выборки имеют абсолютно одинаковое условие (состав объектов всегда совпадает, только поля результата разные) - это будет всё равно 2 разных фильтра/блока (одинаковые по содержанию) или может быть один и тот же фильтр/блок, просто подключенный к обоим выборкам?
    • когда блок объединяет более 2 фильтров между каждой парой смежных фильтров может быть своя операция ("and" или "or") или операция задаётся целиком на блок? То есть блок это просто "скобки" для указания порядка операций или средство выделения смыслового фрагмента для повторного использования?

65
любой объект может изменить свой подкласс, например суперкласс - Человек, подклассы - Одинок, В браке, Разведен, Вдов
Есть такой диалект - ontoUML. Там стереотип <<Phase>> означает, что подкласс может меняться.
По ссылке пример прямо в тему:
https://ontouml.org/ufo/wiki/catalogue-ontological-patterns/phase-partition-pattern/

66
На "нормальной" старшинство по отношению к "хвосту" было бы размечено композицией / агрегацией.
Согласен с необходимостью внести на диаграмму (в модель) для ассоциации между Student и Classification какой-то "несимметричности".
Как вариант - конец при Student {readOnly} для обозначения
Смена типа студента состоит в том, что один "хвост" ему отрезают, а другой -- пришивают.
- студент может сменить "хвост", а "хвост" не может сменить студента - только "умереть", освободив место для свежерождённого "хвоста". И maxCourceLoad можно переместить в Student, чтобы не передавать его значение из старого "хвоста" в новый.

67
Многие UML-модели делаются так, как-будто типы экземпляров статичны (с единственной поблажной имени Барбары Лисковы). Например, в классическом RUP-овом примере от Rational используется делегирование, чтобы показать, что студенты бывают разных типов и могут менять свой тип:
Это тоже вариант. У него свои недостатки:
  • громоздко
  • если представить, а Student имеет подклассы, например Left и Right, то будет непонятно: 1) это Student может менять FullTime на PartTime и обратно, а Classification нарисована, чтобы помочь это показать или 2) это Classification может менять Left на Right и обратно, а Student нарисован, чтобы помочь это показать
Смена типа студента состоит в том, что один "хвост" ему отрезают, а другой -- пришивают.
Причем отрезанный "хвост" надо сразу уничтожить, а пришиваемый - прямо перед "этим" (или даже в ходе "этого") создать, да ещё с тем же значением maxCourceLoad!
Если требуется комментарий к решению с powertype, то он есть в книжке Milicev "MDD with xUML". В таком ключе: powertype придумали бизнес-аналитики, пусть они им и пользуются.
Перечитал Milicev "MDD with xUML". Он просто своим OOIS UML никак не обрабатывает powertype, поэтому тоже не знает, может ли объект менять тип (или считает, что всегда не может).

Есть такой диалект - ontoUML. Там стереотип <<Phase>> означает, что подкласс может меняться.

68
Возьмем картинку (она из стандарта UML 2.5!).
http://analyst.by/wp-content/uploads/2016/09/ClassDiagram2.png
На ней не всегда {disjoint, complete}, но мы будем считать, что {disjoint, complete} всегда.
Как увидеть, что для объектов класса HealthInsurancePolicy значение CoverageType (и принадлежность к подклассу) не может измениться, а значение InsurancePlan - может?
Пока знаю только один путь:
  • на диаграмме и Generalization Set, и ассоциация
  • указана связь между ними
  • конец ассоциации помечен или нет ограничением {readOnly}
Громоздко (много элементов) и ненаглядно (связь между ассоциацией и Generalization Set не в виде линии, а по совпадению имен)!
Вот если бы при Generalization Set ставить какую-нибудь отметку, чтобы знать может измениться подкласс объекта именно в этом Generalization Set или нет.
Собственно в этом и вопрос - знает ли кто-нибудь такую отметку стандартными средствами UML?
Понятно что всегда можно сделать примечание или комментарий, но хотелось бы больше формальности!

69
Generalization Set (для определенности будем рассматривать только {disjoint, complete}) могут быть:
  • любой объект не может изменить свой подкласс, например суперкласс - Человек, подклассы - Мужчина, Женщина
  • любой объект может изменить свой подкласс, например суперкласс - Человек, подклассы - Одинок, В браке, Разведен, Вдов
Как это можно формально отразить на диаграмме классов?

Есть такой вариант - делаем ассоциацию с PowerType (1 Пол, 2 СемейноеПоложение) и указываем или не указываем {readOnly} на конце ассоциации, примыкающем к PowerType. Но он такой громоздкий, хотелось бы чего-нибудь попроще!

70
На диаграмме чего-то странное с закрашенными ромбиками творится. Так что я -- тоже новичок и тоже пока ничего не понимаю. На языке стандартного UML прочесть её нельзя.
Подумаешь от нуклеотида 2 композиции с множественностью 1..1 идут. Так много где делают, и считают, что это обозначает: каждый нуклеатид входит или в ДНК, или в РНК (но не в обе - композиция же, и куда-нибудь точно входит - минимальная множественность 1, а не 0) :D

71
Вы вот формируете какую-то запись. Можно же нарисовать диаграмму объектов. Судя по серой диаграмме между студентом и предметом может быть
1. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени.
Или
2. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени и сдавать экзамен не будет
или
3. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени и сдавать экзамен будет
или
4. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени и сдавать экзамен будет, но еще не сдавал
или
5. Студент записался на Предмет и на момент наблюдение потратил на изучение Х времени и сдавать экзамен будет, и закончил обучение сдав экзамен

Разве тут нет логических ловушек?
Если мы выберем вариант 1, то так и не поймем есть экзамен или его нет, вернее это совершенно не важно, т.е. по сути это почти эквивалентно варианту 2
Аналогично, если мы выберем вариант 3, то остановимся на факте, что нужно сдавать экзамен, следовательно такая конструкция нелогична, нужно либо вариант 4 либо 5

Итого должны быть валидны только 2, 4 или 5
Здесь мой косяк - привык к тому, что если на диаграмме линии обобщения имеют общую стрелку (полый треугольник), то это означает, что имеется SetGeneralization с {complete, disjoint}. UML требует явного указания. Давайте считать, что для всех объединений стрелок обобщения на всех диаграммах указано {complete, disjoint}.
Итого имеем то, что можно смоделировать 4 атрибутами
Затрачено времени
Будет экзамен?
Дата экзамена
Оценка

Вся избыточность только в случае отсутствия экзамена.

Возможные решения

Между Студент и Предмет две связи с двумя классами-ассоциациями: Записан на курс (Затрачено времени), Есть экзамен (Дата, Оценка)
Не обозначено:
  • связь "Есть экзамен" может быть только если есть связь "Записан на курс"
  • в связи "Есть экзамен" надо делать атрибуты "Дата" и "Оценка" необязательными [0..1], но тогда возможны 4 варианта (оба незаполнены, заполнена только "Дата", заполнена только "Оценка", оба заполнены), а допустимы - только первый и последний 
Может быть ввести отдельный класс - Экзамен - соединив его с классом ассоциацией Изучение - 1 ко многим, то есть фиксируется не одна а несколько попыток сдачи экзамена. Экзамен класс который как мы помним определяется в том момент когда Студент записывается на Предмет и тогда как-то определяется нужно ли ему сдавать экзамен или достаточно просто изучить предмет
Это уже другая предметная область, для неё и другое решение

72
Вот предметная область:
  • Студенты изучают Предметы
  • Надо зафиксировать сколько времени Студент потратил на Предмет
  • При записи Студента на изучение Предмета фиксируется будет ли сдаваться экзамен (в жизни обычно не так, будет ли экзамен определяется Предметом, но у нас же не жизнь, а пример!)
  • Некоторые Студенты по некоторым Предметам уже сдали экзамен: есть дата и оценка

Я бы хотел, чтобы диаграмма (которая полностью отражает модель!) выглядела как "серая" - по мне она и полна, и неизбыточна.
MagicDraw требует "розовую", она полна, но избыточна.
Если есть ещё какой-то вариант диаграммы, который будет и полным, и неизбыточным, и выглядеть по-проще - я с удовольствием его приму. 

73
Но интересна практическая значимость всех этих знаний. Пример приводимой в ветке мне показался не очень убедительным.
Класс-ассоциация сам (сама) по себе не очень обязательная конструкция и легко заменяется:
  • для бинарной ассоциации - просто классом с 2 ассоциациями с кратностью 1 от него и кратностью как у класса-ассоциации к нему + ограничение уникальности на сочетание значений полюсов ассоциаций от него
  • для n-арной ассоциации - просто классом с n ассоциациями с кратностью 1 от него + ограничение уникальности на сочетание значений полюсов ассоциаций от него + ещё ограничения, заменяющие ограничения кратности у класса-ассоциации (нужны, если хоть одна кратность класса-ассоциации отличается от 0..*)
Популярность/желательность класса-ассоциации в том, что эта конструкции часто встречается на практике (если предметная область не "игрушечная") и хочется выразить ее графически - почти всегда она оказывает значительное влияние на использующего диаграмму (разработчика интерфейса, разработчика БД, ...).

74
MagicDraw разрешает подчинять: класс классу, ассоциацию ассоциации, класс-ассоциацию - и классу, и ассоциации, и классу-ассоциации. И это правильно (и соответствует стандарту).
Но MagicDraw изображает на диаграмме класс-ассоциацию только как совокупность 3 графических элементов: класса [прямоугольник], ассоциации [сплошная линия] (правда не n-арной, но это уже другая тема), соединителя между ними [пунктирная линия], добавляя и удаляя их с диаграммы только вместе. Правда дает тянуть линию обобщения от(к) любого из этих 3 элементов. Это не очень хорошо, если у подчиненного класса-ассоциации нет никаких отличий от родительского класса-ассоциации как класса (ассоциации) - на диаграмме все равно будут присутствовать все 3 элемента, включая не добавляющие новой информации ассоциацию (класс) и соединитель.

ЕА вообще не имеет такого элемента, как класс-ассоциация - только классы и ассоциации, соединенные или нет между собой (когда якобы создается класс-ассоциация, на самом деле создаются и класс, и ассоциация, причем соединенные друг с другом, в дальнейшем это соединение можно и отключить, и создать новое между любыми "свободными" классом и ассоциацией). Может это и правильно, в конце концов то, что в метамодели класс-ассоциация наследует и классу, и ассоциации можно представить и по-другому - между "классами" и "ассоциациями" метамодели сделать связь кратности 0..1 к 0..1. Обобщение строится только между классами (независимо от того, соединены ли они с ассоциациями). 

75
EA (Sparx Enterprise Architect) позволяет подчинять классы классу-ассоциации. Пример на "серой" диаграмме. Правда он не позволяет ассоциациям наследовать друг друга.

Страницы: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 »