Аналитика
Линия продуктов Sybase для создания сложных информационных систем
Сергей Горин, Андрей Тандоев
(Окончание. Начало в N 117-118.)
К сожалению, приходится констатировать, что под созданием информационной системы (ИС) масштаба предприятия (компании) некоторые управленцы пока понимают процесс приобретения парка компьютеров, соединения их в локальную сеть, установки программного обеспечения "широкого потребления" (читай MS Word, MS Excel или Lotus Notes) иногда это сопровождается расширением штата за счет нескольких специалистов по программированию в FoxPro. Затем, правда, ко всеобщему удивлению обнаруживается, что поставленные цели не достигнуты, информационные потоки не стали более упорядоченными, надежность работы и оперативность поступления информации по-прежнему оставляют желать лучшего. Зато научно обосновывается необходимость скорейшего перехода на Ethernet со скоростью передачи 100 Мбит/с.
Применение технологии создания сложных ИС а также специально предназначенных для этого инструментов и промышленных СУБД позволяет сделать процесс создания и внедрения ИС последовательным, контролируемым и гарантирующим хороший результат как на каждом отдельном этапе разработки так и для всего проекта в целом. Разработка ИС последовательно включает в себя анализ бизнес-процессов и правил предметной области, построение информационной модели и проектирование структуры базы данных, создание компонентов представления информации и прикладных компонентов.
Выбор технологий, инструментов и СУБД при кажущемся разнообразии на самом деле не так уж широк. К промышленным СУБД, работающим на UNIX- и РС-платформах, относятся (в алфавитном порядке) Informix, Oracle и Sybase. К ним приближаются Microsoft (SQL Server 6 0), Progress и некоторые другие. При выполнении ряда проектов в фирме "Алконс-Софт" для информационного моделирования используется, в частности, CASE-средство S-Designоr [1], а для разработки программ-клиентов – система 4GL PowerBuilder [2]. Что касается СУБД, то ее выбор в значительной степени определяется характером решаемых задач и проектными решениями. Достаточно часто мы используем в своих работах Sybase System 10 [3], а для задач меньшего масштаба – Watcom SQL.
Промышленные СУБД (и в их числе Sybase, являющаяся предметом настоящей статьи) характеризуются высокой производительностью, универсальностью в смысле поддержки множества платформ и сетевых протоколов, масштабируемостью, наличием механизмов декларативной ссылочной целостности, триггеров, процедур, как правило, в этих СУБД реализованы те или иные механизмы распределенной обработки.
По мнению авторов, при разработке ИС важную роль играет правильный выбор средств моделирования и разработки приложений. Важно, чтобы эти средства хорошо взаимодействовали друг с другом и образовывали таким образом единую среду СУБД-средства моделирования – средства разработки приложений. Именно такую связку представляют продукты Sybase, PowerBuilder и S-Designor.
Сегодня каждый из производителей промышленных СУБД дополнительно выпускает какие-либо инструментальные средства. Кроме того, на рынке инструментальных и CASE-средств существуют высококачественные продукты третьих фирм, которые весьма эффективно работают с основными СУБД и занимают очень большую часть рынка. Среди таких средств, независимо друг от друга попавших в первые строчки рейтингов продуктов своего класса, хотелось бы отметить пакеты PowerBuilder и S-Designor первый выпускается фирмой Powersoft, второй – фирмой SDP. Пoдoбнo фиpмe Watcom, компания Powersoft в конце 1994 года стала самостоятельным подразделением фирмы Sybase, а в начале 1995-го приобрела в свой состав фирму SDP Понятно, что позиции Sybase – ведущего производителя промышленных СУБД – теперь значительно укрепились благодаря еще и лучшим средствам разработки.

В отличие от компаний Oracle и Informix, разрабатывающих собственные инструментальные средства, фирма Sybase пошла "другим путем" – она попросту приобрела новейшие технологии, и продукты Sybase автоматически стали применяться большинством пользователей, даже работающих с СУБД Informix, Oracle и другими.
Таким образом, в настоящее время фирма Sybase предлагает своим пользователям полный комплекс средств для разработки эффективных информационных систем.
3. Средства разработки
3.1. Разработка информационных моделей и структуры базы данных в пакете S-Designor
Продукт S-Designor, выпускаемый фирмой SDP, – это графический инструмент для проектирования структур реляционных баз данных [1]. S-Designor реализует одну из общепринятых методологий информационного моделирования – IE (Information Engineering), его отличает следующий ряд свойств:
– мощные средства генерации отчетов,
– интеграция со средствами 4GL,
– поддержка групповой разработки и ведение поколений версий модели,
– мощные средства графического редактора,
– точное воспроизведение структуры базы данных при восстановлении модели по физической базе данных,
– разбивка модели на части (подмодели) с возможностью редактирования каждой подмодели различными разработчиками.
При проектировании в S-Designor используется двухуровневый подход [2, 3]. Первый уровень – концептуальная модель данных (КМД), или модель "сущность-связь" (ER-диаграмма). Второй уровень – физическая модель данных (ФМД). При переходе на второй уровень S-Designor автоматически генерирует соответствующую физическую модель данных для заданной СУБД, учитывая специфику последней.
Кроме того, S-Designor автоматически генерирует триггеры, обеспечивающие ссылочную целостность. Предусмотрена возможность редактирования хранимых процедур непосредственно при подготовке физической модели. Для обеспечения сопровождения существующих систем S-Designor позволяет проводить восстановление модели по структуре базы данных. В течение всего цикла разработки модели (см. рис. 2) с помощью S-Designor могут быть получены разнообразные отчеты.
На этапе работы с ФМД S-Designor позволяет определить элементы пользовательского интерфейса будущих приложений, работающих с проектируемой базой данных. Это достигается редактированием словарей систем 4GL В качестве средств разработки поддерживаются PowerBuilder [4], TeamWmdows, Progress, Umface и другие.
Пакет S-Designor работает в среде Microsoft Windows и Windows NT.
В фирме "АлконсСофт" можно получить полнофункциональную демонстрационную версию продукта для предварительного ознакомления с возможностями S-Designor.
3.1.1. Создание физической модели данных
Физическая модель данных строится после окончания работы над концептуальной моделью. Необходимость построения ФМД как отдельного шага проектирования объясняется требованием приведения описания сущностей и связей, определенных на стадии построения КМД, к структурам физической СУБД с учетом специфики последней.
При генерации физической модели из КМД сущности становятся таблицами, атрибуты – колонками, для альтернативных ключей генерируется уникальный индекс, а идентификаторы становятся первичными ключами Уникальный индекс автоматически назначается для каждого первичного ключа.
Для управления уникальностью строк и ускорения доступа к данным могут создаваться индексы. Для первичных и внешних ключей индексы формируются автоматически.
3.1.2. Описание ссылочной целостности
В S-Designor существует несколько вариантов правил, которые могут применяться для обеспечения ссылочной целостности, как-то каскадное удаление, каскадное обновление, запрет удаления, запрет модификации установка пустого значения.
3.1.3. Создание структуры базы данных
База данных создается непосредственно из S-Designor, который выполняет подключение к серверу СУБД через интерфейс ODBC. Другой вариант-подготовка пакета SQL-предложений для создания структуры базы данных. В пакете S-Designor предусмотрено множество параметров генерации структуры базы данных например, выполнять ли оператор удаления таблицы (DROP TABLE) перед оператором создания таблицы (CREATE TABLE), создавать ли триггеры, процедуры, представления (view) и т. д. Набор параметров генерации может быть сохранен под определенным именем для последующего использования (см. рис. 3).
S-Designor поддерживает внесение изменений в существующую структуру базы данных При развитии системы можно расширить концептуальную модель, затем сгенерировать физическую модель (фактически создаются только изменения) и выполнить команду Modify Database для актуализации проведенных модификаций в физической базе данных.
3.1.4. "Продвинутые" возможности S-Desianor
В S-Designor можно переопределить встроенные в систему триггеры, поддерживающие ссылочную целостность, а также создать новые триггеры.
В состав пакета входит встроенный редактор хранимых процедур. Таким образом, все функции, касающиеся структуры базы данных выполняются в одном приложении, что исключает вероятные ошибки и потери, например, файла с текстом триггера или процедуры.
При работе с ФМД можно определить представления (view), редактирование представления выполняется с помощью мощного визуального инструмента – редактора SQL-предложений.
Очень часто перед разработчиками встает задача анализа и расширения существующих информационных систем, которые не предполагали информационной модели. При расширении подобных систем и переводе их на технологию "клиент-сервер" требуется провести обратное проектирование информационной модели существующей базы данных S-Designor способен, подключившись к базе данных, генерировать физическую модель данных по структуре этой БД. На основании полученной ФМД затем можно выполнить автоматическую генерацию концептуальной модели.
Обычно при создании БД требуется оценить отводимый для нее размер дисковой памяти Как правило, разработчик делает грубую верхнюю оценку S-Designor позволяет выполнить более точное вычисление размера будущей СУБД, базируясь на анализе количества записей в таблицах, вводимых разработчиком.
Диаграммы информационных моделей больших систем могут занимать несколько десятков листов, и понятно, что работать с такой диаграммой не совсем неудобно. При проектировании с использованием S-Designor разработчик может выделить в модели логически законченные части и поместить в каждую из них подмножество объектов (таблиц, представлений, связей). Ядро информационной модели (базовые таблицы) может быть размещено во всех логических частях, и разработчик имеет возможность вызвать на экран и редактировать диаграмму для любой логической части модели. Такой подход позволяет организовать раздельное проектирование логически обособленных частей. После раздельного проектирования можно выполнить консолидацию (слияние) разработанных частей модели.

3.1.5. Взаимосвязь информационной модели и средств разработки программ
S-Designor взаимодействует со словарями систем 4GL, что позволяет определять внешний вид элементов данных в будущих приложениях еще на стадии построения модели. Так, для каждой колонки таблицы можно определить правило контроля введенных значений(выполняемое клиентской частью), шрифт, цвет, метку, формат отображения, маску редактирования, значение по умолчанию (подставляемое клиентской частью), список значений для выбора. Представления, определенные в модели, сохраняются в исходных библиотеках системы 4GL и могут использоваться при подготовке запросов в приложении.
S-Designor поддерживает восстановление расширенных атрибутов PowerBuilder и TeamWmdows из базы данных. Кроме того, поддерживается прямое обновление библиотек PowerBuilder и TeamWmdows.
3.2. Разработка программного обеспечения клиента в среде PowerBuilder
Для успешной разработки приложений необходимы инструменты обеспечивающие тесную интеграцию с СУБД, взаимодействие с другими приложениями (DDE, OLE, MAPI и т. д.), программирование на основе 4GL, мощные конструкторы форм и отчетов. И все эти возможности требуются разработчику, как правило одновременно.
Объединяя перечисленные качества PowerBuilder (PB) фирмы Powersoft добавляет к ним концептуальную целостность, продуманный дизайн и интуитивно ясный интерфейс.
РВ имеет прямые интерфейсы с основными СУБД (в том числе Sybase SQLServer, Microsoft SQL Server, Oracle 6 и 7, Informix, DB2, RDB, SQLBase), а также работает с СУБД через интерфейс ODBC. Тщательно продуманная поддержка ODBC делает доступными, помимо больших СУБД, локальные источники данных файлы xBase, Paradox, Excel, форматированные текстовые файлы и т. д. В комплекте есть и ODBC-драйвер для NetWare SQL.
Приложение отлаженное с одной ба-зойданных(например, слокальной), может без изменений в исходном коде работать с другой.
Объектно-ориентированная система программирования в РВ реализует четко организованную иерархию объектов, инкапсуляцию и наследование Благодаря модульной структуре и объектно-ориентированной организации РВ эффективно применяется при групповой разработке, допуская подключение систем управления проектами PVCS ENDEVOR LBMS.
Для разработки приложений в систему встроен набор визуальных конструкторов:
– конструктор приложений – задает общую информацию для каждого приложения,
– конструктор окон – создает окна и размещает в них управляющие элементы (например, кнопки и списки) редактирует тексты обработчиков событий на высокоуровневом языке PowerScript О конструктор меню – создает меню для окон приложений,
– конструктор окон данных – создает специальный тип управляющего элемента, связанный с БД и служащий основой для работы с данными,
– конструктор структур – позволяет создавать агрегаты данных,
– конструктор базы данных – инструмент для доступа и администрирования базы данных,
– конструктор SQL – служит для визуального конструирования и редактирования операторов SQL,
– конструктор функций – используется для написания процедур на языке PowerScript,
– конструктор библиотек – управляет библиотеками, в которых находятся компоненты приложения,

– конструктор пользовательских объектов – создает пользовательские управляющие элементы или неотображаемые объекты с определенным поведением.
В РВ реализован полнофункциональный отладчик, позволяющий устанавливать точки останова, просматривать и изменять переменные, выполнять пошаговую трассировку приложения. Предусмотрена возможность трассировки разработанного приложения (создание и уничтожение объектов возникновение событий).
РВ поддерживает протокол DDE как клиент и как сервер, а также протокол переда чи сообщений по электронной почте MAPI РВ с самого начала проектировался как инструмент разработки приложений в среде "клиент-сервер". Поэтому доступ к SQL БД и работа с различными базами являются его органическими свойствами, а не приобретенными расширениями через искусственные механизмы типа MS FoxPro Connectivity Kit или MS Access Upsizmg Tools.
3.2.1. Структура приложений в PowerBuilder и обработчики событий
Пример структуры приложения при ра боте в конструкторе приложений показан на рис. 4.
Все приложения, окна, меню и управляющие элементы являются объектами. Каждый объект обладает атрибутами – переменными, методами – функциями и обработчиками событий.
Для обработчиков событий и функций в РВ используется объектно-ориентированный язык 4GL, называемый PowerScript. В нем реализованы все стандартные конструкции языков высокого уровня, в том числе структуры, массивы и открытые массивы.
Например, пусть Ibjiles – имя объекта типа "список" (listbox) Оператор
Ib_files.visible = FALSE
делает список невидимым. Оператор
i = lb_files.Addltem("file.ext")
добавляет элемент к списку и возвращает его номер.
С каждым объектом связаны события и их обработчики Например, на рис 5 показан обработчик события "Open" для объекта "окно" с именем w_reel_list.
В тексте программы на языке PowerScript могут быть непосредственно записаны операторы SQL с подстановкой переменных. Из программы можно вызывать хранимые процедуры (для тех СУБД, которые их поддерживают).
Управление транзакциями в РВ осуществляется с помощью операторов COMMIT и ROLLBACK и организуется по выбору разработчика одним из двух способов. В режиме автоматической фиксации каждый оператор SQL является логической единицей работы, и изменение данных в БД фиксируется автоматически (выдается COMMIT). При отказе от автоматической фиксации РВ начинает транзакцию при соединении с СУБД. Затем могут выдаваться операторы SQL. По завершении каждой логической единицы работы с БД программа фиксирует изменения (выдает COMMIT) или отменяет их (ROLLBACK). После выдачи COMMIT/ ROLLBACK автоматически начинается новая транзакция.
3.2.2. Основные конструкторы в PowerBuilder
Объект типа "окно", являющийся первым уровнем в иерархии объектов приложения, проектируется в визуальной форме в конструкторе окон (Window painter). Все операции по конструированию окна выполняются с помощью мыши в интерфейсе "возьми и отнеси" (drag-and-drop). Здесь же осуществляется компоновка элементов пользовательского интерфейса и определение для этих элементов (не обязательно для всех) реакций на различные события.
Так, на рис. 6 показан пример окна из реальной информационной системы для рекламного агентства [3].

Стандартный список управляющих элементов (кнопки, списки и т. п. ) в РВ дополнен тремя классами высокоуровневых объектов, существенно влияющими на удобство и качество разработки это окно данных (datawmdow), объект OLE2 и пользовательский объект. С точки зрения структуры приложения это равноправные по отношению к прочим элементам пользовательского интерфейса компоненты. Они обладают рядом интересных свойств, обсуждаемых ниже. Так, например, управляющий элемент, содержащий объект OLE2, размещается при конструировании окна. Из обработчиков событий для такого окна доступны обычные для технологии OLE2 процедуры – активизация объекта, создание объекта из файла, выполнение методов самого объекта. Например, можно разместить в своем приложении объект Microsoft Excel и управлять электронной таблицей из программы, разработанной на РВ.
Окна в РВ относятся к одному из стандартных типов диалог, окно многодокументного интерфейса (MDI), дочернее окно С может быть ассоциировано меню. Окна могут наследовать атрибуты и обработчики событий других окон что особенно полезно при проектировании приложений, использующих MDI-интерфейс. Для окон можно определить переменные, структуры и функции, доступные только в данном окне. Функции окна могут вызываться из обработчиков событий других окон.
Конструктор пользовательских объектов служит для создания как нестандартных элементов интерфейса, так и невидимых программных объектов с определенным "поведением". Внутри пользовательского объекта могут быть размещены другие пользовательские объекты и стандартные элементы интерфейса. Если провести аналогию с языком C++, то пользовательский объект – это класс, обладающий собственными переменными скрытыми и экспортируемыми функциями. Пользовательские объекты могут наследоваться. На рис 7 приведен пример пользовательского объекта – календаря.
Пользовательский объект может быть связан с VBX (управляющий элемент в стандарте Visual Basic), в этом случае все методы объекта – это методы, обеспечиваемые VBX.
Пользовательский объект может быть "внешним" то есть реализованным в виде динамически загружаемой библиотеки (DLL). Для облегчения создания внешних объектов РВ предоставляет возможность автоматической генерации прототипов описания методов и классов на C++ В состав пакета PowerBuilder Enterprise входит компилятор Watcom C++ для создания собственных DLL Приложение, разработанное на РВ, может использовать динамически подключаемые библиотеки Windows, разработанные третьими фирмами (например, интерфейсы с Lotus Notes, Novell NetWare и т. п.).
Одной из самых сильных сторон РВ является не имеющий аналогов гибкий и мощный механизм, заложенный в объектах-окнах данных. Он сочетает в себе мощный интерфейс с базой данных (логика автоматической выдачи операторов SQL) и развитые средства представления данных. Высокоуровневый объект -окно данных – содержит в себе мощную функциональность как для работы с базой данных (логика автоматической выдачи операторов SQL), так и для формата представления данных на экране и в отчетах (форма, таблица, кросс-таблица, график, диаграмма). Окна данных проектируются в соответствующем конструкторе и могут программно модифицироваться. Кроме того, им могут быть приданы весьма сложные функции [1].


Окно данных – это объект, выполняющий практически любые операции по отображению и редактированию информации, выбранной из БД. С элементом datawmdow ассоциируются обработчики событий изменение данных пользователем, прокрутка, смена фокуса ввода выборка записи из БД и другие.
Для ввода и отображения данных используются маски, форматы раскрывающиеся списки с выборкой из базы данных, "радиокнопки", отмечаемые кнопки, графические образы.
Объекты datawmdow проектируются водном из предусмотренных в РВ стандартных типов. На рис. 8 показан диалог для выбора типа проектируемого окна.
С приложением ассоциируются таблицы стилей для всех элементов datawmdow. Задав определенным образом отображение списков, кнопок, распахивающихся списков, маски редактирования и пр., программист тем самым обеспечивает единообразный пользовательский интерфейс для всего приложения.
В конструкторе окон данных могут определяться вычисляемые поля, которые располагаются в теле окна, в заголовке окна, в заголовке группы или в итогах по группе.
Как правило, в большинстве случаев для процедуры ввода и корректировки данных достаточно при открытии datawmdow закодировать на языке PowerScript следующую последовательность:
DW.SetTransObject(SQLCA)
DW. Retrieve()
Здесь DW – это имя управляющего элемента datawindow. Первый оператор ассоциирует с datawindow объект для связи с базой данных. Второй выбирает из последней информацию.
Реакция на кнопку "Сохранить" может состоять из одной команды:
DW.Update()
Правила обновления(использование таблиц, ключей обновляемых колонок) задаются при проектировании datawindow.
В datawindow могут использоваться колонки типа BLOB (binary large object), интерпретируемые как объекты OLE, хранимые в базе данных.
Существует широкий выбор видов графического представления данных в datawindow Пример приложения, использующего деловую графику показан на рис. 9. Разработчик выбирает вид графика и указывает какие данные и надписи размещаются по осям.

Наряду с вводом, корректировкой и экранным представлением данных, окна данных могут использоваться для генерации отчетов.
Возможно конструирование композиционных окон данных (состоящих из нескольких объектов) а также иерархических – вложенных и параметрически связанных с родительским datawindow.
Полученные отчеты могут сохраняться в файлах (специальный формат PSR) и впоследствии загружаться для просмотра или встраиваться в другие приложения как объект OLE2.
Для печати отчета кодируется единственный оператор – dw.Print().
В РВ реализован визуальный конструктор запросов к базе данных. Запросы используются в качестве источников данных для datawindow, кроме того, конструктор может быть вызван для подготовки запроса, встраиваемого в исходный текст программы.

3.2.3. Связь с СУБД
Приложение, созданное в РВ, может одновременно работать с несколькими СУБД Взаимодействие приложения и СУБД осуществляется через специальный объект-область транзакций (transaction object). Приложение может создавать несколько областей транзакций.
Объект-область транзакций используется во встроенном SQL при выдаче динамически формируемых операторов SQL и при работе с окнами данных.
Программе доступны механизмы передачи параметров, курсоры описания колонок (результатов запроса), сообщения и коды ошибок СУБД.
В качестве визуального средства создания приложений РВ предоставляет администраторам и разработчикам БД конструктор базы данных, выполняющий следующие функции:
– отображение структуры базы данных (таблицы, первичные и внешние ключи, комментарии),
– модификация структуры базы данных и определение расширенных атрибутов
– реализация интерактивного SQL,
– просмотр и редактирование данных в таблицах.
Для копирования таблиц из одной базы данных в другую в том числе и между разными СУБД, в РВ применяется специальный объект называемый pipeline Например, можно копировать таблицы из SQL Server в локальную СУБД Watcom.
Использование объекта pipeline позволяет копировать данные в локальную БД, так что впоследствии можно работать без необходимости доступа к сети.
Как и прочие объекты РВ, pipeline создается соответствующим конструктором и затем может генерироваться и активизироваться в программе.
ЛИТЕРАТУРА
1 Тандоев А.Ю. Архитектура продуктов "клиент-сервер" фирмы Sybase СУБД п. 1, 1995, с. 62-69.
2 Кодд Е.Ф. Реляционная модель данных для больших совместно используемых банков данных СУБД п. 1, 1995.
3 Chen P.P. The Entity-Relationship Model Toward Unified View of Data ACM Transactions on Database Systems, vol. 1, n 1, 1976.
4 Горин С.В., Тандоев А.Ю. Среда разработки приложений PowerBuilder DBMS/Russian Edition, n. 1, 1995.
5 Горин С.В., Тандоев А.Ю. CASE средство S-Designor 4.2 для разработки стриктуры базы данных Монитор, п. 7, 1995.