- - -
ПАРА СЛОВ В НАЧАЛЕ
прежде чем изложить подробности и результаты теста, хочу сказать пару слов о целях ради которых пишу.
Во-первых, захотелось обратить внимание комьюнити на беспрецедентный кризис в области средств поддержки uml моделирования. Заявления типа "Full UML 2.1 support", "XMI 2.1 support" или "sophisticated round-trip engineering" это пустой звук, вранье, маркетинг - называйте как хотите. Поразительно, но программисты именитых фирм не в состоянии написать нормальные средства поддержки uml, которые будут делать то, что от них ожидается. Это при том, что потребители находятся в том же домэйне, что и создатели: те же, по-сути, программисты.
Во-вторых, во мне теплится остаток надежды, что я все-же где-то что-то недоглядел, не нашел правильную опцию, не поставил галочку и в итоге отбраковал вполне себе хороший продукт. По-этому, дорогие пользователи упомянутых продуктов, если есть поправки - не стесняйтесь - пишите!
- - -
КАК ТЕСТИРОВАЛ:
Итак, сконцентрируемся на Диаграммах Классов, а точнее на ассоциативных связях. Собственно, для простоты эксперимента только их и будем рассматривать. Выбрав таким образом наше самое-самое-главное и фсе, с точки зрения дизайнера, можем смело привязывать к позорному столбу всех тех, кто даже к таким вещам отнесся не очень серьезно. Ведь без ассоциаций никуда!
Свойства ассоциаций (для удобства последующей оценки) я поделил на три функциональные группы
- Базовые свойства: => макс 3 пункта
- navigable (bi, a-b, b-a),
- multiplicity (1, 0..1, 1..*, *, итд)
- special: aggregation, composition
- Последовательности, множества, мультимножества: => макс. 2 пункта
- {unique}
- {ordered}
- их комбинация
- Qualifiers (Qualified Associations): => макс. 3 пункта
- 1:1, "хэш"
- 1:n, "мультихэш" и, как следствие, все те же опции мультимножеств
- несколько квалификаторов к рамках одной ассоциативной связи
Вот и вся функциоальность. Далее из построенных, на сколько это было возможно, моделей, генерировался код. Его качество влияло на оценку той или иной из описанных выше трех функциональных групп следующим образом:
- код неверный семмантически, либо синаксически:
=> оценка функ. группы понижается вдвое - код верный, но не отвечает стандартам "type safety", реализуемым с помощью <generics> c 2004 года:
=>оценка функ. группы остается неизменной (+0%) - код верный и обеспечена "type safety", с помощью Java 1.5 <generics> :
=>оценка функ. группы удваивается