Михаил Кумсков
Объектно-ориентированная технология программирования, развитие которой началось в середине 80-х годов, к 90-м годам достигла поры своей зрелости, и в настоящее время ее поклонники говорят о начале революции в программировании. При этом имеется в виду уже не объектно-ориентированное программирование, а набирающая силу тенденция проводить разработку проектов корпоративного уровня на основе компонентов (CBD, Component Based Development). На рынке инструментальных CASE-средств поддержки CBD-моделирования и разработки в середине 90-х годов доминировали четыре фирмы: Rational Software, Cayenne, Platinum, Select.
В 1995 г. по объему продаж Rational Software вырвалась вперед и продолжает лидировать с большим отрывом со своим “широко известным в узких корпоративных кругах” CASE-продуктом Rational Rose. Если в 1997 г. существовала собственная модификация системы Rational Rose для каждого языка программирования (Си++, Visual Basic, Java, PowerBuilder, Ada, Forte, Smalltalk), то теперь имеется единая система - Rational Rose 98 с поддержкой нескольких языков программирования.
Рис. 1
Rational Rose 98 занимает особое место в ряду CASE-продуктов визуального моделирования сложных программных систем, имеющихся на рынке, и обладает стратегическим преимуществом в плане развития продукта. Такая оценка основана на следующих особенностях Rational Rose 98:
- он поддерживает генерацию кода и обратное проектирование (т. е. построение модели по программному коду) сразу для нескольких языков, включая Visual Basic, C++, Java, PowerBuilder, CORBA Interface Definition Language(IDL), Data Definition Language для большинства СУБД, Erwin-модели;
- поддерживает визуальное объектно-ориентированное моделирование, полностью совместимое с UML (Unified Modeling Language), который с 1997 г. определен как стандарт языка для этой быстро развивающейся области инструментальных средств;
- имеет широкие перспективы развития, в том числе за счет появления дополнительных продуктов-переходников (Links), тесно интегрированных с Rational Rose и создаваемых многочисленными независимыми разработчиками инструментальных средств в рамках программы Rational Rose Link Partner Program;
- ориентирован на разработчиков архитектуры информационных систем (ИС), менеджеров ИС и программистов.
CASE-продукты в России
Особенностью Rational Rose 98 является его концептуальная новизна в России как CASE-инструментария. Что это значит? В настоящее время в России (и других странах СНГ) популярны CASE-средства, основанные на структурных методах моделирования сложных архитектур ИС. К наиболее известным продуктам в этой области относятся ERwin (Logic Works), Designer-2000 (Oracle) и ряд других, рассмотренных в обзоре Георгия Калянова “Российский рынок CASE-средств” (PC Week/RE, № 23/98, с. 39). В отличие от них, Rational Rose 98 - это объектно-ориентированный CASE-инструментарий.
Рис. 2а
С точки зрения создания корпоративных информационных систем (КИС) объектно-ориентированное моделирование, анализ и проектирование заслуживают повышенного внимания и CASE-поддержки в российских фирмах - разработчиках крупных программных проектов и интеграторов. Действительно, многие руководители информационных и разрабатывающих отделов подозревают, что программирование “в объектах” - это хорошо, особенно если речь идет о создании сложных программных систем. Однако объектно-ориентированное программирование (ООП) по-разному понимается разными людьми, и в свое время Рентр отмечал: “Я полагаю, что ООП в 90-х годах будет тем, чем в 70-х являлось структурное программирование. Все были в восторге от него. Каждый производитель предлагал продукты для его поддержки. Каждый программист был знаком на практике с ним. И никто не знал, что же это такое...” (см. врезку “Структурная или объектная декомпозиция”).
Unified Modeling Language
В Rational Rose 98 поддерживается UML версии 1.0 наряду с ранее широко используемыми нотациями Буча и ОМТ. Это означает, что проектировщики и аналитики могут продолжать пользоваться, например, нотацией Буча, на которой основаны их прежние проекты в старых версиях Rational Rose. А затем можно легко привести полученную модель проекта к UML-нотации простым выбором установки нотации UML в Rational Rose 98.
UML был разработан фирмой Rational Software и ее партнерами - крупными компаниями, разрабатывающими КИС: Hewlett-Packard, IBM, i-Logix, ICON Computing, IntelliCorp, MCI Systemhouse, Microsoft, ObjecTeam, Oracle, Platinum Technology, Ptech, Reich Technologies, Softeam, Sterling Software и Unisys.
UML - преемник языков визуального моделирования программных архитектур Буча, OOSE/Jacobson и OMT. Ряд крупных компаний уже используют UML как стандарт в процессе разработки крупных программных систем. UML служит для проведения бизнес-моделирования (см. врезку “Проектирование”), управления требованиями, анализа и проектирования архитектуры системы, программирования и тестирования. Описание истории и особенностей UML в контексте объектно-ориентированной CASE-технологии заслуживает отдельной работы.
Этапы проведения моделирования в Rational Rose 98
Моделирование проводится как поуровневый спуск от концептуальной модели к логической, а затем к физической модели программной системы.
Рис. 2б
Концептуальная модель выражается в виде диаграмм прецедентов (use case diagram). Этот тип диаграмм служит для проведения итерационного цикла общей постановки задачи вместе с заказчиком. Часто можно услышать следующее: “Заказчик и раньше не знал, и теперь не знает, и в будущем не будет точно знать, что ему нужно”. Диаграммы прецедентов как раз и служат основой для достижения взаимопонимания между программистами-профессионалами, разрабатывающими проект, и заказчиками проекта. Внутри каждого прецедента могут быть определены:
- вложенная диаграмма прецедентов;
- диаграмма взаимодействия объектов (collaboration diagram);
- диаграмма последовательности взаимодействий (sequence diagram);
- диаграмма классов (class diagram);
- диаграмма перехода состояний (state diagram).
Логическая модель позволяет определять два различных взгляда на системы: статический и динамический. Статический подход выражается диаграммами классов (class diagram). На рис. 1 приведена такая диаграмма в UML-нотации. Именно диаграммы классов служат основой для генерации программного кода на целевом языке программирования. Возможна очень гибкая настройка генерации кода, позволяющая учитывать конкретные соглашения (например, по префиксам имен идентификаторов), принятые в команде разработчиков проекта.
Динамический подход описывается двумя типами диаграмм (см. рис. 2а, б):
- диаграммами взаимодействия объектов;
- диаграммами последовательности взаимодействий.
В текущей версии Rational Rose 98 эти диаграммы не влияют на генерируемый код, однако фирмы-партнеры Rational Software применяют эти диаграммы в своих приложениях. Так, диаграммы последовательности взаимодействий используются в пакете SQA Suite для автоматизированного тестирования компонентов, разработанных в Rational Rose 98. Классы, введенные на этих диаграммах, попадают в список классов модели и могут использоваться при конструировании диаграмм классов. Динамика конкретного класса может быть выражена с помощью диаграмм перехода состояний, определяющих модель конечного автомата, описывающего поведение класса. Каждое состояние задается своей вершиной, и определены входное и выходные состояния, а также условия перехода из состояния в состояние.
Физическая модель задается компонентной диаграммой (component diagram), которая описывает распределение реализации классов по модулям, и диаграммой поставки (deployment diagram).
После построения первого/последующего слоя статической модели с использованием диаграмм классов можно провести генерацию кода на целевом языке программирования. На уровне кода можно ввести новые уточняющие классы, изменить атрибуты и методы классов модели и затем синхронизировать код и модель, выполнив обратное проектирование, т. е. по модифицированному коду Rational Rose 98 позволяет построить новую логическую модель взаимосвязи классов между собой! Повторение такой процедуры несколько раз называется итерационным моделированием (round-trip modeling), которое составляет основу мягкого и постепенного уточнения постановки задачи и согласования требований заказчика с имеющимися ресурсами (вычислительными, временными, финансовыми и т. п.).
Обеспечение групповой разработки
Поддержка групповой разработки является ключевым элементом любого программного инструмента ведения больших проектов. Действительно, создание корпоративной ИС может представлять собой такой крупный проект, для реализации которого при высокой организации труда и использовании современных CASE-инструментов нужны десятки или даже сотни разработчиков. Обычно задача заключается в том, чтобы проект сначала сделать целиком в виде визуальной модели, а затем разбить ее на части и раздать исполнителям для программирования. Основная проблема - как потом собирать вместе представленный программистами код. Rational Rose 98 поддерживает такую технологию определения и последующей сборки программных компонентов, которая была методологически отработана еще в предыдущих версиях продукта.
Имеются три варианта продукта Rational Rose 98:
- Modeler Edition;
- Professional Edition;
- Enterprise Edition.
Modeler Edition - инструмент для базового анализа архитектуры разрабатываемой системы, поддерживает моделирование, полностью совместимое с UML. Отсутствует возможность генерации программного кода по построенной визуальной модели системы.
Professional Edition - добавлена поддержка одного из языков высокого уровня (например, Си++, Java, Visual Basic). Версия продукта предназначена для компаний, в которых при разработке проекта используется только один язык программирования.
Enterprise Edition - дополнительно поддерживает многоязычную разработку, что освобождает от необходимости приобретать инструментальные средства отдельно для каждого языка программирования.
Rational Software выпустила ряд продуктов, расширяющих возможности системы Rational Rose 98:
- SoDA;
- SQA Suite;
- Requisite Pro.
SoDA - система, поддерживающая документирование визуальных моделей, созданных как с помощью Rational Rose 98, так и других продуктов. Обеспечивает согласованность визуальной модели и проектной документации на всех этапах разработки проекта ИС: прямого, обратного (reverse) и циклического проектирования (round-trip). Автоматически генерирует документы проекта по различным типам диаграмм, поддерживаемым в Rational Rose 98, согласно стандартам оформления, выбранным пользователем. К достоинствам продукта относятся:
- сокращение времени оформления документации в заданном стандарте за счет автоматической генерации текста и графики по модели Rational Rose;
- автоматическое обновление существующей документации при развитии проекта в ходе обратного и циклического проектирования;
- единообразное оформление документации из отчетов, создаваемых из файлов-отчетов SQA Suite, RequisitePro и Rational Rose 98;
- поддержка документов и шаблонов MS Word.
SQA Suite - продукт, обеспечивающий полный жизненный цикл тестирования клиент-серверных приложений (под Windows) и Internet-приложений, начиная от планирования и проектирования и заканчивая разработкой и поставкой созданного продукта. Это единственный продукт на рынке для проведения автоматизированного тестирования. Обеспечивает высокую степень интеграции с Rational Rose 98 и позволяет автоматически конвертировать диаграммы прецедентов Rational Rose в требования на тестирование. Поддерживает расширяемый репозитарий тестов (БД) на базе технологии клиент-сервер. Реализует формализованную методологию тестирования, включая планирование тестов, записи сценариев тестирования и их выполнения. Поддерживает администрирование процесса исправления ошибок и модификации версий.
Requisite Pro - продукт, расширяющий поддержку групповой разработки проекта. Позволяет команде разработчиков создавать, структурировать, устанавливать приоритеты, отслеживать и контролировать изменения требований, возникающих на любом этапе разработки компонентов приложения. Поддерживается репозиторий требований с динамическим связыванием с MS Word, что позволяет управлять требованиями на продукт, спецификациями программных компонентов и планированием тестирования. Интеграция с Rational Rose 98 позволяет отслеживать внесение изменений в визуальные модели на каждом этапе проектирования: прямого, обратного (reverse) и циклического (round-trip).
Продукт предназначен для преодоления типичных системных проблем (перерасход бюджета, несоблюдение сроков, проблемы качества продукта), возникающих перед командами разработчиков, группами поддержки качества и менеджерами разработки, вовлеченными в создание сложных приложений корпоративного уровня.
В заключение хочется отметить важное обстоятельство. Использование языка UML - нового стандарта разработки визуальных моделей - делает Rational Rose 98 не только открытой системой, позволяющей обмениваться моделями с другими продуктами, использующими UML. Главное, что вокруг Rational Rose 98 как продукта-лидера в рыночной нише объектно-ориентированного CASE-инструментария сосредотачивается ряд фирм, разрабатывающих продукты-переходники (Links). Существуют такие переходники между Rational Rose 98 и Delphi 3 (Borland), Jbuilder (Borland), C++ Builder (Borland), Cafe/ (Symantec). Эти переходники позволяют проводить итерационное моделирование, используя не просто целевой язык программирования (например, Java), а основываясь уже на файлах проектов в формате соответствующих RAD-инструментариев.
Грамотное использование CASE-инструментария предполагает владение основами методологии, реализованной в CASE-продукте, которая для Rational Rose 98 называется Rational Objectory Process. Научиться работе с Rational Rose 98 можно в фирме Interface - ведущей российской фирме, обучающей CASE-технологиям. Здесь также можно получить как демонстрационную копию Rational Rose 98, так и соответствующие продукты-переходники фирм - партнеров Rational Software и материалы по UML.
Михаил Кумсков - специалист по объектно-ориентированным технологиям из фирмы Interface (http:www.interface.ru). К нему можно обратиться по электронной почте: e-mail: kumskov@interf.mx.orc.ru или позвонить по телефону: (095) 135-5500.
Структурная или объектная декомпозиция?
Известно два подхода к проведению декомпозиции системы при построении ее информационной модели:
1) алгоритмическая декомпозиция (структурный анализ/проектирование), основанная на упорядочении событий/потоков данных;
2) объектно-ориентированная декомпозиция (ОО анализ/проектирование) базирующаяся на выделении агентов, которые или сами действуют, или с которыми производится действие.
Согласно Грэди Бучу, “ООП - этот метод реализации, в результате программы организованы как взаимодействующие коллекции объектов. Каждый объект является экземпляром некоторого класса, а все классы являются членами иерархии классов, объединенной отношением наследования. Объектно-ориентированное проектирование - это метод, включающий процесс объектно-ориентированной декомпозиции, нотацию для описания как логических, так и физических, а также как статических, так и динамических моделей проектируемой системы. Объектно-ориентированное проектирование приводит к объектно-ориентированной декомпозиции системы. Используется различная нотация для выражения разных моделей системы: логической (структура классов и объектов) и физической (модульная и процессорная архитектура)”.
Проектирование
Проектирование в Rational Rose 98 реализуется как дисциплинированный и упорядоченный подход, который используется для итерационного нахождения пути решения заданной проблемы. Это обеспечивает “движение модели” от требований заказчика к программной реализации. Цель проектирования состоит в том, чтобы полученная система:
- удовлетворяла заданным (возможно, неформальным) спецификациям;
- соответствовала ограничениям целевой вычислительной аппаратуры;
- удовлетворяла (явным и/или неявным) требованиям по производительности и используемым ресурсам.
При разработке системы должны быть выполнены ограничения на сам процесс проектирования по цене, времени и т. п.
При построении общей модели в Rational Rose 98 используются принципы:
- декомпозиции и абстрагирования;
- иерархии на концептуальном, логическом и физическом уровнях;
- повторного использования элементов моделей/программных компонентов;
- разработки различных типов моделей для различных аспектов системы;
- согласованности статических и динамических моделей системы;
- пошагового и итеративного моделирования/программирования;
- поддержки коллективной разработки/использования компонентов.