Опыт реинжиниринга объектно- ориентированного комплекса программ с применением CASE- средства Rational Rose и SILVERRUN

Ю.Новоженов, Компания Аргуссофт


Мировая практика разработки сложных программных комплексов показывает, что обычно такие системы имеют предысторию в виде совокупности программ, которые частично или полностью реализуют требования к системе. Для их развития и дальнейшего сопровождения такой системы именно в силу ее сложности требуется создание совокупности моделей, представляющих в графическом виде разные аспекты системы и отражающих иерархию ее построения. В особенности это касается систем, предыстория которых в той или иной мере основана на применении объектно- ориентированного подхода.
Для создания подобных моделей современные инструментальные средства включают специальные средства реинжиниринга, позволяющие восстановить отдельные модели по исходным текстам программ.
Исходные предпосылки для проведения реинжиниринга состоят в следующем.
  1. Имеется реализованная и оттестированная информационная система.
  2. Имеется определенный перечень задач, которые решает система.
  3. Имеются тексты программ, решающих эти задачи, на некотором языке (языках) программирования.
  4. Отдельно от системы может существовать документ, в котором заказчик декларирует, что в системе должно быть добавлено или изменено.
Построение модели системы включает решение следующих задач:
  1. Создание описания архитектуры. Архитектура описывается в виде иерархии категорий классов, соответствующей разным уровням абстракции. В дальнейшем предполагается взаимно однозначное соответствие между понятиями "категория классов" и "подсистема". Каждой категории должен соответствовать каталог на внешнем устройстве, а иерархии категорий - иерархия каталогов.
  2. Логическое моделирование. Строятся диаграммы классов, где показываются классы и отношения между ними.
  3. Построение функциональной модели системы. Решение этой задачи предполагает описание поведения системы в виде иерархии диаграмм сценариев.
  4. Динамическое моделирование. Динамика работы системы описывается с помощью диаграмм состояний для управляющих классов.
  5. Реинжиниринг базы данных системы с построением ER-диаграмм.
Порядок решения этих задач принципиально отличается от порядка действий, выполняемых при разработке новых проектов. Архитектура и логическое описание системы могут быть автоматически получены с помощью реинжиниринга текстов программ и построения диаграмм классов CASE- системой. Таким образом, не функциональное описание системы служит основой для выявления классов и отношений между ними, а наоборот, предварительно полученные диаграммы классов наряду с программными кодами служат для описания поведения системы и динамики ее работы.
Примером инструментального средства, реализующего объектно-ориентированный подход к разработке программных систем, является семейство CASE-систем Rational Rose фирмы Rational Software Corporation.
Системы, входящие в состав этого семейства, предназначаются для автоматизации этапов анализа и проектирования, а также для генерации кодов на различных языках и выпуска проектной документации. Все CASE-средства, входящие в состав Rational Rose, используют методы Гради Буча (он является научным руководителем разработок) и ОМТ Джеймса Рамбо, поддерживая единый графический интерфейс с пользователем. Различия между этими системами минимальны и определяются языками, на которых генерируются коды программ.
В составе Rational Rose можно выделить 6 основных структурных компонент: репозиторий, графический интерфейс пользователя (GUI), средства просмотра проекта (browser), средства контроля проекта, средства сбора статистики и генератор документов. Все перечисленные компоненты являются общими для всех систем семейства. К ним следует добавить генератор кодов - индивидуальный для каждой системы - и анализатор - отдельный программный модуль, обеспечивающий реинжиниринг.
Репозиторий представляет собой объектно-ориентированную базу данных. Средства просмотра обеспечивают "навигацию" по проекту, в том числе, перемещение вверх/вниз по иерархиям классов и подсистем, переключение из одного вида диаграмм к другому и т. д. Средства контроля и сбора статистики дают возможность находить и устранять ошибки по мере развития проекта, а не после завершения его описания. Генератор отчетов формирует тексты выходных документов на основе содержащейся в репозитории информации.
Rational Rose включает средства автоматической генерации кодов программ на языках третьего и четвертого поколений. Используя информацию, содержащуюся в логической и физической моделях проекта, генератор кодов формирует файлы заголовков и файлы описаний классов и объектов. Создаваемый таким образом скелет программы может быть уточнен путем прямого программирования.
Анализатор кодов создает модели проектов на основе информации, содержащейся в определяемых пользователем исходных текстах программ. В процессе работы анализатор осуществляет контроль правильности исходных текстов и диагностику ошибок. Модель, полученная в результате его работы, может целиком или фрагментарно использоваться в различных проектах. Таким образом обеспечивается возможность повторного использования программных компонент.
В основе работы Rational Rose лежит построение различного рода диаграмм и спецификаций, определяющих логическую и физическую структуры модели, ее статические и динамические аспекты. Диаграммы классов показывают классы и их иерархии, отображая логику построения прикладной системы. Для больших систем обычно строится не одна а несколько подобных диаграмм. Диаграмма классов определяет только статические аспекты, относящиеся к классам. Динамика их поведения представляется на диаграммах состояний. Диаграммы сценариев показывают существующие объекты и их взаимодействие в логическом проекте прикладной системы. Модульные диаграммы определяют распределение классов и объектов в модулях, физически реализующих проект. Одна модульная диаграмма представляет всю или часть модульной архитектуры системы. Для решения задачи распределения аппаратных ресурсов в Rational Rose используются диаграммы процессов.
Не вся необходимая информация о проекте может быть наглядно отражена в диаграммах, поэтому Rational Rose содержит средства ввода спецификаций, которые дополняют набор диаграмм. Спецификации создаются для классов, класс-утилит, операций, подсистем, объектов, модулей и т. д.
Основные свойства Rational Rose, обеспечивающие ее высокую конкурентоспособность на мировом рынке программных средств:
Система Rational Rose/С++ была применена для реинжиниринга банковской информационной системы, применяемой в системе ЦБ РФ. Это - сложная система с полной предысторией, содержащая системные библиотеки и приложения. Работа выполнялась на платформе Windows '95 (компьютере P/100 с 16 MB оперативной памяти). Реинжиниринг приложений, содержащих свыше 500 классов, выполнялся около 25 часов.
Отдельно на той же платформе был выполнен реинжиниринг базы данных системы с помощью CASE- средства SILVERRUN. За время порядка 5 минут была построена ER-модель базы данных, содержащей около 200 таблиц.
Результаты можно сформулировать следующим образом:
  1. Система Rational Rose/С++ обеспечивает реинжиниринг сложных информационных систем на базе весьма ограниченных ресурсов.
  2. CASE-средство SILVERRUN обеспечивает реинжиниринг сложных баз данных за минимальное время.
  3. Восстановлена архитектура системы в виде иерархии категорий классов.
  4. Получена логическая модель системы в виде совокупности диаграмм и спецификаций классов.
  5. Построена физическая модель системы в виде диаграмм подсистем и модулей.
  6. Анализ результатов реинжиниринга позволил определить наиболее существенные недостатки существующего комплекса программ и пути их исправления. Вот несколько примеров.
Построенные диаграммы классов и модулей являются основой для разработки полной модели системы путем дополнения их диаграммами состояний и взаимодействий, которые создаются с помощью того же CASE-средства.

[Назад] [Содержание]