powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Генерация кода из модели
25 сообщений из 34, страница 1 из 2
Генерация кода из модели
    #33829609
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заинтересовала возможность генерации C++ (Java и т.п.) кода из UML модели. Посмотрел как это делает MS Visual Modeler, StarUML и не пришёл в восторг. Неприятность в том, что концы ассоциаций генерятся как простые указатели, тогда как хотелось бы получать STL коллекции. Конечно всё это можно явно изобразить в модели, но хотелось бы абстрагироваться от таких подробностей.

Интересует также возможность преобразования поведенческих UML моделей и OCL ограничений в методы на C++, C#, Java, PL/SQL, SQL.

Сейчас пробую писать на JScript генератор спецификаций классов C++ для StarUML. Может быть изобретаю велосипед, но могу поделиться.

У кого есть опыт использования или разработки подобных генераторов, поделитесь пзл. впечатлениями. Интересует современное состояние дел в этой области.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33829761
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.к. все пишут код по разному, то и генератор кода тоже лучше написать под себя...
Времени это занимает намного меньше, чем кажется, а экономит намного больше...
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33829963
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey888т.к. все пишут код по разному, то и генератор кода тоже лучше написать под себя...
Времени это занимает намного меньше, чем кажется, а экономит намного больше...

На счёт времени, соглашусь. По крайней мере для генерации спецификаций классов C++ задача не сложная, тем более, что API для работы с моделью стандартизован OMG, полуенные скрипты без больших доработок можно будет использовать и с другим CASE.

Про "все пишут код по разному" это, наверное, не совсем так. Есть достаточно устоявшиеся рекомендации. Если ближе к теме, чтобы проектировщик и кодер одинаково понимали модель, нужны чёткие правила отображения модели в код. Например, стрелочка - это указатель на объект, плюсик - public член, 0..* - используем список, зависимость - #include и т.п.. Стандартных правил, как я понял, нет. Правила, которые я видел далеки от моего идеала. Какие ещё правила существуют? Может быть есть C++ библиотеки, поддерживающие конструкции UML?
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33830487
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть в С++ есть устоявшиеся правила, но в Дельфи для решения одной задачи можно использовать разные компоненты у которых разные свойства, возможности, соответственно код получается разный.
Можно использовать или не использовать наследование форм, модальность форм или выносить формы в отдельные DLL и т.д. вариантов масса....
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33830600
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey888Может быть в С++ есть устоявшиеся правила, но в Дельфи для решения одной задачи можно использовать разные компоненты

На таком уровне и для C++ рецептов нет. Под разные библиотеки и код будет разный. Для MFC такой, для STL эдакий. Пока я рассматриваю только STL. Даже в этом случае для реализации конструкции UML можно выбрать один из многих шаблонов, что создаёт нежелательную неоднозначность в понимании модели. Скорее всего поверх STL, чтобы упростить генератор кода, придётся создать небольшую UML ориентированную надстройку.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33830611
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про "все пишут код по разному" это, наверное, не совсем так. Есть достаточно
устоявшиеся рекомендации.
--------------------
Правила, которые я видел далеки от моего идеала. Какие ещё правила
существуют?
--------------------


так все одинаково или по разному?

8)


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33830684
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey888Может быть в С++ есть устоявшиеся правила, но в Дельфи для решения одной задачи можно использовать разные компоненты у которых разные свойства, возможности, соответственно код получается разный.
Можно использовать или не использовать наследование форм, модальность форм или выносить формы в отдельные DLL и т.д. вариантов масса....
+1
Эти генераторы - утопия , если конечно не писать всё ручками, да на С++.
Генераторы не учитывают библиотеки. Взять тот ваш "список". На С++ он начнёт генерить код или класс для него. А на Delphi это готовый компонент-класс TList ли немножко_другой_для_другой_задачи TObjectList или ...... и так далее.

Поэтому очень далеко "это" от народа (от программистов :))
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33831100
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024так все одинаково или по разному?

Пишут по разному но не все. В конторах, где приняты стандарты кодирования все пишут одинаково, или по крайней мере стремятся к этому. Одна из моих целей - генерить преимущественно стандартный код.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33831180
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 sergey888Может быть в С++ есть устоявшиеся правила, но в Дельфи для решения одной задачи можно использовать разные компоненты у которых разные свойства, возможности, соответственно код получается разный.
Можно использовать или не использовать наследование форм, модальность форм или выносить формы в отдельные DLL и т.д. вариантов масса....
+1
Эти генераторы - утопия , если конечно не писать всё ручками, да на С++.
Генераторы не учитывают библиотеки. Взять тот ваш "список". На С++ он начнёт генерить код или класс для него. А на Delphi это готовый компонент-класс TList ли немножко_другой_для_другой_задачи TObjectList или ...... и так далее.

Поэтому очень далеко "это" от народа (от программистов :))

Утопия? Не согласен. Oracle Designer генерит пригодный для работы код. Конечно инструмент не универсальный, но в свою задачу решает. Есть ряд хороших генераторов схем БД, точнее кода для их создания. Delphi в значительной степени избавляет програмииста от кодирования. Я сам писал приложения без единой строчки кода, только соединяя компоненты.

Генераторы не учитывают библиотеки? Из того немногочисленного, что я видел могу с этим согласиться, но все ли генераторы кода столь несообразительны?
Я знаю тупое, но рабочее решение - указывать классы компонетов в тэгах, как правило нестандартных. Сомневаюсь, что в ближайшее время генераторы кода научатся различать "немножко_другие_задачи" без посторонней помощи. Конкретно, выбрать между TList и TObjectList можно полагаясь на требования к интерфейсу объекта.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33831234
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabOracle Designer генерит пригодный для работы код. Конечно инструмент не универсальный, но в свою задачу решает.

Есть ряд хороших генераторов схем БД, точнее кода для их создания.

Delphi в значительной степени избавляет програмииста от кодирования. Я сам писал приложения без единой строчки кода, только соединяя компоненты.

вы сами показали, что генератора универсального нет, а для Delphi - сама Delphi IDE генератор )))))
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33831621
asafree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЗаинтересовала возможность генерации C++ (Java и т.п.) кода из UML модели.
авторУ кого есть опыт использования или разработки подобных генераторов, поделитесь пзл. впечатлениями.

Кратко об опыте генерации кода. Занимались этой проблемой очень плотно с 1996 по 2003 год. Использовали очень приличные генераторы. Разрабатывали сами. На генераторах реализованы коммерческие системы. Генераторами пользуются заказчики. До сих пор. Из чего генерировали? Westmount I-CASE, RR, MS Visio, ObjetTeam, Telelogic. Под что: C++, I-4GL, MS Basic, DOORS. Что можно сгенерировать? Сгенерировать можно всё, окна, классы, методы, запросы, проекты, сборку, документацию. Генерировали всё. Сегодня - не пользуемся генераторами.
Плюсы генераторов:
- работают неквалифицированные программисты.
- соблюдается стандарт кодирования и GUI.
- легко вносить изменения в общие части кода – поменял и перегенироровал систему.
- модель консистентна коду.
- и т.д.
Минусы генераторов:
- квалифицированные программисты связаны генератором.
- внесение изменений в общие части требует изменения генератора или перегенерации.
- изменения в код вносятся только через модель.
- модель нельзя проверить «налету», только после генерации-компиляции.
- и т.д.
Почему перестали пользоваться? Есть более адекватные средства и практики, сохраняющие плюсы генерации и устраняющие её минусы. Если кратко, то это:
- интегрированная среда разработки;
- изменения в коде и отладка;
- использование шаблонов проектирования;
- рефакторинг;
- модульное тестирование;
- использование framework;
- практики XP, наконец.
Более подробно можно пообщаться через личку, ну или здесь же, если интерес общий.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33832283
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asafreeПочему перестали пользоваться? Есть более адекватные средства и практики, сохраняющие плюсы генерации и устраняющие её минусы.
...

Т.е., разработка кодогенератора стала неактуальной, поскольку вы отказались от практики моделирования системы на UML и т.п. языках моделирования в пользу программирования в IDE и XP?
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33832493
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab asafreeПочему перестали пользоваться? Есть более адекватные средства и практики, сохраняющие плюсы генерации и устраняющие её минусы.
...

Т.е., разработка кодогенератора стала неактуальной, поскольку вы отказались от практики моделирования системы на UML и т.п. языках моделирования в пользу программирования в IDE и XP?
все смешано - кони, лошади.
================
на UML проектируется модель системы, интерфейс её составных частей.
Далее не генерируется код, а отдаётся программистам для реализации.

Хоть и говорят, что программирование это не творчество а рутина, но как видно не так .


ЗЫ. и ХР тут ещё причём?
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33832748
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 mcureenab asafreeПочему перестали пользоваться? Есть более адекватные средства и практики, сохраняющие плюсы генерации и устраняющие её минусы.
...

Т.е., разработка кодогенератора стала неактуальной, поскольку вы отказались от практики моделирования системы на UML и т.п. языках моделирования в пользу программирования в IDE и XP?
все смешано - кони, лошади.
================
на UML проектируется модель системы, интерфейс её составных частей.
Далее не генерируется код, а отдаётся программистам для реализации.

Хоть и говорят, что программирование это не творчество а рутина, но как видно не так .


ЗЫ. и ХР тут ещё причём?

Кодированием модели, конечно, могут заниматься программисты, но речь то не об этом, а о том, что, ИМХО, в модель можно внести достаточно данных, чтобы автоматически создать компилируемый код, или, хотя бы его часть. asafree пишет про тоже.

В настоящее время наблюдается разделение труда проектировщиков и кодеров. Чем меньше творчества будет в работе кодера, тем более предсказуемым будет результат его работы. Собственно чего я и пытаюсь добиться.

Про XP.
Когдато кодеры писали дырками на перфоленте, потом были изобретены многочисленные языки программирования, программы стали понятны широкому кругу специалистов, но не конечных пользователей. Зачастую, программисты и пользователи не могут найти точки соприкосновения. XP в позволяет общаться с пользователем на языке прототипов системы не тратя время на создание томов проектной документации. При определённых условиях этот подход вполне приемлем, но с автоматической генерацией кода не совместим.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833075
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКодированием модели, конечно, могут заниматься программисты, но речь то не об этом, а о том, что, ИМХО, в модель можно внести достаточно данных, чтобы автоматически создать компилируемый код, или, хотя бы его часть. asafree пишет про тоже.
========= эта часть стремится к нулю, т.к. нельзя формализовать разброс языков-технологий-библиотек-компиляторов

В настоящее время наблюдается разделение труда проектировщиков и кодеров. Чем меньше творчества будет в работе кодера, тем более предсказуемым будет результат его работы. Собственно чего я и пытаюсь добиться.
====== если сумеешь, т.к. модель аналитика очень далека от физического кода. И сам аналитик должен быть кодером, т.е. делать его работу самому

Про XP.
XP в позволяет общаться с пользователем на языке прототипов системы не тратя время на создание томов проектной документации. При определённых условиях этот подход вполне приемлем, но с автоматической генерацией кода не совместим.
=============
ХР не запрещает построение моделей. Он говорит, что делай это быстрее - утром модель, в обед - прототип для обкатки. Прототип не заменяет наглядную модель, как эскиз-набросок не заменяет модель из пенопласта.
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833571
asafree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenabТ.е., разработка кодогенератора стала неактуальной, поскольку вы отказались от практики моделирования системы на UML и т.п. языках моделирования в пользу программирования в IDE и XP?
Мы моделируем на UML, в том числе. Но не делаем с некоторого момента модельно-управляемый код. Мы просто реализуем эти модели квалифицированными специалистами в том числе в IDE и применяем XP практики. Для нас это эффективнее. Однако, сама модельно-управляемая разработка имеет право на жизнь. И для кого-то это ожет быть очень эффективно. Я уже говорил, что мы ей пользовались. Она была оправдана.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833597
asafree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123ЗЫ. и ХР тут ещё причём?
Использование кодогенераторов даёт определённые преимущества, например:
- стандартные блоки генерируем, ошибок в них не будет, тестировать не надо;
- вундеркинд-программист разработал блок, блок разместили в генераторе, программист поплоше его не испортит - код появися автоматом на основании решения проектировщика (аналитика) и т.п.
Эти плюсы оборачиваются минусами при определённых условиях.
Теперь про XP. XP предлагает практики, которые дают аналогичные плюсы за счёт организационных моментов и инструментов отличных от генераторов, например тесты, рефакторинг, ОО и фреймворки. Вместе с тем, они и минусы генераторов снимают. Хочу заметить, XP - не альтернатива генераторам. Это один из вариантов организации процесса разработки. Привёл его только для сравнительного примера. Скорее всего, возможны варианты, когда генерация и XP могут сосуществовать. Это решать компании разработчиков
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833623
asafree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab В настоящее время наблюдается разделение труда проектировщиков и кодеров. Чем меньше творчества будет в работе кодера, тем более предсказуемым будет результат его работы. Собственно чего я и пытаюсь добиться.
Немного пугает такое отношение к кодерам - в смысле творчества. Хотя, вполне понимаю причины. Боюсь, что этого не добиться. Мы себе представляем это примерно так:
- аналитик (проектировщик) - условный представитель интересов заказчика. Если в XP - заказчик. Он определяет чего надо. Определяет суть предмета и концепцию предмета. Говоря другими словами - формализует требования. Он не навязывает программисту способ решения.
- программист - у нас он и проектировщик кода, классов и т.п. принимает решение о том, как эффективнее реализовать требования. Он отвечает за внутренний дизайн. При таком подходе - места для творчества с избытком.

Есть конечно небольшой минус :( - требуется квалифицированный программист.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833657
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123[quot автор]Кодированием модели, конечно, могут заниматься программисты, но речь то не об этом, а о том, что, ИМХО, в модель можно внести достаточно данных, чтобы автоматически создать компилируемый код, или, хотя бы его часть. asafree пишет про тоже.
========= эта часть стремится к нулю, т.к. нельзя формализовать разброс языков-технологий-библиотек-компиляторов

Я и не ставлю задачи генерить код для всех языков-технологий-библиотек-компиляторов из любой модели. Меня интересует генерация для C++, <с технологией не вижу связи>, STL, Visual C++. Для других языков тоже есть потребность генерить код. Понятно, что модель реализации должна быть заточена под целевую среду, и модель для C++ не будет автоматически переносима на PL/SQL .

Petro123[quot автор]В настоящее время наблюдается разделение труда проектировщиков и кодеров. Чем меньше творчества будет в работе кодера, тем более предсказуемым будет результат его работы. Собственно чего я и пытаюсь добиться.
====== если сумеешь, т.к. модель аналитика очень далека от физического кода. И сам аналитик должен быть кодером, т.е. делать его работу самому

Над поектом последовательно трудятся многие люди, последовательно от модели к модели приближаясь к результату. По аналитической модели невозможно сразу написать код, для этого аналитическую модель нужно преобразовать в модель реализации, и только из неё сгенерить код.

Petro123[quot автор]Про XP.
XP в позволяет общаться с пользователем на языке прототипов системы не тратя время на создание томов проектной документации. При определённых условиях этот подход вполне приемлем, но с автоматической генерацией кода не совместим.
=============
ХР не запрещает построение моделей. Он говорит, что делай это быстрее - утром модель, в обед - прототип для обкатки. Прототип не заменяет наглядную модель, как эскиз-набросок не заменяет модель из пенопласта.

Это понятно, ИМХО, в XP основной упор в работе с заказчиком делается на обсуждение и согласование прототипа, тогда как RUP предполагает работу с моделью. Если проект маленький, проще быстро сделать и обсудить прототип, чем поводить скурпулёзный анализ. В большом и сложном проекте этот номер не пойдёт.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833681
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asafree Petro123ЗЫ. и ХР тут ещё причём?
- вундеркинд-программист разработал блок, блок разместили в генераторе, программист поплоше его не испортит - код появися автоматом на основании решения проектировщика (аналитика) и т.п.

что такое "блок"?
При процедурном проектировании это кусок кода?
IMHO программист должен разработать функциональный класс/объект/компонент/COM/пакет, который используют другие.

А вот кодогенератор его использовать не сможет.

Например, в Delphi ModelMaker при импорте модели из кода совсем не видит файлы *.dfm где расположены визуальные классы IDE Delphi.

Кодогенератору не объяснишь:
- бросить таблицу на форму
- бросить на форму ADOConnection и указать строку подключения к БД
- связать источник данных и таблицу показа данных
- ВСЁ - ФОРМА ПОКАЗА ИНФЫ ИЗ БД ГОТОВА.

imho либо визуальное проектирование в IDE компилятора, либо кодогенераторы.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833689
asafree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab Это понятно, ИМХО, в XP основной упор в работе с заказчиком делается на обсуждение и согласование прототипа, тогда как RUP предполагает работу с моделью. Если проект маленький, проще быстро сделать и обсудить прототип, чем поводить скурпулёзный анализ. В большом и сложном проекте этот номер не пойдёт.

XP сам по себе не ограничивает размер проекта. RUP сам по себе не даёт гарантии скурпулёзного анализа. XP работает на большом проекте. Прототип требует не менее скурпулёзного анализа, чем модель. Выбирать надо то, что эффективнее. Мы пробовали работать именно так как и говорит автор: продвигались по модели к коду. Шаг за шагом. Модельно-управляемая фабрика, заточенная под конкретную среду, под конкретные библиотеки. Наш опыт показал - это хуже, чем гибкая разработка. Поэтому кодогенераторы умерли. Хотя, в них что-то было :).
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833697
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМеня интересует генерация для C++,
тогда понятно, это другой мир проектирования.

Удачи!

ЗЫ. Кстати, для Delphi есть Bold , в котором работает вся цепочка:
- модель -> кнопка -> создать код и структуру БД -> Приложение.exe

Но неприжилось это "внебрачное" дитя (программист не контролирует ситуацию и не знает даже скока таблиц в этой БД).
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833713
asafree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123что такое "блок"?
При процедурном проектировании это кусок кода?
IMHO программист должен разработать функциональный класс/объект/компонент/COM/пакет, который используют другие.

А вот кодогенератор его использовать не сможет.

Попробую объяснить про блок. Термин выбрал неудачный. Им может быть всё, что угодно из перечисленного выше. Даже процесс типовой. Если этот "блок" типовой, его превращают в стереотип. Аналитик использует стереотип в моделе. Кодогенератор (он может всё! :)), "обучен" этому стереотипу. И он, кодогенератор, используя этот стереотип, встроенный в модель, создаёт соответствующий код. Примерно так.
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833767
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asafree Petro123что такое "блок"?
При процедурном проектировании это кусок кода?
IMHO программист должен разработать функциональный класс/объект/компонент/COM/пакет, который используют другие.

А вот кодогенератор его использовать не сможет.

Попробую объяснить про блок. Термин выбрал неудачный. Им может быть всё, что угодно из перечисленного выше. Даже процесс типовой. Если этот "блок" типовой, его превращают в стереотип. Аналитик использует стереотип в моделе. Кодогенератор (он может всё! :)), "обучен" этому стереотипу. И он, кодогенератор, используя этот стереотип, встроенный в модель, создаёт соответствующий код. Примерно так.
стереотип:
- бросить таблицу на форму
...
Рейтинг: 0 / 0
Генерация кода из модели
    #33833916
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123стереотип:
- бросить таблицу на форму

На UML, это может быть ассоциация класса доступа к таблице с классом формы. На более высоком уровне абстракции, это может быть зависимость класса формы от класса таблицы или, если речь идёт об SQL запросе из многих таблиц, БД в целом. Как договоримся. ИМХО, из того и из другого можно сгенерить код.
Естественно, графическая нотация UML может быть менее наглядна, чем нотация IDE Delphi, тут, несомненно, универсальные системы моделирования будут уступать специальным. Вопрос только в том, на каком этапе начать перенос данных из одной системы в другую. Иногда это стоит сделать уже на этапе анализа.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Генерация кода из модели
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]