Объектно-ориентированные средства анализа, проектирования и реинжениринга информационных систем

Сергей Паронджанов, компания Аргуссофт

Rational Rose - средство объектно-ориентированного моделирования, поддерживающие методы Буча и ОMT.

Работа в Rational Rose основывается на построении различного рода диаграмм, описывающих проект.

Графический диалог ведется с использованием систем обозначений, подробно изложенных в известных работах: "Объектно-ориентированное проектирование с примерами применения" Г.Буча, и "Объектно-ориентированное моделирование и проектирование" Д.Рамбо.

Основные свойства Rational Rose

Типы диаграмм, поддерживаемые 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 генерирует следующие элементы кода:

Для каждого модуля:

Для каждого класса:

Реинжениринг модели

Rational Rose/C++ включает анализатор C++ (Analyzer), поставляемый как отдельно исполняемый модуль, который грузится независимо от Rose/C++.

Реинжениринг модели это процесс исследования программного кода для извлечения информации о его структуре. Analyzer извлекает информацию из С++ кодов и использует ее для построения модели программного кода.

После работы анализатора модель может быть перенесена в систему в виде диаграмм классов и модулей и проанализирована средствами Rational Rose/C++.

Анализируется только структура кода. Исходный код может содержать ошибки реализации

Иллюстрация 17

Анализ начинается с построения внутренней модели программного кода. В проекте указываются исходные модули и стандартные библиотеки. В результате анализа формируется модель во внутреннем формате системы.

Иллюстрация 18

Экспортные возможности позволяют управлять автоматической генерацией модели путем:

Иллюстрация 19

Степень визуализации проанализированной информации при передачи ее в Rational Rose/C++ настраивается. Это позволяет производить анализ с различным уровнем детализации.

Групповая работа в Rational Rose/C++

Иллюстрация 20

Документирование модели

Rational Rose/C++ включает средства документирования модели:

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