Недостатки
открытых систем видны не сразу. И все
же они имеются:
- при создании
автоматизированной системы на базе открытых
решений ответственность за работоспособность
системы в целом ложится на системного
интегратора, а не на производителя системы.
Поэтому при появлении в системе невоспроизводимых
отказов некому предъявить претензии,
поскольку поставщиков много, а системный
интегратор отвечает только за монтаж
и пусконаладку системы;
- универсальность
всегда находится в противоречии с простотой.
Универсальные протоколы, интерфейсы,
сети и программное обеспечение, чтобы
быть универсальными, должны быть достаточно
сложными, следовательно, дорогими и ненадежными.
Хотя снижение надежности, вызванное сложностью,
компенсируется повышением надежности
благодаря большому тиражу и, следовательно,
продолжением отладки после начала продаж;
- эффект снижения
надежности программного обеспечения,
части которого пишутся разными производителями.
Когда ПО пишется внутри одной фирмы, можно
предвидеть почти все ситуации, которые
могут возникнуть на границе между ПО
и пользователем или аппаратурой. Если
же в этом участвуют несколько разных
команд в разных фирмах, между которыми
нет взаимодействия, то становится непонятно,
кто отвечает за надежность всего комплекса.
Кроме того, с ростом числа программистов,
участвующих в создании ПО, по законам
статистики увеличивается вероятность
того, что появится хотя бы один программист,
не умеющий писать надежные программы.
А этого достаточно, чтобы сделать всю
систему ненадежной. Надежность и безопасность
открытых систем остаются темами, требующими
решения;
- иногда к
признакам открытости относят открытость
исходных кодов. Однако наличие открытых
кодов снижает надежность программной
системы, поскольку нарушается принцип
инкапсуляции, необходимость которого
обоснована в идеологии объектно-ориентированного
программирования;
- как и любая
стандартизация, открытость накладывает
ограничения на диапазон возможных технических
решений, затрудняя творчество и снижая
вероятность появления новых и плодотворных
технических решений.
Проблема надежности относится не ко всем
компонентам открытых систем. Например,
такие компоненты, как базы данных, компьютеры
или сети Ethernet, обладают высокой надежностью
благодаря огромному тиражу и, как следствие,
оптимизации процессов изготовления.
Кроме того, выше перечислены только факторы,
понижающие надежность открытых систем.
Однако одновременно имеются факторы,
которые ее повышают - это увеличенный
тираж модулей открытых систем по сравнению
с низким тиражом полностью заказных систем.
Поэтому вывод о надежности открытой системы
может быть как положительным, так и отрицательным,
в зависимости от конкретного состава
ее элементов.