Моделируем сервис-ориентированную архитектуру при помощи IBM Rational Software Architect: Часть 2. Моделирование предметной области бизнесаИсточник: IBM Developerworks Россия Грегори Ходжкинсон, ведущий специалист по SOA, 7irene (IBM Tier 1 Business Partner) & Бертран Портье, IT-архитектор, IBM
Перед началом работыВам следует знать, что предлагает наше учебное руководство, и как извлечь из его изучения как можно больше полезных знаний и навыков. О данной серииВ этой серии из нескольких статей рассказывается о том, как моделировать сервис-ориентированные архитектуры (SOA) при помощи IBM®Rational® Software Architect. Хотя изначально это программное решение предназначалось для разработчиков архитектуры программного обеспечения и для поддержки их деятельности, оно может оказаться полезным также специалистам, выполняющим другие роли в процессе разработки программного обеспечения, в том числе тем, кто вносит свой вклад в разработку архитектуры ПО, например, бизнес-аналитикам или тем, кто использует эту архитектуру в качестве отправной точки собственной деятельности, например, проектировщикам программного обеспечения и разработчикам (занимающимся реализацией архитектуры, проектированием и созданием ПО). Кроме того, в этой серии объясняются многие основные концепции SOA, которые могут заинтересовать и других специалистов. Эти учебные руководства концентрируются на трех темах:
В части 1 описывается архитектура программного обеспечения и определяется место сервисов в ней. Затем рассказывается о программном продукте Rational Software Architect и его функциях и инструментах, имеющих отношение к SOA- и архитектуре. Учебный пример с воображаемым бизнесом по прокату DVD-дисков через интернет, который используется на протяжении всей серии статей, помогает проиллюстрировать главные задачи:
О данном учебном руководствеВ части 1 мы представили учебный пример "Прокат видеодисков", который используется во всех учебных руководствах данной серии. Затем мы поместили архитектуру сервиса в инфраструктуру IBM Rational Unified Process (RUP) и для справки рассказали об IBM SOA Solution Stack. Наконец, мы упомянули о различных рабочих продуктах, которые были использованы как исходные при построении архитектуры сервиса, а затем воспользовались учебным примером для того, чтобы продемонстрировать два из таких продуктов: модель архитектуры бизнеса (описана в части 1 как компонентная бизнес-модель) и модель бизнес-процесса . Модель архитектуры бизнеса и модель бизнес-процесса представляют собой этапы моделирования по принципу "сверху вниз". Во второй части серии мы описываем следующую по порядку модель: модель предметной области . ЦелиИзучив данное учебное руководство, вы сможете:
Необходимые условияЧтобы извлечь максимум пользы из этого учебного руководства, очень полезно (но не обязательно) иметь представление о трех концепциях:
Мы настоятельно рекомендуем вам изучить часть 1 данной серии учебных руководств прежде, чем перейти к данной части. Требования к системеRational Software Architect версии 7 (рекомендуется пакет исправлений fix 002 или более поздняя версия) Работа с предметной областью бизнесаМы уже очень коротко упоминали о модели предметной области в части 1 этой серии. Напомним, что это краткое определение было таким: "консолидированное представление бизнес-информации". Ниже мы приводим более полное определение из IBM Terminology: модель, в которой фиксируются самые важные типы объектов в контексте предметной области. Объекты предметной области представляют собой имеющиеся сущности или события, происходящие в среде, в которой работает система. Модель предметной области является подмножеством модели анализа бизнеса. Любое из двух определений может подчеркнуть важную роль, которую модель предметной области играет в определении конфигурации архитектуры сервиса. Это станет очевидным после того, как мы рассмотрим методики, используемые для применения знаний предметной области (зафиксированных в предметной области) к архитектуре сервиса в части 3 этой серии учебных руководств. В этом разделе мы подробно рассмотрим фиксацию (запись) знаний предметной области. Позиционирование модели предметной областиВ инфраструктуре IBM Rational Unified Process (RUP) предметная область - это рабочий продукт, принадлежащий к дисциплине Business Modeling, в рамках которой она иногда описывается как вариант модели анализа бизнеса. В терминах RUP модель предметной области "описывает информационный контент организации". Она принадлежит к роли Аналитик Бизнес-процесса и чаще всего создается на начальном этапе проектирования в стиле RUP. Модель предметной области можно рассматривать как представление визуализации (визуального представления) структурных отношений между бизнес-факторами, которые описываются в бизнес-глоссарии рабочего продукта. Мы рассматриваем модель предметной области как один из рабочих продуктов, создаваемых в ходе применения принципа моделирования "сверху вниз", наряду с моделью бизнес-процесса и моделью архитектуры бизнеса.. Как убедиться, что решение адекватноДисциплина Business Modeling в RUP поставляет набор моделей бизнеса, призванных улучшить наше понимания структурных и поведенческих аспектов бизнеса. Как разработчикам ИТ-систем, это нужно нам для того, чтобы иметь определенный контекст для создаваемых систем. Кроме всего прочего, как мы могли бы узнать, что разрабатываемые ИТ-системы и бизнес, для поддержки которого они разрабатываются, соответствуют друг к другу, если у нас нет ясного представления об этом бизнесе? Поэтому именно указанная потребность в "хорошем соответствии" и определяет цель бизнес-моделирования. На рисунке 1 представлена схема обратного анализа, на которой от ИТ-системы к рабочим продуктам, созданным на этапах бизнес-моделирования "сверху вниз", проведены соединительные линии (в терминах RUP рабочие продукты на этом рисунке определены как продукт или решение ). Эти соединительные линии полезны при оценке качества соответствия вашей ИТ-системы.
Мы определили бы значение этих линий от продукта/решения следующим образом:
И еще одно замечание по поводу схемы обратного анализа к модели предметной области: если что-то и было усвоено в области разработки программного обеспечения за эти годы, то это положение о том, что если программное обеспечение строится на элементах, имеющих значение в данной предметной области, то оно будет иметь хорошее качество - как свидетельствует наследие идей, передающихся через поколения OO (объектно-ориентированной), CBD (компонентной разработки), а теперь и SOA. Следовательно, мы придаем большое значение модели предметной области, потому что она непосредственно влияет на качество программного обеспечения в процессе разработки. Заключительное замечание о значении модели предметной области. Создание модели предметной области в Rational Software Architect Модели предметных областей, без сомнения, являются самыми простыми из всех моделей UML, которые мы предполагаем создать в данной серии учебных руководств. По сути, в этом разделе она является примером для описания ряда основных средств и функций UML-моделирования в Rational Software Architect. Для начала работы:
Параметры UML Project после этого должны выглядеть так, как на рисунке 2. Рисунок 2. Создание нового проекта
Совет: Теперь в этом проекте нужно создать предметную область.
Теперь в нашем проекте SOA Tutorial есть пустая предметная область, показанная на рисунке 3. Рисунок 3.Только что созданная, но незаполненная предметная область
Теперь необходимо придать этой предметной области определенную структуру. Это можно сделать, создав пакет для предметной области, которую мы будем моделировать. Какая именно предметная область нам нужна? В бизнес-процессе Return Video, моделирование бизнес-процессов, описанное в части 1, сосредоточено на компоненте функциональной области Online Rentals. Изучив схему архитектуры бизнеса (рисунок 6 в части 1), можно заметить, что функциональная область является частью предметной области Rental. Значит, предметная область, на которой мы сконцентрируемся, это предметная область Rental. Создание пакета предметной областиХорошая идея - структурировать модель предметной области в соответствии с предметной областью бизнеса, потому что объем детализации модели предметной области будет постепенно расти по мере рассмотрения все новых и новых бизнес-процессов. Это можно осуществить, создав пакет для каждой идентифицированной предметной области, которую нужно смоделировать. Мы уже знаем, что начнем с предметной области Rental, поэтому сейчас создадим пакет предметной области для нее.
Теперь у нас есть модель предметной области с пакетом предметной области Rental и диаграмма Rental Domain, показанные на рисунке 4, которые готовы принять информацию предметной области. Рисунок 4. Пакет предметной области Rental Использование первоначальной модели предметной области, созданной на этапе бизнес-моделированияВ части 1 в роли бизнес-аналитика вы создали проект WebSphere Business Modeler (WebSphere modeler), чтобы моделировать бизнес-процессы в рамках этого проекта. При этом мы определили набор бизнес-объектов внутри пакета IBM WebSphere Business Modeler, который получил название Business items (Рисунок 5). Рисунок 5. Дерево проекта DVD Rental в WebSphere modeler DVD Rental
Теперь мы воспользуемся одной из функций интеграции Rational Software Architect WebSphere modeler (мы имеем в виду функцию интеграции WebSphere modeler, которая является компонентом Rational Software Architect) для открытия проекта WebSphere из Rational Software Architect, чтобы можно было просмотреть его как UML.
Обозреватель проектов Project Explorer в вашей рабочей области должен выглядеть так же, как на рисунке 6. Рисунок 6. Проект DVD Rental, импортированный в Rational Software Architect
Рисунок 7. Дерево проекта DVD Rental, развернутое в Project Explorer
Нас особенно интересует пакет Business items. В этом простом примере есть только один элемент модели, Video. Обратите внимание на то, что UML-стереотип << В следующем разделе мы используем бизнес-сущность Video, чтобы проложить к ней трассируемую связь от класса предметной области Video (из модели предметной области). Моделирование классов предметной областиВы, вероятно, помните, что мы используем модель предметной области для определения структурированного представления бизнес-информации. Это делается графически, путем создания специального вида диаграммы классов , которую называют диаграммой предметной области. В этой диаграмме мы используем особый вид класса для описания отдельных элементов предметной области. Этот особый класс - класс предметной области. Другими словами, мы определим класс предметной области как "класс элементов", в ней существующих. Класс предметной области может иметь структуру, которая определяется типизированными атрибутами; кроме того, он может иметь ассоциации с другими классами предметной области. При помощи ассоциированного набора классов предметной области можно создать полезную картину структуры информации внутри предметной области бизнеса. Рассматривая бизнес-процесс Return Video в части 1, вы уже познакомились с несколькими классами предметной области. Далее мы приводим последовательность процесса, где потенциальные классы предметной области ("элементы") выделены полужирным шрифтом.
Давайте начнем с первого потенциального класса предметной области: участника системы Member.
Примечание: На рисунке 8 показано, как должна выглядеть диаграмма предметной области. Рисунок 8. Потенциальные классы предметной области
Трассируемость с моделью бизнес-процессов:класс предметной области Video в модели предметной области представляет тот же "элемент", что и бизнес-объект video в модели бизнес-процесса. Это просто другое представление на более низком уровне абстракции (более детализированное представление). Теперь можно записать это в нашу модель предметной области, добавив трассируемую связь от класса предметной области Video к бизнес-объекту Video.
На диаграмме появляется маленькая пиктограмма в виде стрелки, которая показывает, что соответствующий элемент определен не в модели предметной области, а в другой модели.
Рисунок 9. Создание трассируемой связи
Теперь наша модель предметной области содержит трассируемую связь абстракции между двумя элементами модели, которая определяет, что эти два элемента представляют один и тот же концепт на различных уровнях абстракции. Рисунок 10. Трассируемая связь абстракции Совет: Рационализация классов предметной областиТеперь давайте рассмотрим потенциальные классы предметной области, которые нужно рационализировать. В нашем примере мы сделали следующий вывод:
Результат применения этих выводов к диаграмме показан на рисунке 11. Чтобы внести эти изменения, мы:
Рисунок 11. Рационализированный набор классов предметной области Моделирование ассоциаций классов предметной областиТеперь, когда мы определили набор классов предметной области, рассмотрим ассоциации между ними. Изучив их более внимательно, мы делаем следующие заключения:
Давайте рассмотрим процедуру применения этого первого заключения к нашей модели предметной области.
Рисунок 12. Кнопка Association в представлении Palette
Результат показан на рисунке 13. Рисунок 13. Ассоциации между классами Member и VideoList
Случайно кратность этой ассоциации оказалась правильной, поэтому нам не придется ее изменять. Тем не менее, давайте подумаем о будущем и рассмотрим пример, который нуждается в изменении.
С параметрами по умолчанию получится схема, показанная на рисунке 14, из которой видно, что каждый список видеофильмов (VideoList) содержит набор только из одного названия видеофильма, а каждое название видеофильма может отображаться только в одном списке фильмов. Мы знаем, что это не соответствует действительности. Каждое название фильма может присутствовать во многих разных списках видеофильмов, и каждый список видеофильмов может включать одно или более названий видеофильмов. Это можно исправить следующим действием. Рисунок 14. Первоначальная ассоциация между VideoList и VideoTitle
Рисунок 15. Изменение ассоциации между VideoList и VideoTitle
Примечание: Рисунок 16. Добавление ассоциаций в диаграмму предметной области
Моделирование атрибутов классов предметной областиДобавив некоторые ассоциации, чтобы показать структуру предметной области, давайте дополним информацию указанием атрибутов каждого из классов предметной области. Обычно это не вызывает сложности, потому что достаточно ответить на следующий вопрос: "Как выглядит участник с информационной точки зрения?" Для этого предположим, что мы выяснили, что участник (Member) должен иметь имя пользователя, фамилию и адрес. Давайте применим это к нашей модели.
Результат показан на рисунке 17 (обратите внимание на альтернативный способ для быстрого добавления атрибутов при помощи панели действий). Рисунок 17. Member и его новые атрибуты
Результат должен быть таким, как на рисунке 18. Обратите внимание на то, что записи в списке атрибутов отображаются для ассоциаций с классами VideoList, MemberStanding и VideoCopy (первые три записи). Рисунок 18. Определение типов атрибутов
Предположим, что, продолжая работать над моделью предметной области, которую мы создали, вы решили, что неплохо бы знать точную дату и время получения каждой копии видеофильма (VideoCopy) каждым участником (Member). Этот атрибут не имеет смысла, если применить его к Member или VideoCopy. Он принадлежит ассоциации между ними. Чтобы смоделировать эту ситуацию, мы заменим ассоциацию между двумя классами предметной области пересечением классов предметной области. При помощи описанных выше шагов удалите ассоциацию между указанными классами, создайте новую предметную область с именем MemberRental и новое соединение ассоциаций MemberRental с каждым из классов Member и VideoCopy. Результат показан на рисунке 19. Рисунок 19. Новое пересечение классов предметной области MemberRental
Мы хотим добавить в MemberRental новый атрибут, который будет отображать расчетную (в соответствии с расписанием) дату и время доставки заказа MemberRental к Member. Это можно выполнить в два этапа: сначала создадим новый примитивный тип данных, чтобы с его помощью ввести новый атрибут, а затем создадим новый атрибут.
Рисунок 20. Выбор примитивного типа Timestamp
Рисунок 21. Установка значения composite для атрибута aggregation
После добавления дополнительных атрибутов текущая диаграмма предметной области будет выглядеть так, как показано на рисунке 22. Рисунок 22. Диаграмма предметной области Rental после добавления атрибутов
В MemberRental классы returnNotification, estimatedWarehouseArrival и memberComments не будут иметь значений, в начале существования MemberRental. Поэтому вам нужно пометить их как необязательные, что делается посредством определения кратности.
Рисунок 23. Настройка кратности атрибутов классов предметной области
Чтобы эта информация отображалась на диаграмме, необходимо изменить параметры фильтра отображения для предметной области MemberRental в диаграмме:
Моделирование перечислений в предметной области Иногда полезно добавить дополнительные детали в диаграмму предметной области в виде перечисления. Из справки по Rational Software Architect: "Допускается добавление в модель перечислений, которые позволяют системам программного обеспечения указывать дискретные наборы значений". В нашем примере мы используем перечисления для отображения дискретных наборов значений, существующих в данной предметной области бизнеса. На нашей диаграмме предметной области есть два участка (они показаны на рисунке 16), в которых можно заметить дискретные наборы значений:
Давайте сначала рассмотрим атрибут VideoListTitle.status. Мы создадим новое перечисление
Теперь у нас есть новое перечисление VideoListTitleStatus с возможным значением ADDED.
После этого атрибут будет отображаться на диаграмме как ассоциация с перечислением VideoListTitle.
Теперь эти перечисления существуют на диаграмме предметной области (рисунок 24). Рисунок 24. Диаграмма предметной области Rental с добавленными перечислениями
Моделирование ограничений предметной областиСложные правила можно добавить в диаграмму предметной области в форме ограничений. Еще раз обратимся к справке по Rational Software Architect: в UML-моделях ограничение - это дополнительный механизм, который позволяет уточнить семантику элементов UML-модели. Ограничение уточняет элемент модели посредством выражения условия или ограничения в текстовой инструкции, которой должен удовлетворять элемент модели. На нашей диаграмме предметной области все еще не отражены три ситуации, известные нам об этой предметной области:
Добавьте в диаграмму новое ограничение.
Результат добавления еще двух ограничений в диаграмму предметной области показан на рисунке 25. Рисунок 25. Диаграмма предметной области Rental с добавленными ограничениями Рисунок 25. Диаграмма предметной области Rental с добавленными ограничениями Дополнительные идеи по структурированию модели предметной областиТеперь наша диаграмма предметной области выглядит достаточно хорошо. Мы получили хорошее представление того, как структурирована информация, относящаяся к нашей предметной области. Тем не менее, следует отметить еще один момент: в контексте нашей карты компонентной бизнес-модели, показанной в части 1 этой серии, сейчас имеются два класса предметной области, смоделированных в составе предметной области Rental, которые, вероятно, больше подошли бы к предметной области Warehousing. Это такие классы предметной области, как Warehouse и WarehouseStock. Давайте исправим это упущение.
Результат показан на рисунке 26. Рисунок 26. Пакет новой предметной области Warehousing
После размещения элементов предметной области Warehousing на диаграмме предметной области Warehousing мы получим результат, показанный на рисунке 27. Рисунок 27. Предметная область Warehousing
В результате мы удаляем эту информацию из диаграммы предметной области Rental. Теперь, когда мы удовлетворены результатами полностью выполненной работы по моделированию этих двух предметных областей, можно переключиться на принцип "снизу вверх" и уделить особое внимание моделям внешних систем (в следующей части данной серии). Что дальше?В этом учебном руководстве представлена всесторонняя информация о том, как моделировать "консолидированные представления бизнес-информации" при помощи моделей предметных областей. В нем объясняется необходимость разработки модели предметной области с учетом SOA-решения в смысле нацеленности на "качество соответствия". В ней подробно описывается создание модели предметной области в Rational Software Architect, начиная с набора бизнес-объектов в WebSphere Business Modeler и заканчивая соотнесением модели предметной области с этими бизнес-объектами. Мы рассказали о моделировании предметной области, включая классы предметной области, ассоциации, атрибуты, перечисления и ограничения. Модели предметной области представляют собой третий уровень моделей при разработке "сверху вниз" , о которой мы рассказываем в этой серии учебных руководств, еще два уровня - это модель архитектуры бизнеса и модель бизнес-процесса . В части 3 мы рассмотрим последовательность действий снизу вверх , для чего познакомим вас с моделью, которую можно использовать для фиксации информации о программном обеспечении, не использующем SOA и нуждающемся в интеграции в вашу систему. После этого мы рассмотрим моделирование требований к решению и, в завершение, моделирование архитектуры и проекта решения. |