Driving Development
David S. Linthicum, published author, speaker, and senior manager
with AT&T Solutions Systems Integration Practice
E-mail:
Правильный выбор средства разработки представляет из себя не только хорошую (и часто случайную) идею, но также может влиять на успех или провал проекта. Например, средства, не обеспечивающие достаточной масштабируемости, не подходят для разработки проекта в архитектуре "клиент-сервер" с требованиями поддержки 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.,
4D Enterprise
Aimtech Corp.,
Jamba
Allaire Corp.,
Cold Fusion Professional 2.0
Aonix,
ObjectAda, Software through Pictures, Nomad
Apple Computer Inc.,
WebObjects
Applix Inc.,
Applix Anyware, ApplixBuilder
Apptivity Corp.,
Apptivity
Asymetrix Corp.
SuperCede
Bluestone Inc.,
Sapphire/Web
Blyth Software Inc.,
Omnis
Borland International Inc.,
Borland C++, Delphi, Visual dBASE 5.5
Centura Software Corp.,
Centura Team Developer
Cognos Inc.,
Axiant
Computer Associates International Inc.,
CA-OpenRoad, CA-VisualObjects, CA-Visual Realia
Compuware Corp.,
Uniface Seven
Dunasty Technologies Inc.
Dynasty Development Environment
EveryWare Development Corp.,
Tango
Forte Software Inc.,
Forte Application Environment
GemStone Systems Inc.,
GemStone Object/Web Server
HAHT Software Inc.,
HAHTSite
IBM Software Solutions,
VisualAge for Basic, VisualAge for Smalltalk, VisualAge for
Smalltalk - Web Connection, VisualAge for Cobol, VisualAge for C++
ILOG Inc.,
ILOG Talk
Information Builders Inc.,
Cactus, Focus, Level\5 Object Professional
Informix Software Inc.,
Informix-4GL, Informix NewEra, Informix NewEra ViewPoint Pro,
Informix-SQL
Infoscape Inc.,
Fresco
Integrated Computer Solutions Inc.,
Builder Xcessory PRO
Intersolv Inc.,
Allegris Series, Intersolv DataDirect Developer's Toolkit
InterSystems Corp.
Open M
Magic Software Enterprises Inc.,
Magic
Microsoft Corp.,
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.,
Elements Environment
Nombas Inc.,
ScriptEase
Oracle Corp.,
Developer/2000, PowerObjects
ParcPlace-Digitalk Inc.,
VisualWave, VisualWorks
Passport Corp.,
Passport IntrPrise
Platinum Technology Inc.,
Platinum ObjectPro, Platinum Paradigm Plus
Poet Software Corp.,
Poet Universal Object Server
Poersoft (Sybase Inc.),
Optima++, PowerBuilder
Progress Software Corp.,
Progress version 8.1, WebSpeed Transaction Server, WebSpeed
Workshop
Prolifics (JYACC),
JAM 7, JAM/WEB, Prolifics
ProtoView Development Corp.
ProtoGen+, ProtoGen+ Client/Server Suite, ProtoGen+ Pro
Rational Software Corp.,
Rational Rose
Riverton Software Corp.,
HOW 1.0
Rogue Wave Software,
DBtools.h++ 2.0, Jfactory
Software AG,
Natural, Natural for Windows, Natural LightStorm, Natural ND
SourceCraft Inc.,
NetCraft
Stingray Software Inc.,
Objective Blend
SunSoft (подразделение Sun Microsystems Inc.),
Java WorkShop
Symantec Corp.,
Visual Cafe Pro
Texas Instruments Inc.
Arranger, Composer, Performer, WebCenter
TopSpeed Corp.,
Clarion for Windows
Unidata Inc.,
RedBack, SB Desktop, SB+ for Windows, SB+ Server, UniBasic, UniSQL
Unify Corp.,
Unify Vision, Vision/Web
Usoft,
Usoft Developer
Versant Object Technology Corp.,
Versant C++ Application Toolset
ViewSoft Inc.,
ViewSoft Internet
Vision Software Tools Inc.,
Vision Builder
Подробное описание всех этих продуктов можно найти в DBMS Buyer's
Guide, доступном по адресу