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

НедоUML

Иметь в IDE встроенный UML редактор, да ещё с такой фичей как LiveSouce ™, ®, © - верная приманка для новой армии поклонников. Все-таки на дворе не девятнадцатый век, пора уже прощаться с банальным набиванием кода и подниматься на новый уровень абстракции. К тому же у нас есть устоявшееся стандартизированное средство – UML, достаточно формализованное по части диаграмм классов, чтобы из этого можно было сделать автоматизированную систему с двухсторонними преобразованиями. Что ж, дело хорошее! К тому же у нас уже есть решение – Together, опробованный в деле UML редактор, с возможностью генерации кода для Java – чего огород-то городить? Портируем и поехали… Только что-то не приехали никуда. Даже не отъехали. Тут прямо и встали. Вот сейчас передо мной D2007 Update3, но это творение всё ещё глючт. Разнообразно, с выдумкой, с душой, так сказать. Работать с ним можно, но сложно. А ведь Тогезер был и в 2005, и в 2006. И там было это настолько тухло, что опытные люди сразу же отключали «Живые исходники», чтобы они случайно не умертвили их код. Ещё во времена BDS 2006 я читал историю одного разработчика, который описывал свои мытарства с Тогезером. Так вот, он утверждал, что в принципе работать можно – нужно только аккуратно делать действия A, B, C и особенно внимательно действия D и E. А в случае ошибки или падения среды – восстанавливаться из истории по таким-то признакам. Ребята, ну это несерьезно. Мы же пишем большие приложения, и на возню с кривым инструментом у нас попросту нет времени. К тому же, без возможностей LiveSouce сам Together превращается в рядовой UML редактор, коих на просторах Интернета десятки, если не сотни. Можно выбрать что-нибудь и получше.

«Хорошо», - скажете вы, - «Отключили, да и дело с концом. Писали классы руками, безо всякого там UML и дальше проживем». Ан нет, это только начало… Есть такое модное слово – «Рефакторинг». Помните, как раньше говорили:
- Пасматри, какую фигню ты написал! Переписывай, нафиг, заново!
А теперь это называется рефакторинг. Так вот, рефакторинг-то без модели не работает. Можем название идентификатора поменять, переменную добавить, найти проявление идентификатора в коде, но если что-то посерьезнее… Но формально рефакторинг есть…

Едем дальше. ECO! Наконец-то работоспособная реализация MDA со всей своей привлекательностью, правда под дотнет (это, впрочем, не недостаток сам по себе, просто фича). Будущее уже здесь! Персистентмапперы, хэндлы, автоформы… Хочешь – WinForms приложение, хочешь – веб. Все настраивается, база данных сама жужжит, ни о чем не спрашивает. Контролы любые используй, не как в дедушке BOLD-е. Красотыщща! Все бы ничего, только вот где мы рисуем наши модели? Правильно, в Тогезере! Нет, ну может для академического обучения школьницы 12-ти лет это самое то, но писать рабочий проект с конкретными сроками и реальными деньгами на ЭТОМ может только очень, очень самоуверенный человек. И не то, чтобы ECO плохо работает, просто Тогезер глючит. Ещё раз: ГЛЮ-ЧИТ.

Чтобы быть объективным, скажу, что мне нравиться в Тогезере.
1) Возможность добавлять объекты диаграммы шорткатами. Это действительно удобно для человека, который пришел не рисовать три прямоугольничка со стрелочкой, а разрабатывать систему.
2) Live Source. Это замечательная вещь, если бы она работала так, как надо.
3) Продуманное автоматическое размещение объектов диаграммы (Layout). Не во многих средах такое встретишь.
4) Аудиты и метрики. В универсальных средах они не так развиты в силу универсальности этих сред, поэтому это скорее маааленький плюс.
5) Генерация документации и экспорт её в html. На уровне других продуктов.
6) Возможность добавлять свои собственные свойства к объектам диаграммы. Хотя реализовано это простовато - нет никаких шаблонов для однотипных данных. Что уж говорить про отсутствие элементарного Description у объекта диаграммы.

Мде, даже плюсы получились какие-то вымученные. В целом, у меня, повидавшего много аналогичных программ, впечатление от редактора диаграмм такое: скромненькая серенькая программа, плохо справляющаяся со своими прямыми обязанностями. Однозначно в трэш… Эх…, да черт-то с ним, пусть серенькая, пусть скромненькая. Я бы и такой пользовался, если бы она работала, как надо. Все-таки интегрированный инструментарий значительно удобнее в использовании кучи разношерстных приложений.

В заключение первой части хочу отметить, что на мой взгляд (по информации из форумов), проблемы генерации исходного кода и соответственно reverse engineering этого кода в модель отмечались по большей части для Delphi, нежели для C#. (для версии BSD2006)

(продолжение следует…)

4 комментария:

Николай Войнов комментирует...

Лежит триал Together 2007 - никак руки не дойдут посмотреть. Но к его предыдущим версиям особенно претензий не было кроме прожорливости. Т.е. родная реализация была на java и эта реализация была очень хороша, особенно в свете некоторого опыта с Rational Rose 2002.

И я одно время все ждал появление этих возможностей в Delphi ... Но то что увидел в BDS 2006 как-то мало вдохновило, хотя шаблоны в каком-то смысле довольно полезны. Да и метрики довольно приятная вещь ... Но Delphi почему-то разрушил эту красивую картину. В общем UML это не для делфи-программистов - он им не нужен, решили разработчики. И если его так и не успели довести до кондиции, наверное это о чем-то должно говорить.

Сейчас интересно посмотреть на JGear ... - пойду поищу.

Николай Войнов комментирует...

интересно, что изначально Together Architect можно было использовать для С++, С#, Java и чего-то еще, а потом его побили по языкам и платформам ... и оригинал был сделан на Java. Может Delphi просто как-то плохо туда ложиться...

Mikhail Mokhov комментирует...

Проблема Together в Delphi на 95% состоит из глюков LiveSource. А без этой фичи сам по себе редактор малоинтересен, так как есть много других хороших альтернатив. Почему «задвинули» Delphi? Думаю, причин несколько. Во-первых, общая «задвинутость» Delphi компанией Борланд, которая наблюдалась с 2003 года. Во-вторых, как следствие миграция многих разработчиков на C# и Java. И в третьих, необходимость подкручивания функциональности Together для C#, С++ в первую очередь, так как Борланд хотел остаться на плаву, продавая лицензию Майкрософту на средства моделирования для VS, пока те не создадут свои (напоминает историю со скармливанием молодых красавиц трехглавому монстру, чтобы тот не слопал всю деревню. Названия трех голов я не упоминаю – они и так хорошо известны).
Хочется верить, что CodeGear все-таки доделает остатки. Как ни крути, Torether стал намного стабильнее, чем был прежде. Осталось ещё чуток, каких-нибудь пара релизов! =)

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

Точно