вторник, 20 ноября 2007 г.

НедоUML (Часть 2)

Первая часть


Теперь по поводу того, как надо делать UML редакторы. Эталоном, на мой взгляд, является PowerDesigner компании PowerSoft, который потом удачно прикупила Sybase, но видимо не полностью, так как аналогичный по функциональности продукт под названием QDesigner настойчиво продвигал молодой паблишер Quest Software. Сейчас QDesigner претерпел сильные изменения и называется Toad Data Modeller. Самым главным недостатком PowerDesigner-а является его заоблачная цена. Еще одно средство, которое набирает популярность – Visual Paradigm. Несомненно, очень интересная разработка, как в плане интерфейса, так и возможностей, но мне этот редактор показался очень вычурным. Это мешает работе. Что качается Rational Rose, то последний раз я её видел в 2006 году и тогда она была всё такой же страшной и неудобной, как и год до этого, и два и десять... Может уже что-то поменялось?

Так вот, все эти продукты много чего умеют, в том числе и генерировать код из/в модель. И хотя, конечно, до удобства LiveSource им далеко, зато они это делают легко, непринужденно, а главное – правильно (если их соответствующим образом поднастроить). К сожалению, про Delphi они почти ничего не знают. Вот, помню, давным-давно шестая версия PowerDesigner умела не только генерировать скрипт для БД, но и многооконный интерфейс среднего пошиба в виде исходных кодов на Delphi. Этот код, на удивление, всегда успешно компилировался и превращался в замечательный инструмент (как я его называю – дбтыкалка) для проверки идей разработчика и заполнения БД. Но, на дворе уже 12 версия Powerdesigner-а, из которой все это убрали волевым решением (точнее, убрали ещё в седьмой версии). Зато её теоретически можно научить многим другим премудростям, в том числе и генерировать Delphi код из модели и обратно, как это происходит с другими, более популярными языками. Насколько мне известно, Delphi.xol для PowerDesigner-а так пока никто и не реализовал (хотя это не так уж и сложно). Лучше дела обстоят у Rational Rose – там имеются решения, по большей части «самиздат», но пригодные к работе. Однако, я хочу оставить все эти гипотетические возможности, которые каждый сам для себя или для своей организации может реализовать, и поговорить о вполне реальном средстве, которое неожиданно появилось в Delphi 7, и также неожиданно пропало в последующих версиях. ModelMaker – простой способ ощутить, что ты уже можешь воспользоваться благами цивилизации, как и разработчики на других языках. Средство, конечно, не идеальное, но на безрыбье…

ModelMaker Code Explorer уже заслужил свое почтение у многих пользователей Delphi, как замена стандартному эксплореру кода. На мой взгляд, он кажется аляповатым, но по функциональной части он очень хорош, а это главное. Так вот, Code Explorer – это небольшая часть ModelMaker-а, который представляет собой условно интегрированный в IDE Delphi эксперт, позволяющий разрабатывать ПО более продуктивно, т.е. с помощью всех тех средств, что предоставляет нам UML. Подробно описывать все баги и фичи продукта я не стану. Отмечу лишь самые сильные и слабые, на мой взгляд, стороны эксперта для версии 8.20. Итак, плюсы:
1) Все работает.
2) Все работает быстро.
3) Код, который получается в результате генерации – хороший код. Меня он устраивает. Есть кое-какие шероховатости, но главное, см. пункт 1.
4) Реверс работает практически идеально. Если не использовать новомодные фичи в виде новых конструкций языка, появившихся с поры Delphi 7, все очень четко и безглючно. (В девятой версии, судя по документации, новый синтаксис уже поддерживается)
5) Перед генерацией кода происходит проверка на изменение исходного файла с тех пор, как из него извлекли данные в модель. Из опыта работы могу сказать - тоже очень надежная вещь.
6) Visual Difference мне показалась даже лучше, чем в Starteam и новой Delphi.
7) Подробные и проработанные редакторы методов, свойств, полей.
8) Внятная система управления модулями и классами.
9) В диаграммах правильно работает скроллер с комбинациями Shift + колесо и Ctrl + колесо.

Есть и недостатки:
1) ModelMaker – не полноценный эксперт Delphi с доступом к редактору и коду, а некая отдельная программа. Соответственно, писать в нем код человеку, привыкшему пользоваться подсказками, автозаполнением, фолдиногом и другими прелестями среды очень затруднительно. Есть выход – структуру классов проектировать в MM, тела методов писать в Delphi, благо процесс переключения достаточно быстр и легок.
2) Загадочное расположение редактора кода. В ModelMaker он выделен в виде отдельной закладки. Пусть так. Но когда я нажимаю на метод, и появляется редактор метода – логично бы было бы показать тело метода именно в этом окне на одной из закладок. Это же так просто, понятно…, но недоступно - форма модальная – извольте вначале её закрыть, и вот тогда у вас появится шанс увидеть реализацию нужного вам метода!
3) Идея с защищенным и автогенерируемым кодом логична, но выполнена как-то неубедительно. Много путаницы, зачастую возникает дублирование кода. Опять же эти маленькие окошки со скроллером. Тут надо что-то менять.
4) Окно для документации объектов не масштабируется, в результате чего документацию приходится писать узенькой полосочкой. Как в газету «Известия».
5) Визард интерфейсов хорош, но интуитивно не понятен.
6) Макросы очень просты, а генерируемый ими текст не понимается парсером, в результате чего этот текст (чаще всего примечания) начинает блуждать по исходному коду модуля.
7) Редактор диаграмм угловат, странно масштабируется и вообще, сильно ограничивает творческую мысль. Первое ощущение от программы – тебя посадили в рамку и поделили на квадраты – столько там всяких сплиттеров и окон.
8) Layouters даже не вызывайте. Разрабатывал какой-то вундеркинд – имбецил. Согласитесь, что это довольно странное сочетание для человека. Не верите, что такие существуют? Тогда смело нажимайте. Особенно прекрасен Interactive Visualizer.
9) Не всегда ясно, методы какого класса в данный момент отображаются в списке c драматическим названием «Members». Тут, конечно, обычная интерфейсная путаница. Я даже думаю, что правильнее было бы назвать пункт №9 короче: путанный интерфейс.
10) Делегаты стоят особняком, у них не парсятся параметры, хотя это может быть и не столь принципиально.
11) Не очень очевидные настройки визуализации диаграммы. В свое время пришлось попотеть, чтобы настроить отображение классов так, как мне хочется. Хотя там столько всяких настроек… Вот, наверное, поэтому и попотел.
12) Идиотская реализация пиктограммы интерфейса на диаграмме. Не, ну действительно идиотская. Говорят, в девятой версии они поправились, рисуя прямоугольник, а внутри уже пиктограмму. Если это так, то это хорошо.

Не смотря на то, что замечаний гораздо больше, чем достоинств, хочу отметить, что ModelMaker на голову выше Torether с точки зрения качества работы. На моей памяти MM падал пару раз с акцесс виолейшон, но почти без последствий (это, наверное, потому что я часто жму ctrl+s). А если привыкнуть к особенностям, то работать на нем будет легко и просто. Большинство замечаний, как вы уже, наверное, заметили, связаны с нескладным внешним видом и разваливающимся UI. Понимаю, что многие к такому уже «пригорели». Но все равно, это безобразие надо переделывать. Слава богу, из кустарей уже вылезли, деньги зарабатываете – сделайте уже человеческий интерфейс.

Ещё одно чудо, которое спасло меня от досрочной кончины – Eco3Modeller. Эта штука всё тех же создателей, сделанная на основе ModelMaker замечательным образом заменяет Together при создании ECO проектов. После её установки все вопросы стабильности редактора диаграмм пропали, остались одни ответы. Хотя и сам Галилео версии 2006 не назовешь эталоном стабильности. Но об этом, может быть, в следующий раз.

Что-то как-то получилось очень дифирамбно для компании “Modelmaker tools”… Ну а что делать? Родной-то продукт – слабенький. Вот так я вижу это дело.

1 комментарий:

Анонимный комментирует...

Здравствуйте! Спасибо