Компьютерные системы за два десятилетия шагнули далеко вперед, однако постоянно наблюдается несоответствие техники поставленным задачам и наоборот. Средняя цена современных компьютерных систем не снижается, и при этом на каждую новую аппаратную реализацию разработчики программных инструментальных средств немедленно отвечают своими продуктами, которые на 80% съедают возможности новой аппаратуры, а конечный пользователь опять остается у разбитого корыта. Налицо классический замкнутый круг: ограниченные финансовые возможности не позволяют заказчику пробиться сквозь слой многочисленных посредников, накручивающих свою цену и расходующих постоянно растущие вычислительные мощности для работы своих сервисных программ. Таким образом, получается, что система работает сама на себя.

Этот замкнутый круг не так безобиден, как может показаться на первый взгляд. Хорошие, нужные для России проекты тонут в пучине посредников, а ведь многие проблемы из области обработки изображений и распознавания образов уже давно технически разрешимы, даже при наличии только ПК на базе Intel 80286.

Мало успокаивает и тот факт, что эта ситуация давно существует в других странах. Собственно, почему многие западные разработчики, вплоть до президентов фирм, регулярно наведываются в Россию? Прежде всего необходимость нести бремя старых наработок, мешающее развивать продукт так быстро, как это пока еще под силу российским специалистам. Иными словами, многие солидные фирмы сталкиваются со стеной разобщенности, в основе которой лежит аппаратура, далее - тонкий системный слой, поддержка которого требует квалифицированных, мобильных и высокооплачиваемых кадров и, наконец, наиболее толстый слой прикладных систем: операционные среды и оболочки. С точки зрения полезности именно этот слой является балластом при решении конкретного круга задач. В результате львиная доля возможностей аппаратуры остается невостребованной и расходуется на непроизводительную, с точки зрения прикладной задачи, работу. Среда становится неконтролируемой - разработчику прикладных систем недоступен системный слой, а, в результате, при возникновении проблем оказывается проще связываться непосредственно с нижним уровнем, минуя многочисленные графические оболочки, средства программирования высокого уровня и т.п. К счастью, в России, видимо вследствие изначально невысокой кредитоспособности, это интуитивно понимают уже многие, поэтому не редкость ситуация, когда версия системы дактилоскопического анализа пятилетней давности, работающая на древнем ПК/286, вполне способна подменить "современную" зарубежную систему за 3 млн. долл.

Зарубежные аналитики единодушны во мнении - для России счастье, что нет такого непомерного груза типа Кобола или бюрократического подхода к работе со стандартами ISO 9000. У нас, наоборот, традиционно были развиты тенденции комплексного, интегрального решения задач, с привлечением к проектам больших коллективов разработчиков. В результате, сегодняшнее увлечение западными системами, несущими с собой иное мировозрение, которое отражает совершенно другие условия, приводит к тому, что начинается искусственное создание проблем в виде избыточно сложной техники, включения в решения задач множества промежуточных уровней, причем зачастую там, где ничего этого не требуется.

В основе решений большинства задач, возникающих на просторах России, лежит три незыблемых фактора: цена, простота и масштабируемость.

С ценой все более-менее понятно: ресурсы всегда ограничены, а если их и достаточно, то имеется ненулевая вероятность, что под грузом больших денег проект начнет работать сам на себя, а не на решение поставленной задачи. Кроме того, любая система должна жить, развиваться, побуждать пользователей к действию, а разве это возможно сегодня с вычислительным комплексом, стоимостью в несколько млн. долл., с которого начальство только сдувает пыль, включая компьютер лишь при появлении более высокого руководства.

Простота освоения, территориальная удаленность точек размещения прикладных систем, а зачастую и невысокая квалификация пользователей, умеющих хорошо работать с людьми, но долго и упорно ищущих клавишу "Yes" на клавиатуре, вынуждает разработчиков приложений скрывать всю их сложность под наглядной и доступной оболочкой.

Требование масштабируемости звучит также достаточно очевидно - никто заранее не сможет предугадать, какие объемы информации будут обрабатываться системой, особенно если она действительно используется. При этом важно, чтобы объем накопленной информации минимально влиял на производительность системы.

С одной стороны, налицо явный прогресс - руководители ведомств, получив финансирование на проект, теперь уже не обязательно тратят деньги на мерседесы или обстановку своего кабинета, а с гордостью заявляют, что на этот миллион закупили, например, модную зарубежную систему AFIS (Automatic Fingerprint Identification System). И только позже выясняется, что на самом деле по цене "Мерседеса" была куплена "Ока". Зарубежные технологические новинки быстро устаревают, а на запрос о возможности повышения производительности обработки дактилокарт от фирмы - разработчика приходит бодрое предложение купить еще одну систему. За рубежом подход всегда был другим, однако и там не позволяют себе иметь дорогие системы. Например, полиция Англии не может позволить себе приобрести системы, которые с легкостью покупаются в России, чтобы потом выполнять роль мебели.

Что делать?

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

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

Следующим положением технологии является оптимизация критических мест. Не нужно ждать появления ATM, FDDI или Fast Ethernet, а лучше взять, например, и напрямую соединить две материнские платы через стандартный интерфейс SCSI. Устранение слабых звеньев влечет за собой вторую волну оптимизации, которая получается как бы бесплатной, например за счет аккуратной работы при размещении информации на диске и планировании режимов его использования к минимуму сводится число обращений, и, как следствие, меньше износ дисководов, - налицо известный всем "эффект системы".

Третьим краеугольным камнем технологии, основанной на принципе разумной достаточности, является контроль, вплоть до самого нижнего уровня. Для получения необходимой гибкости при решении конкретных прикладных задач необходимо все держать в своих руках. Что где лежит в продуктах Novell или тем более в MS NT, известно только разработчикам, и зачем тогда нужны посредники при решении конкретных проблем, тем более, что двигаются они в том же направлении, что и специалисты, решающие прикладные задачи.

Немного критики

Скептики могут возразить: а как насчет совместимости с другими системами, решающими аналогичные прикладные задачи? Или как быть с преемственностью программного обеспечения? Держать все в своих руках совсем не значит заниматься произволом - стандарты обязательно нужно соблюдать, но делать это вполне реально можно и на нижнем уровне, обходясь без ресурсоемких надстроек типа NFS или сетевых ОС.

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

Есть еще один вопрос, чаще задаваемый теоретиками чем практиками в области высоких технологий: а если заказчик поставит условия, вступающие в противоречие с принятой технологией? Безусловно, заказчик сегодня бог и царь, поэтому, если ему требуется дорогая, престижная система, или он уже имеет груз старых программных наработок и компьютерных платформ, с которыми ему трудно расстаться, то тут может быть три стратегии поведения.

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

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

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

Резюме

Возможно, следующий постулат слишком очевиден, однако его соблюдение позволяет в ряде случаев вырваться из замкнутого круга, когда техника не соответствует задаче и наоборот: решать необходимо конкретную задачу клиента, а не думать о том, какие средства и оборудование использовать. За три месяца можно создать реально работающий прототип, который в процессе пробной эксплуатации раскручивается на более крупные масштабы.

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

***

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

Алексей Пивоваров