Принцип открытости системы (как я его понимаю).
Что такое "открытая система" и каким требованиям она должна удовлетворять?
По-моему, любая система может считаться открытой если:
- хорошо документирована;
- разработана на основе открытых систем (например использует известные форматы данных, протоколы и т.д.).
Первое необходимо для понимания принципов функционирования системы и может
служить для разработки пртложений, расширяющих возможности основной системы,
а также альтернативных систем.
Второе может существенно упростить изучение системы (т.к. она базируется на
известных методах) и дать конечному пользователю дополнительные "инструменты"
для работы (если таковые имелись в исходной системе).
Исходя из этих условий, пользователь открытой системы всегда имеет альтернативу.
Если средства самой системы не позволяют произвести какие-то нужные действия,
то можно воспользоваться другими совместимыми средствами.
В общем-то, 1С - открытая. Но сами разработчики всячески пытаются закрыть
ее как можно больше.
Очень много чего интересного не только недокументировано, но и не обсуждается,
словно составляет коммерческую тайну. Например, описание структуры Compound
- файлов 1CV7.MD и *.ERT стало доступным только благодаря пытливым
умам народных умельцев. Хотя чего тут скрывать? Это же не алгоритм шифрования
паролей.
Что касается структуры данных и инструментария для их обработки. "Узкое" место
- ID объектов. В таблицах он хранится в 36-ричной системе, а функция
ЗначениеВСтрокуВнутр() возвращает 10-ичное. А о том, что есть встроенные
функции преобразования 10 36 сообщать, конечно, не нужно...
Вот маленький примерчик. Допустим,
в системе установлено непосредственное уделение объектов (ведъ есть-же такая
возможность). Некто удалил объект, на который остались ссылки. Теперь в формах,
использующих его как реквизит, появилась надпись: Объект не найден
[код такой-то] (опять-же 10-ичный, а не тот, что в таблице). И как исправить
такое положение? 1С-овцы (пардон за каламбур) не подумали! А ведь чего проще:
завести в соответствующей таблице объект с таким-же ID, как у "потерянного"
(или еще проще, снять пометку удаления с записи если сжатие не производилось,
для DBF - почти наверняка). Эта задача выполнима лишь благодаря открытости
данных.
Почему даже оз документации на программу делают секрет? В свободном обращении нет даже литературы. Видимо, таким образом фирма 1С дает возможность заработать своим партнерам. Этот факт подтверждается и обилием мелких недоработок, которые давно всем известны, но кочуют из релиза в релиз (их "партнеры" устраняют на месте, в присутствии заказчика, чем и подтверждают свою компетентность).
Плюсы открытости системы.
Этот пункт рассмстривается с точки
зрения пользователя.
Первый плюс - возможность использования
альтернативных методов и инструментов для обработки данных. Применительно
к 1С - это средства доступа к таблицам данных DBF и особенно
SQL. Благодаря им можно добиться существенного повышения и надежности
и производителиности. Вспомним хотябы такой факт: переиндексация (иногда и
полный пересчет итогов) не дают желаемого результата если не удалить и заново
не создать *.CDX. А если бы такой возможности не было? Ну, скажем,
написали бы 1С на Clarion (он лучше защищен по сравнению с DBF). Или,
не дай бог, придумали бы свой собственный формат (кстати, что там слышно про
v8)?
Второй плюс - стимулирование альтернативных
разработок, часть из которых будет направлена на улучшение самой системы.
Достаточно посмотреть, сколько различных внешних компонент написано под v7.7.
До многих вещей у разработчика все равно никогда руки не дойдут.
Минусы открытости системы.
Первый минус - отсутствие контроля над альтернативными разработками. По
моему, всех денег все равно не заработаете, а сил на тестирование и доводку
может потребоваться несколько больше запланированного.
Второй минус - снижение безопасности
хранимых данных. А вот это вопрос очень спорный. Во-первых, кому "приспичит"
все равно доберется, только окупились бы вложенные силы и время. Во-вторых,
не дай бог чего случится, сами же свои данные достать не сможете...
Хотя, помыслим логически. Если систему отлаживали, то наверняка разрабатывали
и средства "нестандартного" доступа к данным, ну для контроля. Так вот эти
средства рано или поздно попадут в руки посторонних. Не обязательно Ваши средства,
возможно кто-то еще заинтересуется способом получения ихформации из Вашей
"супернадежной" системы. Вы всем говрите: "Надежно защищена паролем, зашифрована...",
а злобный хакер специально вставляет пустые циклы в свой патчер чтобы создать
впечатление длительности и трудности процесса взлома. Это мы уже очень (пожалуй,
слишком) хорошо знаем на примере Microsoft (можно, не буду приводить
примеры).
Однако от этой неприятности можно убежать, постоянно изменяя исходный формат.
Но сразу же появятся проблемы с обратной совместимостью.
Естественно, не может быть полностью открытых и совсем закрытых систем.
Бывают удовлетворяющие и неудовлетворяющие потребностей конечного потребителя.
Это отчасти объясняет многообразие несовместимых друг с другом ОС и ПО.
В любом случае, при выборе той или иной системы Вам придется пойти на какие-то
уступки, ибо маловероятно полное совпадение Ваших желаний и возможностей разработчика.
P.S. Очень жаль, что в последнее время основным критерием выбора ПО является
его бесплатность. В русском языке есть одно слово, которое пишется исключительно
заглавными буквами: "ХАЛЯВА"!
Очень хотелось бы узнать Ваше мнение по поводу открытости систем семейства
1С:Предприятие.
© Царьков Валерий 15 марта 2003
Начать дискуссию