СМ-Консалт
 

Встреча с экспертами: Крис Геркен об управляемой моделями разработке

Статьи Другие статьи

Введение

Консультант по WebSphere Крис Геркен отвечает на вопросы по управляемой моделями разработке (model-driven development — MDD) и о том, как разработать и использовать исполняемые шаблоны, шаблоны Java™ Emitter Templates (JET) и Design Pattern Toolkit (DPTK) для генерирования исходного кода приложения. В качестве исполняемых шаблонов в настоящее время используются MDD-преобразования. Они автоматизируют применение соглашений, передового опыта и руководящих принципов. Важные новые функции в Eclipse и RSA в настоящее время позволяют легко создавать такие шаблоны для генерирования исходного кода приложений (Java, COBOL, JSP, XML, файлы свойств и т.д.).

Вопрос: Имея модель работ (activity model) на языке UML (united modeling language), как создать подключаемый модуль, который будет выполнять преобразование модель-модель (UML2 в DSL Ecore), и как использовать информацию в модели для генерирования кода при помощи Java Emitter Templates (JET), но сделать это незаметно и программным способом?

Ответ: В общем случае, вы должны использовать подход meet-in-the-middle (встреча по середине). Начните с создания JET-преобразования (если вы все еще применяете Rational Software Architect (RSA) V6.x, используйте Design Pattern Toolkit (DPTK) от alphaWorks®). Входная модель оптимизируется, для того чтобы сделать доступ к модели в шаблонах очень простым.

После написания преобразования модель-в-текст (model-to-text) можно написать RSA-преобразование, которое просматривает UML-модель и создает внутреннюю модель, выглядящую как входная модель, необходимая для JET-преобразования. Последнее правило в RSA-преобразовании конвертирует составную внутреннюю модель в формат, легко понимаемый JET-преобразованием (XML-строка или EMF-модель в оперативной памяти) и для программного вызова JET (или DPTK) (http://tapflo.com.ru/products/bran-luebbe/dosing-pumps-procam).

Вопрос: Что такое exemplar (экземпляр) и как он может помочь мне создать преобразования модель-в-текст?

Ответ: Exemplar — это образец того, что должно сгенерировать ваше преобразование модель-в-текст. Он потребляется инструментальными средствами создания экземпляров в RSA и используется для быстрого извлечения схемы исходной модели и шаблонов модель-в-текст. Предполагается, что экземпляр создается для всех подходящих передовых методик, руководящих принципов, соглашений и т.д. Он демонстрирует все точки изменяемости, которые будут поддерживаться преобразованием. На первый взгляд может показаться, что это не так, но вы сэкономите значительное количество времени, сначала создав и проверив экземпляр, а затем использовав его в качестве исходных данных в процессе создания преобразования.

Вопрос: Когда нужно использовать DPTK вместо JET для написания m-2-t преобразований?

Ответ: Если вы планируете запускать ваши преобразования в Eclipse 3.2, Rational Application Developer (RAD) V7 или Rational Software Architect V7, используйте JET. Для более ранних версий RSA, RAD или Eclipse используйте DPTK.

Вопрос: Я хочу использовать дескриптор развертывания (web.xml) в качестве исходной модели для JET-преобразования, но мне нужны некоторые дополнительные данные, которые нельзя указать в дескрипторе развертывания. Как это сделать?

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

Вопрос: Что должны делать шаблоны с преобразованиями модель-в-текст?

Ответ: Гради Буч (Grady Booch) однажды определил шаблон как решение рекуррентной задачи в заданном контексте. Это определение подразумевает, что передовой опыт, руководящие принципы и соглашения по именованию являются формами шаблонов. Поскольку преобразования модель-в-текст могут автоматизировать применение передового опыта, руководящих принципов и соглашений по именованию, эти преобразования преобразования модель-в-модель) могут, следовательно, автоматизировать применение шаблонов. Я часто чередую использование терминов «преобразование» (transformation) и «шаблон» (pattern).

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

Ответ: Существует несколько способов создания области видимости для экземпляра:

  • Начните все с той же цитаты: «Шаблон — это решение рекуррентной задачи в заданном контексте». Решения могут принимать форму передового опыта, соглашений, руководящих принципов, проектной документации и т.д. Найдите группы файлов, решающих конкретную проблему, например, как сохранить объект (включая doc-файлы и файлы j-unit-тестов). Естественно, чем большее число раз эта проблема решается в ваших наборах приложений, тем лучше.
  • Я говорю, что два файла являются «MDD_связанными» (MDD_related — моя терминология), если два набора данных модели, необходимых для генерирования соответствующих файлов, пересекаются. Примерами могут быть класс или имя файла для одного файла, вызываемого из исходного кода для другого файла, одинаковые имена свойств (или варианты этого, например, имена методов getter и setter), появляющиеся в источнике для двух файлов, и т.д. Мы можем также сказать, что MDD-связь является сильной (интерфейс и класс реализации) или слабой (jar-имя для Java-проекта и ссылка на сценарий администрирования). Вам нужно искать группы файлов с сильной MDD-связью (подумайте о математическом замыкании).

 

Оба этих подхода завершаются идентификацией одинаковых групп файлов. Для хорошего начального экземпляра я нашел бы группу файлов, состоящую примерно из 20 файлов. Я обнаружил, что примерно 80% шаблонов являются тривиальными, 15% понятными и простыми в завершении, а 5% довольно трудными.

Если вы опытный автор шаблонов, то, лишь взглянув на файлы и задав несколько вопросов, легко представите себе количество и сложность шаблонов, а также размер и форму модели. Я бы добавил в факторы риска дополнительную невидимую сложность (например, эксперт по данной теме и эксперт по шаблонам не знакомы с предметной областью другого эксперта).

Для первого преобразования я бы создал от 5 до 10 шаблонов. Больше — и вы просто отложите получение удовольствия от их использования. Меньше — и вы можете не увидеть мощи преобразований модель-в-текст.

Вопрос: У меня есть несколько Java-классов, которые могли бы быть хорошими кандидатами на генерирование при помощи JET, но в каждом классе имеется также сложная бизнес-логика, которую нелегко сгенерировать. Я думаю, что смогу сгенерировать исходный код класса один раз и дать возможность разработчикам добавить их бизнес-логику, но как мне сохранить эту логику при повторном генерировании?

Ответ: Вы должны использовать тег userRegion в JET. Этот тег идентифицирует раздел сгенерированного текста и индекса (index top 20 отзывы), который может изменять пользователь. Если преобразование выполняется повторно, сделанные разработчиками изменения сохранятся. Короче говоря, создайте ваши шаблоны для генерирования исходных файлов, укажите участки в сгенерированном коде, которые разработчики могут изменить, и окружите эти участки тегами userRegion.

Вопрос: Какие типы приложений уже сгенерированы при помощи преобразований модель-в-текст?

Ответ: Поскольку RSA V7 появился совсем недавно, большинство преобразований модель-в-текст было написано с использованием DPTK. К сгенерированным приложениям и компонентам относятся пользовательские портлеты, J2EE-приложения, Eclipse-компоненты (мастера, диалоговые окна, справочные системы, полнофункциональные клиенты), оптимизированный доступ к базе данных и другие специализированные приложения.

Вопрос: Я написал несколько DPTK-шаблонов для RSA V6. Какой простейший способ их миграции на JET и RSA V7?

Ответ: RSA V7 и RAD V7 поставляются с библиотекой тегов JET, называемой уровнем совместимости с DPTK. Эта библиотека тегов содержит теги, выглядящие и ведущие себя аналогично оригинальным DPTK-тегам. Однако эти теги реализуются на уровне JET.

После загрузки своего шаблона в рабочее пространство V7 вы можете применить DPTK-шаблон «Add JET Behavior» к вашему DPTK-шаблону для добавления правильных характеристик, свойств и папок, необходимых для настройки преобразования в виде JET-преобразования.

Вопрос: Что такого хорошего в новых JET-тегах? Я могу делать то же самое с уже встроенным Java.

Ответ: JET-теги обеспечивают такой же уровень управления потоком шаблонов (итерация, условное выполнение, доступ к модели и т.д.), что и встроенный языка Java, но не зависимым от языка способом. Это делает их доступными для программистов на COBOL, C и системных администраторов, которые могут создавать преобразования, не изучая язык Java.

Некоторые теги скрывают также большую долю сложности, которая делает непрактичным использование Java. Например, тег file (применяет шаблон к модели и сохраняет результат в новом Eclipse-ресурсе) взаимодействует также с подключаемыми модулями, управляющими конфигурацией, и другими редакторами, чтобы гарантировать корректность для Eclipse сгенерированного файла.

Вопрос: У вас есть несколько преобразований: UML2Java, JET и DPTK. Какова же четкая стратегия RSA?

Ответ: Используемая технология модель-в-текст зависит от используемых инструментальных средств Rational. Используйте EMFT JET (доступный в Eclipse 3.2.0 и Rational V7 и старше). Если вы работаете на другой платформе, необходимо использовать DTPK.

Вопрос: Что такое Pattern Repository и как Pattern Repository связан с Asset Repository (RAS)? Еще одна путаница от RSA.

Ответ: Pattern Repository (Репозиторий шаблонов) представляет собой сервер (хотя он может располагаться на локальной машине), хранящий шаблоны, развернутые как RAS-файлы (Reusable Asset Specification). RAS-файл — это не более чем zip-файл с некоторыми дополнительными метаданными о характере и использовании активов (assets), имеющихся в RAS-файле, а также с метаданными, описывающими все действия по установке, необходимые при импорте RAS-актива в ваше рабочее пространство (workspace). Эти действия выполняются автоматически. Естественно, RAS-файл может содержать также и другие виды активов.

25.02.2008

Комментарии

  • цитаты и афоризмы
    Автор:   ·  28.07.2017 05:29:06
    Цитата - это речь какого-либо создателя из его материалов или же просто чьё-либо суждение из интервью. Свои истоки слово цитата берёт от латинского слова citatio, то которое включает в себя несколько значений. К примеру в юридической латыни данное слово трактуют как "доказываю правоту". Подобное значение указывает ключевую функцию цитирования: полагаясь на чьё-то воззрение, цитата помогает обосновать свою точку зрения или подвести доказательства в пользу той или иной догадки. В русском языке слово "цитата" стало появляться в 1820-х годах, а в различных словарях и того позднее. Citata.in - популярный портал самых лучших афоризмов и цитат знаменитых людей, именно они внесли своё имя в историю. У нас вы можете найти действительно любую популярную личность и прочесть её выражения. По цитатам можно более лучше выяснить характер человека, разгадать его отношение к тому или иному явлению. Из выражений знаменитых людей можно узнать различные подробности их бытия, непростые времена в карьере. Читайте избранные цитаты общеизвестных персон вместе с нами ! цитаты про дом

Добавить комментарий (анонимные комментарии не публикуются!!!)

ФИО: 
E-mail: 
Тема: 
Комментарий: 
Оценка:   
 
 
 
 
 
Код подтверждения:
   

Новости СМ-Консалт

Вышла версия BIPULSE 6.2

Мастер-класс для тренеров и руководителей "Работа в аудитории". 1 ступень уже в марте

Обновлено расписание тренингов до марта 2017 года

Новые статьи в библиотеке

Мифы про ГОСТ 34

Примеры отраслевых решений на основе BIPULSE

Практика реализации модуля интеграции для Rational Software Architect, позволяющего преобразовывать низкоуровневое представление процесса из IBM Rational ClearQuest в UML

Что удивляет в русских менеджерах иностранцев

Разработка ПО с использованием лучших мировых практик и инструментов на Иркутском авиационном заводе

Презентация доклада для IT Global Meetup Санкт-Петербург: "Почему Agile так популярен? Взгляд циника и психолога"

Заказчики и истории успеха

Наши тренинги, семинары, курсы

Дружите с нами на FaceBook

Проверить настройки
Компания
Сделано в СМ-Консалт
Услуги 
Компетенция
  • CMC-TotalTest (скоро)
    уникальная разработка автоматизации функционального тестирования. Альтернатива HP UFT, IBM RFT и Microsoft!
  • CMC-Bisquiter
    автоматизированное тестирование АБС "Бисквит"
  • CMC-Formater
    тестирование печатных и экранных форм
  • CMC-TerminalTest
    тестирование терминальных приложений
  • ProjectTracker
    интеграция ALM и MS Project
  • GanttChart
    модуль управления проектами для IBM Rational ClearQuest и TeamConcert
    Все разработки СМ-Консалт >
  • ИТ-консалтинг
  • Автоматизированное тестирование
  • Ручное тестирование
  • Аутсорсинг тестирования
  • Оптимизация бизнес-процессов
  • Внедрение методологии и инструментов ALM
  • Обучение и коучинг
  • Разработка ПО
  • Интеграция
ООО СМ-Консалт (СМК), 2004-2017.
Карта сайта