Обзор статей журнала DBMS, vol.10, N 4, April 1997

С. Кузнецов, ЦИТ

Driving Development

David S. Linthicum, published author, speaker, and senior manager
with AT&T Solutions Systems Integration Practice
E-mail: dlinthicum@attsolva.attmail.com

Правильный выбор средства разработки представляет из себя не только хорошую (и часто случайную) идею, но также может влиять на успех или провал проекта. Например, средства, не обеспечивающие достаточной масштабируемости, не подходят для разработки проекта в архитектуре "клиент-сервер" с требованиями поддержки 1000 или более пользователей. Средства, которые не обеспечивают ожидаемой эффективности, отпугнут пользователей от системы сразу после завершения ее разработки. Средства, которые не поддерживаются другими средствами и библиотеками объектных модулей, поставят перед вами потребность в разработке внешних связей с CASE-системами, управлении исходным текстом и тестировании.

Этот специальный выпуск журнала DBMS предназначен для того, чтобы помочь разработчикам и архитекторам приложений в архитектурах "клиент-сервер" и Internet/Intranet разобраться в сложном мире средств разработки приложений. В этом выпуске вы найдете обзоры новых и улучшенных версий продуктов-лидеров в этой области: Borland Delphi, Microsoft Visual Basic, Oracle Developer/2000 и Powersoft PowerBuilder. Поскольку мир не ограничивается этими четырьмя продуктами, читателям представляется обзорная статья Robin Schumacher, в которой представляется широкий спектр средств разработки, присутствующих на рынке, ориентированных на персональные компьютеры, корпоративные системы или сетевые разработки. Однако, прежде, чем переходить к самим средствам, важно понять принципы их классификации и основные свойства.

В нашем смысле, средство разработки в архитектуре "клиент-сервер" - это любая среда разработки: компилятор, генератор отчетов или даже средства, которые пригодны для разработки и распространения приложений баз данных (в стиле "клиент-сервер"). Хотя большинство из этих средств пригодны для создания приложений на стороне клиента, некоторые в состоянии распределить загрузку прикладной обработки между несколькими процессорами или даже сгенерировать прикладные объекты, которые будут выполняться на сервере баз данных. Средства отличаются одно от другого как день от ночи, но большинство из них имеет общие свойства. Например, большая часть средств поддерживает интегрированную среду разработки (Integrated Development Environment - IDE). IDE - это одновременно художественная мастерская и лаборатория разработчика, где он может сконструировать интерфейс и определить его поведение посредством программирования. Обычно IDE поддерживает возможности разметки экрана, объектные обходчики (если хотите, браузеры), интегрированные отладчики и текстовые редакторы. Обеспечивается также связь с различными базами данных с помощью встроенного программного обеспечения промежуточного уровня, такого как ODBC или JDBC. Многие IDE связаны с серверами баз данных, которые локально выполняются на стороне клиента, что позволяет разработчикам строить приложения до того, как будут обеспечено подсоединение к удаленному серверу.

Все средства разработки поддерживают некоторый вид языка программирования, наличие которого позволяет разработчикам кастомизировать поведение приложения. Большинство средств поддерживает объектно-ориентированную модель разработки. Сегодня, когда распространена многоуровневая архитектура "клиент-сервер", средства разработки оказываются в состоянии связываться со средними уровнями - TP-мониторами и брокерами объектных заявок (Object Request Brokers - ORB). Имеются также возможности разделения объектов между набором серверов. В отличие от универсальных языков программирования (типа Cobol или Си++), в среде которых разработчики должны напрямую взаимодействовать с API и операционной системой, развитые средства разработки скрывают от разработчика детали. Это означает, что разработчики могут строить приложения быстро, поддерживая стиль быстрой разработки приложений (Rapid Application Development - RAD) и прототипирования.

Средства разработки классифицируются в следующие типы: 3GL, специализированные, мультиплатформенные, Smalltalk, файл-ориентированные базы данных, предназначенные для генерации отчетов и OLAP, генерирующие код, CASE, разделяющие приложение и Web-ориентированные.

Средства категории 3GL - это традиционные языки программирования общего назначения, такие как C++, Pascal, Cobol и FORTRAN. Лучшими представителями на рынке "клиент-сервер" являются Microsoft Visual C++, Borland C++, Symantec C++ и Borland Object Pascal. Эти средства общего назначения не разрабатывались специально в расчете на приложения баз данных, но обычно они включают библиотеки, обеспечивающие связь с базами данных. Средства 3GL существенно развились за последние несколько лет, но все равно являются более примитивными, чем специализированные средства. Разработчики должны иметь дело с моделями памяти, функциями операционной системы и даже с вводом/выводом, задаваемым прямо из программы на языке программирования. Однако, поскольку для языков третьего поколения обычно используются компиляторы, преимуществом таких средств является повышенная эффективность выполняемого кода.

Специализированные средства предназначены для специфической цели создания приложений баз данных в архитектуре "клиент-сервер". Сегодня всем привычны такие названия специализированных средств как PowerBuilder, Delphi и Visual Basic. Такие средства обеспечивают разработчика всем необходимым для проектирования, построения и внедрения приложения. Кроме того, они включают высокоуровневый язык программирования (как правило, 4GL или визуальный язык), IDE, отладчик и библиотеку объектов, которые разработчик может использовать в приложении. Применение специализированных средств позволяет ускорить процесс разработки приложения, но поскольку в них используются интерпретаторы, а не компиляторы, может быть утрачена эффективность. Этот недостаток постепенно устраняется по мере того, как средства программирования четвертого поколения переходят к использованию реальных компиляторов.

Мультиплатформенные средства (их также называют кросс-платформенными) очень похожи на специализированные средства, но позволяют распространить одно приложение на произвольное число платформ. Эти средства дают возможность разрабатывать приложения для организаций, располагающих большим количеством разнотипных клиентских платформ. Примерами мультиплатформенных средств являются Jam 7 (JYACC Corp.), Unify (Unify Corp.) и Uniface (Compuware Corp.). В таких средствах должны приниматься во внимание различия в возможностях графического пользовательского интерфейса, сервисах и интерфейсах операционных систем, а также доступность программного обеспечения промежуточного уровня, такого как OLE, ODBC или Windows Help. Web-браузеры в некоторой степени сглаживают различия между операционными системам, но при их использовании приходится учитывать различия между самими браузерами, поскольку разные браузеры не поддерживают один и тот же набор возможностей.

Средства Smalltalk образуют отдельную категорию. В них применяется чисто объектный подход к разработке приложений. На основе усложненного механизма оболочек даже реляционные базы данных трактуются как объекты. Примерами средств Smalltalk являются Object Studio (VMark Software Inc.), Visual Age for Smalltalk (IBM Corp.), Visual Smalltalk Enterprise и Visual Works (ParkPlace-Digitalk Inc.)

Файл-ориентированные и основанные на персональных базах данных средства происходят от средств семейства Xbase и включают Microsoft Visual FoxPro и Access, Lotus Approach и Borland Visual dBase. Эти средства работают с базами данных, хранящимися в файлах на локальных или совместно используемых дисках. Поскольку файл-ориентированные СУБД не являются истинными серверами баз данных, работа с базами данных должна производиться в средствах разработки и производимых с их помощью приложениях. Большинство файл-ориентированных средств снабжено механизмами, позволяющими перейти к модели "клиент-сервер" за счет наличия соответствующих возможностей подключения к серверам баз данных. Например, в Microsoft FoxPro имеется даже метод "укрупнения" приложений, в котором используется Upsizing Wizard, упрощающий миграцию данных из файлов на сервер баз данных. Кроме того, поддержка доступа к реляционным базам данных на основе ODBC в придачу к имеющимся собственным средствам управления базами данных делает разницу между файл-ориентированными и специализированными средствами разработки довольно расплывчатой.

Средства генерации отчетов и разработки OLAP-приложений, не будучи предназначенными для создания приложений общего назначения, позволяют разработчикам создавать специализированные аналитические приложения с целью выборки и обработки данных. Генераторы отчетов на основе языка SQL дают возможность визуального проектирования отчетов и генерируют SQL-код, требуемый для общения с базой данных. Примерами таких средств являются Report Smith (Borland) и Crystal Report (Seagate Software). OLAP-cредства близки по смыслу к генераторам отчетов, но разрабатываются для того, чтобы позволить пользователям и разработчикам по-своему перекраивать склады данных (datawarehouses), придавая смысл огромным объемам данных. PowerPlay (Cognos) - пример OLAP-средства.

Средства, генерирующие код, работают подобно специализированным средствам, но генерируют код на языках третьего поколения, обрабатываемый традиционными компиляторами, а не обеспечивают свои собственные механизмы. Пример такого средства - ProtoGen компании Protosoft.

CASE-средства позволяют разработчикам и архитекторам приложений проектировать и создавать как приложения, так и базы данных. В них используются сложные подсистемы работы с диаграммами, позволяющие понять систему на логическом уровне, прежде чем генерировать прикладные объекты и схему базы данных. Еще несколько лет тому назад CASE-средства считались слишком утонченными, но теперь многие производители средств разработки оценили их преимущества. Границы между моделированием и конструированием приложений рушатся. Примерами моделирующих средств, генерирующих приложения для Visual Basic, PowerBuilder и других средств разработки являются Rational Rose (Rational Software) и ERwin (Logic Works).

Средства, разделяющие приложения, такие как Cactus (IBM), Forte (Forte) и Dynasty (Dynasty) позволяют разработчику создать логическую версию приложения, а затем распределить выполняемые объекты между несколькими доступными серверами. В отличие от ранних специализированных средств разработки приложений в архитектуре "клиент-сервер", в которых почти всегда используется двухзвенная модель "клиент-сервер" с "толстым" клиентом, средства, разделяющие приложения, основаны на n-звенной модели и дают возможность выполнять объекты приложения на любом числе серверов и/или клиентов. В этих средствах используются собственные реализации механизма брокера объектных заявок (Object Request Broker - ORB) и механизмы передачи сообщений, позволяющие объектам совместно пользоваться информацией.

Самую новую категорию средств разработки составляют Web-ориентированные средства. На самом деле, эти средства являются новыми версиями средств, рассмотренных ранее, за исключением того, что они позволяют генерировать приложения для использования в Internet или Intranets. В них используются такие технологии как HTML, CGI, NSAPI, ISAPI, Java и ActiveX. К средствам, специально ориентированным на разработку Web-приложений, относятся Visual J++ (Microsoft) и Cafe Pro (Symantec). Unify и Uniface поддерживают возможность как приложений в архитектуре "клиент-сервер", так и Web-приложений. Имеется ряд других примеров, и их число быстро растет. Такие средства позволяют строить приложения, которые выполняются на Web-браузерах, в то время как традиционные "клиент-серверные" средства разработки генерируют свой собственный интерфейс.

До выбора конкретного средства разработки полезно проанализировать, какими общими свойствами обладает большинство средств, а затем сравнить их возможности. Средства могут быть очень разными, но в большинстве из них можно выявить наличие пяти базовых уровней: уровня доступа к базам данных, уровня репозитария, уровня проектирования интерфейсов, уровня программирования и уровня распространения.

Уровень доступа к базам данных действует как посредник между целевой базой данных и средством разработки (и приложением после завершения его разработки). Этот уровень управляет всеми обращениями нижнего уровня к базе данных. Он может быть независимым от типа базы данных и позволять взаимодействовать с базами данных Oracle, Sybase, Informix и т.д. Обычно это означает, что средство разработки знает, как загружать и разгружать драйверы для доступа к целевым базам данных. Уровень доступа к базам данных дает возможность получить данные несколькими разными способами. Во-первых, можно иметь доступ к данным как к объектам приложения. Манипулирование объектами (изменение их свойства и вызов методов) соответствует манипулированию данными. Так работают все средства семейства Smalltalk и некоторые специализированные средства, такие как компонент Visual Basic, называемый Data Access Objects (DAO). Во-вторых, можно обращаться к данным в традиционной реляционной схеме. Это позволяет работать с таблицами, столбцами, строками и т.д., а не с объектами. Многие разработчики, обладающие опытом проектирования реляционных баз данных, считают этот способ доступа к данным наиболее естественным. Наконец, можно получить доступ к данным на основе использования собственного интерфейса соответствующего драйвера с применением уровня доступа или API. Преимущество этого подхода в том, что он позволяет воспользоваться возможностями, недоступными при применении других подходов, например, хранимыми процедурами.

Уровень репозитария представляет собой всего лишь дополнительный уровень абстракции над уровнем доступа к базам данных. Хотя в некоторых средствах разработки (PowerBuilder, Uniface и Oracle Developer/2000) используются весьма развитые репозитарии, в нескольких средствах (Delphi и Visual Basic) они не используются вообще. (Однако Visual Basic 5.0 будет включать уровень репозитария.) В разных средствах разработки возможности и емкость репозитария существенно различаются. Уровень репозитария позволяет хранить в базе данных информацию о базе данных, такую как бизнес-правила, применяемые к конкретному атрибуту базы данных, или даже цвет и фонт, которые должны использоваться при отображении значений атрибута в приложении. Репозитарий может обладать поведением, определяющим, например, действия, которые должны быть выполнены при добавлении строки к таблице. В некоторых средствах (например, в JAM 7) репозитарий используется для хранения интерфейсных объектов. Некоторые репозитарии могут хранить и обрабатывать объекты приложений и даже определять параметры безопасности приложения. Репозитарии могут поддерживаться на стороне клиента или на стороне сервера баз данных. В последнем случае облегчается совместное использование данных несколькими разработчиками. Во многих случаях репозитарии поддерживают некоторые объектно-ориентированные аспекты средства разработки. Поскольку атрибуты элемента данных разделяются между всеми компонентами приложения, изменение значения атрибута в репозитарии приводит к автоматическому изменению атрибута во всех использующих его объектах.

Уровень разработки интерфейсов - это еще одна подсистема средства разработки, которая предназначена для создания экранов, окон и меню, с которыми может взаимодействовать пользователь. Обычно доступны функции тестирования, позволяющие увидеть как работает интерфейс сразу после его создания.

Уровень программирования - это подсистема средства разработки, позволяющая кастомизировать поведение приложения с использованием языка программирования. Большинство современных средств разработки управляется событиями, т.е. приложение выполняет некоторое действие (например, чтение из базы данных или печать отчета) в соответствии с поведением интерактивного пользователя. Обычно разработчики связывают программный код с управляющими воздействиями используя редакторы кода, которые доступны на уровне разработки интерфейсов. Для кодирования в разных средствах разработки используются разные языки. Например, в PowerBuilder используется PowerScript, Basic-подобный 4GL, в Visual Basic - VBA (Visual Basic for Applications), расширенная версия языка Basic. В некоторых средствах применяются традиционные 3GL; например, в средстве Optima++ - C++, в Delphi - Object Pascal. Кроме редактора кода, уровень программирования обеспечивает возможности отладки на уровне соответствующего кода.

Уровень распространения предоставляет средства трансляции приложения в нечто, выполняемое клиентом. Обычно это значит, что средство может создать p-код и предоставить его интерпретатор (и то, и другое располагается на стороне клиента, обеспечивая выполнение приложения). Однако сегодня все более усиливается тенденция к использованию компиляторов в машинные коды. В некоторых случаях, в частности, в средствах, разделяющих приложение, уровень распространения отвечает за генерацию прикладных объектов, используемых приложением и серверами баз данных. Хорошими примерами таких продуктов являются Forte и Dynasty.

Ведущие компании, производящие средства разработки, и их продукты:

ACI US Inc., www.aci-4D.com
4D Enterprise

Aimtech Corp., www.aimtech.com
Jamba

Allaire Corp., www.allaire.com
Cold Fusion Professional 2.0

Aonix, www.aonix.com
ObjectAda, Software through Pictures, Nomad

Apple Computer Inc., www.apple.com
WebObjects

Applix Inc., www.applix.com
Applix Anyware, ApplixBuilder

Apptivity Corp., www.apptivity.com
Apptivity

Asymetrix Corp.
SuperCede

Bluestone Inc., www.bluestone.com
Sapphire/Web

Blyth Software Inc., www.blyth.com
Omnis

Borland International Inc., www.borland.com
Borland C++, Delphi, Visual dBASE 5.5

Centura Software Corp., www.centurasoft.com
Centura Team Developer

Cognos Inc., www.cognos.com
Axiant

Computer Associates International Inc., www.cai.com
CA-OpenRoad, CA-VisualObjects, CA-Visual Realia

Compuware Corp., www.compuware.com
Uniface Seven

Dunasty Technologies Inc.
Dynasty Development Environment

EveryWare Development Corp., www.everyware.com
Tango

Forte Software Inc., www.forte.com
Forte Application Environment

GemStone Systems Inc., www.gemstone.com
GemStone Object/Web Server

HAHT Software Inc., www.haht.com
HAHTSite

IBM Software Solutions, www.software.ibm.com
VisualAge for Basic, VisualAge for Smalltalk, VisualAge for Smalltalk - Web Connection, VisualAge for Cobol, VisualAge for C++

ILOG Inc., www.ilog.com
ILOG Talk

Information Builders Inc., www.ibi.com
Cactus, Focus, Level\5 Object Professional

Informix Software Inc., www.informix.com
Informix-4GL, Informix NewEra, Informix NewEra ViewPoint Pro, Informix-SQL

Infoscape Inc., www.infoscape.com
Fresco

Integrated Computer Solutions Inc., www.ics.com
Builder Xcessory PRO

Intersolv Inc., www.intersolv.com
Allegris Series, Intersolv DataDirect Developer's Toolkit

InterSystems Corp.
Open M

Magic Software Enterprises Inc., www.magic-sw.com
Magic

Microsoft Corp., www.microsoft.com
Microsoft Access 97, Microsoft Visual Basic, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual J++, Visual InterDev

Mozart Systems Corp.
Mozart

Neuron Data Inc., www.neurondata.com
Elements Environment

Nombas Inc., www.nombas.com
ScriptEase

Oracle Corp., www.oracle.com
Developer/2000, PowerObjects

ParcPlace-Digitalk Inc., www.parcplace.com
VisualWave, VisualWorks

Passport Corp., www.passport4gl.com
Passport IntrPrise

Platinum Technology Inc., www.platinum.com
Platinum ObjectPro, Platinum Paradigm Plus

Poet Software Corp., www.poet.com
Poet Universal Object Server

Poersoft (Sybase Inc.), www.powersoft.com
Optima++, PowerBuilder

Progress Software Corp., crescent.progress.com
Progress version 8.1, WebSpeed Transaction Server, WebSpeed Workshop

Prolifics (JYACC), www.prolifics.com
JAM 7, JAM/WEB, Prolifics

ProtoView Development Corp.
ProtoGen+, ProtoGen+ Client/Server Suite, ProtoGen+ Pro

Rational Software Corp., www.rational.com
Rational Rose

Riverton Software Corp., www.riverton.com
HOW 1.0

Rogue Wave Software, www.roguewave.com
DBtools.h++ 2.0, Jfactory

Software AG, www.sagus.com
Natural, Natural for Windows, Natural LightStorm, Natural ND

SourceCraft Inc., www.sourcecraft.com
NetCraft

Stingray Software Inc., www.stingsoft.com
Objective Blend

SunSoft (подразделение Sun Microsystems Inc.), www.sun.com/sunsoft
Java WorkShop

Symantec Corp., www.symantec.com
Visual Cafe Pro

Texas Instruments Inc.
Arranger, Composer, Performer, WebCenter

TopSpeed Corp., www.topspeed.com
Clarion for Windows

Unidata Inc., www.unidata.com
RedBack, SB Desktop, SB+ for Windows, SB+ Server, UniBasic, UniSQL

Unify Corp., www.unify.com
Unify Vision, Vision/Web

Usoft, www.usoft.com
Usoft Developer

Versant Object Technology Corp., www.versant.com
Versant C++ Application Toolset

ViewSoft Inc., www.viewsoft.com
ViewSoft Internet

Vision Software Tools Inc., www.vision-soft.com
Vision Builder

Подробное описание всех этих продуктов можно найти в DBMS Buyer's Guide, доступном по адресу www.dbmsmag.com