Re[4]: Рисование UML sequence диаграмм.
От: SunTeckNick  
Дата: 02.06.09 14:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, cvetkov, Вы писали:


C>>а как планируется ее решать?

C>>просто фильтры по классам/методам или чтото по мудрее?

А>Присоединяюсь к вопросам. Если автор хочет, чтобы его программа jtracert имела успех, вопрос фильтрации должен быть на первом месте. Без этого все подобные программы — куча хлама.

Я получаю положительный feedback от пользователей, так что это не совсем куча хлама. Хотя конечно проблема удобного отображения диаграммы одна из самых важных в подобных продуктах.

В данный момент я работаю над proof of concept нового компонента для отображения sequence диаграм, но дело идет не быстро. Хорошая погода предлагает очень заманчивые альтернативы ковырянию с open source...

Идеи по улучшению usability можно разбить на несколько категорий:

1) Отображение диаграммы
1.1) Folding — пользователь должен иметь возможность свернуть и развернуть части вызовов (кликая на иконку +/- например)
1.2) Компактность — диаграмма должна быть по возможности компактна; тут есть варианты с Camel Names, и некоторые другие
1.3) Scrolling — при вертикальном скроллинге, пользователь должен видеть классы которым пренадлежат Life Lines, даже если он отскроллил до самого низа диаграммы
1.4) Extracting — открытие части диаграммы в новом view
1.5) ...

2) Редактирование диаграммы
2.1) Drag'n'drop — пользователь должен иметь возможность перетасовывать life lines для улучшения наглядности диаграммы. Drag'n'drop кажется самым удобным вариантом
2.2) Filtering — текущая реализация с общим фильтром по regular expression не очень удобна для использования. Нужна функциональность по убиранию метода (одного или вместе с дочерними вызовами) с конкретной диаграммы или с диаграмм всего проекта. То же самое для классов. Hotkeys или Mouse Gestures могут сделать эту задачу удобной и быстрой. Например по клику мышкой по методу с зажатой клавишей Alt он убирается с текущей диаграммы. Если ещё нажата и клавиша Ctrl — убирается со всех диаграмм.
2.3) ...

3) Автоматическая обработка графа вызовов
3.1) Не отображать вызовы пустых статических инициализаторов и конструкторов
3.2) Группировать использование тривиальных getter & setter методов
3.3) Корректно обрабатывать циклы и рекурсию — обработка циклов частично уже реализована. При 100 последовательных вызовов одного метода или группы методов, на диаграмме будет показан только один.
3.4) ...

4) Эвристика
Автоматически можно делать и гораздо более сильные вещи — например разбивать большие деревья вызовов на маленькие. Для этого нужно автоматически выделять из анализируемой системы подсистемы. Задача не тривиальная и интересная.


Есть и другие мысли — сразу все не упомнишь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.