Лебедь, щука и рак
Басня дедушки Крылова
Эта статья адресована в первую очередь лицам, принимающим ответственные решения о создании собственных информационных систем с базами данных в архитектуре клиент-сервер. Ради конкретизации изложения в качестве предметной области взята сфера автоматизации финансовых приложений.
Как распознать архитектуру клиент-сервер
Термин "клиент-сервер" в нашей компьютерной прессе трактуется очень широко, и под такую трактовку зачастую попадают многие программные системы (скажем, на основе менеджера записей Btrieve или xBase-реализация в архитектуре файл-сервер).
Центральным элементом архитектуры клиент-сервер является выделение в программной среде на многих ее уровнях независимых компонентов (разделение обязанностей приводит к увеличению производительности) и эффективное распределение логики системы между этими компонентами в сети.
Основными компонентами этой архитектуры служат сервер баз данных, приложение-клиент и, возможно, монитор транзакций.
Отличительная черта такого подхода - единообразно управляемая децентрализация данных, открытость программных решений и масштабируемость (слабая зависимость от используемых аппаратных средств).
Тенденции рынка информационных услуг в архитектуре клиент-сервер
Запад. Возьмем в качестве примера такой сектор рынка информационных услуг, как финансовые приложения.
Характерными чертами современных финансовых приложений являются: доступ к данным в глобальном масштабе (сведение воедино информации из территориально разбросанных подразделений организации, многовалютность, поддержка нескольких языков) и открытый доступ к финансовой информации для многих сотрудников организации (компетентность, согласованность и полнота принимаемых решений).
Наряду с продажей универсальных финансовых программ растет доля специализированных финансовых систем. Многие фирмы, реорганизуя свой бизнес в условиях острой конкурентной борьбы, нуждаются в специальных средствах, которые позволяли бы отражать изменения в технологии бизнеса.
В области ценообразования на программные системы в архитектуре клиент-сервер для финансовых приложений принята система по стоимости рабочего места (т. е. цена продукта растет пропорционально числу рабочих мест).
Попытка использовать западные банковские системы российскими банками потерпела фиаско. Ряд банков вынужден был отказаться от использования таких систем. Причина проста - эти системы не рассчитаны на работу в государствах с неустановившейся правовой и финансовой законодательной базой.
Восток. На российском рынке информационных услуг в области клиент-серверных финансовых приложений ситуация складывается аналогично мировой практике с учетом национальных особенностей.
Использование (или твердое желание использовать) архитектуры клиент-сервер для создания информационных систем с базами данных можно считать уже состоявшимся фактом для большинства российских государственных и коммерческих организаций. Этому, в частности, во многом способствовала пресса, массированная рекламная кампания, а также проведение регулярных компьютерных выставок, специализированных семинаров и научно-практических конференций.
Однако наблюдение за рынком информационных услуг и анализ результатов применения архитектуры клиент-сервер в России показывает, что в данной информационной технологии не так уж много законченных продуктов. В области банковского дела за последние пять лет отечественными производителями было анонсировано более двух десятков систем. (Ныне действуют в пределах десятка тиражируемых банковских клиент-серверных систем на платформах - Informix, Oracle, Progress; еще около десяти удачных вариантов подобных систем созданы и внедрены силами отделов АСУ ряда банков. - Прим. ред.)
Также наблюдается тенденция сращивания универсальных финансовых программ типа "1С: Бухгалтерия" с базами данных в архитектуре клиент-сервер за счет предоставления соответствующего интерфейса пользователю.
Малое число законченных клиент-серверных финансовых систем на российском рынке объясняется прежде всего быстро меняющейся ситуацией в сфере финансовых законов и услуг при недостаточном использовании возможностей объектно-ориентированного подхода для разработки информационных систем с базами данных. Последнее обстоятельство связано с "болезнью роста" отечественных программистов, которые, как правило, привыкли делать все сами и еще не отвыкли от использования плоского кода в RAD-технологии.
Политика поставщиков ПО в архитектуре клиент-сервер
Отметим сразу же подавляющее преобладание SQL-технологии в реализациях распределенных СУБД. Даже производители традиционно сетевой СУБД ADABAS поставляют реляционный интерфейс для создания и работы с базами данных. Сейчас более 30 промышленных СУБД на всех основных операционных платформах поддерживают распределенные вычисления в архитектуре клиент-сервер. На российском рынке наиболее активно предлагаются СУБД Oracle, Informix, Sybase, MS SQLServer, SQLBase, DB/2 и несколько реже Progress, OpenIngres и InterBase. В их основе лежит использование SQL как средства общения с базой данных.
Общим в политике поставщиков распределенных СУБД является попытка предложить (в русле современных тенденций программирования) замкнутую технологическую линию создания и сопровождения информационных систем с базами данных - "анализ - проектирование - разработка - тестирование - эксплуатация". Поддержка такой технологической линии обеспечивает двунаправленную связь по цепочке за счет использования либо своих собственных программных продуктов, либо продуктов третьих фирм, автоматизирующих процесс создания информационных систем (CASE-инструментарий высокого уровня).
В качестве примера приведем список программ, обеспечивающих разработку информационных систем на основе продуктов фирмы CENTURA (см. таблицу).
Таблица во многом универсальна. Если вы хотите использовать СУБД Oracle, то вам необходимо поменять строку "Несущая СУБД в архитектуре клиент-сервер", заменив SQLBase на Oracle. Однако для поддержки технологической линии разработки информационных систем корпорация Oracle предлагает свои собственные программные продукты и продукты других фирм.
Для потребителей информационной технологии вся разница сводится к цене рабочего места и ориентации на определенное аппаратное обеспечение и операционную платформу. Пока универсальность функционирования основных промышленных СУБД на различных операционных платформах далека от совершенства.
ЕСЛИ ГОТОВЫЕ РЕШЕНИЯ ВАС НЕ УСТРАИВАЮТ
Когда на рынке информационных услуг нет подходящих для вас готовых продуктов, естественным решением является создание и разработка своей собственной информационной системы. Чтобы не повторилась ситуация, описанная в знаменитой басне (см. эпиграф), следует соблюдать несколько правил. Эти правила не новы.
Определите цель создания системы. Опыт моего личного общения с разработчиками информационных систем показывает, что они зачастую плохо представляют себе, зачем они создают сложную программную систему. Это обстоятельство связано с тем, что большинство организаций-потребителей информационной технологии не проводит стратегического планирования управления своими информационными ресурсами. В таких условиях даже опытному системному аналитику сложно понять, что же хотят получить от информационной системы и какова будет ее эволюция во времени. Как и любое другое изделие (например, утюг), программная система имеет определенное время жизни (жизненный цикл системы), в течение которого она отвечает поставленным перед ней задачам. Чтобы система жила как можно дольше и приносила пользу, а не головную боль (в виде новых денежных инвестиций), необходимо определить стратегию ее развития и реакцию системы на изменения.
Поэтому в первую очередь определите, с какой целью вы создаете свою информационную систему. Проанализируйте характер деятельности организации, постарайтесь понять, насколько хорошо решения в архитектуре клиент-сервер проецируются на методы работы вашей организации (может, нужно что-то изменить?), проанализируйте требования, предъявляемые к функциональным возможностям системы (может быть, на рынке уже есть готовые системы?), выделите специфику работы именно вашей организации.
Для этого пригласите консультантов со стороны (представляющих на рынке конкурирующие продукты), в том числе и независимых. Желательно, чтобы заинтересованные сотрудники думали, что над проектом работают только они. Это позволит оценить ситуацию в целом, и потраченные на этом этапе деньги дадут возможность сэкономить позже. Вы должны иметь модель бизнес-процессов и аналитический обзор предлагаемых решений. Вы должны знать, что вы хотите получить от информационной системы.
Проведите анализ технологии и архитектуры. Не следует тратить много времени на выяснение того, какая СУБД лучше или хуже, каково качество средств разработки и какой CASE верхнего уровня выбрать. На эти технические вопросы всегда ответят консалтинговые службы организаций, продающих программные продукты. Главная задача - сопоставить уровень функциональности предлагаемых продуктов с требованиями системы, в том числе и в перспективе. Эта задача - главная потому, что, выбрав несущие операционные платформы и СУБД и купив их, вы становитесь заложниками технической политики фирм-разработчиков этих продуктов, т. е. попадаете в технологическую зависимость от них (ожидание новых версий с нужными возможностями). Образно говоря, смена лошадей во время забега ничего, кроме дополнительных расходов, не принесет.
Второй важный аспект такого анализа - это простое обстоятельство, что чем сложнее и многофункциональнее программная система, тем больше она занимается самообслуживанием и тем выше требования к аппаратному обеспечению. Выбор должен соответствовать информационным потребностям.
Третий важный аспект - оценка требований к общим характеристикам информационной системы (таких общих характеристик около 40, но на практике достаточно пяти-семи). Не увлекайтесь таким показателем, как "отношение цена/производительность". Он хорош при приобретении оборудования, а для программных продуктов его следует рассматривать только в тех случаях, когда информационная структура тестов близка к планируемой вами. Частное обсуждение этой проблемы при создании банковской системы можно найти в статье T. Lee (Datamation, 1994, jul.1).
Считайте деньги. Реально оцените свои финансовые возможности, т. е. рассчитайте, сколько будет стоить разработка вашей системы и готовы ли вы потратить такие деньги. Для этого целесообразно воспользоваться услугами зависимых и независимых экспертов и консультантов. Структура расчета не очень сложна. Это аппаратная часть (или ее модернизация), лицензионные программные средства для поддержки технологической линии разработки информационных систем, затраты на создание и поддержку системы.
Если аппаратная часть не будет приведена в соответствие с характеристиками программных продуктов, то вряд ли можно ожидать увеличения производительности от внедрения технологии клиент-сервер.
При покупке программных средств следует оценить различные варианты по критерию "стоимость/гибкость". Под гибкостью в проектировании информационных систем понимается ее адаптационная способность воспринимать изменения в предметной области. Этот параметр вступает в конфликт с параметром "производительность". Купите то, что продается по оптимальным для вас ценам.
Решите, кто будет разрабатывать систему - ваши сотрудники или сторонняя организация. В том и другом случае внимательно изучите смету работ. Если задействована своя команда разработчиков, умножьте предлагаемую цифру на 2, 3 и т. д. (в зависимости от того, как вы их оцениваете) и соответственно увеличьте время разработки. Для сторонней организации можно предусмотреть штрафные санкции.
Обычно программисты, создающие программные системы, плохо их сопровождают (для них проще написать все заново). Поэтому создание собственной информационной системы предполагает проведение определенной кадровой политики. Фирмы, у которых вы покупаете программные продукты, должны обеспечивать техническую поддержку и иметь сертифицированный центр подготовки персонала. Это тоже деньги и иногда немалые (до 25% от стоимости продукта).
Если полученная сумма вас устраивает, то можете начинать действовать, требуя скидок и прочих финансовых уступок.
Планируйте переход на технологию клиент-сервер. Если у вас в эксплуатации уже есть информационная система и вы хотите перейти на технологию клиент-сервер, то не забудьте спланировать расходы для такого перехода. Подобная смена информационной технологии бывает иногда весьма дорогостоящим мероприятием и занимает определенное время. Пример расчетов при переходе с mainframe-архитектуры на архитектуру клиент-сервер можно найти в Datamation, 1994, aug. 15, p. 37.
Резюме
Создание и разработка своих собственных систем практически для любой организации является дорогим удовольствием. Инвестиции в информационные ресурсы - это вложение в будущее организации и технологию ее бизнеса. При вложении денег в развитие информационной структуры вашей организации выгода не всегда очевидна.
Однако всегда можно сформулировать простые правила, чтобы ее увидеть. Для финансовых систем можно привести такое правило: если после внедрения финансовой системы время составления месячного баланса уменьшилось в 3 раза, а годового - в 2,5, то вы получили ощутимую выгоду. Другим важным показателем, по которому можно судить об эффективности системы, служит время прохождения типовых документов и время подготовки ответственных решений. Если оно сократилось после внедрения системы, то выгода налицо. Если вы смогли освободить часть своих сотрудников для выполнения других работ, то вы также имеете выгоду.
Подобного рода "показатели выгоды" необходимо изначально включать в техническое задание на разработку системы.
В заключение следует отметить, что эффективное использование технологии клиент-сервер предполагает проведение комплексного анализа и грамотного проектирования системы, для того чтобы обеспечивать постоянный реинжиниринг бизнес-процессов вашей организации.
Владимир Туманов
С Владимиром Тумановым можно связаться по адресу: tve@icp.ac.ru.
ПО ЗАМКНУТОЙ ТЕХНОЛОГИЧЕСКОЙ ЛИНИИ СОЗДАНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ С БАЗАМИ ДАННЫХ
+-------------------------------------------+-------------------------------+
|Звено технологической цепочки |Программный продукт (фирма) |
+-------------------------------------------+-------------------------------+
|Анализ предметной области |Bpwin (Logic Works) |
+-------------------------------------------+-------------------------------+
|Объектно-ориентированный анализ |Oowin (Logic Works) |
+-------------------------------------------+-------------------------------+
|Логическое проектирование структуры баз |Erwin (Logic Works) |
|данных | |
+-------------------------------------------+-------------------------------+
|Разработка приложений |SQLWindows (CENTURA) |
+-------------------------------------------+-------------------------------+
|Групповое программирование |TeamWindows (CENTURA) |
+-------------------------------------------+-------------------------------+
|Несущая СУБД в архитектуре клиент-сервер |SQLBase (CENTURA) |
+-------------------------------------------+-------------------------------+
|Сетевой транспорт |SQLRanger (CENTURA) |
+-------------------------------------------+-------------------------------+
|Тестирование и оптимизация систем |SQLBench (ARC) |
|клиент-сервер | |
+-------------------------------------------+-------------------------------+
|Эксплуатация |Quest (CENTURA) |
| | |
| |Crustal Reports (CRYSTAL) |
| | |
| |Приложения пользователей |
+-------------------------------------------+-------------------------------+