Форум Сообщества Аналитиков

×


Нужен ли CodeGeneration при отсутствующем Reverse Engineering?(Прочитано 18099 раз)
Тов. Гуру!
Интересуюсь мнением профессионалов: приходилось ли вам когда-нибудь с пользой для дела использовать продукты с функциональностью генерации кода по модели? При том что возможность обновить модель по коду в этом продукте отсутствовала?

Сам использую RR. Девелопят люди на C++. Как и зачем использовать подобные инструменты без возможности  Reverse Engineering - для меня загадка.
Всё равно так детально прорисовать модель, чтобы код получился хотя бы компилируемым, требует больших трудозатрат. Всё равно его исправляют/модифицируют. И как только это произошло - модель становиться сама по себе, код - сам по себе. Ибо если попытаться его перегенерировать - исправления в коде будут утеряны.

Поэтому наличие функции генерации кода в том же PD, без наличия функции обратной операции (для С++) меня несколько удивляет.

Кто может привести вариант успешного использования такого половинчатого решения?



Ну разве только какие-то древние средства либо уже просто ориентированные на графику не имеют обратного инжиниринга. Такой инструмент действительно мало полезен. Более того при обратном инжиниринги интересен не только реверс диаграммы классов, но и диаграмм состояний и диаграмм последовательностей!

Крэг Ларман в своей книге Применение UML 2 говорит, что выбор средств должен быть следующим: для первичного моделирования лучше иметь дешевые или бесплатные средства - идеальное средство - белая доска и фломастеры + цифровой фотоаппарат. Кодирование часто производится в ручную, но ...!

На определенном этапе код реинжинируется в модель и для этих целей, Ларман рекомендует использовать дорогие коммерческие системы (1 или 2 лицензии). Т.е. код реинжинируется в модель, модель используется и дорисовывается, затем код изменяется и т.д.

Хотя сейчас множество средств с round-trip инжинирингом и по моделм классов и по другим моделям, в том числе и по use cases.

В этом смысле интерес предстваляют решения от CodeGear 2007 c внедренным в среду разработки приложения поддержкой живого цикла - т.е. написание кода или рисование моделей происходит одновременно и взаимно влияет друг на друга.

Для анализа продуктов, все-таки желательно указывать версии. Для того же PD. Я практически не работаю с этим инструментом, однако отсутствие обратных операций по С++ удивляет.



В общем, согласен с Эдуардом.

Хотел немного добавить.
Во-первых, мало кто в России делает round-trip инжириниг.
Во-вторых, иногда целесообразнее сделаешь модель, по ней сгенерить код, а потом что-то править уже в коде. В конце проекта получить актуальную модель данных.
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Хотя сейчас множество средств с round-trip инжинирингом и по моделм классов и по другим моделям, в том числе и по use cases.
А нормальные, функциональные и удобные в работе есть? Кроме RSA и EA. Посоветуйте. А то все пробовать - тяжело и долго...
Для анализа продуктов, все-таки желательно указывать версии. Для того же PD. Я практически не работаю с этим инструментом, однако отсутствие обратных операций по С++ удивляет.
RationalRose - 2003. PowerDesigner - 12.
В PD генерация кода С++ была помоему и в 11. Но RE и в 12-й для C++ не появилось. Java, C# - пожалуйста, в обе стороны. C++ - только из модели в код.
Хотя генерация кода в PD мне нравиться местами больше чем в Rose. Чего чтоит хотя бы генерация структур по объектной модели. Конфетка!

Но кому она нужна без обновления модели по коду?
Для чего производители тратят время и другие ресурсы на реализацию функциональности, которая не будет востребована пользователями?



amDei, мне очень понравился инструментарий Visual Paradigm. Там такие демонтсрационные материалы - сами все поймете. Правда удовольствие стоит денег. Но меньших чем другие подобные системы.

Telelogic уверяет, что она лучше всех. Вполне возможно, учитывая их хорошие цены.

Но можно пощупать и бесплатные системы StarUML, ArgoUML. Вообще зайдите на wikipedia и наберите UML Tools



Telelogic уверяет, что она лучше всех. Вполне возможно, учитывая их хорошие цены.
Да кодогенерация у них на высоте. Причем в Рапсоди, например, создание и отладка кода происходит на уровне модели.
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Саша - это и называется round-trip собственно. Главное не  round-trip модели классов, а моделей состояний и взаимодействий



Саша - это и называется round-trip собственно. Главное не  round-trip модели классов, а моделей состояний и взаимодействий
Я всегда думал, что round-trip - это генерация кода по моделям и реверс его обратно. Разве не так?
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Окей. Что ты понимаешь под отладкой кода прямо в модели?



Окей. Что ты понимаешь под отладкой кода прямо в модели?
Нажимаешь F8 и Рапсоди ведет прямо по модели, по мере выполненяит программы/ф-ции
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



Рекомендуется посмотреть Borland Together, но только не тот что в поставке Delphi или для .Net, а именно как самостоятельный продукт. Что-то не особо им удаются клоны оригинального java-инструмента. Причем еще с версии 5.5, кажется он легко справлялся с C++, C#, Java.

"Отладка кода прямо в модели" - например в ERWin есть валидация, типа отсутствия ключей, определений типа для поля ... В Together можно установить граничные условия для различных вещей типа глубины вложенности классов. Тот же BPMN показывает некоторые ошибки модели. Конечно на отладку это не похоже ... Но вот тот же Together для Java позволяет все сразу что умеет Eclipse JDT - запускать приложение, модульные тесты ... Отлаживать, рефакторить
С уважением,
Николай



Саша, зачем цитировать, то что на предыдущем посте?

Ясно, такое не знал, что возможно. Думаю в CodeGear Development Studio 2007 это реализовано.
надеюсь такое есть и в ЕА - там есть интеграция со средой разработки и в VP - там вообще целый комплекс интеграции к системам SDE



Нажимаешь F8 и Рапсоди ведет прямо по модели, по мере выполненяит программы/ф-ции
А для каких языков программирования такое возможно? С какими средами разработки интегрируется? Или там своя?



А для каких языков программирования такое возможно? С какими средами разработки интегрируется? Или там своя?
C++ and Java. Но там своя специфика, лучше всего это работает на риал-тайм приложениях, т.к. свои темплейты есть для этого. Попрошу разъяснить ситуацию эксперта по Рапсоди.
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



В первую очередь хочется сказать, что Rhapsody - это среда разработки, а не средство моделирования. Как следствие - её специализация на разработке встраиваемых систем и приложений реального времени.

Rhapsody предоставляет функцию динамической синхронизации модели и кода. Изменения в модели приводят к изменениям в коде и наоборот. Это не Reverse Engineering, а различные представления одной модели, которые позволяют её изменять. Модель - это объединение 3-х языков: русского, UML, языка программирования

RE конечно же есть, но не только. Есть ещё возможность RE внешний код с целью его визуализации на диаграммах. Для такого внешнего кода, Rhapsody не генерирует код на основе модели, а просто позволяет подключить уже существующий и отлаженный.

Поддерживается работа с 4-мя языками: С, С++, Java, Ada. Код генерируется на основе структурных и поведенческих диаграм, в том числе на основе диаграмм пакетов, компонентов, состояний, активности.

Rhapsody позволяет сгенерировать whitebox код, собрать на основе него исполняемое приложение и запустив его, управлять им из Rhapsody (отлаживаться) и видеть результаты его работы на уровне модели (на диаграммах состояний, диаграммах последовательности)

Приложение может быть запушено как на хосте, так и целевом устройстве. И в том и другом случае оно конектится по некоторому протоколу к Rhapsody и предоставляет информацию, необходимую для отладки и анимации диаграмм.

Для сборки приложения используется внешний SDK, которые подключаются к Rhapsody с помошью так называемых адапторов. Адаптор определяет как генерируется makefile для данного SDK, как запустить приложение на целевом устройстве и т.д.

См. также
http://www.swd.ru/files/pdf/brochures/Telelogic_Rhapsody_Broschure.pdf
http://www.swd.ru/index.php3?pid=121




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19