Особенности применения технологий Lotus Domino и Notes (1 часть)
Программное обеспечение (ПО) Domino и Notes компании Lotus Development, подразделения корпорации IBM, является одной из наиболее распространенных технологических платформ в качестве инструментария для совместной работы (Groupware) и как ПО электронной передачи сообщений (Email), календарного планирования (Scheduling), корпоративной интегрированной среды функционирования Internet-приложений (Internet/Intranet application server). Однако, по мере роста зависимости организации от приложений, функционирующих в корпоративной среде Lotus Domino/Notes, и сложности самих приложений стоимость поддержки и модернизации информационной системы (ИС) нелинейно повышается, а удовлетворенность ею на всех уровнях организационной иерархии и во всех подразделениях - снижается неуклонно. В статье рассматриваются основные причины этого процесса, а также типичные ошибки при проектировании ИС вообще и в среде Lotus Domino/Notes в частности, которые приводят к снижению производительности труда пользователей, замедлению окупаемости ИС и т.д. - то есть, в итоге, к финансовым потерям. Статья адресована разработчикам ИС, ПО в среде Lotus Domino/Notes и их заказчикам.
ПО "двойного назначения" Современные требования к ИС масштаба предприятия настолько многообразны и подчас противоречивы, что удовлетворение их в полном объеме практически невозможно. Однако, вполне понятно желание разработчиков удовлетворить максимально возможное количество требований потребителей. Речь в данном случае идет не только о технических и функциональных требованиях, но также и о финансовых, временных и даже эстетических. Именно поэтому в последнее время очень широкое распространение получили комплексные программные продукты, ориентированные на очень быстрое развертывание первой очереди ИС, реализующей базовый функционал, и последующую разработку приложений, повышающую степень автоматизации выполняемых персоналом работ. Подобным свойством "двойного назначения" обладает, по-видимому, вообще любое ПО из представленных на рынке: от офисных пакетов до сложнейших систем управления базами данных и онлайнового анализа информации. Таким образом, вообще все ПО можно разделить на три довольно неравные (по количеству представителей, их стоимости и распространенности на рынке) группы по степени выраженности его "двойного назначения". В первую группу попадает ПО, на 90-95% ориентированное на использование базового функционала, но допускающее некоторое дополнение его самостоятельно создаваемыми возможностями. К этой категории относятся большинство широко используемых офисных наборов — текстовых процессоров, электронных таблиц, пакетов презентационной графики, персональных органайзеров и т.п. Так, например, текстовый процессор Microsoft Word содержит очень большое количество встроенных функций, которые, при необходимости, могут дополняться пользователем. Для этого предусмотрена возможность создания макросов с применением языка Visual Basic и даже встроенной (являющейся неотъемлемой частью ПО Word) среды визуального программирования. Для подавляющего большинства пользователей уже встроенных функций достаточно (точнее говоря, даже из них используется не более 20-50%). И "допрограммирование" новых функций является действительно опциональным: ПО полностью сохраняет свою ценность и без него. Важно, что ПО первого типа, в основном, персональное, то есть не требующее (или даже не поддерживающее) сетевого взаимодействия. Ко второй группе относится ПО, на 95-100% ориентированное на использование функционала, задаваемого (программируемого) пользователем или, чаще, третьей стороной — разработчиком. К этой категории относится сложное и дорогое ПО: ERP, RDBMS, OLAP, Middleware, серверы приложений и т.д. Но, тем не менее, эти продукты сохраняют возможность (относительно) быстрого развертывания и использования стандартных шаблонов. Другое дело, что практическое применение их в такой конфигурации бессмысленно. Более того, бюджет подобных проектов всегда включает настройку базового ПО, создание заказных приложений в новой среде, обучение пользователей, поддержку и другое. ПО этого типа практически всегда требует сетевого взаимодействия, то есть оно всегда многопользовательское. ПО Lotus Domino/Notes относится к третьей группе. Domino можно успешно, без какого-либо ущерба, использовать как в качестве ПО быстрого развертывания для создания системы электронной почты и календарного планирования, совмещенной с телеконференциями, общим каталогом пользователей и прочим, так и для разработки и внедрения достаточно сложной, комплексной заказной ИС для организации практически любого масштаба. Более того, не существует теоретических ограничений на использование Domino и Notes в одной организации в обоих качествах одновременно. Это, безусловно, и явилось причиной значительного распространения Lotus Domino/Notes - ведь оно обещает экономию материальных средств на ПО и оборудование, обслуживающий персонал, обучение пользователей и т.п., то есть снижение так называемой совокупной стоимости владения (Total Cost of Ownership — TCO). Следует отметить тот факт, что в случае с истинным ПО "двойного назначения" невозможно оценить, насколько встроенные или созданные пользователем функции превосходят друг друга. В подавляющем большинстве случаев соотношение между ними постоянно меняется вследствие постоянного стремления пользователя понизить TCO как раз за счет повторного использования установленных и сконфигурированных компонентов для реализации собственного функционала. В третью группу также входит и ряд других программных продуктов других производителей. Это, например, Microsoft Exchange или персональные СУБД, такие как Microsoft Access или Lotus Approach, входящие в так называемые "профессиональные" версии офисных пакетов. Но все эти продукты скорее можно оценить как имеющие соотношение от 30-70% до 70-30% между встроенными и программируемыми функциями. Причем этот процент не меняется или меняется очень незначительно в процессе эксплуатации ПО, что сильно отличает их от Lotus Domino/ Notes. Но все соображения, которые изложены ниже и получены в результате работы с Domino и Notes, вполне относятся и к другим продуктам третьей группы, хотя и в несколько меньшей степени. Все эти продукты группы поддерживают сетевое взаимодействие, многие имеют два варианта установки и работы: одно- и многопользовательские.
Особенности ПО "двойного назначения" Вследствие возможности двойного применения Lotus Domino кажется простым продуктом, готовым к использованию по прямому назначению после простой инсталляции ПО (то есть, что называется, Out of the Box). Это довольно распространенное заблуждение. В отличие от ПО первой группы, которое действительно можно использовать после инсталляции для выполнения работы, ПО третьей группы намного сложнее. Даже однопользовательский персональный режим зачастую требует определенных настроек. Что уж говорить о сетевом многопользовательском варианте — по сложности развертывания, конфигурирования и управления Lotus Domino лишь немного уступает большинству представителей второй группы ПО. Однако схожая ситуация наблюдается и в случае создания с применением Lotus Domino и Notes заказных приложений для пользователя. В этом случае кажущаяся простота и легкость программирования, так же как и мнимая легкость настройки и управления, может не привести к ожидаемым результатам. Действительно, в любом случае, используется ли Lotus Domino в качестве почтовой системы или сервера собственных приложений, он является сложным сетевым продуктом, требующим, в первую очередь, знания и представления о нем как о технологической платформе проектирования, квалифицированного сопровождения и развития разработанной ИС. Да, Lotus Domino дешевле. Но от электронной почты или системы документооборота также зачастую непосредственно зависит успех коммерческой деятельности компании. Да, Lotus Notes имеет "интуитивно понятный интерфейс". Но ведь обучать пользователя надо не тому, на какие кнопки нажимать для выполнения тех или иных действий, а тому, как работать в новой для него информационной среде, обеспечивающей принятую или измененную функциональность. Таким образом, первый вывод, который можно сделать из вышесказанного, — это то, что ПО третьей группы объединяет достоинства (и недостатки) предыдущих описанных групп, предоставляя при этом некоторые дополнительные возможности (преимущественно за счет экономии материальных средств). Важно помнить, что эта экономия не так значительна, как может показаться на первый взгляд. Lotus Domino — это далеко не "сетевая СУБД по цене офисного пакета".
Проблемы разработки приложений с применением ПО "двойного назначения" Какие же ошибки допускают разработчики в среде Lotus Notes и администраторы Lotus Domino? Все ли они приводят к невозможности нормальной эксплуатации ИС? Каким образом ИС деградирует в результате тех или иных ошибок разработки и администрирования? Существует ли заранее известная стратегия "выигрыша в Domino", то есть успешной работы с этим продуктом? Попытаемся ответить на эти вопросы.
Наложение абстракций Начнем с разработки - и вновь обратимся к предложенному делению ПО на три группы. В случае, когда разработка имеет место в продуктах первой группы, она (и ее результат) целиком и полностью остается в поле тех понятий и абстракций, с которыми работает пользователь базового ПО. Действительно, если разработчик желает, например, автоматизировать заполнение свойств документа при его редактировании и сохранении новой версии, то он пишет макропрограмму, которая оперирует сама и, что важнее, предлагает пользователю работать с полями, текстом, комментариями, исправлениями, абзацами и т.п. Для пользователя не вводятся новые объекты работы и термины для них. В крайнем случае, новым термином называется уже существующий объект. В случае разработки приложения для работы с сетевой базой данных (БД) через сервер приложений разработчик целиком и полностью изолирует пользователя от реальных объектов (таблицы, кортежи, SQL-запросы и т.п.) при помощи введенных им абстракций: учетных карточек, документов и так далее. И это, безусловно, правильно. При создании приложений Lotus Domino у разработчика зачастую появляется соблазн использовать второй подход. Действительно, зачем пользователю работать с репликами БД, видами и агентами? Его ведь интересуют документы, поля и действия над ними. Такой подход не учитывает, что Lotus Notes уже содержит в себе абстракции пользовательского уровня. Документы и поля — это абстракции записей в неструктурированной базе данных, виды — абстракции выборок записей по определенному критерию, реплики — синхронизируемых БД с механизмом разрешения конфликтов одновременного совместного доступа к различным копиям одной информации и т.д. Введение второго уровня абстракций с большой вероятностью может привести к полной неработоспособности созданного приложения. Почему? Как и любое другое ПО, Lotus Domino и Notes оптимизированы для работы со своими структурами и абстракциями. И отличие его от RDBMS состоит не только в способе организации доступа и хранения данных, но и в том, что последние в RDBMS не содержат абстракций пользовательского уровня, предоставляя разработчику свободу их выбора (и наименования), а Lotus Notes — содержит и, что очень важно, рассчитан на работу именно с этими пользовательскими абстракциями. Хорошо это или плохо? И то, и другое — это особенность, с которой надо считаться. Конечно, набор абстракций, который предлагает Lotus Notes, не всегда в точности соответствует тому, что хотелось бы предоставить конечному пользователю. Но эту проблему можно решить путем обучения пользователей. Да, это почти всегда будет стоить дороже разработки собственной модели с набором понятий и абстракций и ее реализации, но это, по-видимому, единственный путь получить работающее приложение. Что, по-вашему, выберет заказчик: более дорогую систему, к которой надо привыкать, или более дешевую, которая ему уже знакома, если первая работает, а вторая нет? Ответ очевиден. И, видимо, следует убедить заказчика в необходимости обучения, а не пытаться оживить неработающее приложение путем наращивания мощности аппаратной платформы, перепроектирования системы или написания "заплат" (как правило, недокументированных), которые, как показывает практика, только усугубляют ситуацию. Вывод из вышесказанного таков: необходимость обучения пользователя работе с Lotus Notes — это признак, общий для ПО второй и третьей группы, и попытка избежать обучения путем введения нового уровня абстракций для пользователя не приведет к ожидаемому результату, так как не учитывает особенностей, присущих используемому ПО.
Однопользовательское ПО в сети Еще одна проблема разработки в Lotus Domino и Notes также связана с кажущейся простотой, присущей ПО третьей группы. По аналогии с макросами в однопользовательском ПО, приложения Lotus Notes также зачастую не учитывают сетевой сущности этого продукта. Ситуация усугубляется еще и тем, что в Notes действительно можно писать однопользовательские несетевые приложения. И они будут работать, но не в сети. И ими будет пользоваться лишь один человек. Некоторые разработчики уверены, что они должны правильно запрограммировать логику работы пользовательского приложения, а работу его в сети, "всякие там репликации", должны обеспечить администраторы или, еще лучше, сервер Lotus Domino. Это не так. Разработчик всегда должен учитывать те условия, в которых будет эксплуатироваться его приложение. Его работа в сети накладывает дополнительные ограничения на усилия разработчика при программировании, чем, безусловно, усложняет его задачу многократно. Однако отмахнуться от этих проблем нельзя — персональное приложение просто не заработает в сети. Разработчик, таким образом, должен знать возможности Lotus Notes как сетевой технологии, то есть технологии реализации архитектуры "клиент-сервер", модели сетевого взаимодействия OSI/ISO и т.д. У этой ошибки возможно и другое проявление, несколько перекликающееся с первой ошибкой, описанной в предыдущем параграфе — наложение абстракций. Иногда разработчик, создавая сетевое приложение самостоятельно, реализует в нем те функции, которые уже обеспечиваются клиентским ПО, сервером приложений или используемыми протоколами. При этом, естественно, серверные средства требуется в лучшем случае отключить, а в худшем — они становятся помехой для функционирования приложения. Проблема заключается не только в том, что разработчик выполняет лишнюю работу, но и в том, что имеющиеся в системе средства всегда намного (на порядки) эффективнее, чем "самодельные" аналоги. Почему? Системные сервисы реализуются при программировании на языке высокого уровня и являются отлаженной интегрированной частью всего ПО. Разработчики же создают свои заменители на макроязыке еще более высокого уровня, всегда интерпретируемом (иногда из исходного текста, иногда — из промежуточного байт-кода). Если к этому добавить еще и то, что в большинстве случаев разработчики прикладного ПО не имеют достаточного опыта и знаний по созданию сетевых многопользовательских приложений низкого уровня, каковыми являются системные сервисы, то полная неработоспособность таких приложений или их крайне неэффективная работа оказываются печальным, но закономерным итогом трудоемкой и дорогостоящей разработки. Решением указанной проблемы может быть обеспечение тесного взаимодействия программистов и опытных системных администраторов на всех этапах создания прикладного ПО для Lotus Domino/Notes, а также обязательное обучение разработчиков технологии проектирования и разработки именно сетевых программных средств. Со своей стороны администраторы должны предоставлять разработчикам всю информацию о сервисах, которые могут быть ими использованы, конфигурации сети и ее влиянии на эксплуатируемое ПО. Вывод из этого раздела можно сформулировать так: при разработке приложений в Lotus Domino/Notes необходимо учитывать сетевую многопользовательскую специфику этого ПО. И если в случае персонального приложения Lotus Notes проявляет себя как ПО первой группы, то в случае сетевого — как второй. Такая двойственность является расплатой за универсальность и относительную дешевизну.
Владимир Богданов, Владимир Старых РГУИТП 20.02.2002