Генерация кода в разработке программного обеспечения - PullRequest
2 голосов
/ 18 января 2011

Первое более широкое представление: я получил задание для школьного проекта, в котором говорится: «Разработать и внедрить инструмент для быстрой разработки ИС путем генерации кода ядра бизнеса и уровня данных. хорошо в этом случае.

Я не обладаю такими обширными знаниями в области генерации кода или разработки информационных систем. Я искал некоторые фреймворки и инструменты для генерации кода. Более конкретно T4 и CodeSmith Generator. Одна вещь, которая бросается в глаза, - это набор шаблонов .netTiers, у которых есть несколько интересных, которые можно использовать при разработке программного обеспечения. Но я не знаю, насколько они могут быть полезны в реальной разработке.

Хорошо, мой вопрос: есть ли способ разработать информационную систему, основанную главным образом на генерации кода? Или какой-то способ более широко использовать инструменты генерации кода и шаблоны в целом? Если у меня есть это, я могу работать над более конкретными вещами.

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

Большое спасибо за ответы.

Ответы [ 3 ]

3 голосов
/ 18 января 2011

Да, это так.

Я думаю, что одна из самых больших вещей, на которые вы можете взглянуть, это голые объекты.

Java: голые объектыs.org

.NET: Голые объекты MVC

Эти два в основном генерируют целую программу только из модели предметной области.Очень интересно.Скотт Хансельман сделал здесь Hanselminutes: Hanselminutes w / Richard Pawson .Также есть ссылки на некоторые очень интересные вещи.

Если вы смотрите выступление Гансельмана с PDC PDC , он делает много вещей, используя генерацию кода.

Моя компанияГенерирует весь слой DAL и BO (без пользовательских функций) из модели данных, используя шаблоны CSLA .NET и CodeSmith.

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

1 голос
/ 18 января 2011

Для ASP.NET вы можете использовать ASP.NET Dynamic Data Scaffolding .

Scaffolding относится к элементам динамических данных, которые автоматически генерируют веб-страницы для каждой таблицы вбаза данных.Эти автоматически сгенерированные веб-страницы обеспечивают операции создания, чтения, обновления и удаления (CRUD) для каждой таблицы.Строительные леса состоят из шаблонов страниц, шаблонов страниц сущностей, шаблонов страниц полей и шаблонов фильтров.Эти шаблоны позволяют быстро создать функциональный веб-сайт, управляемый данными.

Для настольных приложений вы можете использовать Visual Studio LightSwitch

Большинствобизнес-приложения - это приложения для обработки форм, то есть пользовательский интерфейс для просмотра, ввода и редактирования данных.С большинством инструментов разработки много времени тратится на выполнение одной и той же задачи.Вы пишете код для взаимодействия с базой данных, вы пишете код для пользовательского интерфейса, и вы пишете код для бизнес-логики.Используя LightSwitch, большая часть работы уже сделана для вас.Фактически, можно создать приложение LightSwitch без написания ни одной строки кода.Для большинства приложений единственный код, который вы должны написать, - это код, который можете написать только вы: бизнес-логика.

0 голосов
/ 18 января 2011

Генерация кода имеет свое место и стоимость.

Препроцессор C - это форма генерации кода.Большинство крупных проектов на C в конечном итоге превращаются в собственный диалект C, основанный на макросах препроцессора.

А макросы на языке ассемблера невероятно полезны.

Совершенно обычным является создание частей проектавозможно, сценарий Perl, создающий быструю таблицу поиска Sin / Cos, выраженную в виде инициализированного массива C, для встроенной системы.Или некоторый файл данных об измеренной производительности «встроен» в приложение, чтобы помочь оценить ту или иную стоимость.

В Java обычно используют JAXB и тому подобное для генерации классов на основе схемы XML.(Я подозреваю, что это наиболее близко к цели вашего вопроса, @Euphoric ...)

Также различные механизмы, чтобы избавить от необходимости реализации миллиарда геттеров и сеттеров.(Бедный, бедный, Java.)

Стоимость - сложность.Вы должны управлять разницей между «исходным кодом» и «сгенерированным кодом».Если вы видите, как кто-то проверяет «сгенерированный код» в «системе контроля исходного кода» ... подумайте, действительно ли это правильно!

Надеюсь, ваша система Make или build знает, как создавать соответствующие сгенерированные файлы ииспользуйте их.

И, конечно же, некоторые серверные системы даже пишут и компилируют код на ходу.Я: Я боюсь этого!Но мне никогда не приходилось им пользоваться.

...