Рисование UML sequence диаграмм.
От: Аноним  
Дата: 02.06.09 11:33
Оценка:
Есть в природе продукт, который умеет по имеющемуся коду рисовать UML sequence диаграммы. Пользуюсь NetBeans, то ли не разобрался, то ли именно для диаграмм последовательности он не умеет делать reverse engineering.
Re: Рисование UML sequence диаграмм.
От: cvetkov  
Дата: 02.06.09 12:13
Оценка: +1
есть то они есть. Together Control Center умел.
да, толку от этого нет. либо код и так простой. либо жуткие макароны получаются.

такие диаграмы только руками рисовать можно. выделяя только главные моменты. а автомат нагенерит тебе кучу toString'оф и ты в них утонеш.
... << RSDN@Home 1.2.0 alpha 4 rev. 1227>>
Re: Рисование UML sequence диаграмм.
От: SunTeckNick  
Дата: 02.06.09 12:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть в природе продукт, который умеет по имеющемуся коду рисовать UML sequence диаграммы. Пользуюсь NetBeans, то ли не разобрался, то ли именно для диаграмм последовательности он не умеет делать reverse engineering.


Я над таким продуктом работаю: http://jtracert.googlecode.com/

Генерит UML sequence диаграммы, но не на основе исходников, а из рантайма (как профайлер). Продукт абсолютно сырой, но пользоваться уже можно.
Проблема "макарон" как её назвали выше пока не решена.
Re[2]: Рисование UML sequence диаграмм.
От: cvetkov  
Дата: 02.06.09 12:39
Оценка:
а как планируется ее решать?
просто фильтры по классам/методам или чтото по мудрее?
... << RSDN@Home 1.2.0 alpha 4 rev. 1227>>
Re[3]: Рисование UML sequence диаграмм.
От: Аноним  
Дата: 02.06.09 13:21
Оценка:
Здравствуйте, cvetkov, Вы писали:

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

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

Присоединяюсь к вопросам. Если автор хочет, чтобы его программа jtracert имела успех, вопрос фильтрации должен быть на первом месте. Без этого все подобные программы — куча хлама.
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) Эвристика
Автоматически можно делать и гораздо более сильные вещи — например разбивать большие деревья вызовов на маленькие. Для этого нужно автоматически выделять из анализируемой системы подсистемы. Задача не тривиальная и интересная.


Есть и другие мысли — сразу все не упомнишь.
Re: Рисование UML sequence диаграмм.
От: KRA Украина  
Дата: 02.06.09 14:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть в природе продукт, который умеет по имеющемуся коду рисовать UML sequence диаграммы. Пользуюсь NetBeans, то ли не разобрался, то ли именно для диаграмм последовательности он не умеет делать reverse engineering.


Сложно представить алгоритм который сможет адекватное что-то нарисовать. Сложность кода (проблема "макарон" — хороший термин, имхо), боюсь, объективная реальность. Решают её абстрагированием от несущественного. Вот только несущественное зависит от цели диаграмы, для одного и того же куска кода можно показать, например,
1. взаимодействие наших внутрених компонентов А и В
2. взаимодествие нашей системы в целом и какой-то внешней (например, работа с БД)
3. работа нашего транзакционного аспекта, который находится на границе между компонентами А и В
при этом диаграмы получатся существенно разными.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.