Использование принципов управляемой моделями разработки и проектирования на базе шаблонов при проектировании SOA: Часть 1. Создание UML-профилей и шаблонов моделейИсточник: IBM Rational Бертран Портье, Ли Акерман
Перед началом работывам следует знать, что предлагает наше учебное руководство и как извлечь из его изучения как можно больше полезных знаний и навыков. Чтобы использование принципов и методов управляемой моделями разработки (MDD) было выгодным, среда проектирования и разработки должна иметь следующие характеристики: Передовые методы, предназначенные для многократного использования: Сотрудники могут использовать уже проверенные решения для аналогичных задач, а также предоставлять решения, которые могут использоваться другими сотрудниками. Инструменты для различных ролей: Инструменты предназначены для рассматриваемых задач и ролей или лиц, выполняющих эти задачи (например, бизнес-аналитик или разработчик архитектуры информационных систем). Поддержка процесса и рекомендации: В контексте метода или процесса всегда предусмотрены рекомендации. Расширяемость платформы: Рабочие группы могут дополнить или настроить среду в соответствии со своими потребностями. Автоматизация: Метамодель, на которой строится инфраструктура, и отображения делают возможным полуавтоматическое преобразование моделей с большим или меньшим уровнем абстракции вплоть до исполняемого кода. Можно также выполнить обратную трассировку от более низкого к более высокому уровню абстракции. Все эти характеристики можно отнести к IBM Rational Software Delivery Platform, и, в частности, к IBM Rational Software Architect. В этой серии статей мы расскажем о том, как расширить функциональные возможности платформы Rational; это поможет вам в создании решений на базе SOA. В учебных руководствах данной серии, состоящей из четырех статей, рассказывается о том, что такое моделирование и как использовать средство расширения функциональных возможностей Rational Software Architect.
Изучив эту серию учебных руководств, вы сможете рассказать о функциях, которые можно использовать для расширения Rational Software Architect при проектировании SOA-решений. Вы узнаете, что такое моделирование и как создать UML-профили, шаблоны моделей, шаблоны, преобразования и ресурсы многократного использования. В этом учебном руководстве, части 1 нашей серии, мы рассмотрим взаимоотношения между SOA и средствами расширения функциональных возможностей Rational Software Architect. Мы продемонстрируем, как можно использовать пользовательские шаблоны и профили в Rational Software Architect для автоматизации проектирования SOA-решений. Rational Software Architect предлагает несколько функций, которые можно комбинировать для повышения производительности при разработке решений SOA и других решений. Эти автоматизированные процедуры можно использовать для повышения качества решения, а также для поддержки всего процесса управления. После изучения этого учебного руководства вы будете лучше понимать, как можно использовать инструменты и функции Rational Software Architect для создания пользовательских шаблонов и профилей. Вы сможете использовать преимущества автоматизации для повышения производительности труда вашей рабочей группы, повышения качества решения и поддержки процесса управления. Эти автоматические процедуры скроют от заинтересованных глаз ваши передовые методы, которые часто являются специфическими для организации и относятся к ее конкурентным преимуществам. Изучив данное учебное руководство, вы сможете рассказать о различных способах создания шаблонов в Rational Software Architect. Кроме того, вы сможете создавать несложные профили и шаблоны. Знакомство со следующими методами и программами поможет вам извлечь больше пользы из нашего учебного руководства, хотя это и не является обязательным условием: UML, (унифицированный язык моделирования, Unified Modeling Language) Rational Software Architect или IBM Rational Software Modeler SOA (service-oriented architecture, сервис-ориентированная архитектура) Полезные ссылки на соответствующие темы можно найти в конце этого учебного руководства в разделе "Ресурсы". Для изучения данного учебного руководства необходимо, чтобы в системе были установлены такие программные продукты, как
Введение в технологию управляемой моделями разработки для сервис-ориентированной архитектурыВ одной из наших серий, "Design SOA Services with Rational Software Architect" (Проектирование SOA-сервисов при помощи Rational Software Architect) (см. раздел Ресурсы), мы рассказали о том, как можно использовать модели для документирования проектов решений на основе SOA Rational. В течение всего времени мы могли работать с различными уровнями абстракции и использовать ряд элементов модели. Эти элементы моделей помогли нам спроектировать и сгенерировать необходимые артефакты с необходимой степенью детализации. В данном учебном руководстве вы сможете создать свои артефакты моделирования MDD при помощи Rational Software Architect, в том числе:
В следующем разделе более подробно описываются эти два артефакта. Вы узнаете, что представляют собой эти артефакты, как можно их создать и, самое важное, как можно комбинировать их при создании SOA-решений. Прежде чем углубиться в детали артефактов, важно, чтобы вы хорошо понимали соответствующую терминологию. SOA и модели, ресурсы, шаблоны и расширяемость На рисунке 1 показан стек SOA-решений, который является концептуальным представлением того, как SOA-решение выглядит в процессе исполнения. Мы видим пять уровней:
Эти уровни можно отобразить на проектировании программного обеспечения или уровни абстракции - чем выше уровень, тем выше уровень абстракции. Ядром стека SOA-решения является уровень Сервисы (рисунок 1), который представляет программную архитектуру сервис-ориентированных решений. Несмотря на то, что людям больше известны шаблоны проектирования группы Gang of Four, которые в стеке SOA-решения применяются к уровню компонентов сервисов, шаблоны применяются также ко всем другим уровням. При использовании SOA в качестве архитектурного стиля принципы расширяемости, многократного использования ресурсов или автоматизации применяются ко всем пяти уровням. Например, шаблоны уровня архитектуры бизнеса, входящие в состав компонентной модели бизнеса (Component Business Model) IBM®, используются для представления организаций как сущностей на основе предоставляемых и запрашиваемых бизнес-сервисов. Технология разработки, управляемой моделями (model-driven development, MDD), которая построена на моделях и преобразованиях, позволяет моделировать программное обеспечение на различных уровнях абстракции, с учетом трассируемости и подотчетности. Следовательно, имеет смысл применить подход MDD к поставке SOA-решений. Представьте себе, что у нас есть модели SOA-решений для каждого из пяти уровней стека SOA-решения, и мы можем преобразовать модели от более высоких к более низким уровням абстракции. SOA-модели и преобразования были созданы и успешно использованы в проекте. В числе прочих артефактов они включали профиль Unified Modeling Language (UML) для программирования сервисов и преобразование UML - Web Services Definition Language (WSDL, язык описания Web-сервисов). (Дополнительную информацию об этих двух артефактах можно получить из учебного руководства "Design SOA Services with RSA" (Проектирование SOA-сервисов при помощи RSA), см. раздел Ресурсы). Использование MDD в контексте SOA предполагает такие преимущества, как высокая целостность, наличие перспективы SOA для всех заинтересованных лиц, выигрыш в качестве и производительности и трассируемость решений на всем протяжении разработки до бизнес-требований. Многократность использования - это ключевой фактор успеха для SOA-проектов, и именно этот фактор является самым проблемным. Сюда можно отнести многократное использование опыта и передовых методов, а также существующих (не имеющих отношения к SOA) программных ресурсов. Технология разработки, основанной на использовании ресурсов (asset-based development, ABD) - это дисциплина проектирования программного обеспечения, которая строится на использовании для создания решений программных ресурсов. Успешное применение принципов ABD при разработке SOA-решений предлагает ряд преимуществ и требует соблюдения всего нескольких условий, причем это не только изменения культурного характера. Например, необходим процесс для жизненного цикла ресурсов (одобрение, отказ от поддержки и т. п.), а сотрудники организации должны иметь возможность найти и использовать эти ресурсы в процессе работы над SOA-решением. Основной тип ресурсов - это сервисы. Реестры и репозитории сервисов поддерживают многократное использование благодаря тому, что они хранят информацию о сервисах в процессе прохождения ими фаз жизненного цикла. Реестры и репозитории сервисов позволяют обеспечить многократное использование сервисов и их доступность. Репозитории ресурсов, например репозитории спецификации многократно используемых ресурсов (Reusable Asset Specification, RAS), тоже важны, потому что в них хранятся ресурсы, содержащие представления сервисов на всех уровнях абстракции (например, модель сервиса Rational Service Architect, представляющая архитектуру SOA-решения). Как создать UML-профиль UML-профили предоставляют простой механизм расширения независимого от конкретной предметной области унифицированного языка моделирования Unified Modeling Language (UML). Они позволяют определить специфические для данной предметной области сущности и правила. Предметная область, на которой основывается профиль, может быть технологической или относящейся к бизнесу. Кроме того, UML-профили прекрасно комбинируются с процессами разработки. Например, существует UML-профиль для бизнес-моделирования, поддерживающий унифицированный процесс Rational (Rational Unified Process, RUP) для бизнес-моделирования. Профили предлагают простой метод метамоделирования, в рамках которого можно изменять метаклассы из существующих метамоделей при помощи стереотипов (для определения специфических свойств и ограничений для метаклассов) и тэгированные значения (для определения ограничений для метаатрибутов). Лучше всего ассоциировать графические представления со стереотипами. Например, в профиле "UML profile for Software Services" стереотип serviceSpecification описывает метакласс Interface. Он определяет свойство published, которое определяет факт публикации сервиса в реестре сервисов. И наконец, одно из ограничений заключается в том, что все операции должны быть помечены как публичные. При помощи этого профиля можно адаптировать для решения своих задач язык, используемый для проектирования, документирования и разработки SOA-решения. Совет: Как уже объяснялось ранее, основной идеей управляемой моделями разработки является возможность работы на нескольких уровнях абстракции. Например, вы можете обнаружить, что UML-профиль для программирования сервисов включает слишком много технических деталей, чтобы использовать его в беседе с бизнес-партнерами по SOA-проекту. По сути, есть смысл создать новый профиль, который абстрагируется от деталей, документированных в профиле Software Services. После того как вы придете к соглашению по поводу деталей, документированных в более высокоуровневой модели, можно воспользоваться преобразованием для автоматизированного создания модели на более низком уровне, использующем профиль Software Services. Передовой метод для нового профиля или метамодели В соответствии со спецификацией UML 2.0 профили имеют следующие особенности использования:
Создаем профиль в Rational Software Architect В этом разделе мы рассмотрим только основы создания профилей, ведь о создании профилей можно написать отдельное учебное руководство или серию учебных руководств. В нашей статье мы не будем рассказывать о передовых методах создания профилей или о создании профиля от начала до конца, зато покажем, как можно использовать программный пакет Rational Software Architect для создания профиля. В разделе Ресурсы имеется ссылка на статью по работе с профилями на developerWorks. Совет: Примечание:
Рисунок 2. Проект нового UML-профиля
Рисунок 3. Ввод имени UML-профиля и имени файла После того, как мы создали модель профиля и проект, необходимо определить стереотипы для профиля (это основные элементы нашей модели профиля).
Рисунок 4. Создание нового стереотипа Затем определите тип (метакласс), который будет расширять только что созданный стереотип SimpleServiceSpec.
Таким образом мы декларируем, что наш стереотип SimpleServiceSpec расширяет UML-элемент Interface. После того как элемент Interface будет создан и развернут, пользователи профиля смогут создать особый экземпляр элемента Interface, обозначенный как SimpleServiceSpec. Результат показан на рисунке 5 рисунке 5. Рисунок 5. Расширение метакласса для стереотипа SimpleServiceSpec Выбираем изображения для пиктограмм Теперь необходимо определить графическое представление нашего стереотипа. Можно выбрать два изображения: одно для пиктограммы в панели Project Explorer и одно для картинки на диаграмме. В этом упражнении мы определим только изображение для пиктограммы.
Теперь приступим к добавлению в стереотип атрибута source, определяющего, как будет выполняться идентификация спецификации сервиса (например, из задачи бизнес-процесса или из традиционного приложения).
Рисунок 6. Создание нового атрибута стереотипа
На этом мы закончим определение нашего (очень) простого профиля в упражнении. Результат показан на рисунке 7. Рисунок 7. Простой профиль Service
Теперь необходимо убедиться в том, что созданный профиль можно применять к моделям.
При каждом сохранении профиля создается его новая версия. Выполните сжатие профиля, чтобы избавиться от всех ненужных версий и сохранить только самую последнюю.
Теперь необходимо убедиться в том, что вы не можете изменять профиль, ведь это могло бы негативно отразиться на работе других пользователей профиля. Для этого необходимо выпустить (издать) профиль.
Совет: На этом этапе рекомендуется создать на основе профиля подключаемый модуль, а затем сделать его доступным для сотрудников организации. Однако в нашем упражнении мы выполним простой тест, просто выбрав созданный профиль в рабочей области.
Рисунок 9. Выбор профиля в рабочей области Создайте новый UML-интерфейс на диаграмме классов (из палитры), и дайте ему имя
Рисунок 10. Применение нового стереотипа Обратите внимание на то, что для IClaimRecorder теперь доступны новый значок и свойство источника (рисунок 11). Рисунок 11. Стереотип SimpleServiceSpec применен к элементу IClaimRecorder Вот и все! Мы создали простой профиль и протестировали его, чтобы убедиться в том, что данный профиль можно применять к моделям. В реальных условиях на этом этапе можно инкапсулировать профиль в проект подключаемого модуля, развернуть его в форме RAS-ресурса и сделать доступным для других пользователей. Как создать и применить пользовательский шаблон В контексте Rational Software Architect шаблонами могут называться различные виды шаблонов, используемые для различных целей:
Назначение шаблонов моделей заключается в определении структуры конкретных типов модели, а также предварительно определенных элементов моделей. Шаблоны моделей могут совместно использоваться проектировщиками для обеспечения согласованности. Кроме того, благодаря этим шаблонам вам не нужно будет создавать модели с нуля. В некоторых случаях вам, возможно, захочется поступить именно таким образом, чтобы получить больше свободы. Однако в большинстве других случаев модели создаются в области, в которой до вас работали многие другие пользователи. Благодаря шаблону модели пользователи получают преимущество в начале моделирования и правильное направление для действий. В статье "Design SOA services with Rational Software Architect, Part 2" (Проектирование SOA-сервисов при помощи Rational Software Architect, Часть 2) (см. в разделе Ресурсы) мы говорили о шаблонах моделей при изучении профиля UML 2 Profile for Software Services (профиль для сервисов). Подключаемый модуль для Rational Software Architect для этого профиля на самом деле содержит шаблон модели, который можно использовать для создания новой модели проекта сервиса. При создании новой модели мастер New UML Model предлагает список шаблонов моделей, которые могут быть использованы для создания этой модели, включая и пустой шаблон. В список доступных моделей входит и шаблон проекта сервиса Service Design Model (см. рисунок 12). Рисунок 12. Мастер New UML Model Если выбрать шаблон модели Service Design, то созданный проект уже будет содержать пакеты, элементы модели, элементы модели многократного использования и диаграммы, которые помогут в создании проектов сервисов, как показано на рисунке 13 . Рисунок 13. Шаблон модели Service Design Создаем модель, которая будет использоваться в качестве шаблона В Rational Software Architect версии 7.0 в качестве шаблона можно использовать любую модель. Следовательно, чтобы создать шаблон модели, достаточно создать любую модель. Впоследствии вы, как и другие пользователи, сможете использовать эту модель как шаблон для создания других моделей. Средства расширения функциональных возможностей Rational Software Architect, кроме того, позволяют зарегистрировать модель как шаблон. В этом разделе мы создадим простой шаблон модели Service Design, построенный на структуре модели, которую мы использовали в серии "Design SOA Services with Rational Software Architect" (Проектирование SOA-сервисов при помощи Rational Software Architect) (см. ссылку в разделе Ресурсы). Сначала необходимо создать новую модель, а затем убедиться в том, что эту модель можно использовать в качестве шаблона. Создайте новый UML-проект, использующий профиль сервисов и имеющий структуру, показанную на рисунке 14. Если вы уже знаете, как это делается, пропустите следующий раздел. В противном случае выполните инструкции из этого раздела.
Рисунок 15. Мастер New Project
Рисунок 16. Новый проект UML-моделирования
Рисунок 17. Мастер New UML Model Совет: Рисунок 18. Опция контекстной справки Настройка конфигурации UML-модели Теперь необходимо настроить UML-модель на использование профиля Services.
Рисунок 19. Первоначальное отображение UML-модели в Project Explorer
Рисунок 20. Применяемые к модели профили
Теперь нам нужно создать структуру UML-модели, а именно три пакета:
Затем мы свяжем эти пакеты, чтобы показать зависимости. По умолчанию Rational Software Architect для каждого нового пакета создает диаграмму в свободной форме. Сначала нам придется изменить параметры, чтобы для каждого нового пакета создавалась диаграмма классов.
Рисунок 21. Создание нового пакета
Рисунок 22. Созданные нами пакеты Теперь нужно создать отношения между этими пакетами.
Рисунок 23. Создание отношения "использует"
На рисунке 25 показан окончательный вид пакета в Project Explorer. Обратите внимание на отношения "использует" в иерархии пакетов Services и Service Specifications. Рисунок 25. Структура нового пакета
В этом простом примере мы включили в шаблон модели только пакеты и диаграммы. Однако в шаблон можно включить и другие элементы модели (классы, интерфейсы и т. п.) Совет: В следующем разделе мы экспортируем только что созданную модель как шаблон модели. Предоставление модели в качестве шаблона В Rational Software Architect версии 7 можно создать новый проект или модель на основе уже существующего (не только из зарегистрированного шаблона). Rational Software Architect позволяет выбрать проект или модель (рисунок 26), после чего создается новая модель или новый проект, являющийся репликацией (копией) выбранного проекта. Новый проект содержит элементы модели и диаграммы из исходной модели. Рисунок 26. Новая UML-модель, созданная на основе уже существующей
Рисунок 27. Спецификация новой UML-модели Rational Software Architect создает новую модель, используя в качестве шаблона модель Service Design. Краткое заключениеВ этом учебном руководстве мы рассмотрели несколько различных способов документирования и автоматизации использования передовых методов, разработанных в организации и отрасли, в Rational Software Architect. В частности, мы рассмотрели создание пользовательских профилей и шаблонов моделей. Профили позволяют дополнить язык UML, чтобы его можно было использовать для проектирования SOA. Адаптировав язык к своим потребностям, можно использовать шаблоны моделей для того, чтобы помочь пользователям профилей создавать хорошо определенные модели и решения. В следующих выпусках серии мы расскажем об автоматизации использования передовых методов в рамках модели или нескольких моделей. В реальной технической среде вы постоянно испытываете давление, вынуждающее вас выполнять больше работы в меньшие сроки и обеспечивать соответствие все более строгим стандартам, и все это в условиях рассредоточенности сотрудников не только по территории организации, но и по всему миру. Автоматизация использования передовых методов позволит вам повысить производительность, принудительно обеспечить архитектурную целостность и повысить качество создаваемого программного обеспечения. |