Объектно-ориентированные средства анализа, проектирования и реинжениринга информационных систем
Сергей Паронджанов, компания Аргуссофт
Rational Rose - средство объектно-ориентированного моделирования,
поддерживающие методы Буча и ОMT.
Работа в Rational Rose основывается на построении различного рода
диаграмм, описывающих проект.
Графический диалог ведется с использованием систем обозначений,
подробно изложенных в известных работах: "Объектно-ориентированное
проектирование с примерами применения" Г.Буча, и "Объектно-ориентированное
моделирование и проектирование" Д.Рамбо.
Основные свойства Rational Rose
- охват всех этапов разработки проекта;
- построение моделей на основе методов Буча и OMT с возможностью
автоматического преобразования нотаций;
- возможность повторного использования программных разработок
пользователей за счет средств реинжениринга;
- наличие средств автоматического контроля, позволяющих вести
отладку проекта по мере его разработки;
- возможность описания проекта на разных уровнях для различных
категорий пользователей;
- удобный для пользователя графический интерфейс;
- автоматическая генерация кодов на языках С++, Ada (компиляторы
поставляются), Smalltalk, SQLWindows, VisualBasic, PowerBuilder;
- наличие средств групповой разработки;
- широкий спектр применения системы - базы данных, банковские
системы, телекоммуникация, системы реального времени, большие
информационные системы и т.д.
Типы диаграмм, поддерживаемые Rational Rose
Rational Rose одновременно поддерживает диаграммы
методов Г. Буча и Д. Рамбо (OMT), позволяя автоматически переходить
от одной нотации к другой.
Диаграммы Классов
(Classes)
| Статическая модель
|
Диаграммы состояний и переходов
(State Transition Diagram)
| Динамическая модель
|
Диаграммы сценариев объектов
(Object Message Diagram)
| Функциональная модель
|
Диаграммы сценариев сообщений
(Message Trace Diagram)
| Функциональная модель
|
Диаграммы модулей
(Modules)
Диаграммы процессов
(Processes)
|
- Диаграммы потоков данных в функциональной модели ОМТ больше не поддерживаются и заменены на сценарные диаграммы
|
Rational Rose обеспечивает единство модели, автоматически
поддерживая согласованность, разрабатываемых диаграмм. Изменения,
внесенные в одну из диаграмм, гарантировано отражаются в остальных.
Диаграммы классов
Отображают логику построения прикладной системы.
На них отображают классы, категории классов и отношения между
ними.
Возможность отражения параметризованых классов.
Допускаются разнообразные отношения: ассоциации, включения, использования,
наследования.
Имеются простые и удобные средства просмотра иерархий диаграмм
классов.
Иллюстрация 1
Для каждого конкретного отношения можно задать имя
и основные его характеристики
Иллюстрация 2
Все диаграммы сопровождаются подробными спецификациями.
Автоматическое преобразование нотаций
Иллюстрация 3
Иллюстрация 4
Иллюстрация 5
Ассоциативные связи позволяют документировать проектные
решения
Категории классов применяются
для разбиения приложения на отдельные группы взаимосвязанных
классов.
Иллюстрация 6
Иллюстрация 7
Категории классов образуют
иерархию, в которой классы являются терминальными узлами
Диаграмма сценариев
Диаграммы сценариев - динамический взгляд на модель.
Диаграммы сценариев показывают основные объекты проекта и взаимодействия
между ними.
Имеется возможность задать последовательность обращений объектов
друг к другу.
Два типа сценарных диаграмм:
- Диаграммы сценариев объектов
- Диаграммы сценариев сообщений
Система включает средства автоматического взаимного
преобразования диаграмм сценариев.
Диаграммы сценариев сообщений
Иллюстрация 8
Диаграммы сценариев объектов
Иллюстрация 9
Иллюстрация 10
Диаграммы сценариев сообщений могут сопровождаться
структурированным текстом.
Диаграмма состояний
Иллюстрация 11
Для каждого класса может быть создана диаграмма состояний.
На ней указывается начальное, конечное и промежуточные состояния,
а также события, определяющие переход из одного состояния в другое.
Имеется возможность гнездования состояний.
Диаграмма процессов
Иллюстрация 12
Изображаются процессоры и устройства, образующие физическую конфигурацию
прикладной системы
Диаграммы модулей
Диаграммы модулей - физическая модель системы.
Показывает подсистемы проектируемого приложения и основные модули
каждой из них.
Диаграммы модулей образуют иерархию.
Для каждого модуля можно отдельно показать на диаграмме его файл-заголовок
и файл реализации.
Модули
Иллюстрация 13
Подсистемы
Иллюстрация 14
Автоматическая генерация С++ кода.
Rational Rose/C++ включает средства автоматической
генерации кодов программ на языке С++. Используя информацию, содержащуюся
в модели проекта, генератор кодов формирует файлы заголовков и
файлы реализаций классов.
Создаваемая структура программы может быть уточнена путем прямого
программирования на языке С++. При повторной генерации внесенные
изменения не теряются
Стиль структуры программы в коде С++ формируется настройкой свойств
(properties) проекта.
Ошибки, обнаруженные генератором кодов С++, представляются в специальном
Log файле.
Иллюстрация 15
Свойства генерации кода могут быть настроены как
для всего проекта, так и для отдельных его компонент.
Иллюстрация 16
Rational Rose/C++ генерирует С++ код стандарта ANSI.
Базируясь на выбранных свойствах генерации, Rational Rose генерирует
следующие элементы кода:
Для каждого модуля:
- Заголовочный файл и файл реализации для модуля.
- #include директивы, явно или неявно определенные
в моделе.
Для каждого класса:
- Определение класса.
- Объявление атрибутов, отношений включения и ассоциативных
отношений.
- Get и Set функции для доступа к атрибутам.
- Объявления для стандартных операций с заготовками
определений.
- Объявления для операций, определенных пользователем.
- Все поля документирования из спецификаций диаграмм
переносятся в код как комментарии.
Реинжениринг модели
Rational Rose/C++ включает анализатор C++ (Analyzer),
поставляемый как отдельно исполняемый модуль, который грузится
независимо от Rose/C++.
Реинжениринг модели это процесс исследования программного кода
для извлечения информации о его структуре. Analyzer извлекает
информацию из С++ кодов и использует ее для построения модели
программного кода.
После работы анализатора модель может быть перенесена в систему
в виде диаграмм классов и модулей и проанализирована средствами
Rational Rose/C++.
Анализируется только структура кода. Исходный код может содержать
ошибки реализации
Иллюстрация 17
Анализ начинается с построения внутренней модели
программного кода. В проекте указываются исходные модули и стандартные
библиотеки. В результате анализа формируется модель во внутреннем
формате системы.
Иллюстрация 18
Экспортные возможности позволяют управлять автоматической
генерацией модели путем:
- выбора исходных модулей для включения в модель;
- выбора элементов диаграмм (классов, отношений, комментариев
и т.д.) для отображения в модели
Иллюстрация 19
Степень визуализации проанализированной информации
при передачи ее в Rational Rose/C++ настраивается. Это позволяет
производить анализ с различным уровнем детализации.
Групповая работа в Rational Rose/C++
- Каждому разработчику может быть выделено собственное
рабочее пространство, чем устраняется неконтролируемое и асинхронное
распространение изменений.
- Декомпозиция модели на категории и управляемые части (units)
позволяет наделить разработчика своим кругом ответственности.
- Rational Rose/C++ интегрируется с системой управления версиями
(PVCS) или подобными ей.
- Внутри выделенного рабочего пространства участники групповой
работы могут работать на различных платформах (UNIX или Windows)
и в дальнейшем собрать единую модель.
Иллюстрация 20
Документирование модели
Rational Rose/C++ включает средства документирования
модели:
- Вывод на печать диаграмм и спецификаций непосредственно
из Rose/C++
- Генерация документации модели в RTF формате для
последующего редактирования средствами мощных редакторов типа
MicroSoft Word
- Создание шаблонов для генерации проектной документации
в соответствии с заданным стандартом с помощью средства автоматизированного
документирования SoDA.
Classes
Class name:
Environmental Controller
Documentation:
Контролирует поддержание заданных условий (температeра,
кислотность, влажность, освещенность и т.д.) в теплице, управляя
нагревателем, холодильником и т.п
Superclasses:
<none>
Roles/Associations:
<none>
Attributes:
Voltage : int = 220
напряжение питания
Has-A Relationships:
<unnamed> : Cooler
<unnamed> : Heater
<unnamed> : Light
Operations:
Define_climate( temperature : temp_range, humidity
: humid_range) : control_status
Задать климат
Terminate_climate( )
отменить заданный климат
Возвратное проектирование в Rational Rose/C++
Иллюстрация 21