yurikhan: (Default)
[personal profile] yurikhan

А вот бывает ли какая-нибудь XML-схема плюс софт для рисования диаграмм?

Нет, я, конечно, знаю про SVG. Который кое-как отображается Firefox’ом и почти совсем никак Internet Explorer’ом. И WYSYWIG’ные редакторы, позволяющие (в теории) собрать собаку из атомов водорода, углерода, азота и кислорода. Но я хочу собирать собаку не из атомов, а из головы, туловища, лап и хвоста. И, желательно, не опускаясь до деталей вида «голова расположена в точке (0, 0), а хвост в точке (175, 0)», из-за которых собака порвётся сразу, как только я захочу поменять ей породу.

То есть вот, возьмём, к примеру, UML-диаграмму статической структуры. Я могу взять Visio, вбить в него описание своих классов, раскидать классы по странице, провести между ними ассоциации, и они будут сохраняться при перемещении. Это хорошо. Но описывать классы приходится в гуёвом диалоговом окне, обладающем рядом фундаментальных недостатков.

  • Оно модально. Я открываю окно атрибутов класса, добавляю атрибут, вспоминаю, что у меня в модели ещё нет его типа. Чертыхаюсь, закрываю окно атрибутов, добавляю тип в модель, открываю окно атрибутов, прописываю тип последнего атрибута, добавляю следующий атрибут. Я хотел бы описывать свои атрибуты в немодальном текстовом редакторе с каким-нибудь более или менее вменяемым синтаксисом. Если не C++, то хотя бы XML. Но чтобы я мог поставить закладку, пойти на страницу вверх, вписать новый тип, вернуться к закладке.
  • Оно не злопамятно. Вот есть колонка типов атрибутов. Она по умолчанию имеет ширину такую, что в ней умещается имя моего namespace’а. А собственно типы скрыты за многоточием. Я хочу видеть тип целиком. Я растаскиваю окно пошире, потом колонку имени поуже, работаю с атрибутами одного класса. Закрываю, создаю новый класс. Ширина окна сохранилась, а ширина колонок — нет. В текстовом редакторе я настрою разамер шрифта и ширину табуляции и буду видеть всё.
  • Оно ориентировано на мышевозилу гуёвого. Я хочу писать тип руками, а не выбирать из длинного списка, лишённого каких-либо средств поиска и фильтрации. Или хочу написать первые три буквы и чтоб мне предложили два подходящих типа.
  • Оно не поддерживает групповые операции. Я хочу выделить все атрибуты и назначить им всем видимость public.

Ну и потом, когда я таки введу всю модель, мне всё равно придётся раскидывать классы по странице вручную, и они не будут подстраиваться, когда я добавлю в какой-нибудь толстый класс ещё пару атрибутов. Классы налезут друг на друга, но им и в голову (или что у них есть… ещё там) не придёт подвинуться.

Это всё типа мелочи, но именно из-за вот таких мелочей я предпочитаю UML не рисовать, а когда сильно приспичит, рисовать карандашом на бумаге.

Productivity hint: Когда надо reverse-engineer’нуть какую-нибудь мрачную базу данных или систему классов, я беру лист бумаги, режу его на маленькие карточки и рисую на каждой карточке один класс или таблицу. Потом их можно произвольно размещать на поверхности стола или на другой бумажке и вырисовывать ассоциации или foreign keys.

Date: 2007-06-27 12:29 (UTC)
From: [identity profile] mara-glad.livejournal.com
Ой. Если найдёшь чего-нибудь приличное -- расскажи обязательно! :)

В последнее время мучаюсь с RationalRose (у нас вообще много продуктов Rational используется, только поэтому было выбрано оно)...
Из описанных тобой неприятностей Визио почти все у Розы присутствуют тоже ровно такие же...
Разве только можно "три буквы написать" и на подходящем типе спозицироваться... :)

Date: 2007-08-01 07:12 (UTC)
From: [identity profile] mrbiggfoot.livejournal.com
StarUML?
Правда, выделить кучу атрибутов поставить им visibility там, увы, нельзя.

Profile

yurikhan: (Default)
Yuri Khan

August 2018

S M T W T F S
   1234
567891011
12131415161718
19202122232425
26 2728293031 

Links

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2026-02-05 13:21
Powered by Dreamwidth Studios