Тинни Нг (Tinny Ng), инженер-разработчик, IBM Toronto
Оглавление
Введение
IBM Rational Software Architect представляет собой интегрированное средство проектирования и разработки, объединяющее в одном инструменте средства создания архитектуры, проектирования и разработки. Данное инструментальное средство включает все функции:
- Rational Application Developer - средство разработки, позволяющее выполнять разработку J2EE, XML, Web-сервисов и т.д.;
- Rational Software Modeler - средство моделирования, позволяющее визуально моделировать системы и приложения с помощью нотации Unified Modeling Language (UML).
Rational Software Architect объединяет эти средства, пакет создан на основе открытой и расширяемой платформы Eclipse, использующей несколько промышленных стандартов.
Rational Software Architect главным образом используется разработчиками ПО в группах разработки для определения и сопровождения всех аспектов программной архитектуры приложения. Поддержка UML 2.0 позволяет пользователям регистрировать и обмениваться всеми аспектами архитектуры приложения с помощью стандартной нотации. Для определения и реализации приложений можно использовать шаблоны и преобразования.
Rational Software Architect поддерживает расширенный список функций, что отличает этот программный продукт от конкурирующих пакетов. В следующей таблице представлены некоторые ключевые различия. Первые три различия проиллюстрированы в следующем примере. В упражнении содержатся подробные инструкции по проектированию приложения с использованием UML-диаграмм, публикации информации о модели на Web-странице и преобразовании проекта в кода Java с помощью Rational Software Architect.
Таблица 1. Некоторые основные функции Rational Software Architect
Функция |
Преимущество |
Поддержка моделирования UML 2.0 для анализа и проектирования с использованием диаграмм прецедентов, классов, циклограмм, диаграмм активности, составных структур, машин состояния, диаграмм связей, компонентов и развертывания. |
UML 2.0 позволяет регистрировать и обмениваться всеми аспектами архитектуры приложения с помощью стандартной нотации, принятой многими различными заинтересованными лицами. |
Формирование из UML-проектов отчетов в форматах HTML, PDF и XML. |
Создание отчетов и документации, которую могут просматривать члены команды или заинтересованные лица. |
Использование преобразований для генерации кода Java, C++ или Enterprise JavaBeans |
Автоматизация повторяющихся задач по генерации кода из моделей проекта. Преобразования можно настраивать в соответствии с шаблонами генерации кода, принятыми в организации. |
Редактирование UML-диаграмм классов для кода Java, EJB и объектов базы данных. |
Использование нотации UML для создания абстрактных представлений кода Java, EJB и объектов базы данных для упрощения разработки и осмысления новых и существующих приложений. |
Визуализация тел Java-методов с использованием циклограмм UML 2.0. |
Использование конструкторов циклограмм UML 2.0 для представления потока Java-метода. |
Web-сервисы, совместимые с WS-I, и сервис-ориентированные архитектуры. |
Интеграция бизнес-приложений. |
Применение пользовательских шаблонов и преобразований. |
Предоставление организациям возможности регистрировать и продвигать "рецепты", которые можно использовать для увеличения предсказуемости и повторяемости разработки программного обеспечения. Функции по созданию и применению позволяют группам выполнять "разработку для повторного использования" и "разрабатывать с повторным использованием". |
Asset Browser для доступа к повторно используемым ресурсам. |
Поддержка OMG Reusable Asset Specification и поддержка пользователей при обзоре хранилищ с повторно используемыми ресурсами. Хранилища можно структурировать для упрощения поиска ресурсов. |
Открытый API для поддержки настройки и расширения среды моделирования. Создание и редактирование UML-профилей для настройки свойств, хранимых в UML-моделях. |
Организации могут разрабатывать модули настройки средств анализа и проектирования в соответствии с собственной средой и технологическими процессами. Поддержка создания экосистемы, позволяющей поставщикам разрабатывать средства интеграции. |
Конфигурация RUP для Software Architect с контекстно-зависимыми и динамическими инструкциями по процессу. |
Инструкции по процессу и помощь пользователям предоставляются динамически по мере использования средства. |
Как Rational Software Architect совместим с SOA?
Сервис-ориентированная архитектура (SOA) представляет собой архитектурный стиль для создания распределенных систем, поставляющих в виде сервисов функции приложений для конечных приложений или для создания других сервисов. Это позволяет клиентам быстро и легко создавать сложные приложения и решения с помощью сборки новых и существующих сервисов. Любую бизнес-функцию в компании можно реализовать в виде сервиса, который можно интегрировать с другими сервисами в соответствии с бизнес-требованиями компании. В любой отрасли промышленности компании ищут способы более быстрого и эффективного реагирования на изменения рыночных условий. Для достижения такого уровня гибкости бизнеса многие компании применяют SOA для разработки сервис-ориентированных приложений
Начать работать с SOA просто при использовании IBM SOA Foundation - интегрированного, основанного на открытых стандартах набора программного обеспечения, использующего для сервис-ориентированной архитектуры передовой опыт и шаблоны. Программа, содержащая IBM SOA Foundation, поддерживает все четыре этапа жизненного цикла SOA: моделирование, сборка, развертывание и управление. В основе этих этапов жизненного цикла лежат управление и процессы, предоставляющие инструкции и контроль для проекта SOA.
![Жизненный цикл SOA](/iarticle/img/1510_1.gif)
Рис. 1. Жизненный цикл SOA
IBM Rational Software Architect, являясь надежным и многофункциональным средством проектирования и разработки, входит в состав IBM SOA Foundation и поддерживает этап моделирования жизненного цикла SOA. Пакет является частью сервисов разработки SOA Reference Architecture и предоставляет компаниям средства, необходимые для моделирования сервис-ориентированных приложений.
![SOA Reference Architecture](/iarticle/img/1510_2.gif)
Рис. 2. SOA Reference Architecture
Rational Software Architect позволяет разработчикам структуры ПО визуально моделировать и проектировать гибкую архитектуру сервисов с помощью открытого стандартного универсального языка моделирования (UML) и автоматически применять шаблоны проектирования для SOA от анализа и разработки до внедрения. Кроме того, имеются различные новые ресурсы проектирования SOA, доступные в виде модулей Rational Software Architect, облегчающие проектирование решений в сервис-ориентированном мире.
Что такое UML?
UML впервые разработан группой Object Management Group (OMG) в 1997, текущая версия языка - 2.0. UML создан для предоставления сообществу разработчиков стабильного общего языка проектирования, который можно использовать для разработки и построения приложений. Этот язык моделирования является программно-независимым.
UML предоставляет различные диаграммы, позволяющие пользователям регистрировать и обмениваться всеми аспектами архитектуры приложения с помощью стандартной нотации, понятной для различных заинтересованных лиц. Существует 13 официальных диаграмм UML 2.0, каждая из которых представляет собой различное представление разных аспектов системы:
- Диаграмма активности;
- Диаграмма классов;
- Диаграмма связей;
- Диаграмма компонентов;
- Диаграмма составных структур;
- Диаграмма развертывания;
- Диаграмма обзора взаимодействий;
- Диаграмма объектов;
- Диаграмма пакетов;
- Циклограмма;
- Диаграмма машин состояния;
- Диаграмма синхронизации;
- Диаграмма прецедентов.
Проектирование приложения телефонной книги
В данном упражнении проектируется довольно простое приложение телефонной книги (см. рисунок 3), в котором хранятся введенные пользователями номера телефонов.
![Приложение телефонной книги](/iarticle/img/1510_3.gif)
Рис. 3. Приложение телефонной книги
Прежде всего:
- Запустите Rational Software Architect, если он еще не запущен: В меню Windows выберите Пуск > Программы > IBM Rational > IBM Rational Software Architect v6.0 > Rational Software Architect;
- Открывается диалоговое окно с запросом на папку рабочего пространства. Нажмите OK для выбора настроек по умолчанию.
Создание UML-проекта
Создайте UML-проект с именем MyPhoneBookUMLProject:
- В меню модуля выберите File > New > Project > Other;
- Выберите UML Project и нажмите Next;
- Введите
MyPhoneBookUMLProject
в качестве имени проекта и нажмите Next;
- Задайте имя файла
Phone Book UML Model
UML-модели, снимите флажок Create a default diagram in the new model и нажмите Finish.
Создание диаграммы прецедентов
Диаграмма прецедентов моделирует поведение системы и позволяет зарегистрировать требования. Диаграмма определяет взаимодействия между системой и ее действующими лицами и определяет область действия системы.
Действующее лицо
Представляет роль пользователя, взаимодействующего с системой. Пользователем может быть человек, организация, компьютер или другая внешняя система.
- Прецедент
Описывает функцию, которую выполняет система для достижения цели пользователя. Прецедент должен возвращать видимый результат, имеющий значение для пользователя системы.
Показанные в диаграмме прецеденты и действующие лица описывают, что делает система, и как это используют действующие лица, а не внутренний процесс работы системы. Чтобы связать действующее лицо и прецедент, для указания связи между двумя элементами модели можно создать отношение сопоставления .
Предположим, что для нашего простого приложения телефонной книги имеется только одно действующее лицо Any User, которое может выполнять следующие два прецедента относительно системы:
- Добавление записи
Ввод уникального имени абонента и номера телефона с помощью пользовательского интерфейса, предоставляемого приложением. Система обрабатывает введенные данные и сохраняет их.
Поиск номера телефона
Получение номера телефона по вводу уникального имени абонента с помощью пользовательского интерфейса, предоставляемого приложением. Система находит номер телефона и возвращает его действующему лицу.
Создание диаграммы прецедентов со списком двух прецедентов:
- В панели Model Explorer нажмите правой кнопкой мыши Phone Book UML Model и выберите Add Diagram > Use Case Diagram;
![Добавление диаграммы прецедентов](/iarticle/img/1510_4.jpg)
Рис. 4. Добавление диаграммы прецедентов
-
Введите User Case Diagram
в качестве имени сгенерированной диаграммы, заменив имя по умолчанию Diagram1. Теперь можно построить диаграмму прецедентов с помощью добавления с панели Palette на диаграмму различных элементов моделей;
![Добавление элементов модели](/iarticle/img/1510_5.jpg)
Рис. 5. Добавление элементов модели
- Выберите Actor в панели Palette, затем нажмите кнопку мыши в области диаграммы для создания действующего лица. Назовите его
Any User
;
- Выберите Use Case в панели Palette, затем нажмите кнопку мыши в области диаграммы для создания прецедента. Назовите его
Add an entry
;
- Таким же образом создайте другой прецедент и назовите его Search for a phone number;
- Выберите Association в панели Palette. Начертите линию отношения сопоставления от действующего лица Any User к прецеденту Add an entry для создания отношения между двумя элементами модели;
- Таким же образом создайте другое отношение сопоставления между действующим лицом Any User и прецедентом Search for a phone number;
- Полностью диаграмма прецедентов должна выглядеть так, как показано на рисунке 6. Нажмите Ctrl-S для сохранения диаграммы.
![Созданная диаграмма прецедентов](/iarticle/img/1510_6.jpg)
Рис. 6. Созданная диаграмма прецедентов
Создание диаграммы классов
Диаграммы классов представляют собой чертежи системы. Диаграммы классов используются для моделирования объектов, составляющих систему, для представления отношений между объектами и для описания выполняемых объектами действий и предоставляемых ими сервисов.
Спроектируем простое приложение телефонной книги с использованием шаблона архитектуры Model-View-Controller (MVC) (см. рисунок 7). Будут созданы следующие три класса:
PhoneBookModel
- Класс управления записями телефонной книги и регистрации состояния приложения. При изменении состояния уведомляется класс PhoneBookView
, который затем на основании состояния приложения обновляет пользовательский интерфейс;
PhoneBookView
- Класс, управляющий графическим или текстовым интерфейсом пользователя на основании состояния приложения, и уведомляющий класс PhoneBookController
при приеме входных данных;
PhoneBookController
- Класс, управляющий работой всего приложения. Класс изменяет состояние модели приложения и обновляет модель данных на основе ввода пользователей.
Цель данного упражнения - показать использование Rational Software Architect при проектировании приложения. На самом проектировании внимание не сосредоточено, можно использовать различные проекты.
![Проектирование MVC](/iarticle/img/1510_7.gif)
Рис. 7. Проектирование MVC
Создадим диаграмму классов, отображающую проект, представленный на рисунке 7.
- В панели Model Explorer нажмите правой кнопкой мыши Phone Book UML Model и выберите Add Diagram > Class Diagram;
- Введите
Class Diagram
в качестве имени сгенерированной диаграммы, заменив имя по умолчанию Diagram1;
- Выберите Class в панели Palette, затем нажмите кнопку мыши в области диаграммы для создания класса. Назовите его
PhoneBookModel
;
- Нажмите правой кнопкой мыши созданный класс PhoneBookModel и выберите Add UML > Operation для создания операции для данного класса. Назовите ее
setState
;
- Таким же образом создайте остальные элементы, представленные в таблице 2. Имена операций выбраны без привязки к какому-либо языку программирования;
Таблица 2. Информация о классах
Класс |
Операции |
PhoneBookModel |
addAnEntry searchPhoneNumber getSearchResult getState |
PhoneBookView |
stateHasChanged changeView getUserInput |
PhoneBookController |
userHasInput start |
- Теперь создайте некоторые сопоставления для связи этих трех классов. Как показано на рисунке 8, нажмите стрелку рядом с командой Association в панели Palette и выберите Directed Association;
![Приложение телефонной книги](/iarticle/img/1510_8.jpg)
Рис. 8. Направленное отношение сопоставления
- Нарисуйте линию направленного отношения сопоставления от класса PhoneBookController к PhoneBookModel (порядок имеет значение) для создания отношения Directed Association между этими двумя классами. Отношение направленного сопоставления означает, что первый элемент знает о втором элементе, но не наоборот;
- Таким же образом создайте следующие отношения:
- Создание отношение сопоставления между классами PhoneBookModel и PhoneBookView;
- Создание отношение сопоставления между классами PhoneBookView и PhoneBookController.
Отношение сопоставления без направления означает, что два соединяемых класса знают друг о друге;
- Полностью диаграмма классов должна выглядеть так, как показано на рисунке 9. Нажмите Ctrl-S для сохранения диаграммы.
![Созданная диаграмма классов](/iarticle/img/1510_9.jpg)
Рис. 9. Созданная диаграмма классов
Создание циклограммы
Циклограммы в UML показывают хронологическую последовательность сообщений при взаимодействии экземпляров. Циклограмма состоит из взаимодействия, представленного линиями связи и сообщениями, которыми они обмениваются при взаимодействии.
В этом разделе будет реализован прецедент "Поиск номера телефона" и показано связанное взаимодействие с использованием циклограммы. Прецедент запускается действующим лицом Any User, использующим интерфейс, предоставленный классом PhoneBookView
для запроса на поиск. Класс PhoneBookView
уведомляет класс PhoneBookController
о запросе пользователя. PhoneBookController
затем обновляет модель данных, хранимую в классе PhoneBookModel
. Так как модель изменена, класс PhoneBookModel
уведомляет PhoneBookView
, который затем обновляет пользовательский интерфейс в соответствии с последним состоянием приложения.
- В панели Model Explorer нажмите правой кнопкой мыши Phone Book UML Model и выберите Add Diagram > Sequence Diagram;
- Введите
Sequence Diagram
в качестве имени сгенерированной диаграммы, заменив имя по умолчанию Diagram1;
- Перетащите действующее лицо Any User из панели Model Explorer на диаграмму, чтобы создать экземпляр действующего лица (см. рисунок 10). Таким же образом создайте экземпляры классов PhoneBookView, PhoneBookController и PhoneBookModel, перетащив их на диаграмму;
![Перетаскивание элементов модели на циклограмму](/iarticle/img/1510_10.jpg)
Рис. 10. Перетаскивание элементов модели на циклограмму
- Выберите Asynchronous Message в панели Palette. Как показано на рисунке 11, выберите линию под элементом any User: Any User, а затем - линию под phoneBookView:PhoneBookView;
![Создание линии сообщений](/iarticle/img/1510_11.jpg)
Рис. 11. Создание линии сообщений
- Выберите из раскрывающегося списка операцию PhoneBookView::getUserInput().
![Выбор операции для линии сообщений](/iarticle/img/1510_12.jpg)
Рис. 12. Выбор операции для линии сообщений
- Таким же образом создайте следующие линии асинхронных сообщений, показанные в таблице 3. Чтобы создать асинхронное сообщение для собственного вызова, просто нажмите кнопку мыши в строке экземпляра без всякого перетаскивания;
Таблица 3. Линии сообщений для циклограммы
Из экземпляра |
К экземпляру |
Операция |
phoneBookView |
phoneBookController |
PhoneBookController::userHasInput() |
phoneBookController |
phoneBookModel |
PhoneBookModel::searchPhoneNumber() |
phoneBookController |
phoneBookModel |
PhoneBookModel::setState() |
phoneBookModel |
phoneBookView |
PhoneBookView::stateHasChanged() |
phoneBookView |
phoneBookModel |
PhoneBookModel::getSearchResult() |
phoneBookView |
phoneBookView |
PhoneBookView::changeView() |
- Созданная циклограмма представлена на рисунке 13. Выберите File > Save All.
![Созданная циклограмма](/iarticle/img/1510_13.jpg)
Рис. 13. Созданная циклограмма
Публикация проекта
Публикуя информацию о модели, ее можно совместно использовать с другими пользователями, не имеющими средства моделирования. Rational Software Architect поддерживает две функции публикации:
- Публикация моделей на Web-странице
- Публикация отчета информации о модели
Публикация проекта на Web-страницу:
- Выберите Phone Book UML Model в панели Model Explorer. Выберите Modeling > Publish > Web;
![Публикация проекта на Web-странице](/iarticle/img/1510_14.jpg)
Рис. 14. Публикация проекта на Web-странице
- Укажите целевое местоположение создаваемых HTML-файлов, например, C:\HelloWorldSeries\RSA_Web в меню (Download), затем нажмите OK. Модель публикуется в виде HTML-файлов, записываемых в указанное местоположение;
- Откройте в Web-браузере файл C:\HelloWorldSeries\RSA_Web\index.html;
![Опубликованная Web-страница](/iarticle/img/1510_15.jpg)
Рис. 15. Опубликованная Web-страница
- Нажмите ссылку Phone Book UML Model;
- Просмотрите опубликованную модель, нажимая ссылки элементов и диаграммы.
![Опубликованная UML-модель телефонной книги](/iarticle/img/1510_16.jpg)
Рис. 16. Опубликованная UML-модель телефонной книги
Преобразование UML в Java
Функция преобразования является ключевой в Rational Software Architect. Можно преобразовать проект из UML в код C++, CORBA, EJB, JACL, Java и т.д., и переходить к этапу реализации со значительной экономией времени. В данном разделе будет выполнено преобразование проекта UML в код Java, затем будут заданы подробности программы, и приложение будет запущено.
- В панели Model Explorer нажмите правой кнопкой мыши Phone Book UML Model и выберите Transforms > UML to Java;
- Выберите Create new Target Container...;
- В панели New Java Project введите
PhoneBookJavaProject
в качестве имени Java-проекта и установите флажок Create separate source and output folder. Нажмите Finish;
- Нажмите Run для начала преобразования.
- В панели Model Explorer автоматически создается Java-проект PhoneBookJavaProject, включающий три Java-файла.
![Приложение телефонной книги](/iarticle/img/1510_17.jpg)
Рис. 17. Созданный Java-проект
Рассмотрим показанный ниже файл PhoneBookController.java. Созданный класс имеет два атрибута phonebookmodel и phonebookview, которые созданы в результате отношения направленного сопоставления и отношения сопоставления соответственно. Также создаются две операции (userHasInput and start), добавленные ранее при создании диаграммы классов.
![PhoneBookController.java](/iarticle/img/1510_18.jpg)
Можно изменить файлы для реализации приложения на основе проектной инфраструктуры. Пример реализации можно найти в разделе Загрузки . В примере реализован интерфейс командной строки и хранение записей телефонной книги в локальном файле.
Проект только содержит инфраструктуру, которую можно использовать для различных реализаций. Например, можно создать графический пользовательский интерфейс вместо интерфейса командной строки, хранить данные в EJB-компонентах, а не в файле, или использовать шаблон Observer для реализации механизма уведомления. Предоставленная реализация примера является одним из многих способов реализации проекта.
Скопируйте и вставьте реализацию примера.
- Выберите File > Save All;
- Выберите PhoneBookController, затем Run > Run As ... > Java Application для запуска реализации телефонной книги в виде Java-приложения;
- Перейдите в панель Console, как показано на рисунке 18, и поработайте с приложением. Проверьте работу двух прецедентов Add an entry и Search for a phone number. Запомните, что цель прецедентов заключается в определении поведения системы и регистрации требований. Важно, чтобы реализация соответствовала требованиям и работала ожидаемым образом.
![Выполнение примера-приложения телефонной книги](/iarticle/img/1510_19.gif)
Рис. 18. Выполнение примера-приложения телефонной книги
Заключение
В данном учебном руководстве описан пакет Rational Software Architect и его некоторые основные функции. В упражнении показано, как спроектировать приложение с помощью UML-диаграмм, как опубликовать информацию о модели на Web-странице и как преобразовать проект в код Java с помощью Rational Software Architect.
Ссылки по теме
Файлы для загрузки