Обзоры
RAD – быстрая разработка приложений
Владимир Смирнов
Создание крупномасштабных информационных систем (ИС) всегда было чрезвычайно сложным делом, доступным только коллективам высококлассных программистов, поскольку при этом затрагивалась масса проблем, выходящих далеко за рамки компетенции и подготовки даже опытных пользователей.
До недавнего времени все разработки ИС велись в основном на традиционных языках программирования. Необходимость учета многочисленных условий функционирования ИС и требований пользователей приводили к тому, что процесс создания слагался из нескольких циклов, когда разрабатываемая система последовательно приближалась к желаемому облику. В ходе многочисленных согласований разработчики старались понять, что именно хотят пользователи от создаваемой ИС, и, наконец, наступал момент, когда все мнения и интересы прояснялись, и начиналось программирование. В результате многие из таких систем отражали лишь точку зрения разработчика и навязывали пользователям довольно жесткие схемы обработки информации. При такой технологии ИС "отчуждали" пользователей от информации и вынуждали их занимать пассивную позицию: они становились наблюдателями того, что сделали разработчики. Это приводило к необходимости бесчисленных модернизаций и модификаций систем, а разработка и развертывание затягивались на годы. Стремительность изменения бизнес-процессов, отображаемых в разрабатываемых ИС, потребовала значительного сокращения сроков их создания.
Не секрет, что, испробовав возможности локальных сетей PC, пользователи уже успели вкусить удобства решения своих частных задач "на рабочем столе" и прелесть графического интерфейса Windows. Естественно, то же самое виделось им и при работе с ИС: возможность с той же легкостью, не прибегая к чьей-либо помощи, получать, вводить и обрабатывать данные, не задумываясь над тем, где они находятся и как осуществить обработку. Пользователям раз и навсегда хотелось распрощаться с убогим интерфейсом текстовых сред представления данных и окончательно перейти на ставший уже привычным графический пользовательский интерфейс (Graphical User Interface, GUI) – с окнами, листаемыми списками, меню, кнопками управления.
Все это послужило предпосылкой к рождению целого направления в индустрии программного обеспечения, чье имя – создание инструментов быстрой разработки приложений
Почему RAD
В последнее время фирмы-производители ПО буквально заполонили рынок версиями своих продуктов, анонсируемых в качестве RAD (Rapid Application Development, или средства быстрой разработки приложений). Что же привело к такой популярности инструментов быстрой разработки прикладных ИС?
Чтобы ответить на этот вопрос, нужно вспомнить, что, вообще говоря, доступ к данным, необходимым пользователям для решения собственных задач, обеспечивают различные средства: электронные таблицы, Paradox'bi и РохВаsе'ы персональных компьютеров, инструменты реляционных промышленных СУБД для создания запросов и построения отчетов конечными пользователями, традиционные языки программирования и, наконец, RAD.
С точки зрения возможностей создания крупных информационных систем, все эти средства оцениваются по-разному (см. таблицу). Инструментальные средства PC при низкой стоимости развертывания и обслуживания не обладают необходимыми функциональными возможностями для формирования запросов и создания отчетов, потому принципиально не могут стать основными в информационных системах.
Точно так же в качестве основного не может рассматриваться инструментарий современных промышленных СУБД, так как он предполагает владение им конечных пользователей (иначе говоря, все они должны быть программистами).
Остаются возможности программирования в традиционных языках и инструменты RAD, требующие для создания ИС участия коллективов программистов. А для последних предпочтительность RAD совершенно неочевидна. Так, по результатам проведенных за рубежом опросов, более двух миллионов программистов до сих пор применяет Кобол как основу для создания прикладных программ обработки информации БД. В то же время корпорации-потребители все более тянутся к инструментам RAD, которые привлекают их способностью к быстрому развертыванию, короткими циклами разработки и модификации приложений при сниженной стоимости. А спрос, как известно, рождает предложение.
Еще лет пять назад разработчики приложений для баз данных в архитектуре "клиент-сервер" могли лишь мечтать об использовании инструментов RAD. Ибо в эпоху алфавитно-цифровых терминалов, когда не было даже самого термина GUI, вся идеология RAD сводилась к формальному утверждению необходимости итерационного подхода к разработке ПО.

Сущность ее состояла в параллельном управлении анализом будущей ИС, ее проектированием и разработкой, созданием прототипов отдельных частей системы и собственно программирования – написания кодов. Прототипы всегда были исходной точкой финальной разработки, так как устраняли неправильное понимание облика и возможностей приложения. Как только разработчик и конечный пользователь согласовывали прототип, первый приступал к написанию кодов приложения на языке типа Кобол или Си. Но вместо работающих приложений прототипы, как правило, приводили разработчика к программам, "неясно их отражающим", а чтобы их исправить, нужно было пересматривать многие решения и заново программировать. В итоге финальная разработка представляла собой цепь из множества ошибочных вариантов, приводивших в конце концов к единственно верному результату.
RAD – это комплект специальных инструментальных средств быстрой разработки прикладных ИС, позволяющих оперировать с определенным набором графических объектов, функционально отображающих отдельные информационные компоненты приложений.
Средства RAD дали возможность реализовать совершенно иную технологию создания приложений: информационные объекты формируются как некие действующие модели (прототипы), чье функционирование согласовывается с пользователем, а затем разработчик может переходить непосредственно к формированию законченных приложений, не теряя из виду общей картины проектируемой системы. Поэтому средства RAD являются в определенном смысле ключом к успеху в разработке ИС.
Подобное свойство инструментов RAD появилось как результат объектно-ориентированного подхода, внедряемого в системы программирования уже более 30 лет. Одна из трудностей в написании программного обеспечения заключается в глубокой пропасти между реальным миром, где существует описываемая проблема, и имитирующей средой. Один из путей упрощения разработки системы – создание отражений элементов предметной области. Например, для имитации уличного движения необходимы программные версии автомобилей, мотоциклов, дорог и светофоров. Банковская система должна содержать такие элементы, как банки, счета, брокеры и т.д. Эти составляющие программной среды (отражающие сущности реального мира) называются объектами. Если система строится с использованием подобных процессов, значит, используется объектно-ориентированный подход.
Объектно-ориентированное программирование реально возникло тогда, когда было обеспечено слияние (инкапсуляция) данных с процедурами, описывающими поведение реальных объектов, в ОБЪЕКТЫ программ, которые могут быть отображены определенным образом в графической пользовательской среде (GUI). Это позволило приступить к созданию программных систем, максимально похожих на реальные, и добиваться наивысшего уровня абстракции. В свою очередь, объектно-ориентированное программирование помогает создавать более надежные коды, так как у объектов программ существует точно определенный и жестко контролируемый интерфейс.
RAD – объектно-ориентированные инструменты
Разработка приложений с помощью инструментов RAD ведется на основе использования множества готовых объектов, сохраняемых в общедоступном архиве. При этом важно, чтобы инструменты RAD в полной мере были объектно-ориентированными, что становится возможным тогда, когда используемый для их написания язык программирования сам является объектно-ориентированным.
Еще в начале 80-х годов фирма Forte Software создала язык Forte 4GL (4-th Generation Language, или язык 4-го поколения), который первым представил эту парадигму в виде реальной среды программирования. Вслед за ним появилось целое семейство языков 4GL, избавляющих разработчика (в отличие от языков третьего поколения – 3GL – Си, Си++, Кобол, Фортран и Паскаль) от сложностей формирования естественного GUI пользователя, использования ресурсов операционной среды, определения условий ввода/вывода данных, управления памятью ЭВМ и, что крайне важно для приложений в архитектуре "клиент-сервер", обеспечивающих SQL доступ к распределенным реляционным базам данных.
Объектно-ориентированные языки 4GL оперируют в первую очередь со стандартными информационными объектами – окнами, списками, текстами, которые можно довольно просто связать с данными из БД и отобразить на экране монитора. Другая группа объектов представляет собой элементы управления (графические кнопки, "радиокнопки", меню, линейки скроллинга и т.д.), с помощью которых можно легко осуществлять управление отображаемыми данными. Все эти объекты могут быть стандартным образом описаны средствами языка, а сами описания сохранены для дальнейшего повторного использования. Для каждого из стандартных объектов заданы: предопределенный внешний облик, свойства и поведение в конкретных ситуациях путем инкапсулирования внутренних процедур и методов. Но стандартные описания объектов можно расширять, дополняя их новыми строками кода на языке 4GL и тем самым создавая новые объекты, выполняющие более сложные виды обработки информации. Каждый из уже существующих или вновь созданных объектов может встраиваться в окна и экраны конкретных приложений. Оперируя с множеством объектов разных классов, можно связывать их в объекты более высокого уровня, легко интерпретируемые в качестве реальных объектов прикладных ИС.
С появлением объектно-ориентированных языков 4GL, включающих в себя средства формирования GUI, ситуация в разработке прикладных ИС принципиально меняется: инструменты RAD становятся визуальными и позволяют на любом этапе наблюдать то, что закладывается в основу принимаемых решений. Появился даже термин "визуальное программирование", определяющий новую технологию разработки. Некоторые RAD способны преобразовывать и отображать данные в графиков и диаграмм, а наиболее совершенные могут включать в создаваемые приложения звук, рисунки и графику как мультимедийные объекты.
Объектно-ориентированные инструменты RAD в среде GUI позволяют на основе стандартных классов объектов, для которых инкапсулированы атрибуты и внутренние процедуры, формировать простые приложения без написания кода программы. Это составляет ПЕРВОЕ ПРЕИМУЩЕСТВО RAD, так как теперь даже конечный пользователь может создавать приложения, предназначенные для решения собственных задач. Поскольку разработка прототипов для пользовательского интерфейса по существу стала одной и той же задачей, программист получает непрерывную обратную связь с конечными пользователями, которые могут не только наблюдать за созданием приложения, но и активно участвовать в нем, корректируя результаты и свои требования. Это также способствует сокращению сроков разработки и является важным психологическим аспектом, который привлекает к RAD все большее число пользователей.
Кроме того, объектная ориентация инструментов RAD позволяет самим разработчикам сосредоточиться на сущности реальных бизнес-процессов предприятия, для которого создается ИС. Это в итоге не может не повлиять на качество отображения моделируемых условий функционирования системы и требований пользователей в создаваемых прототипах и приложениях.
Каждый из объектов таких приложений может быть "подключен" к базе данных, отображая в соответствии с ее текущим состоянием необходимую информацию, для чего в состав RAD включаются драйверы, обеспечивающие либо прямой интерфейс доступа к БД, либо доступ через стандартный интерфейс Microsoft ODBC (Open Database Connectivity).
За счет чего ускоряет разработку
Визуальные инструменты RAD позволяют максимально сблизить этапы создания ИС: анализ исходных условий, проектирование системы, разработка прототипов и окончательное формирование приложений становятся сходными, так как на каждом этапе разработчики оперируют с визуальными ОБЪЕКТАМИ.
Имея в составе RAD библиотеку заранее созданных и предопределенных объектов, разработчик может многократно использовать их в конкретном приложении как шаблоны, не создавая их каждый раз заново. Повторное использование объектов (reusable objects), а следовательно, и кодов программ, составляет ВТОРОЕ И ОСНОВНОЕ ПРЕИМУЩЕСТВО объектно-ориентированных RAD.
Возможность многократного применения объектов освобождает разработчиков от необходимости рутинного ручного программирования: не нужно заново писать сотни и тысячи строк кодов стандартных описаний и операций. Ускоряется создание прототипов, а разработка логики поведения приложений становится намного проще. Поданным ряда зарубежных разработчиков, действующие прототипы приложений на основе RAD могут быть созданы в течение 2-х – 4-х недель, а то и нескольких дней (напомню, что при использовании традиционных языков на это уходило до полугода и более).
В случае необходимости дополнительного кодирования, предназначенного для настройки функциональных возможностей приложения, инструменты RAD могут предложить средства языков 4GL, которые в большинстве случаев не требуют написания SQL-запросов и изолируют их от низкоуровневых обращений к интерфейсу прикладного программирования (API calls) или специальных вычислений и способов отображения информации. Обычно ручное программирование при использовании RAD требуется в весьма ограниченном объеме или не требуется вовсе.
Большинство RAD в удобно интерпретируемом режиме в интегрированной среде разработки (Integrated Development Environment, IDE) дает возможность разработчикам тестировать все созданные компоненты приложений как по отдельности, так и во взаимосвязи с остальными. При обнаружении ошибок кодирования инструментарий RAD обычно предоставляет разработчику полнофункциональные средства отладки и модификации.
Чтобы понять и оценить возможности инструментов RAD, попробуем проследить за действиями разработчика, создающего один из компонентов приложения – окно с листаемым списком данных, выбранных из БД. Для этого воспользуемся методологией и инструментами RAD компании Progress Software Corp., занявшей в 1994-1995 годах первое место среди фирм-производителей средств разработки для промышленных СУБД в архитектуре "клиент-сервер" (по опросу, ежегодно проводимому журналом VARBusmess среди более чем 200 фирм-разработчиков ИС). Кстати сказать, подобную высокую оценку инструменты Progress Software заслужили не только из-за своей гибкости и надежности, но и благодаря высокому качеству их технической поддержки.