Преобразование UML-Java в выпуски IBM Rational Software Architect и соответствующее программное обеспечение

  1. Обзор процесса
  2. Создать UML-модель системы заказов
  3. Рисунок 3. Диаграмма классов UML для образца модели
  4. Настройте преобразование
  5. Рисунок 5. Исходная и целевая страница мастера новой конфигурации преобразования
  6. Рисунок 6. Конфигурация преобразования
  7. Рисунок 7. Сгенерированный вывод преобразования
  8. Листинг 1. Класс Java OrderDetail
  9. Листинг 2. UML-операции calcSubTotal () и calcWeight () в классе OrderDetail
  10. Рисунок 8. @ генерируемые вкладки в целевом коде
  11. Установить отношение трассировки источник-цель
  12. Рисунок 9. Общая страница мастера настройки преобразования
  13. Листинг 3. URI EMF, представляющий исходный элемент UML
  14. Рисунок 10. Диалог Сохранить как для диаграммы Traceability
  15. Рисунок 11. Сгенерированная диаграмма прослеживаемости
  16. Рисунок 12. Вкладка Mapping редактора Transformation Configuration
  17. Рисунок 13. Мастер создания модели сопоставления
  18. Рисунок 14. Мастер редактирования сопоставленных имен
  19. Рисунок 15. Редактор мастера Mapped Names с ранее указанным именем для пакета
  20. Рисунок 16. Свойства артефакта Customer в модели Mapping
  21. Рисунок 17. Выходные данные, сгенерированные преобразованием UML-Java с включенной моделью отображения
  22. Листинг 4. Параметры, также сгенерированные с новым именем «NewCustomer»
  23. Решите, использовать ли смешанный или согласованный протокол
  24. Рисунок 18. Главная страница редактора конфигурации преобразования с выбранным смешанным протоколом
  25. Рисунок 19. Предупреждение, когда преобразование пытается заменить элементы UML
  26. Рисунок 20. Представление Project Explorer для вывода, сгенерированного преобразованием UML-to-Java...
  27. Рисунок 21. Представление схемы вывода, сгенерированного преобразованием UML-to-Java с использованием...
  28. Когда использовать согласованный протокол
  29. Рисунок 22. Конфигурация преобразования с выбранным протоколом Reconciled
  30. Исследуйте дальнейшие детали и получите образец модели
  31. Загружаемые ресурсы

Преобразования для поддержки протоколов управления проектными контрактами были представлены в выпусках Rational Software Archictect версии 7.5. Это введение в некоторые функции преобразования.

Замечания:
Для простоты приведенные здесь преобразования описаны в терминах Rational Software Architect. Однако эта информация также относится к этим выпускам и связанным продуктам IBM® Rational®:

  • Rational Software Architect RealTime Edition
  • Rational Software Architect Standard Edition
  • Rational Software Architect для программного обеспечения WebSphere®

Автор предполагает, что у вас есть базовые знания о спецификации Unified Modeling Language (UML) 2.0, Eclipse, выпуске Rational Software Architect и Java-разработке. В этой статье подробно не рассматривается моделирование UML и реализация кода Java.

Обзор процесса

Процесс разработки, включающий выполнение преобразования, состоит из следующих основных этапов:

  1. Создайте модель UML, отражающую структуру приложения.
  2. Используйте преобразование UML-Java для создания кода Java на основе созданной модели UML.
  3. Отредактируйте сгенерированный код и реализуйте бизнес-логику приложения.
  4. (Необязательно) Поддерживайте синхронизацию модели UML и приложения Java с помощью предоставленных преобразований Java.

Создать UML-модель системы заказов

  1. В Rational Software Architect откройте представление « Моделирование» и создайте новый проект модели, выбрав « Файл»> «Создать»> «Проект модели» в главном меню.
  2. Назовите заказ проекта и добавьте пустой пакет с именем Модель заказа в проект заказа на второй странице мастера. (см. рисунок 1).
Рисунок 1. Мастер создания модели UML
Преобразования для поддержки протоколов управления проектными контрактами были представлены в выпусках Rational Software Archictect версии 7
  1. Добавьте пакет orderingApplication в созданную модель (рисунок 2).
Рисунок 2. Образец модели UML создан
  1. Разработать модель UML. Вы можете добавить элементы в основную диаграмму пакета orderingApplication на вкладке Класс палитры и использовать помощь в моделировании на диаграмме.

На рисунке 3 показана модель примера приложения, которое позволяет владельцу бизнеса сгенерировать заказ и принять платеж от клиента.

Рисунок 3. Диаграмма классов UML для образца модели

Используйте преобразование для генерации кода Java на основе модели

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

Настройте преобразование

  1. Чтобы создать новую конфигурацию преобразования UML-Java, выберите « Моделирование»> «Преобразование»> «Новая конфигурация» в главном меню.
  2. В поле « Имя» открытого мастера настройки новой трансформации (рисунок 4) введите имя конфигурации трансформации: MyUMLtoJavaTransform в поле «Имя».
  3. Нажмите кнопку с многоточием ( ... ), чтобы перейти к порядку проектов UML.
  4. В списке развернутых преобразований откройте папку « Преобразования Java » и выберите преобразование UML-в-Java .
  1. Вы должны выбрать тип протокола на этой странице мастера (рисунок 4).
Рисунок 4. Главная страница мастера настройки нового преобразования

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

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

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

Согласованный протокол
Вы должны выбрать этот протокол, если концептуальные модели поддерживаются и итеративно расширяются в течение всего процесса проектирования, плюс намерение состоит в том, чтобы развивать проект в доменах Java и UML и синхронизировать артефакты в определенных точках цикла разработки.

Замечания:
Использование преобразования UML-to-Java в контексте концептуального протокола будет обсуждаться здесь в первую очередь. Использование преобразования в контексте смешанных и согласованных протоколов будет рассмотрено далее в этой статье.

  1. Выберите концептуальный протокол в мастере настройки преобразования.

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

  1. Нажмите кнопку « Далее» в мастере настройки преобразования (рисунок 4), чтобы перейти на новую страницу мастера, где вы можете указать исходные и целевые элементы для преобразования.
  2. Выберите модель с именем Order Model из созданного UML-проекта в качестве источника, а затем выберите Create Target Container (рисунок 5). Откроется мастер New Java Project.
  3. Создайте новый проект Java с именем myOrderCode и выберите его в качестве цели в мастере настройки преобразования.
Рисунок 5. Исходная и целевая страница мастера новой конфигурации преобразования
  1. Нажмите кнопку Готово (рисунок 5), чтобы создать новый файл конфигурации преобразования, MyUMLtoJavaTransform.tc , в указанном порядке проекта.

Созданные файлы проекта Java и конфигурации преобразования отображаются в представлении Project Explorer, а конфигурация Transformation открывается в представлении Editor (рисунок 6).

Рисунок 6. Конфигурация преобразования

Запустите конфигурацию преобразования

  1. Нажмите кнопку « Выполнить» в мастере настройки преобразования, чтобы запустить настройку.

Код Java будет сгенерирован в целевом проекте (рисунок 7).

Рисунок 7. Сгенерированный вывод преобразования

Преобразование генерирует код Java на основе содержимого исходной модели UML:

  • Для классов и интерфейсов создаются соответствующие файлы xyz.java. Преобразование назначает имена файлов по умолчанию (указанные в модели UML) для файлов и папок. Например, создается класс Java OrderDetail, соответствующий классу UML OrderDetail.
  • Преобразование также генерирует методы Java и свойства Java внутри файлов классов Java.

Например, количество свойств Java, соответствующее количеству атрибутов UML, генерируется внутри класса Java OrderDetail, как показано в листинге 1.

Листинг 1. Класс Java OrderDetail

/ ** * <! - begin-UML-doc -> * <! - end-UML-doc -> * @ сгенерированный UML для Java (com.ibm.xtools.transform.uml2.java5.internal. UML2JavaTransform) * / private Целое число;

Для каждого свойства Java методы get и set - например, getQuantity () и setQuantity (Integer) - генерируются преобразованием. Java-методы calcSubTotal () и calcWeight (), которые соответствуют операциям UML calcSubTotal () и calcWeight (), генерируются внутри класса Java OrderDetail (листинг 2).

Листинг 2. UML-операции calcSubTotal () и calcWeight () в классе OrderDetail

/ ** * (не Javadoc) * @see Autirization # autorized () * @ сгенерированный UML для Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform) * / public void calcSubTotal () {// begin-user-code // TODO Автоматически генерируемый тупик метода // end-user-code} / ** * (не Javadoc) * @see Autirization # autorized () * @ сгенерированный UML для Java (com.ibm.xtools .transform.uml2.java5.internal.UML2JavaTransform) * / public void calcWeight () {// begin-user-code // TODO Сгенерированный автоматически метод заглушки метода // end-user-code}

Как вы можете заметить, преобразование добавляет аннотацию @generated к элементам в сгенерированном коде (рисунок 8).

Рисунок 8. @ генерируемые вкладки в целевом коде

Эта аннотация предназначена для защиты кода. Если аннотация @generated для элемента, содержащего код реализации, будет удалена или изменена, код будет защищен и не будет обновлен при повторном запуске преобразования в тот же целевой проект. (Расширенные параметры для обеспечения защиты пользовательского кода, которые также предусмотрены в проекте преобразования, в этой статье не показаны.)

Иногда вам может потребоваться обновить приложение. Например, вы можете добавить новый способ оплаты, например, принимать денежные переводы. Вы можете напрямую обновить Java-код или добавить новые классы в модель, а затем необходимо повторно запустить преобразование. Затем код восстанавливается и новые классы добавляются в целевой Java-проект, оставляя защищенный код без изменений.

Установить отношение трассировки источник-цель

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

  1. Чтобы сгенерировать отношения трассировки между источником преобразования и целевым элементом, установите флажок « Создать отношения трассировки» на странице «Общие» редактора конфигурации преобразования (рисунок 9).
Рисунок 9. Общая страница мастера настройки преобразования

Когда кто-то запускает преобразование, аннотация для каждого сгенерированного элемента, который поддерживает аннотацию @generated, изменяется, чтобы включить URI EMF, который представляет исходный элемент UML, как показано в листинге 3.

Листинг 3. URI EMF, представляющий исходный элемент UML

/ ** * @generated sourceid: platform: /resource/UMLS/UMLS.emx#_NLHDQIr0Edu0eunV5GC2yg * / открытый класс Order {}

Это установило связь трассировки между исходным элементом UML и целевым элементом Java. Установленные отношения трассировки позволяют улучшить слияние между целевым и исходным элементами при повторном запуске преобразования. (Расширенная функциональность выходит за рамки этой статьи.)

  1. Установив отношения трассировки, для каждого класса или интерфейса UML можно отслеживать реализацию Java, выбрав элемент в Project Explorer, а затем выбрав « Запрос»> «Отслеживаемость»> «Реализации» в раскрывающемся меню.
  2. Нажмите кнопку ОК в ответ на диалоговое окно «Сохранить как» (рисунок 10).
Рисунок 10. Диалог Сохранить как для диаграммы Traceability

Будет создана новая диаграмма, которая отслеживает отношения между выбранным классом UML и классом Java, который его реализует (рисунок 11).

Рисунок 11. Сгенерированная диаграмма прослеживаемости

Укажите альтернативные имена файлов Java с помощью моделей сопоставления

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

  1. Чтобы сгенерировать режим сопоставления, откройте вкладку «Сопоставление» в редакторе конфигурации преобразования и установите флажок « Включить функцию сопоставления для этой конфигурации» (рисунок 12).
Рисунок 12. Вкладка Mapping редактора Transformation Configuration
  1. Нажмите кнопку « Создать» , а затем нажмите кнопку « ОК», чтобы принять значения по умолчанию в мастере создания модели сопоставления (рисунок 13).

Замечания:
Вы можете выбрать любой доступный проект для хранения модели Mapping, но модель Mapping должна быть создана в том же рабочем пространстве, где хранится исходная модель.

Рисунок 13. Мастер создания модели сопоставления

В результате создается новая модель UML, содержащая артефакты UML для каждого элемента UML исходной модели, и устанавливаются взаимосвязи между созданными артефактами и соответствующими элементами UML. В этой модели вы можете указать альтернативные имена файлов для любого из файлов Java или пакетов Java, которые генерирует преобразование.

  1. На вкладке «Сопоставление» редактора конфигурации преобразования нажмите кнопку « Изменить сопоставление» .
  2. Когда вы увидите окно «Редактировать сопоставленные имена» мастера Model Element (рисунок 14), выберите элемент UML, для которого вы хотите указать альтернативное имя.
  3. В поле «Сопоставленное имя» введите новое имя для выбранного элемента, который должен быть создан в целевом проекте.

На рисунке 14 выбран пакет orderingApplication и в качестве имени указан orderingCD.

Рисунок 14. Мастер редактирования сопоставленных имен
  1. Нажмите Применить .
  2. Затем вы можете выбрать другой элемент (например, класс Customer) и указать для него имя сопоставления.

Совет:
Вы можете использовать полное имя, например com.ibm.NewCustomer.com, или неквалифицированное имя, например NewCustomer.

На рисунке 15 NewCustomer является именем сопоставления. Обратите внимание, что указание альтернативных имен в модели отображения не изменяет исходную модель.

Рисунок 15. Редактор мастера Mapped Names с ранее указанным именем для пакета
  1. Нажмите « Применить», а затем « ОК», чтобы закрыть представление «Редактировать сопоставленные имена» в диалоговом окне «Элемент модели».

В модели Mapping значение свойства File Name для артефакта Customer устанавливается равным NewCustomer (рисунок 16).

Рисунок 16. Свойства артефакта Customer в модели Mapping
  1. Сохраните измененную конфигурацию преобразования и запустите преобразование.

При запуске преобразования с выбранной моделью сопоставления альтернативные имена файлов или пакетов, указанные в модели сопоставления, применяются к элементам, которые генерирует преобразование. Все классы ниже пакета с указанным именем сопоставления будут сгенерированы под новым пакетом (рисунок 18). В этом примере создается новый пакет Java orderingCD, содержащий все классы Java, доступные в исходной модели UML. В этом пакете создается UML-класс Customer с новым именем NewCustomer, указанным в модели Mapping.

Рисунок 17. Выходные данные, сгенерированные преобразованием UML-Java с включенной моделью отображения

Типы полей Java и параметры операций также генерируются с новым именем NewCustomer (см. Листинг 4).

Листинг 4. Параметры, также сгенерированные с новым именем «NewCustomer»

/ ** * * / упаковка заказа CD; import java.util.Set; / ** * <! - begin-UML-doc -> * <! - end-UML-doc -> * @author Administrator * @ сгенерировал UML для Java (com.ibm.xtools.transform.uml2. java5.internal.UML2JavaTransform) * / открытый класс Order {/ ** * <! - begin-UML-doc -> * <! - end-UML-doc -> * @ сгенерированный UML для Java (com. ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform) * / частный клиент NewCustomer; / ** * @ вернуть клиента * @ сгенерированный UML в Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform) * / public NewCustomer getCustomer () {// begin-user-code return customer; // код конечного пользователя} / ** * @param customer, чтобы клиент установил * @generated UML на Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform) * / public void setCustomer (клиент NewCustomer ) {// begin-user-code this.customer = customer; // код конечного пользователя}

Совет:
Использование модели Mapping при выполнении преобразований может быть особенно полезным, если вы планируете доставить несколько приложений Java, сгенерированных из одной модели UML.

Решите, использовать ли смешанный или согласованный протокол

Когда использовать смешанный протокол

Выберите этот протокол, если вы хотите продолжить разработку в целевой области, а не в исходной модели. Если вы выберете Смешанный протокол для преобразования, элементы UML в исходной модели будут преобразованы в визуальные представления элементов Java во время преобразования, и выходные данные станут основным артефактом.

  1. На главной странице редактора Transformation Configuration (рисунок 18) установите флажок Смешанный в качестве протокола.
Рисунок 18. Главная страница редактора конфигурации преобразования с выбранным смешанным протоколом
  1. Сохраните конфигурацию.

Не все функции преобразования, которые были доступны для концептуального протокола, теперь могут быть использованы; например, опция создания трассировочных связей на вкладке Общие отключена. Однако вы все равно можете создать и использовать модель Mapping, чтобы указать альтернативные (не по умолчанию) имена файлов для вывода преобразования. Когда преобразование выполняется, элементы UML в исходной модели заменяются ссылками на файлы Java.

  1. Запустите преобразование и нажмите OK в ответ на диалоговое окно с предупреждением (рисунок 19).

Замечания:
Отображаемое диалоговое окно информирует вас о том, что элементы UML в исходной модели исчезнут. Только визуальные представления элементов Java будут доступны в исходной модели, если вы нажмете ОК в диалоговом окне с предупреждением. Если вы нажмете кнопку « Отмена» в диалоговом окне предупреждения, код все еще будет сгенерирован в целевом проекте, и элементы UML в исходной модели не будут заменены ссылками.

Рисунок 19. Предупреждение, когда преобразование пытается заменить элементы UML

В Project Explorer в модели UML (рисунок 20) отображаются ссылки на файлы Java, а не на элементы UML.

Рисунок 20. Представление Project Explorer для вывода, сгенерированного преобразованием UML-to-Java с использованием смешанного протокола

На диаграмме, существовавшей в исходной модели, элементы UML также заменяются визуальными элементами Java (рисунок 21). Обратите внимание, что ассоциации UML заменяются сгенерированными атрибутами в классах Java.

Рисунок 21. Представление схемы вывода, сгенерированного преобразованием UML-to-Java с использованием смешанного протокола

Двойной щелчок по любой из ссылок в Project Explorer или на диаграмме откроет код Java для элемента в редакторе Java. Если вам нужно восстановить элементы UML в модели, используйте этот путь в главном меню: « Правка»> «Отменить преобразование UML в Java 5» .

В будущем вы можете полностью перейти на домен Java или продолжить добавление элементов UML в исходную модель и повторно применить преобразование UML-Java.

Когда использовать согласованный протокол

Если вы хотите независимо развивать проект в доменах Java и UML и в определенных точках цикла разработки синхронизировать артефакты, выберите согласованный протокол для преобразования UML-в-Java. Эта опция соответствует протоколу управления проектными контрактами с именем Reconciled Modeling.

На главной странице редактора конфигурации преобразования выберите « Согласованный протокол» . Обратное преобразование Java в UML включено, и в редакторе появляются дополнительные вкладки, специфичные для преобразования Java в UML (рисунок 22): «Параметры Java в UML» и «Ассоциации Java в UML». Эти вкладки можно использовать для настройки обратного преобразования Java в UML.

Рисунок 22. Конфигурация преобразования с выбранным протоколом Reconciled

При запуске прямого преобразования (UML-to-Java) код Java генерируется так же, как описано ранее в этой статье. Вы можете заняться будущей разработкой в ​​доменах Java и UML независимо. В любой точке цикла разработки модель UML можно синхронизировать с кодом Java, выполнив преобразование Java-в-UML и объединив результат с существующей моделью. Если модель развивалась независимо от кода, дальнейшая синхронизация может быть достигнута путем выполнения преобразования UML-в-Java с использованием существующего проекта Java в качестве цели. (Подробное описание итеративной разработки с использованием протокола Reconciled выходит за рамки этой статьи.)

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

Исследуйте дальнейшие детали и получите образец модели

В этой статье были рассмотрены основы применения преобразований Java, включенных в семейство продуктов Rational Software Architect, для использования протоколов Design Contract Management для интерактивной разработки приложений Java. См. Справочную документацию в программном обеспечении для получения более подробной информации.

Проект UML, содержащий модель заказа, можно загрузить, извлечь и импортировать в рабочую область Rational Software Architect (см. Загружаемые ресурсы ).

Загружаемые ресурсы

похожие темы

Подпишите меня, чтобы комментировать уведомления