В первой статье этой серии вы познакомились с повторно используемыми ресурсами, рецептами и шаблонами. Ресурсы - это коллекции артефактов, обеспечивающие решения проблем. Ссылка на спецификацию повторно используемых ресурсов (Reusable Asset Specification - RAS) приведена в разделе "Ресурсы".
Шаблоны программ представляют собой воспроизводимое решение проблемы в контексте. Rational® Software Architect применяет основанный на моделях (model-driven development - MDD) подход к разработке шаблонов программ. MDD обычно разрешает преобразование из одного уровня абстракции в другой с использованием элементарных преобразований. Пример такого преобразования - из аналитической модели в модель проектируемой системы и затем, возможно, в код.
Несколько шаблонов Rational Software Architect и другие ресурсы, такие как модели или требования, могут быть объединены для формирования укрупненных решений. Рецепты предоставляют руководство процессом, контекст и описание ингредиентов, то есть ресурсов и шаблонов.
Рецепты, шаблоны Rational Software Architect и преобразования, а также другие ресурсы пакетируются с использованием RAS и сохраняются в репозитории RAS или ресурсов. Репозиторий RAS представляет собой репозиторий ресурсов для разработки и обеспечивает механизмы поиска ресурсов и элементов конкретных решений. Мы сконцентрируемся на SOA-решениях, но концепции могут быть использованы повсеместно.
Рецепт шаблона обеспечивает документацию по использованию, структуру и взаимодействия указанного шаблона. Рецепт предоставляет руководство по использованию шаблонов и ресурсов, необходимых для их реализации. Рецепт может помочь согласовать выходные данные одного шаблона с входными другого. Рецепты способны заменить один или несколько шаблонов. Это полезно, поскольку контексты могут менять со временем.
SOA Implementation and Optimization Recipe - это набор шаблонов и преобразований Rational Software Architect, а также руководство по предоставлению SOA-решений. В рецепте рассматриваемые нами шаблоны будут манипулировать UML-моделями для создания и оптимизации служб. Шаблоны Rational Software Architect реализованы с использованием Rational Software Architect Pattern Engine. Каждый шаблон и преобразование Rational Software Architect реализованы в виде подключаемого модуля Eclipse и использует API авторинга и преобразований шаблонов Rational Software Architect.
Введение в повторно используемые ресурсы
Несколько лет назад консорциум лидеров программной отрасли (включая IBM, Rational Software, перед ее приобретением IBM, и Microsoft) начали исследовать способы помочь организациям перенаправить инвестиции в программное обеспечение. В то время консорциум определял ресурс следующим образом: набор артефактов, обеспечивающих решение проблемы для данного контекста.
Ресурс имеет также и другие характеристики. Он может иметь пункты изменчивости, которые позволяют пользователям настраивать ресурс, устанавливая различные параметры. Ресурс, который может рассматриваться подобным образом, называется трафаретом. В настоящее время инструментарий IBM Rational применяет это определение.
Ресурсы содержат инструкции или правила по их использованию для минимизации времени, необходимого разработчикам для поиска, анализа, потребления и тестирования ресурса. Ресурсы также описывают разработку и бизнес-контекст, в котором они могут и должны быть использованы повторно.
Типы артефактов, которые содержатся в ресурсе, зависят от повторно используемого контекста. Для контекста разработки ресурс может содержать требования, модели, исходный код и тесты. Разработчики служб должны включать эти типы артефактов, для того чтобы помочь другим разработчикам эффективно использовать службу повторно.
Обратите внимание на то, что определение ресурса поразительно похоже на определение шаблона. Так и было задумано, поскольку фундаментальные концепции, лежащие в основе и шаблона и ресурса, объединяют контекст, проблему и решение. Различие между ними - в деталях. Ресурс - это более общая концепция, чем шаблон. Пункты изменчивости ресурса находятся на уровне артефактов, тогда как виды пунктов изменчивости шаблона (параметры и участники) применяются ко всему шаблону, а не обязательно к какому-либо конкретному артефакту.
Как организовать и структурировать ресурс? Какая информация о нем нам нужна? Спецификация Reusable Asset Specification (RAS) предоставляет структуру для ответа на эти вопросы. Это - стандарт Object Management Group (OMG), принятый в 2005 году.
Существует много типов артефактов разработки программного обеспечения, и они могут существовать во многих формах и отражать разнообразие стилей. Это многообразие может увеличить стоимость обнаружения, осмысления и повторного использования артефактов других авторов. Указывая способ организации структуры, описывая и пакетируя эти артефакты, RAS обеспечивает логичность и предсказуемость ресурсов, что существенно уменьшает стоимость управления ресурсами и их применения.
Чтобы продемонстрировать значение стандартизации пакетирования ресурсов, рассмотрим пример, как стандартизация помогла компаниям ночной доставки. Предоставляя стандартные конверты и пакеты пользователям и требуя заданную информацию для ярлыков доставки, эти компании смогли создать сложные системы отслеживания заказов. Кроме того, эти правила содействовали улучшению планирования и принятия решений, от определения ширины лент конвейера, до оценки количества пакетов, помещающихся в самолет, и количества необходимых рейсов.
Стандартизация ресурсов аналогичным образом содействовала эффективности, повышая эффективность и автоматизацию в инструментальных средствах разработки программ, а также улучшая производительность рабочих групп, их использующих. При помощи RAS разработчики могут спакетировать каждый ресурс на уровне метаданных, который содержит атрибуты верхнего уровня, такие как название ресурса, версию и описание (см. рисунок 1).
Рисунок 1. Структура метаданных RAS
Как показано на рисунке 1, RAS-ресурс имеет секцию классификации, которая способствует поиску и просмотру; она может включать в себя простые описатели пар имя/значение и объявления контекстов, такие как контекст конкретного домена, контекст разработки и контекст развертывания.
Секция "Решение", показанная на рисунке 1 - это "мясо" ресурса; эта секция описывает набор артефактов, обеспечивающих решение.
Секция "Использование" предоставляет руководство по применению и настройке ресурса, используя пункты изменчивости. Некоторого рода информацией по использованию могут быть сценарии автоматического использования и мастера, которые хранятся в секции "Решение" вместе с другими артефактами ресурса.
Секция "Связанные ресурсы" определяет взаимосвязи ресурса с другими ресурсами и помогает создать наборы или семейства ресурсов для формирования крупно-модульных решений.
Для поддержки различных степеней повторного использования, формализации и законченности процессов в организациях многие из секций RAS-ресурсов не обязательны. RAS также может быть расширен и настроен через профиль. OMG в настоящее время предлагает три профиля: Default, Default Component и Default Web Service.
Профиль Default (по умолчанию) используется для создания пакетов программных ресурсов любого типа, тогда как два других профиля предназначены для использования с компонентами и Web-службами соответственно.
Термин "шаблон" может вызвать разные реакции и определения. Невнимательный наблюдатель может не заметить использования шаблона до тех пор, пока он явно не будет применен. В этом и состоит красота и опасность шаблонов. С одной стороны, наблюдатель может остаться невнимательным и использовать кажущуюся простоту применяемого шаблона. С другой стороны, без понимания причины и цели применяемого шаблона, т.е. логического обоснования, сведения и преимущества шаблона могут быть упущены или вообще забыты и не использованы. Короче говоря, абстракция может быть нашим другом, но также и врагом.
Определение, а может и несколько
Но, прежде всего, что такое шаблон? Для наших задач мы позаимствуем определение из хорошо известной работы, уже выполненной в этой области некоторыми ведущими мыслителями:
Джеймс Коплайн (James Coplien) пишет, что шаблон - это "… рекуррентная структурная конфигурация, решающая проблему в контексте, внося цельность в некоторое целое или систему, которая отражает какое-либо эстетическое или искусственное значение". [Организационные шаблоны, стр. 4, Pearson Prentice Hall]
Кристофер Александр (Christopher Alexander) пишет: "Каждый шаблон описывает проблему, возникающую снова и снова в нашей окружающей среде, и затем описывает сущность решения этой проблемы" [Alexander, 1979]. Он также пишет: "Каждый шаблон - это правило из трех частей, выражающее взаимоотношения между определенным контекстом, проблемой и решением". [Alexander 1979, стр. 274]
Буч (Booch) пишет: "Шаблон обеспечивает хорошее решение общей проблемы в некотором контексте". [Руководство по Unified Modeling Language, стр. 370, Addison Wesley]
И хотя существует великое множество различных вариаций этого определения, мы для целей данной статьи выберем общепринятую версию определения:
Шаблон - это решение рекуррентной проблемы для данного контекста.
Что такое разработка на основе моделей
Разработка на основе моделей (Model-driven development) – это, по существу, программные абстракции для указания и реализации решений. Модели могут использоваться на разных стадиях жизненного цикла разработки программного обеспечения. И на каждой стадии жизненного цикла модель выражается на определенном уровне абстракции.
Например, модель бизнес-процесса описывает задачи, условия, ресурсы, стоимость и сроки. По мере уточнения модели она может описывать природу ресурсов конкретных IT-систем или служб. Этот тип уточнения может уменьшить уровень абстракции.
Другим примером является модель вариантов использования (use case) с актерами. По мере уточнения этой модели она может описывать природу реализации варианта использования, идентифицируя компоненты и службы, используемые для этой реализации. Опять же, этот тип уточнения уменьшает уровень абстракции.
Абстракция может идти также и иначе, по пути увеличения абстракции, т.е. уменьшая уровень детализации модели.
Я иногда спрашиваю: "Существует ли еще что-либо, имеющее значение в моделях?" Модели уже используются довольно продолжительное время. Согласно Герману Шиклу (Hermann Schichl) ("Языки моделирования в математической оптимизации"): "Слово "моделирование" происходит от латинского modellus. Оно описывает свойственный человеку способ отражения действительности. Антропологи считают способность построения абстрактных моделей наиболее важным отличительным свойством homo sapiens …" [История моделирования, стр. 25]
Забегая вперед, Шикл далее утверждает: "На протяжении 2000 лет, по крайней мере, три культуры (Ваилон, Египт, Индия) имели четкие математические знания и использовали математические модели". [История моделирования, стр. 25]
Шикл отмечает, что одними из первых графических моделей были модели, использовавшиеся в астрономии. В этой области Птолемей (Ptolemy) создал модель солнечной системы в 150 году, используя окружности и эпицентры. Предположительно, эта модель использовалась до 1619, пока не была найдена более лучшая модель, которая в основном используется до настоящего времени. [История моделирования, стр. 26]
Модели обеспечивают средства взаимодействия, и, сделанные правильно, они предоставляют подходящие абстракции, которые могут сохраняться довольно продолжительное время. Сколько наших моделей будут правильны 1500 лет? Может, выпустить одну или две версии приложения?
Выбор правильных абстракций в модели для конкретного контекста является критичным.
Спецификация шаблона и реализация шаблона
Глядя на инструментарий шаблонов, мы разделили понятия спецификации шаблона и реализации шаблона. Спецификация шаблона представляет собой текст, описывающий шаблон; вы можете увидеть его в книге, на Web-странице и т.д.
Шаблон может быть реализован в одной из многочисленных форм; следовательно, для каждой спецификации шаблона может существовать много реализаций шаблона. Шаблон может быть реализован в виде UML-модели, в виде компонента или как служба.
Рисунок 2. Взаимосвязь спецификации шаблона и реализации шаблона
Описанные здесь шаблоны реализованы с использованием UML-моделей, и имеется некоторая технология преобразования для уточнения этих моделей. Для ее реализации необходим механизм шаблонов.
По мере роста количества ресурсов в наших репозиториях мы сталкиваемся с отпугивающей задачей поиска ресурсов, которые помогут нам решить наши проблемы. Более того, не просто определить, как скомбинировать один или несколько ресурсов для создания крупно-модульных решений.
Повторное использование мелко-модульным способом хорошо для модульности и управления версиями ресурсов. Однако усилия по их объединению могут оказать сильное влияние на использование ресурсов.
По существу, важно предоставить слабо связанный способ комбинирования ресурсов, и, что более важно, способ описания того, как ресурсы должны быть выбраны для данного контекста.
Для этого мы используем метафору - рецепты. На кухне рецепт предоставляет список ингредиентов и дает некоторые инструкции по их смешению. Повар имеет некоторую гибкость в замене ингредиентов с учетом текущего контекста. В этом смысле рецепт - это шаблон.
Мы можем позаимствовать понятие "рецепт" для мира программного обеспечения и использовать рецепты для создания шаблонных решений, которые разработчики (и другие) могут уточнять по мере необходимости. Здесь ингредиентами являются мелко-модульные ресурсы, а рецепт предоставляет руководство по осуществлению процесса смешивания этих ингредиентов. Отметим, что рецепт и сам является ресурсом.
Рисунок 3. Обзор рецептов
Шаблонное решение связывает несколько шаблонов вместе при помощи рецепта. Рецепт описывает ингредиенты (шаблоны и другие ресурсы) и подход к совместному их использованию для решения проблемы. Реализация шаблонного решения содержит службы, компоненты и другие программные артефакты, которые реализуют шаблон, руководствуясь рецептом.
Установка среды Rational Software Architect
Теперь, когда мы изучили теорию, давайте перейдем к практике. В этой серии статей мы будем использовать Rational Software Architect, поэтому, если у вас нет этой системы, установите ее (ссылка приведена в разделе "Ресурсы"). Rational Software Architect должен быть обновлен до последнего пакета исправлений 6.0.1.1 (на момент написания данной статьи). Rational Software Architect может быть легко обновлен из меню Help > Software updates > IBM Rational Product Updater.
Прежде всего, нужно установить RAS-клиент в Rational Software Architect. Этот RAS-клиент будет использоваться для доступа к удаленному RAS-репозиторию. RAS-репозиторий, который мы будем использовать, является RAS-репозиторием, размещаемым на dW. Повторно используемые ресурсы, применяемые в данной статье, хранятся в этом репозитории, и мы будем постоянно обращаться к нему на протяжении всей серии статей.
Для установки клиента Rational Software Architect необходимо следующее:
- Запустите Rational Software Architect. Если вы делаете это впервые, отобразится экран с приглашением.
- Перейдите в Windows > Open Perspective > Other. Затем выберите перспективу Rational Software Architect (Reusable Asset) (возможно, придется выбрать Show All, чтобы его увидеть), как показано на следующем рисунке:
Рисунок 4. Перспективы Rational Software Architect
- Откроется вид перспективы RAS:
Рисунок 5. Вид перспективы RAS
- Одной из прекрасных возможностей Eclipse, которая здесь доступна, является возможность создания пиктограммы этой перспективы:
- Для этого щелкните правой кнопкой мыши по полосе окна перспективы и выберите fast view из ниспадающего списка.
- Создастся пиктограмма перспективы Rational Software Architect справа от главного окна Rational Software Architect. Также есть возможность создать пиктограмму нижних окон Rational Software Architect.
- Нажмите эту пиктограмму для показа данной перспективы, которая исчезнет при потере окном фокуса ввода.
- Это помогает хранить рабочую область чистой и свободной от помех, что вы оцените далее по мере чтения статей данной серии.
- Затем установите удаленный репозиторий Rational Software Architect для подключения. Щелкните правой кнопкой мыши в любом месте перспективы RAS и выберите New Repository. Выберите вариант DeveloperWorks Repository; для полей Repository name и URL будут выведены следующие значения:
- Name: "IBM developerWorks Rational Software Architect Repository"
- URL: http://www.ibm.com/developerworks/product/rational/rsa/ras
Рисунок 6. Создание нового RAS-репозитория
- Клиент Rational Software Architect установлен и мы можем просмотреть репозиторий.
- Поскольку мы используем рецепты, то должны сначала указать Rational Software Architect, что с ними делать. В будущих версиях Rational Software Architect будет встроена возможность распознавать рецепты сразу. Однако это хороший пример использования RAS-ресурса для расширения текущих возможностей Rational Software Architect. В структуре dW RAS-репозитория перейдите к папке
./tools/rasfolder и выберите ресурс Solution Guide. Нажмите правой кнопкой мыши на assets и выберите import. При этом загрузится и установится подключаемый модуль eclipse, который даст возможность Rational Software Architect распознавать рецепты. Перезапустите Rational Software Architect после завершения установки.
Рисунок 7. Импорт Solution Guide для Rational Software Architect
- Теперь мы можем загрузить рецепт. Снова в репозитории Rational Software Architect dW перейдите в папку
./design_soa/recipesи выберите ресурс "SOA Implementation and Optimization of Services Recipe". Щелкните правой кнопкой мыши по рецепту; в контексте есть вариант "open solution guide". Примечание: из-за ошибки в текущем подключаемом модуле "solution guide" сначала нужно импортировать рецепт в вашу рабочую область. Для этого щелкните правой кнопкой мыши по рецепту и выберите Import. После подтверждения лицензионного соглашения в рабочую область будет импортирован рецепт полностью. Перейдите в вид Navigator, щелкните правой кнопкой мыши по рецепту и выберите Solution Guide > Open Solution Guide View. Это откроет рецепт и позволит вам просматривать содержимое и структуру рецепта в рабочей области. Эта возможность доступна потому, что Solution Guide, требуемый для распознавания рецептов в Rational Software Architect, был уже установлен на предыдущем шаге.
Рисунок 8. Открытие Solution Guide
- Рецепт "SOA Implementation and Optimization of Services" теперь доступен для просмотра в Rational Software Architect. Мы будем использовать этот рецепт до конца данной серии статей, предоставляя оперативное руководство по разработке служб. Часто полезно переместить это окно вниз экранной палитры Rational Software Architect.
- В разделе Загрузка приведена ссылка на flash-ролик с подробным показом всех описанных выше действий.
Рисунок 9. Рецепт "SOA Implementation and Optimization of Services"
Функциональность Rational Software Architect была расширена при помощи повторно используемого ресурса, который был загружен из удаленного RAS-репозитория. Рецепт, используемый при создании SOA-служб, тоже был загружен из удаленного RAS-репозитория и доступен для предоставления оперативного руководства, передового опыта и шаблонов, помогающих создать эти службы.
Интеграция Requisite/Pro RSA/RSM
Для максимально эффективного использования этих статей вы должны интегрировать Requisite Pro с Rational Software Architect. Для этого на вашей системе должен быть установлен Rational Requisite Pro (ссылка приведена в разделе "Ресурсы".) Rational Software Architect поставляется с минимальной разрешенной функциональностью. Для разрешения более развитых возможностей Rational Software Architect перейдите в Windows > Preferences > Workbench >Capabilities и разрешите параметр Requirement Management.
- Запустите Rational Software Architect. Если это делается впервые, отобразится окно с приветствием.
- Перейдите в Windows > Open Perspective > Other > Requirements.
- В Rational Software Architect откроется новая перспектива "requirement explorer" (менеджер требований).
Рисунок 10. Вид Requisite Pro
- Этот менеджер требований может быть использован для открытия простого файла Requisite Pro, который будет использован в этой серии статей.
- Файл Requisite Pro также упакован в виде RAS-ресурсов и может быть получен путем перехода в
./design_soa/requirementsв RAS-репозитория dW. Снова щелкните правой кнопкой мыши по ресурсу, но в этот раз в появившемся контексте выберите вариант download. Причина заключается в том, что пока Rational Software Architect не знает, что делать с файлом Requisite Pro. Вместо этого вы загружаете zip-файл на диск. Этот тестовый Requisite Profile прикреплен ниже (см. раздел "Загрузка"). - Разархивируйте проект Requisite Pro в файловой системе, укажите его в менеджере требований Rational Software Architect и откройте.
Рисунок 11. Окно Requisite Pro
Rational Software Architect теперь настроен на чтение и запись этого Requisite Profile.
Это была краткая экскурсия по рецептам, шаблонам и повторно используемым ресурсам. Были представлены основные понятия и установлены взаимоотношения между ними. Мы настроили Rational Software Architect на просмотр удаленного репозитория ресурсов на dW. Для распознавания рецептов в Rational Software Architect был использован ресурс. Мы обратились к ресурсу "SOA Implementation and Optimization Recipe" в данном репозитории. Rational Software Architect был также интегрирован с Requisite Pro, а в качестве ресурса был загружен тестовый файл Requisite Pro, который был открыт в Rational Software Architect для чтения и записи требования/варианта использования.
Теперь среда настроена на использование рецепта "SOA Implementation and Optimization of a Service Recipe" с рекомендованным примером в SOA-приложении. Этот рецепт даст оперативное руководство по использованию нефункциональных требований в MDD-среде для определения шаблонов, которые должны быть применены для построения архитектурно законченного приложения. В следующей статье вы познакомитесь с рекомендованным примером и узнаете, как можно скомбинировать Rational Unified Process и MDD-подход с повторно используемыми ресурсами.
| Описание | Имя | Размер | Метод загрузки |
|---|---|---|---|
| Requisite Pro file for the recipe | IBMAutomotive.zip | 167KB | HTTP |
| Flash movie for this article | Setup_RAS_and_ReqPro.zip | 2.9MB | HTTP |
Научиться
- Оригинал статьи "Building SOA applications with reusable assets: Reusable assets, recipes, and patterns".
- Стандарт OMG Reusable Asset Specification, version 2.2.
-
Посетите зону SOA и Web-служб developerWorks для приобретения дополнительного опыта.
-
Посетите IBM's Pattern Solutions и познакомьтесь с текущими работами IBM по шаблонам и повторно используемым ресурсам.
-
Следите за техническими событиями и Web-конференциями developerWorks.
Получить продукты и технологии
-
Загрузите пробную версию Rational RequisitePro Rational RequisitePro V2003.06.15.
-
Загрузите пробную версию Rational Software Architect Rational Software Architect V6.0.
-
Используйте в вашем следующем проекте пробное программное обеспечение IBM, доступное для загрузки с сайта developerWorks.
-
IBM Alphawork предоставляет рекомендованную реализацию RAS, называемую Reusable Asset Specification Repository for Workgroups. Она доступна для загрузки на сайте alphaWorks.
Обсудить
-
Примите участие в блогах developerWorks и подключайтесь к сообществу developerWorks.

Грант Ларсен (Grant Larsen), главный архитектор управления ресурсами для программного обеспечения IBM Rational, преобразует основанные на ресурсах стратегии разработки в процессы, стандарты, инструментарий и повторно используемые ресурсы, такие как шаблоны для повышения эффективности инвестиций, в программное обеспечение.

Доктор Эоин Лэйн (Eoin Lane), главный инженер решений, руководит выборкой (и разработкой) шаблонов приложений из ключевых SOA-проектов IBM, а также прохождением этих шаблонов через процесс управления шаблонами IBM для ускорения их принятия. Также, для содействия SOA-разработке Эоин специализируется в Model Driven Development (MDD) (основанной на ресурсах разработке) и Reusable Asset Specification (RAS).