Согласно определению, принятому комитетом IEEE POSIX 1003.0, открытая система – это система, реализующая открытые спецификации (стандарты) на интерфейсы, службы и поддерживаемые форматы данных, достаточные для того, чтобы обеспечить:
возможность переноса разработанного прикладного программного обеспечения на широкий диапазон систем с минимальными изменениями (мобильность приложений, переносимость);
совместную работу (взаимодействие) с другими прикладными приложениями на локальных и удаленных платформах (интероперабельность, способность к взаимодействию);
взаимодействие с пользователями в стиле, облегчающим последним переход от системы к системе (мобильность пользователя).
Ключевой момент в этом определении – использование понятия открытая спецификация, которое, в свою очередь, определяется как общедоступная спецификация, которая поддерживается открытым, гласным согласительным процессом, направленным на постоянную адаптацию к новым технологиям, и соответствует стандартам.
Согласно этому определению открытая спецификация не зависит от конкретной технологии, т.е. не зависит от конкретных технических и программных средств или продуктов отдельных производителей. Открытая спецификация одинаково доступна любой заинтересованной стороне. Более того, открытая спецификация находится под контролем общественного мнения, поэтому заинтересованные стороны могут принимать участие в ее развитии.
В контексте распределенных систем приведенное выше определение означает, что свойство открытости не может быть достигнуто, если спецификация и описание ключевых интерфейсов программных компонентов системы не доступны для разработчиков. Одним словом, ключевые интерфейсы должны быть описаны и опубликованы. Важно отметить, что здесь в первую очередь подразумеваются интерфейсы внутренних компонентов системы, а не только интерфейсы верхнего уровня, с которыми работают пользователи и приложения. При этом синтаксис интерфейсов, т.е. имена доступных функций, типы передаваемых параметров, возвращаемых значений и т.п., обычно описывается посредством языка определения интерфейсов (англ. Interface Definition Language, IDL). В свою очередь семантика интерфейсов, т.е. то, что на самом деле делают службы, предоставляющие эти интерфейсы, обычно задается неформально, с помощью естественного языка.
Подобное описание позволяет произвольному процессу, нуждающемуся в определенной службе, обратиться к другому процессу, реализующему эту службу, через соответствующий интерфейс. Кроме того, такой подход позволяет создавать несколько различных реализаций одной и той же службы, которые с точки зрения внешних процессов будут работать абсолютно одинаково. Как следствие, несколько реализаций программных компонентов (возможно, от различных производителей) могут взаимодействовать и работать совместно, образуя единую распределенную систему. Таким образом, достигается свойство интероперабельности или, другими словами, способности к взаимодействию. Более того, в этом случае прикладное приложение, разработанное для распределенной системы A, может без изменений выполняться в распределенной системе B, реализующей те же интерфейсы, что и А. То есть достигается свойство переносимости.
Еще одно важное преимущество заключается в том, что открытая распределенная система потенциально может быть образована из разнородного аппаратного и программного обеспечения (опять-таки, возможно, от разных производителей). При этом добавление новых компонентов или замена существующих может осуществляться относительно легко, не затрагивая других компонентов. На аппаратном уровне это выражается в способности простого подключения к системе дополнительных компьютеров или замены существующих на более мощные. На программном – в возможности простого внедрения новых служб или новых реализаций уже существующих. Другими словами, важным свойством открытой распределенной системы является расширяемость.
Do'stlaringiz bilan baham: |