Открытость системы. Открытость-свойство реальных систем. Стандартизация информационных технологий
Модель OSI, как это следует из ее названия (Open System Interconnection), описывает взаимосвязи открытых систем. Что же такое открытая система?
В широком смысле открытой системой может быть названа любая система (компьютер, вычислительная сеть, ОС, программный пакет, другие аппаратные и программные продукты), которая построена в соответствии с открытыми спецификациями.
Напомним, что под термином «спецификация» (в вычислительной технике) понимают формализованное описание аппаратных или программных компонентов, способов их функционирования, взаимодействия с другими компонентами, условий эксплуатации, ограничений и особых характеристик. Понятно, что не всякая спецификация является стандартом. В свою очередь, под открытыми спецификациями понимаются опубликованные, общедоступные спецификации, соответствующие стандартам и принятые в результате достижения согласия после всестороннего обсуждения всеми заинтересованными сторонами.
Использование при разработке систем открытых спецификаций позволяет третьим сторонам разрабатывать для этих систем различные аппаратные или программные средства расширения и модификации, а также создавать программно-аппаратные комплексы из продуктов разных производителей.
Для реальных систем полная открытость является недостижимым идеалом. Как правило, даже в системах, называемых открытыми, этому определению соответствуют лишь некоторые части, поддерживающие внешние интерфейсы. Например, открытость семейства операционных систем Unix заключается, кроме всего прочего, в наличии стандартизованного программного интерфейса между ядром и приложениями, что позволяет легко переносить приложения из среды одной версии Unix в среду другой версии. Еще одним примером частичной открытости является применение в достаточно закрытой операционной системе Novell NetWare открытого интерфейса Open Driver Interface (ODI) для включения в систему драйверов сетевых адаптеров независимых производителей. Чем больше открытых спецификаций использовано при разработке системы, тем более открытой она является.
Модель OSI касается только одного аспекта открытости, а именно открытости средств взаимодействия устройств, связанных в вычислительную сеть. Здесь под открытой системой понимается сетевое устройство, готовое взаимодействовать с другими сетевыми устройствами с использованием стандартных правил, определяющих формат, содержание и значение принимаемых и отправляемых сообщений.
Если две сети построены с соблюдением принципов открытости, то это дает следующие преимущества:
Возможность построения сети из аппаратных и программных средств различных производителей, придерживающихся одного и того же стандарта;
Возможность безболезненной замены отдельных компонентов сети другими, более совершенными, что позволяет сети развиваться с минимальными затратами;
Возможность легкого сопряжения одной сети с другой;
Простота освоения и обслуживания сети.
Ярким примером открытой системы является международная сеть Internet. Эта сеть развивалась в полном соответствии с требованиями, предъявляемыми к открытым системам. В разработке ее стандартов принимали участие тысячи специалистов-пользователей этой сети из различных университетов, научных организаций и фирм-производителей вычислительной аппаратуры и программного обеспечения, работающих в разных странах. Само название стандартов, определяющих работу сети Internet - Request For Comments (RFC), что можно перевести как «запрос на комментарии», - показывает гласный и открытый характер принимаемых стандартов. В результате сеть Internet сумела объединить в себе самое разнообразное оборудование и программное обеспечение огромного числа сетей, разбросанных по всему миру.
1.3.5. Модульность и стандартизация
Модульность - это одно из неотъемлемых и естественных свойств вычислительных сетей. Модульность проявляется не только в многоуровневом представлении коммуникационных протоколов в конечных узлах сети, хотя это, безусловно, важная и принципиальная особенность сетевой архитектуры. Сеть состоит из огромного числа различных модулей - компьютеров, сетевых адаптеров, мостов, маршрутизаторов, модемов, операционных систем и модулей приложений. Разнообразные требования, предъявляемые предприятиями к компьютерным сетям, привели к такому же разнообразию выпускаемых для построения сети устройств и программ. Эти продукты
отличаются не только основными функциями (имеются в виду функции, выполняемые, например, повторителями, мостами или программными редиректорами), но и многочисленными вспомогательными функциями, предоставляющими пользователям или администраторам дополнительные удобства, такие как автоматизированное конфигурирование параметров устройства, автоматическое обнаружение и устранение некоторых неисправностей, возможность программного изменения связей в сети и т. п. Разнообразие увеличивается также потому, что многие устройства и программы отличаются сочетаниями тех или иных основных и дополнительных функций - существуют, например, устройства, сочетающие основные возможности коммутаторов и маршрутизаторов, к которым добавляется еще и набор некоторых дополнительных функций, характерный только для данного продукта.
В результате не существует компании, которая смогла бы обеспечить производство полного набора всех типов и подтипов оборудования и программного обеспечения, требуемого для построения сети. Но, так как все компоненты сети должны работать согласованно, совершенно необходимым оказалось принятие многочисленных стандартов, которые, если не во всех, то хотя бы в большинстве случаев, гарантировали бы совместимость оборудования и программ различных фирм-изготовителей. Таким образом, понятия модульности и стандартизации в сетях неразрывно связаны, и модульный подход только тогда дает преимущества, когда он сопровождается следованием стандартам.
В результате открытый характер стандартов и спецификаций важен не только для коммуникационных протоколов, но и для всех многочисленных функций разнообразных устройств и программ, выпускаемых для построения сети. Нужно отметить, что большинство стандартов, принимаемых сегодня, носят открытый характер. Время закрытых систем, точные.спецификации на которые были известны только фирме-производителю, ушло. Все осознали, что возможность легкого взаимодействия с продуктами конкурентов не снижает, а наоборот, повышает ценность изделия, так как его можно применить в большем количестве работающих сетей, построенных на продуктах разных производителей. Поэтому даже фирмы, ранее выпускавшие весьма закрытые системы - такие как IBM, Novell или Microsoft, - сегодня активно участвуют в разработке открытых стандартов и применяют их в своих продуктах.
Сегодня в секторе сетевого оборудования и программ с совместимостью продуктов разных производителей сложилась следующая ситуация. Практически все продукты, как программные, так и аппаратные, совместимы по функциям и свойствам, которые были внедрены в практику уже достаточно давно и стандарты на которые уже разработаны и приняты по крайней мере 3-4 года назад. В то же время очень часто принципиально новые устройства, протоколы и свойства оказываются несовместимыми даже у ведущих производителей. Такая ситуация наблюдается не только для тех устройств или функций, стандарты на которые еще не успели принять (это естественно), но и для устройств, стандарты на которые существуют уже несколько лет. Совместимость достигается только после того, как все производители реализуют этот стандарт в своих изделиях, причем одинаковым образом.
1.3.6. Источники стандартов
Работы по стандартизации вычислительных сетей ведутся большим количеством организаций. В зависимости от статуса организаций различают следующие виды Стандартов:
стандарты отдельных фирм (например, стек протоколов DECnet фирмы Digital Equipment или графический интерфейс OPEN LOOK для Unix-систем фирмы Sun);
стандарты специальных комитетов и объединений, создаваемых несколькими фирмами, например стандарты технологии АТМ, разрабатываемые специально созданным объединением АТМ Forum, насчитывающем около 100 коллективных участников, или стандарты союза Fast Ethernet Alliance по разработке стандартов 100 Мбит Ethernet;
национальные стандарты, например, стандарт FDDI, представляющий один из многочисленных стандартов, разработанных Американским национальным институтом стандартов (ANSI), или стандарты безопасности для операционных систем, разработанные Национальным центром компьютерной безопасности (NCSC) Министерства обороны США;
международные стандарты, например, модель и стек коммуникационных протоколов Международной организации по стандартам (ISO), многочисленные
стандарты Международного союза электросвязи (ITU), в том числе стандарты
на сети с коммутацией пакетов Х.25, сети frame relay, ISDN, модемы и многие
Некоторые стандарты, непрерывно развиваясь, могут переходить из одной категории в другую. В частности, фирменные стандарты на продукцию, получившую широкое распространение, обычно становятся международными стандартами де-факто, так как вынуждают производителей из разных стран следовать фирменным стандартам, чтобы обеспечить совместимость своих изделий с этими популярными продуктами. Например, из-за феноменального успеха персонального компьютера компании IBM фирменный стандарт на архитектуру IBM PC стал международным стандартом де-факто.
Более того, ввиду широкого распространения некоторые фирменные стандарты становятся основой для национальных и международных стандартов де-юре. Например, стандарт Ethernet, первоначально разработанный компаниями Digital Equipment, Intel и Xerox, через некоторое время и в несколько измененном виде был принят как национальный стандарт IEEE 802.3, а затем организация ISO утвердила его в качестве международного стандарта ISO 8802.3.
Международная организация по стандартизации (International Organization / or Standardization , ISO , часто называемая также International Standards Organization ) представляет собой ассоциацию ведущих национальных организаций по стандартизации разных стран. Главным достижением ISO явилась модель взаимодействия открытых систем OSI, которая в настоящее время является концептуальной основой стандартизации в области вычислительных сетей. В соответствии с моделью OSI этой организацией был разработан стандартный стек коммуникационных протоколов OSI.
Международный союз электросвязи (International Telecommunications Union , ITU ) - организация, являющаяся в настоящее время специализированным органом Организации Объединенных Наций. Наиболее значительную роль в стандартизации вычислительных сетей играет постоянно действующий в рамках этой организации Международный консультативный комитет по телефонии и телеграфии (МККТТ) (Consultative Committee on International Telegraphy and Telephony, CCITT). В результате проведенной в 1993 году реорганизации ITU CCITT несколько изменил направление своей деятельности и сменил название - теперь он называется сектором телекоммуникационной стандартизации ITU (ITU Telecommunication Standardization Sector, ITU-T). Основу деятельности ITU-T составляет разработка международных стандартов в области телефонии, телематических служб (электронной почты, факсимильной связи, телетекста, телекса и т. д.), передачи данных, аудио- и видеосигналов. За годы своей деятельности ITU-T выпустил огромное число рекомендаций-стандартов. Свою работу ITU-T строит на изучении опыта сторонних организаций, а также на результатах собственных исследований. Раз в четыре года издаются труды ITU-T в виде так называемой «Книги», которая на самом деле представляет собой целый набор обычных книг, сгруппированных в выпуски, которые, в свою очередь, объединяются в тома. Каждый том и выпуск содержат логически взаимосвязанные рекомендации. Например, том III Синей Книги содержит рекомендации для цифровых сетей с интеграцией услуг (ISDN), а весь том VIII (за исключением выпуска VIII.1, который содержит рекомендации серии V для передачи данных по телефонной сети) посвящен рекомендациям серии X: Х.25 для сетей с коммутацией пакетов, Х.400 для систем электронной почты, Х.500 для глобальной справочной службы и многим другим.
Институт инженеров по электротехнике и радиоэлектронике - Institute of Electrical and Electronics Engineers , IEEE ) - национальная организация США, определяющая сетевые стандарты. В 1981 году рабочая группа 802 этого института сформулировала основные требования, которым должны удовлетворять локальные вычислительные сети. Группа 802 определила множество стандартов, из них самыми известными являются стандарты 802.1,802.2, 802.3 и 802.5, которые описывают общие понятия, используемые в области локальных сетей, а также стандарты на два нижних уровня сетей Ethernet и Token Ring.
Европейская ассоциация производителей компьютеров (European Computer Manu facturers Association , ЕСМА) - некоммерческая организация, активно сотрудничающая с ITU-T и ISO, занимается разработкой стандартов и технических обзоров, относящихся к компьютерной и коммуникационной технологиям. Известна своим стандартом ЕСМА-101, используемым при передаче отформатированного текста и графических изображений с сохранением оригинального формата.
Ассоциация производителей компьютеров и оргтехники (Computer and Business Equipment Manufacturers Association , CBEMA ) - организация американских фирм-производителей аппаратного обеспечения; аналогична европейской ассоциации ЕКМА; участвует в разработке стандартов на обработку информации и соответствующее оборудование.
Ассоциация электронной промышленности (Electronic Industries Association , EIA ) - промышленно-торговая группа производителей электронного и сетевого оборудования; является национальной коммерческой ассоциацией США; проявляет значительную активность в разработке стандартов для проводов, коннекторов и других сетевых компонентов. Ее наиболее известный стандарт - RS-232C.
Министерство обороны США (Department of Defense , DoD ) имеет многочисленные подразделения, занимающиеся созданием стандартов для компьютерных систем. Одной из самых известных разработок DoD является стек транспортных протоколов TCP/IP.
Американский национальный институт стандартов (American National Standards Institute , ANSI ) - эта организация представляет США в Международной организации по стандартизации ISO. Комитеты ANSI ведут работу по разработке стандартов в различных областях вычислительной техники. Так, комитет ANSI ХЗТ9.5 совместно с фирмой IBM занимается стандартизацией локальных сетей крупных ЭВМ (архитектура сетей SNA). Известный стандарт FDDI также является результатом деятельности этого комитета ANSI. В области микрокомпьютеров ANSI разрабатывает стандарты на языки программирования, интерфейс SCSI. ANSI разработал рекомендации по переносимости для языков С, FORTRAN, COBOL.
Особую роль в выработке международных открытых стандартов играют стандарты Internet. Ввиду большой и постоянной растущей популярности Internet, эти стандарты становятся международными стандартами «де-факто», многие из которых затем приобретают статус официальных международных стандартов за счет их утверждения одной из вышеперечисленных организаций, в том числе ISO и ITU-T. Существует несколько организационных подразделений, отвечающих за развитие Internet и, в частности, за стандартизацию средств Internet.
Основным из них является Internet Society (ISOC) - профессиональное сообщество, которое занимается общими вопросами эволюции и роста Internet как глобальной коммуникационной инфраструктуры. Под управлением ISOC работает Internet Architecture Board (IAB) - организация, в ведении которой находится технический контроль и координация работ для Internet. IAB координирует направление исследований и новых разработок для стека TCP/IP и является конечной инстанцией при определении новых стандартов Internet.
В IAB входят две основные группы: Internet Engineering Task Force (IETF) и Internet Research Task Force (IRTF). IETF - это инженерная группа, которая занимается решением ближайших технических проблем Internet. Именно IETF определяет спецификации, которые затем становятся стандартами Internet. В свою очередь, IRTF координирует долгосрочные исследовательские проекты по протоколам TCP/IP.
В любой организации, занимающейся стандартизацией, процесс выработки и принятия стандарта состоит из ряда обязательных этапов, которые, собственно, и составляют процедуру стандартизации. Рассмотрим эту процедуру на примере разработки стандартов Internet.
Сначала в IETF представляется так называемый рабочий проект (draft ) в виде, доступном для комментариев. Он публикуется в Internet, после чего широкий круг заинтересованных лиц включается в обсуждение этого документа, в него вносятся исправления, и наконец наступает момент, когда можно зафиксировать содержание документа. На этом этапе проекту присваивается номер RFC (возможен «. другой вариант развития событий - после обсуждения рабочий проект отвергается и удаляется из Internet).
После присвоения номера проект приобретает статус предлагаемого стандарта. В течение 6 месяцев этот предлагаемый стандарт проходит проверку практикой, в результате в него вносятся изменения.
Если результаты практических исследований показывают эффективность предлагаемого стандарта, то ему, со всеми внесенными изменениями, присваивается статус проекта стандарта. Затем в течение не менее 4-х месяцев проходят его, дальнейшие испытания «на прочность», в число которых входит создание по крайней мере двух программных реализации.
Если во время пребывания в ранге проекта стандарта в документ не было внесено никаких исправлений, то ему может быть присвоен статус официального стандарта Internet. Список утвержденных официальных стандартов Internet публикуется в виде документа RFC и доступен в Internet. Следует заметить, что все стандарты Internet носят название RFC с соответствующим порядковым номером, но далеко не все RFC являются стандартами Internet - часто эти документы представляют собой комментарии к какому-либо стандарту или просто описания некоторой проблемы Internet.
1.3.7. Стандартные стеки коммуникационных протоколов
Важнейшим направлением стандартизации в области вычислительных сетей является стандартизация коммуникационных протоколов. В настоящее время в сетях используется большое количество стеков коммуникационных протоколов. Наиболее популярными являются стеки: TCP/IP, IPX/SPX, NetBIOS/SMB, DECnet, SNA и OSLBce эти стеки, кроме SNA на нижних уровнях - физическом и канальном, - используют одни и те же хорошо стандартизованные протоколы Ethernet, Token;
Ring, FDDI и некоторые другие, которые позволяют использовать во всех сетях одну и ту же аппаратуру. Зато на верхних уровнях все стеки работают по своим! собственным протоколам. Эти протоколы часто не соответствуют рекомендуемому! моделью OSI разбиению на уровни. В частности, функции сеансового и представи-" тельного уровня, как правило, объединены с прикладным уровнем. Такое несоот-| ветствие связано с тем, что модель OSI появилась как результат обобщения ужи существующих и реально используемых стеков, а не наоборот.
Следует четко различать модель OSI и стек OSI. В то время как модель OSI явля-| ется концептуальной схемой взаимодействия открытых систем, стек OSI представ| ляет собой набор вполне конкретных спецификаций протоколов. В отличие от други[ стеков протоколов стек OSI полностью соответствует модели OSI, он включает спецификации протоколов для всех семи уровней взаимодействия, определенных этой модели. На нижних уровнях стек OSI поддерживает Ethernet, Token Ring FDDI, протоколы глобальных сетей, Х.25 и ISDN, - то есть использует разработанные вне стека протоколы нижних уровней, как и все другие стеки. Протокола сетевого, транспортного и сеансового уровней стека OSI специфицированы и реализованы различными производителями, но распространены пока мало. Наиболее популярными протоколами стека OSI являются прикладные протоколы. К ним относятся: протокол передачи файлов FTAM, протокол эмуляции терминала VTPJ протоколы справочной службы Х.500, электронной почты Х.400 и ряд других. :
Протоколы стека OSI отличает большая сложность и неоднозначность спецификаций. Эти свойства явились результатом общей политики разработчиков стека, стремившихся учесть в своих протоколах все случаи жизни и все существующие и появляющиеся технологии. К этому нужно еще добавить и последствия большого количества политических компромиссов, неизбежных при принятии международных стандартов по такому злободневному вопросу, как построение открытых вычислительных сетей.
Из-за своей сложности протоколы OSI требуют больших затрат вычислительной мощности центрального процессора, что делает их наиболее подходящими для мощных машин, а не для сетей персональных компьютеров.
Стек OSI - международный, независимый от производителей стандарт. Его поддерживает правительство США в своей программе GOSIP, в соответствии с которой все компьютерные сети, устанавливаемые в правительственных учреждениях США после 1990 года, должны или непосредственно поддерживать стек OSI, или обеспечивать средства для перехода на этот стек в будущем. Тем не менее стек OSI более популярен в Европе, чем в США, так как в Европе осталось меньше старых сетей, работающих по своим собственным протоколам. Большинство организаций пока только планируют переход к стеку OSI, и очень немногие приступили к созданию пилотных проектов. Из тех, кто работает в этом направлении, можно назвать Военно-морское ведомство США и сеть NFSNET. Одним из крупнейших производителей, поддерживающих OSI, является компания AT&T, ее сеть Stargroup полностью базируется на этом стеке.
Стек TCP/IP был разработан по инициативе Министерства обороны США более 20 лет назад для связи экспериментальной сети ARPAnet с другими сетями как набор общих протоколов для разнородной вычислительной среды. Большой вклад в развитие стека TCP/IP, который получил свое название по популярным протоколам IP и TCP, внес университет Беркли, реализовав протоколы стека в своей версии ОС UNIX. Популярность этой операционной системы привела к широкому распространению протоколов TCP, IP и других протоколов стека. Сегодня этот стек используется для связи компьютеров всемирной информационной сети Internet, а также в огромном числе корпоративных сетей.
Стек TCP/IP на нижнем уровне поддерживает все популярные стандарты физического и канального уровней: для локальных сетей - это Ethernet, Token Ring, FDDI, для глобальных - протоколы работы на аналоговых коммутируемых и выделенных линиях SLIP, РРР, протоколы территориальных сетей Х.25 и ISDN.
Основными протоколами стека, давшими ему название, являются протоколы IP и TCP. Эти протоколы в терминологии модели OSI относятся к сетевому и транспортному уровням соответственно. IP обеспечивает продвижение пакета по составной сети, a TCP гарантирует надежность его доставки.
За долгие годы использования в сетях различных стран и организаций стек TCP/IP вобрал в себя большое количество протоколов прикладного уровня. К ним относятся такие популярные протоколы, как протокол пересылки файлов FTP, протокол эмуляции терминала telnet, почтовый протокол SMTP, используемый в электронной почте сети Internet, гипертекстовые сервисы службы WWW и многие Другие.
Сегодня стек TCP/IP представляет собой один из самых распространенных стеков транспортных протоколов вычислительных сетей. Действительно, только в сети Internet объединено около 10 миллионов компьютеров по всему миру, которые взаимодействуют друг с другом с помощью стека протоколов TCP/IP.
Стремительный рост популярности Internet привел и к изменениям в расстановке сил в мире коммуникационных протоколов - протоколы TCP/IP, на которых построен Internet, стали быстро теснить бесспорного лидера прошлых лет - стек IPX/SPX компании Novell. Сегодня в мире общее количество компьютеров, на которых установлен стек TCP/IP, сравнялось с общим количеством компьютеров, на которых работает стек IPX/SPX, и это говорит о резком переломе в отношении администраторов локальных сетей к протоколам, используемым на настольных компьютерах, так как именно они составляют подавляющее число мирового компьютерного парка и именно на них раньше почти везде работали протоколы компании Novell, необходимые для доступа к файловым серверам NetWare. Процесс становления стека TCP/IP в качестве стека номер один в любых типах сетей продолжается, и сейчас любая промышленная операционная система обя-1 зательно включает программную реализацию этого стека в своем комплекте поставки.
Хотя протоколы TCP/IP неразрывно связаны с Internet и каждый из многомиллионной армады компьютеров Internet работает на основе этого стека, существует большое количество локальных, корпоративных и территориальных сетей, непосредственно не являющихся частями Internet, в которых также используют
протоколы TCP/IP. Чтобы отличать их от Internet, эти сети называют сетями TCP/IP, или просто IP-сетями.
Поскольку стек TCP/IP изначально создавался для глобальной сети Internet он имеет много особенностей, дающих ему преимущество перед другими протоко лами, когда речь заходит о построении сетей, включающих глобальные связи. В част ности, очень полезным свойством, делающим возможным применение этого протокола в больших сетях, является его способность фрагментировать пакеты. Действительно, большая составная сеть часто состоит из сетей, построенныхнасовершенно разных принципах. В каждой из этих сетей может быть установлю собственная величина максимальной длины единицы передаваемых данных (в ра). В таком случае при переходе из одной сети, имеющей большую максималы длину, в сеть с меньшей максимальной длиной может возникнуть необходимо деления передаваемого кадра на несколько частей. Протокол IP стека TCP/IP эффективно решает эту задачу.
Другой особенностью технологии TCP/IP является гибкая система адресации, позволяющая более просто по сравнению с другими протоколами аналогичного назначения включать в интерсеть сети других технологий. Это свойств также способствует применению стека TCP/IP для построения больших гетер» генных сетей.
В стеке TCP/IP очень экономно используются возможности широковещательных рассылок. Это свойство совершенно необходимо при работе на медленных каналах связи, характерных для территориальных сетей.
Однако, как и всегда, за получаемые преимущества надо платить, и платой здесй оказываются высокие требования к ресурсам и сложность администрирования IP-сетей. Мощные функциональные возможности протоколов стека TCP/IP требуют для своей реализации высоких вычислительных затрат. Гибкая система адресации! и отказ от широковещательных рассылок приводят к наличию в IP-сети различных централизованных служб типа DNS, DHCP и т. п. Каждая из этих служб направлена на облегчение администрирования сети, в том числе и на облегчение конфигурирования оборудования, но в то же время сама требует пристального внимания со стороны администраторов.
Можно приводить и другие доводы за и против стека протоколов Internet, однако факт остается фактом - сегодня это самый популярный стек протоколов, широко используемый как в глобальных, так и локальных сетях.
Стек IPX/SPX
Этот стек является оригинальным стеком протоколов фирмы Novell, разработанным для сетевой операционной системы NetWare еще в начале 80-х годов. Протоколы сетевого и сеансового уровней Internetwork Packet Exchange (IPX) и Sequenced Packet Exchange (SPX), которые дали название стеку, являются прямой адаптацией протоколов XNS фирмы Xerox, распространенных в гораздо меньшей степени, чем стек IPX/SPX. Популярность стека IPX/SPX непосредственно связана с операционной системой Novell NetWare, которая еще сохраняет мировое лидерство по числу установленных систем, хотя в последнее время ее популярность несколько снизилась и по темпам роста она отстает от Microsoft Windows NT.
Многие особенности стека IPX/SPX обусловлены ориентацией ранних версий ОС NetWare (до версии 4.0) на работу в локальных сетях небольших размеров, состоящих из персональных компьютеров со скромными ресурсами. Понятно, что для таких компьютеров компании Novell нужны были протоколы, на реализацию которых требовалось бы минимальное количество оперативной памяти (ограниченной в IBM-совместимых компьютерах под управлением MS-DOS объемом 640 Кбайт) и которые бы быстро работали на процессорах небольшой вычислительной мощности. В результате протоколы стека IPX/SPX до недавнего времени хорошо работали в локальных сетях и не очень - в больших корпоративных сетях, так как они слишком перегружали медленные глобальные связи широковещательными пакетами, которые интенсивно используются несколькими протоколами этого стека (например, для установления связи между клиентами и серверами). Это обстоятельство, а также тот факт, что стек IPX/SPX является собственностью фирмы Novell и на его реализацию нужно получать лицензию (то есть открытые спецификации не поддерживались), долгое время ограничивали распространенность его только сетями NetWare. Однако с момента выпуска версии NetWare 4.0 Novell внесла и продолжает вносить в свои протоколы серьезные изменения, направленные на их адаптацию для работы в корпоративных сетях. Сейчас стек IPX/ SPX реализован не только в NetWare, но и в нескольких других популярных сетевых ОС, например SCO UNIX, Sun Solaris, Microsoft Windows NT.
Стек NetBIOS/SMB
Этот стек широко используется в продуктах компаний IBM и Microsoft. На физическом и канальном уровнях этого стека используются все наиболее распространенные протоколы Ethernet, Token Ring, FDDI и другие. На верхних уровнях работают протоколы NetBEUI и SMB.
Протокол NetBIOS (Network Basic Input/Output System) появился в 1984 году как сетевое расширение стандартных функций базовой системы ввода/вывода (BIOS) IBM PC для сетевой программы PC Network фирмы IBM. В дальнейшем этот протокол был заменен так называемым протоколом расширенного пользовательского интерфейса NetBEUI - NetBIOS Extended User Interface. Для обеспечения совместимости приложений в качестве интерфейса к протоколу NetBEUI был сохранен интерфейс NetBIOS. Протокол NetBEUI разрабатывался как эффективный протокол, потребляющий немного ресурсов и предназначенный для сетей, насчитывающих не более 200 рабочих станций. Этот протокол содержит много полезных сетевых функций, которые можно отнести к сетевому, транспортному и сеансовому уровням модели OSI, однако с его помощью невозможна маршрутизация пакетов. Это ограничивает применение протокола NetBEUI локальными сетями, не разделенными на подсети, и делает невозможным его использование в составных сетях. Некоторые ограничения NetBEUI снимаются реализацией этого протокола NBF (NetBEUI Frame), которая включена в операционную систему Microsoft Windows NT.
Протокол SMB (Server Message Block) выполняет функции сеансового, представительного и прикладного уровней. На основе SMB реализуется файловая служба, а также службы печати и передачи сообщений между приложениями.
Стеки протоколов SNA фирмы IBM, DECnet корпорации Digital Equipment и AppleTalk/AFP фирмы Apple применяются в основном в операционных системах и сетевом оборудовании этих фирм.
Рис. 1.30. Соответствие популярных стеков протоколов модели OSI
На рис. 1.30 показано соответствие некоторых, наиболее популярных протоколов уровням модели OSI. Часто это соответствие весьма условно, так как модель OSI - это только руководство к действию, причем достаточно общее, а конкретные протоколы разрабатывались для решения специфических задач, причем многие из них появились до разработки модели OSI. В большинстве случаев разработчики стеков отдавали предпочтение скорости работы сети в ущерб модульности - ни один стек, кроме стека OSI, не разбит на семь уровней. Чаще всего в стеке явно выделяются 3-4 уровня: уровень сетевых адаптеров, в котором реализуются протоколы физического и канального уровней, сетевой уровень, транспортный уровень и уровень служб, вбирающий в себя функции сеансового, представительного и прикладного уровней.
В компьютерных сетях идеологической основой стандартизации является многоуровневый подход к разработке средств сетевого взаимодействия.
Формализованные правила, определяющие последовательность и формат сообщений, которыми обмениваются сетевые компоненты, лежащие на одном уровне, но в разных узлах, называются протоколом.
Формализованные правила, определяющие взаимодействие сетевых компонентов соседних уровней одного узла, называются интерфейсом. Интерфейс определяет набор сервисов, предоставляемый данным уровнем соседнему уровню.
Иерархически организованный набор протоколов, достаточный для организации взаимодействия узлов в сети, называется стеком коммуникационных протоколов.
Открытой системой может быть названа любая система, которая построена в соответствии с общедоступными спецификациями, соответствующими стандартам и принятыми в результате публичного обсуждения всеми заинтересованными сторонами.
Модель OSI стандартизует взаимодействие открытых систем. Она определяет 7 уровней взаимодействия: прикладной, представительный, сеансовый, транспортный, сетевой, канальный и физический.
Важнейшим направлением стандартизации в области вычислительных сетей является стандартизация коммуникационных протоколов. Наиболее популярными являются стеки: TCP/IP, IPX/SPX, NetBIOS/SMB, DECnet, SNA и OSI.
Ты балда, Коломб, - скажу по чести. Что касается меня, то я бы лично - я б Америку закрыл, слегка почистил, а потом опять открыл - вторично. В.В. Маяковский "Христофор Коломб" (ПСС в 13-ти т., т. 7, с. 38)Что такое "открытые системы", каждый, разумеется, понимает по-своему. Тем не менее многие согласятся, что одной из провозглашенных целей этого направления было обуздание гетерогенности, как аппаратной, так и программной. Здесь получены наиболее заметные результаты, позволившие, например, решить в достаточно общей постановке задачу организации распределенных вычислений в неоднородной среде. Однако всеобщее увлечение гетерогенностью имеет и оборотную сторону: на долгое время остались без должного внимания однородные программные конструкции, хотя именно они служат отправной точкой для дальнейшего продвижения в сторону открытости.
Главное, а может быть и единственное известное сегодня средство "открывания" систем - это стандартизация. Оформленные в соответствии с требованиями стандартов материалы приобретают необходимый запас однородности, позволяющий свободно манипулировать ими, успешно преодолевая враждебную гетерогенность среды. Иначе говоря, гетерогенные системы открыты ровно настолько, насколько они гомогенизированы.
Но представим себе, что все интересующие нас программные компоненты успешно стандартизованы, и попытаемся проследить их дальнейшую судьбу. Прежде всего каждый новый однородный компонент должен быть "принят на работу" операционной системой или системой программирования. И на этом шаге, когда, казалось бы, все трудности уже позади, возникают достаточно серьезные проблемы.
Открытость операционной системы
Возьмем, к примеру, широкораспространенную операционную систему MS DOS и ее оболочку Windows 3.11, и попытаемся проанализировать, как там поставлено дело в части подключения и отключения приложений. Иначе говоря, очевидным образом расширим толкование открытости системы, включив в него также и легкость перемещения приложения в обоих направлениях: пусть теперь открытая система должна обеспечивать и свободу добавления новых приложений, и свободу исключения существующих. Оказывается, что под таким углом зрения рассматриваемые системы выглядят недостаточно открытыми; более того, дела тут обстоят из рук вон плохо.
Если в организации процедуры добавления (инсталляции) приложения еще можно не разглядеть определенных недоработок, то уж деинсталляция буквально вопиет. Каждый, кому выпало хоть раз искоренять глубоко засевшее в бесчисленных системных файлах (config.sys, autoexec.bat, win.ini, system.ini, ...) приложение, не может без дрожи вспоминать об этих нескольких мучительных часах своего программистского бытия. Обиднее всего, что борьба эта, как правило, обречена на бесславное поражение: обычно так и не удается полностью выявить и изничтожить все крючья, которыми сложное приложение сцепилось с операционной системой.
Проблема эта давно замечена. В результате многие приложения, инсталлируемые в MS Windows, предстают теперь перед взором удивленного пользователя в виде двух иконок: одна для постоянного использования, обслуживающая повседневное обращение к приложению, и другая - одноразовая, для его деинсталляции. Если же специальной процедуры деинсталляции в некотором приложении не предусмотрено, на помощь могут прийти универсальные деинсталляторы - невероятно сложные программы, за создание которых, похоже, вскоре начнут присуждать премии Тьюринга.
В то же время, повнимательнее приглядевшись к организации хозяйства DOS и Windows, обнаруживаешь, что существует тривиальнейший выход из положения. Достаточно чуть усложнить аппарат работы с файлами, введя файл специального типа - паспорт приложения. В этом файле приложение размещает всю интересную для операционной системы информацию. При своей перезагрузке, а также при появлении на постоянном диске новых файлов-паспортов операционная система анализирует их содержимое, выдает, где сочтет нужным, диагностические сообщения об обнаруженных ошибках и растаскивает полученные сведения о заявивших о себе таким образом приложениях по своим таблицам.
Проблема решена. Теперь для удаления приложения достаточно всего лишь удалить его файл-паспорт. Не так важно, что при этом будет делать операционная система: соберет ли все свои таблицы заново, или же прицельно исключит соответствующие их элементы, для чего ей нужно будет хранить изначальные сведения о происхождении каждого элемента каждой таблицы. Главное, что в любом случае приложение удаляется предельно просто и исчезает совершенно бесследно.
Новую схему инсталляции имеет смысл оснастить некоторым сервисом для подготовленного пользователя. Хорошо бы позволить заглядывать в системные таблицы, построенные из материала файлов-паспортов, где о каждом элементе можно узнать, какие именно приложения потребовали его включения. Иногда это могло бы помочь при попытке вручную разрешить возникший конфликт приложений. Располагая подобным сервисом, пользователь оказывается в среде во всех отношениях значительно более благожелательной, чем существующая операционная среда MS DOS - Windows. Помимо радикального упрощения процессов включения и исключения приложений, он не только имеет удобный доступ к информации, которую ранее приходилось разыскивать в системных файлах, но и получает сведения о происхождении каждого элемента этой информации, что ранее было абсолютно недоступно.
Некоторое приближение к описанной схеме можно найти в Windows 95. Что же помешало разработчикам Microsoft с самого начала применить подобное решение? Причин можно назвать несколько, но лишь одна из них представляется достаточно весомой, хотя и далеко не очевидной.
По-видимому, разработчиками двигало желание приблизить создаваемые средства описания приложений к общеизвестным языкам программирования. Это стремление, во многом оправданное, имело и негативную сторону: средства описания унаследовали от языков их серьезный изъян - отсутствие поддержки однородных расширяемых наборов. Из-за относительной сложности языков класса Си или Паскаль печальные последствия небрежения однородными наборами не так заметны; в нашем же случае, на фоне простенького синтаксиса системных файлов, эти последствия проявились довольно-таки рельефно. Собирающаяся в системных файлах информация имеет выраженную двумерную структуру: вертикальные слои-приложения и горизонтальные слои-списки однородных системных ресурсов. Каждому из двух измерений необходимо придать конструктивное оформление, однако сделать это, не выходя за рамки распространенных языковых средств, не удается.
Сама по себе идея сосредоточения всех сведений об аппаратной и программной конфигурации данного компьютера не в ассоциативно формируемых таблицах, а в нескольких текстовых системных файлах вполне дееспособна. Пользователю удобно просматривать или редактировать эти файлы посредством своего любимого универсального текстового редактора. Однако беда в том, что такие редакторы создаются с оглядкой на запросы существующих языков программирования, и вслед за языками в редакторах традиционно отсутствуют ассоциативные конструкции, обслуживающие расширяемые однородные наборы. Но это означает, что фирма Microsoft, положившись в ранних версиях операционной системы на системные текстовые файлы, фактически подписала приговор надежной организации добавления или исключения однородных элементов-приложений.
Из-за отсутствия ассоциативных конструкций инсталляция нового приложения, как правило, требует редактирования текстов системных файлов. Здесь легко заметить сразу два источника неприятностей. Во-первых, любое редактирование находящегося в эксплуатации текста, и в особенности чужого текста, - процедура чрезвычайно деликатная. Далеко не каждое приложение успешно с ней справляется, и допущенные ошибки редактирования неумолимо делают свое черное дело: после небрежной инсталляции нередко не только не вызывается новое приложение, но и перестают работать его соседи, информация о которых, непосредственно записанная в редактируемых текстовых файлах, весьма уязвима и легко может быть повреждена. Во-вторых, редактирование обезличивает вносимые дополнения, порождая отмеченные выше сложности деинсталляции.
Напротив, если редактор поддерживает ассоциативные конструкции, перечисленные проблемы находят аккуратное решение. В том месте системного текстового файла, куда каждое приложение должно было вписать, скажем, сведения о добавляемых им драйверах определенного класса, теперь располагается ассоциативная конструкция со следующей семантикой: "Сюда включить объявления драйверов данного класса из всех файлов-паспортов приложений, хранящихся на постоянном диске". От редактора потребуется лишь обеспечить просмотр и выдачу системного файла в двух режимах: либо в форме исходного текста, либо с подставленными на место ассоциативных конструкций однородными объявлениями. Таким образом, исходная двумерность информации получает конструктивное оформление: вертикальные слои-приложения отображаются в файлы-паспорта, а горизонтальные слои-списки однородных ресурсов - в совокупности объявлений драйверов, предъявляемых редактором в точках размещения ассоциативных конструкций.
Оба предложенных решения задачи, и табличное, и текстовое, имеют свои плюсы и минусы и выглядят примерно равноценно. В пользу табличного решения говорит возможность применения специализированного редактора, способного, в частности, более оперативно реагировать на ошибки во вводимых значениях параметров и предоставляющего широкий диапазон разнообразных средств просмотра таблиц. Главное преимущество текстового решения - единое представление всех исходных материалов приложения, основной объем которого обычно составляют алгоритмы, представленные в текстовой форме.
Оформление табличного решения достаточно очевидно; один из его возможных вариантов, как уже упоминалось, можно найти в Windows 95. Текстовое решение требует ассоциативных конструкций. Две конструкции такого рода уже разбирались в . Для нашего случая потребуется еще одна ассоциативная конструкция, рассредоточенный набор. Подробное его описание содержится в . Здесь же, не вдаваясь в детали и не пытаясь охватить все нюансы отношений между операционной системой и приложениями, ограничимся беглым рассмотрением сравнительно простого, но достаточно показательного примера применения рассредоточенного набора в смежной области, для известной задачи о диагностических сообщениях. Используемая там схема без труда проецируется и на обслуживание приложений.
Рассредоточенный набор
Большинство разработчиков крупных программ когда-либо сталкивались со следующей проблемой. Пусть программа должна осуществлять тщательный анализ входных данных, результатом которого является, в частности, значительное число выдаваемых ею диагностических сообщений. Вопрос заключается в том, где следует разместить тексты сообщений: записать их непосредственно в тех точках программы, в которых обнаруживаются диагностируемые ситуации, или же свести в единый список. Каждая из альтернатив имеет свои сильные и слабые стороны.
Непосредственное размещение обладает целым рядом достоинств. Текст сообщения, записанный непосредственно в программе, является, как правило, наилучшим пояснением к фрагменту алгоритма, анализирующему диагностируемую ситуацию. При кодировании алгоритма значительно удобнее сразу разместить сообщение в создаваемой программе, чем включить его в список, формируемый на отдельном листке бумаги или на каком-либо его экранном аналоге, дополнив алгоритм ссылкой на вновь записанную строку списка. Списковое решение требует постоянного внимания к целостности программы: добавляя или исключая некоторый фрагмент алгоритма, необходимо строго следить за тем, чтобы тексты выдаваемых там диагностических сообщений были добавлены в список или, соответственно, исключены из него. При непосредственном размещении о целостности заботиться не надо.
В то же время аргументы в пользу списка также достаточно весомы. Лет 30 назад размеры оперативной памяти обычно не позволяли разместить тексты сообщений непосредственно в программе, что вынуждало выносить эти тексты в файл на внешней памяти, для формирования содержимого которого требовался сводный список сообщений. Но и в наши дни такой список во многих случаях оказывается весьма кстати. Он служит полезным дополнением к любой инструкции по эксплуатации программного продукта. При изучении алгоритма список дает возможность увидеть текст программы в новом интересном ракурсе. Анализируя и корректируя сводный список, легче добиться стилистического единства сообщений. Наконец, списковое представление позволяет избежать поиска разбросанных по программе текстов при необходимости создания версии программы, выдающей сообщения на другом языке.
Проблема размещения текстов сообщений достаточно серьезна, так что для ее решения иногда даже предлагают применять специализированные системные средства поддержки. Столь узкая специализация системных средств все же представляется нерациональной. Ведь если затратить чуть больше усилий, то вместо узконаправленного инструмента можно получить средства поддержки существенно более мощного механизма - так называемого рассредоточенного набора, - способные охватить также множество других практических задач, и в частности рассмотренную выше задачу обслуживания приложений. (При обсуждении обслуживания приложений речь шла о двух решениях, табличном и текстовом, однако в нашем случае таблицы абсолютно непригодны, поскольку из-за такой мелочи, как диагностические сообщения, заведомо не стоит ломать прочную плодотворную традицию текстового представления алгоритмов.)
Схема решения проблемы размещения сообщений с помощью механизма рассредоточенного набора проиллюстрирована на рисунке1. Тексты сообщений записываются рассредоточенно - непосредственно в программе, но оформляются в виде параметров так называемых экспортных заявок. Если в собираемом исходном тексте программы встречается такая заявка, то указанный в ней параметр включается в качестве элемента в формируемый таким образом рассредоточенный набор. Искомый сводный список сообщений в этом случае строится на основе наборного гнезда , в котором автоматически собираются все элементы рассредоточенного набора - все сообщения, экспортируемые из составляющих программу модулей. На месте же экспортных заявок при сборке программы формируются обращения к построенному списку. Нетрудно видеть, что данная схема успешно справляется со всеми перечисленными трудностями размещения сообщений.
Рисунок 1.
Рассредоточенный набор.
Интересовавшее нас решение проблемы обслуживания приложений теперь легко получить, если вместо модулей программы рассматривать файлы-паспорта, а в экспортных заявках разместить не тексты сообщений, а запросы на ресурсы операционной системы. Разумеется, здесь потребуется сформировать несколько рассредоточенных наборов, обслуживающих отдельные классы ресурсов.
Развивая начатую параллель, можно заявить, что программа, использующая механизм рассредоточенного набора, открыта для включения или исключения модулей, содержащих диагностические сообщения. В самом деле, разработчик такой программы полностью избавлен от всех технических забот по синхронной коррекции сводного списка. Далее закономерно возникает вопрос: а что еще можно было бы сделать для облегчения развития программы? Таким образом, мы вплотную подошли к обсуждению открытости систем программирования и алгоритмических языков.
Открытость системы программирования
Напомним, что открытость операционной системы мы интерпретировали как ее способность к свободному добавлению новых и исключению существующих приложений. Аналогичное определение открытости применимо и к системе программирования, только здесь в качестве добавляемых и исключаемых выступают элементы программы, модули. Интересно, что такое определение обычно представляется достаточно естественным и не вызывает возражений у программистов, однако дальнейшие аналогии между языками программирования и открытыми системами воспринимаются с трудом и требуют аргументации. Если в открытых системах лозунг "систему открывает стандартизация ее компонентов" с самого начала был начертан на знамени, то утверждение "открытость программы для последующего развития определяется степенью стандартизованности или гомогенизации ее модулей" встретишь нечасто.
Точнее, общепризнанно, что расчленение программы на модули - проверенное средство облегчения ее последующего развития. Еще в 70-х годах Парнас предлагал: оформляйте в виде модуля каждое решение, принимаемое в процессе проектирования программы, и тогда последующие изменения будут строго локализованы, поскольку их причина - именно пересмотр проектных решений. Но какое отношение к открытости имеет стандартизация и проистекающая из нее однородность модулей?
Оказывается, между однородностью модулей и открытостью программы существует прямая связь, проследить которую сравнительно несложно. Например, выделение модуля по Парнасу означает, вообще говоря, что закладывается первый кирпич в основание будущего однородного набора. Если пересматриваемые в ходе развития программы решения не отбрасываются навсегда (поскольку к ним, возможно, придется когда-либо вернуться), то набор однородных модулей-реализаций решений непосредственно появляется в базе данных проекта. Но пусть даже новые варианты модуля никогда не соседствуют со старыми, пусть новые модификации просто приходят на смену устаревшим - и в этом случае однородный набор состоится; правда, виден он будет только при ретроспективном анализе развития программы.
Однородные модули могут не замещать друг друга, как вариантные модули по Парнасу, а одновременно присутствовать в выполняемой программе. Например, если в трансляторе стандартизовано оформление модулей, относящихся к реализации отдельных конструкций входного языка, то в выполнении трансляции одновременно участвуют все эти модули. Здесь также из однородности следует открытость: чем глубже продумана унификация модулей, чем четче очерчены их связи с внешним миром, тем легче пройдет подключение к действующей программе нового модуля, ответственного за новую конструкцию, расширяющую входной язык.
Если в систему включены средства поддержки однородных наборов, то она выходит на новый технологический уровень открытости: появляется возможность безболезненного включения новых и удаления существующих однородных модулей. Безболезненность включения и удаления означает, что здесь не требуется какого бы то ни было редактирования находящихся в эксплуатации текстов программ. Тем самым устраняется главная опасность, главный тормоз свободного манипулирования модульным материалом, поскольку теперь никакие ранее отлаженные части не могут быть повреждены при добавлении новых или удалении существующих модулей.
Характерный пример безболезненного подключения - разобранное ранее решение задачи обслуживания приложений. Если предусмотрены средства системной поддержки однородных наборов, составляемых из запрашиваемых приложениями ресурсов, то вновь появившееся приложение всего лишь записывает на диск свой файл-паспорт, и при такой технологии тексты уже имеющихся на диске файлов-паспортов не подвергаются никакой угрозе. Если же однородный набор не поддержан, то мы закономерно приходим к проблемам Windows 3.11, где куски текстов, относящиеся к различным приложениям, реально соседствуют в одних и тех же системных файлах, добавление или удаление приложений требуют энергичного редактирования этих файлов, а при редактировании трудно не "зацепить" строчки, относящиеся к соседним приложениям.
К сожалению, тенденции программистской моды сейчас направлены в сторону от открытых однородных конструкций. Слишком много внимания взяло на себя объектно-ориентированное программирование. В результате при проектировании структуры программы разработчик увлечен исключительно вычленением взаимодействующих объектов и редко задумывается об их унификации, об унификации методов их обработки, и вообще о целенаправленном поиске однородностей, а ведь объекты и однородность - два равноправных, дополняющих друг друга ориентира проектирования. Однородность забыта, однородность не имеет системной поддержки, но без однородности нет открытости, и развитие программы из удовольствия превращается в опасную, мучительную процедуру.
Модный термин "масштабируемость", говорящий о потенциале наращивания мощности аппаратуры, почему-то мало кому приходит в голову применить и к программным структурам. Что случилось бы со строительством, если бы все архитекторы работали только над уникальными сооружениями, отказавшись и от типовых проектов, и от типовых строительных блоков?! А в программировании нередко проектируют уникальный, но консервативный зоопарк там, где требуется всего лишь серийный, но масштабируемый коровник или свинарник.
Даже очевиднейшие однородные конструкции в языках программирования обычно оказываются на задворках. Типичный пример - описание записи в Паскале. Девять из десяти разработчиков пытаются подчеркнуть однородность полей записи, выделяя под каждое из них отдельную строку своей программы. Однако синтаксис Паскаля разрушает намечающуюся таким образом гармонию, предписывая однородным полям неоднородное оформление: описания первых полей должны завершаться точкой с запятой, описание последнего - нет. Но любая однородность в программе - потенциальная точка развития. И действительно, разработчик достаточно часто добавляет или исключает поля записи, и всякий раз он вынужден задумываться: а не последнее ли поле исключается, - ведь в этом случае надо уничтожить не только строку текста, но и точку с запятой в предшествующей строке. Таким образом, открытость описания полей записи принесена в жертву сомнительным синтаксическим изыскам. Интересно, что в Си простановка точки с запятой в аналогичной позиции разрешена - и ничего, небо не обрушилось на землю.
Менее очевидный пример - оформление однородного набора ветвей программы, допускающих параллельное выполнение. Обслуживающая данную задачу конструкция сейчас нередко надстраивается над языком, когда создаются специализированные средства для эффективной загрузки параллельно работающего оборудования. Разработчик воспринимает ее как неизбежное зло, с которым приходится мириться, если хочешь осваивать новую технику. На самом же деле возможность параллельного выполнения подчеркивает однородность ветвей, и поэтому ее имеет смысл оформлять, даже если переход к параллельному оборудованию не планируется. Тем самым не только проявится важная особенность алгоритма, но и будет образована новая точка роста программы, в дальнейшем ее не спутаешь с последовательными частями и не придется ломать голову над тем, где разместить еще одну добавочную параллельную ветвь. Допускающие параллельное выполнение ветви встречаются в реальных программах на каждом шагу, однако отображающие их конструкции, к сожалению, отсутствуют в массовых алгоритмических языках.
Недальновидную традицию игнорирования нужд однородных конструкций продолжают и новейшие течения в программировании, в частности визуальное программирование. Попытайтесь в Delphi построить линейку, состоящую из плотно прижатых друг к другу однородных быстрых кнопок и открытую для модификации - поддерживающую очевидные действия: добавление новой кнопки в произвольное место линейки с автоматическим раздвиганием ее соседей и удаление произвольной кнопки, сопровождающееся "смыканием ряда" оставшихся в строю. И вы быстро почувствуете, что подобные проекты находились на периферии внимания создателей Delphi. Но визуальный стиль отчасти оправдывает его младенческий возраст, он даже не вошел еще в современные учебники , а вот затянувшееся проникновение крупных однородных конструкций в распространенные языки программирования объяснить действительно трудно.
Сложившаяся ситуация выглядит вдвойне противоестественно, если заметить, что в соседних областях, например в системах управления базами данных, царит относительное благополучие. Невозможно представить, что пользователю базы данных для включения в одну из таблиц новой строки предлагают обратиться к общецелевому текстовому редактору. Всем очевидно, что при такой постановке дела пользователь страдает не только из-за необходимости выполнять множество лишних вспомогательных действий, но и, главное, из-за постоянной опасности разрушения существующих данных при ошибке, допущенной в ходе редактирования.
Но текст программы представляет, вообще говоря, ничуть не меньшую ценность, чем строки таблицы базы данных. И модифицировать программы приходится достаточно часто. И средства, необходимые для организации безболезненных изменений, не так уж сложны в реализации. Тем не менее до сих пор подавляющее большинство выполняемых модификаций программы производится варварскими методами, с привлечением общецелевого редактора для коррекции драгоценных отлаженных ранее текстов.
Безрадостно выглядят и перспективы. Если оглянуться на многолетнюю историю операционных систем, систем программирования и алгоритмических языков, становиться ясно, что не приходится всерьез рассчитывать на имеющее место, но слишком вяло текущее стихийное движение к открытости. Здесь требуется радикальная ломка представлений. Надо сформировать атмосферу, где каждый, заявляя о том, что его программная система открыта, считал бы своим долгом не только предъявить свод стандартов на составляющие ее модули, но и продемонстрировать средства системной поддержки, обслуживающие свободное манипулирование возникающими в результате этой стандартизации однородными элементами программы.
Литература
. Горбунов-Посадов М.М. Безболезненное развитие программы // Открытые системы. - 1996. - # 4(18). - С.65-70.
. Горбунов-Посадов М.М. Конфигурации программ. Рецепты безболезненных изменений. - 2-е изд., испр. и доп. - М.: Малип, 1994. - 272 с.
. Parnas D.L. On the criteria to be used in decomposing systems into modules // Comm.ACM. - 1972. - V.15, # 12. - P.1053-1058.
. Ben-Ari M. Understanding programming languages. - Chichester: John Wiley & Sons, 1996. - 360 p.
Работа выполнена при финансовой поддержке Российского фонда фундаментальных исследований.
В настоящее время существует множество определений понятия "открытая система". Так, Ассоциация французских пользователей UNIX и открытых систем (AFUU) дает следующее определение: "Открытая система - это система, состоящая из элементов, которые взаимодействуют друг с другом через стандартные интерфейсы". Производитель средств ВТ - компания Hewlett-Packard дает такое определение: "Открытая система - это совокупность разнородных компьютеров, объединенных сетью, которые могут работать как единое интегрированное целое, независимо от того, как в них представлена информация, где они расположены, кем они изготовлены, под управлением какой операционной системы они работают".
Национальный институт стандартизации и технологий США (NIST) определяет открытую систему следующим образом: "Открытая система - это система, которая способна взаимодействовать с другой системой посредством реализации международных стандартных протоколов. Открытыми системами являются как конечные, так и промежуточные системы. Однако открытая система не обязательно может быть доступна другим открытым системам. Эта изоляция может быть обеспечена или путем физического отделения или путем использования технических возможностей, основанных на защите информации в компьютерах и средствах коммуникации".
Институт электро- и радиоинженеров США (IEEE) сформулировал определение так:
"Открытая система - это исчерпывающая и последовательная совокупность международных стандартов в области информационных технологий и функциональных профилей стандартов, которая специфицирует интерфейсы, службы и поддерживающие форматы для достижения взаимодействия и переносимости приложений, данных и персонала". Анализируя приведенные выше определения, можно выделить некоторые общие черты, присущие открытым системам:
как правило, открытые системы представляют собой гетерогенную вычислительную среду как с точки зрения используемых платформ (архитектур), так и с учетом различий реализации структур конкретными производителями,
вычислительные средства объединены сетью или сетями различного уровня: от локальной до глобальной, в том числе, с использованием средств телекоммуникации,
в открытых системах допускается использование более одной операционной системы (программной среды),
реализация открытости осуществляется на основе разрабатываемых стандартов в области информационных технологий,
приложения (программные продукты), разработанные для конкретного устройства, обладающего свойством открытости, могут выполняться на других устройствах, входящих в единую среду открытых систем,
в открытых системах предполагается использование унифицированных интерфейсов в процессах взаимодействия в системе "человек-машина",
применение положений открытости предполагает некоторую избыточность при разработке программно-аппаратных комплексов.
Учитывая приведенные выше характеристические черты, приведем определение понятия открытой системы, данное в рекомендациях IEEE POSIX 1003.0 "Руководство по инфраструктуре POSIX-открытых систем. Свод POSIX-стандартов.":
Открытая система - это система, реализующая открытые спецификации на интерфейсы, службы, и форматы данных, достаточные для того, чтобы обеспечить:
возможность переноса (мобильность) прикладных систем, разработанных должным образом, с минимальными изменениями на широкий диапазон систем;
совместную работу (интероперабельность) с другими прикладными системами на локальных и удаленных платформах;
взаимодействие с пользователями в стиле, облегчающем последним переход от системы к системе (мобильность пользователей)".
Таким образом, важнейшими свойствами открытой ИВС являются:
мобильность прикладных программ, т.е. возможность переноса программ с одной аппаратной платформы на другую с минимальными доработками или даже без них;
мобильность персонала, т.е. возможность подготовки персонала для работы на ИВС с минимальными временными и трудозатратами;
четкие условия взаимодействия частей ИВС и сетей с использованием открытых спецификаций.
Ключевой момент в обеспечении свойств открытых ИВС - использование открытых спецификаций, т.е. общедоступных спецификаций, которые поддерживаются открытым, гласным согласительным процессом, направленным на постоянную адаптацию новым технологиям.
Одна из важнейших проблем, возникающих в АСУ ТП, при автоматизации измерений и в других областях, заключается в резком увеличении стоимости системы с ростом ее сложности. Объективная причина этого явления состоит в том, что сложные системы часто изготавливаются в единичных экземплярах, а это не позволяет сделать их дешевыми.
Распространенный метод решения указанной проблемы состоит в делении системы на модули таким образом, чтобы каждый из них становился коммерчески эффективным изделием и мог изготавливаться несколькими конкурирующими производителями в больших количествах. Однако при этом возникает проблема аппаратной и программной совместимости модулей. Для достижения совместимости интерфейс, конструктив и выполняемые функции таких модулей должны быть стандартизованы.
Открытой называется модульная система, которая допускает замену любого модуля на аналогичный модуль другого производителя, имеющийся в свободной продаже по конкурентоспособным ценам, а интеграция системы с другими системами (в том числе с пользователем) выполняется без преодоления чрезмерных проблем. Понятие открытости обсуждается на веб-сайтах OMAC (Open Modular Architecture Controls , www.omac.org), и в работах [Helei , Business - Wang ].
Масштабируемость ( наращиваемость)
Масштабируемость позволяет применять одни и те же аппаратные и программные средства как для больших, так и для малых систем в пределах одной организации. Примером масштабируемых программных систем являются современные SCADA -пакеты TraceMode и MasterSCADA , которые продаются как единый пакет, но имеющий градации в зависимости от количества тегов.
До появления открытых систем обеспечение масштабируемости достигалось путем проектирования системы с большим запасом по габаритам, количеству слотов, интерфейсов. Наращиваемость открытой системы подразумевает иной путь, не требующий запаса ресурсов (и связанных с ним избыточных финансовых вложений). В частности, система, обладающая свойством платформенной независимости и интероперабельности, уже является расширяемой, поскольку она позволяет добавлять новое оборудование или заменять старое новыми модификациями, в том числе оборудованием других производителей.
Стандартность пользовательского интерфейса
Открытые системы должны иметь стандартный пользовательский интерфейс, чтобы выполнить требование о возможности интеграции с другими системами (в данном случае под "другой системой" понимается человек). Стандартизация пользовательского интерфейса снимает необходимость обучения операторов при переходе от одной открытой системы к другой.
1.3.2. Средства достижения открытости
Для обеспечения возможности построения открытых систем рынок должен быть наполнен программными и аппаратными средствами, которые являются взаимозаменяемыми, производятся независимыми предприятиями и удовлетворяют требованиям общепринятых стандартов. Ниже мы кратко опишем такие продукты.
Промышленные сети и протоколы
Наиболее распространенными в России являются сети Modbus , Profibus , CAN , Ethernet . Оборудование, совместимое с ними, выпускается сотнями конкурирующих предприятий в разных странах мира, что обеспечивает отсутствие монопольных цен.
Интерфейсы
Наибольшая часть средств промышленной автоматизации, представленных на Российском рынке, имеет интерфейсы RS -232, RS -485, RS -422, CAN , Ethernet , USB . Большое значение для повышения степени открытости имеют преобразователи интерфейсов и межсетевые шлюзы, которые позволяют объединять в единую систему несовместимое по интерфейсам и протоколам оборудование.
Программные интерфейсы
Для взаимодействия открытых систем на программном уровне наибольшее распространение получила DCOM -технология фирмы Microsoft , воплощенная в промышленный стандарт OPC (OLE for Process Control ) [Iwanitz ], который пришел на смену устаревшей технологии DDE (Dynamic Data Exchange ). Стандарт ОРС обеспечил возможность применения оборудования различных производителей практически с любыми SCADA , имеющимися на рынке, поскольку большинство из них поддерживает стандарт OPC .
Аналогичная задача может быть решена также с помощью технологии Jini фирмы SUN и CORBA фирмы OMG [Feldmann ], однако воплощение в международный стандарт OPC получила только технология DCOM , ориентированная на Windows -платформы (подробнее см. "OPC-сервер").
Интерфейс пользователя
Интерфейс между SCADA и пользователем в настоящее время выполняется примерно одними и теми же визуальными средствами, которые стали стандартом де-факто: кнопки пуск/стоп, цифровое табло, линейный или радиальный индикатор уровня, цветовая сигнализация, окна с текстовыми сообщениями, окна ввода данных, графики и т.п. Такой интерфейс легко осваивается операторами АСУ ТП.
Программирование контроллеров поддерживается тремя международными стандартами: стандартом МЭК 61131-3 [Lewis ] на языки программирования и стандартами МЭК 61499 [First Edition, 2005-01. - International Electro...">International , Гулько ] и МЭК 61804 на функциональные блоки. Стандарты поддерживаются большинством производителей программного обеспечения. Примером могут быть системы ISaGRAF фирмы ICS Triplex и CoDeSys фирмы 3S . Поддержку открытости обеспечивают также конверторы блоков UML (Unifid Modeling Language [Буч ]) в функциональные блоки стандарта IEC 61499, а также UML в XML (eXtended Markup Language ).
В последние годы появилось много SCADA систем, которые поддерживают веб-технологию, когда пользовательский интерфейс SCADA выполняется в виде веб-страницы и располагается на сервере локальной сети. При этом любой пользователь, обладающий достаточными правами доступа, с помощью стандартного веб-браузера (например, Internet Explorer ) может управлять технологическим процессом. Такой подход является значительным прогрессом в направлении открытости SCADA пакетов, поскольку предоставляет пользователю широкий выбор хорошо валидированных веб-браузеров по достаточно низкой цене и обеспечивает применение практически любой аппаратно-программной платформы для общения со SCADA .
Программная совместимость
Важным достоинством SCADA пакетов, повышающим степень их открытости, является связь с программами Microsoft Office (Word, Excel, Access) , которая снижает затраты на обучение персонала и расширяет возможности представления и обработки результатов измерений.
Совместимость баз данных со SCADA обеспечивает широко распространенный язык запросов SQL , соответствующий международному стандарту и поддерживаемый несколькими СУБД (системами управления базами данных), например, Informix, Sybase, Ingres, MS SQL Server . Интерфейс ODBC (Open Data Base Connectivity ) позволяет подключать к одной и той же SCADA различные СУБД, что повышает степень ее открытости.
Обеспечение в некоторых SCADA пакетах возможности программирования на языке Visual Basic , а также возможность встраивания ActiveX и COM объектов сторонних производителей позволяет адаптировать SCADA к аппаратуре, не поддерживающей стандарт ОРС, а также применить принцип повторного использования программного кода, написанного для других приложений.
1.3.3. Достоинства и недостатки
Основным преимуществом систем с открытой архитектурой является низкая стоимость их жизненного цикла [Business ]. Жизненный цикл АСУ ТП состоит из следующих фаз:
- разработка концепции и эскизное проектирование;
- проектирование и изготовление системы;
- монтаж и пуско-наладка;
- эксплуатация системы;
- обслуживание;
- реконфигурация, модернизация, разборка, утилизация.
В работе [White paper version 1.0. - Users ...">Business ] подробно рассмотрена стоимость каждого из перечисленных этапов.
Выгодой от применения открытых систем являются:
- пониженные вложения на проектирование системы и предпроектные изыскания - благодаря наличию на рынке большого выбора готовых компонентов открытых систем. Особенно большой экономический эффект достигается при создании крупных систем в единичных экземплярах. В этом случае экономия пропорциональна размеру системы;
- упрощение процесса интеграции - открытость подразумевает возможность простой интеграции разнородных систем;
- экономия финансовых средств - благодаря низкой стоимости жизненного цикла (в основном вследствие конкуренции независимых производителей и отсутствия диктата цен монопольным поставщиком);
- увеличенное время безотказной работы - благодаря выбору наиболее надежных модулей из имеющихся на рынке;
- минимизированное время вынужденного простоя - благодаря большому выбору взаимозаменяемых модулей всегда можно найти поставщика, имеющего нужные модули на складе;
- минимальные усилия на ввод в действие как аппаратуры, так и программного обеспечения - благодаря устранению времени на дополнительное обучение как монтажной организации, так и эксплуатирующего персонала;
- простое изменение конфигурации системы для работы с новыми технологическими процессами - вытекает из свойств модульности и расширяемости открытых систем;
- минимальный объем дополнительного обучения персонала и, как следствие, простота обслуживания;
- применение новейших технологий и технических решений - благодаря широкому выбору наилучших решений и специализации производителей;
- увеличение времени жизни системы - благодаря взаимозаменяемости отработавшего ресурс и нового оборудования, а также возможности наращивания функциональных возможностей.
В работе [Pizzica ] описаны конкретные преимущества, полученные при создании открытой системы для тестирования военного авиационного оборудования:
- снижение стоимости разработки и изготовления системы. Экономия при этом сопоставима с экономией в серийном производстве;
- уменьшение сроков создания системы благодаря применению имеющихся в продаже компонентов;
- уменьшение риска получения системы, не удовлетворяющей техническому заданию, поскольку большой выбор совместимых между собой изделий, имеющихся в продаже, всегда позволяет подобрать компоненты с нужными характеристиками.
До появления компонентов открытых систем создание такого оборудования требовало разработки специализированных печатных плат, что было чрезмерно дорого и долго. Кроме того, некоторые необходимые функции при этом не могли быть реализованы никогда из-за жестких ограничений на сроки создания системы.
Недостатки открытых систем видны не сразу. И все же они имеются:
- при создании автоматизированной системы на базе открытых решений ответственность за работоспособность системы в целом ложится на системного интегратора, а не на производителя системы. Поэтому при появлении в системе невоспроизводимых отказов некому предъявить претензии, поскольку поставщиков много, а системный интегратор отвечает только за монтаж и пусконаладку системы;
- универсальность всегда находится в противоречии с простотой. Универсальные протоколы, интерфейсы, сети и программное обеспечение, чтобы быть универсальными, должны быть достаточно сложными, следовательно, дорогими и ненадежными. Хотя снижение надежности, вызванное сложностью, компенсируется повышением надежности благодаря большому тиражу и, следовательно, продолжением отладки после начала продаж;
- эффект снижения надежности программного обеспечения, части которого пишутся разными производителями. Когда ПО пишется внутри одной фирмы, можно предвидеть почти все ситуации, которые могут возникнуть на границе между ПО и пользователем или аппаратурой. Если же в этом участвуют несколько разных команд в разных фирмах, между которыми нет взаимодействия, то становится непонятно, кто отвечает за надежность всего комплекса. Кроме того, с ростом числа программистов, участвующих в создании ПО, по законам статистики увеличивается вероятность того, что появится хотя бы один программист, не умеющий писать надежные программы. А этого достаточно, чтобы сделать всю систему ненадежной. Надежность и безопасность открытых систем остаются темами, требующими решения [Wang ];
- иногда к признакам открытости относят открытость исходных кодов. Однако наличие открытых кодов снижает надежность программной системы, поскольку нарушается принцип инкапсуляции, необходимость которого обоснована в идеологии объектно-ориентированного программирования;
- как и любая стандартизация, открытость накладывает ограничения на диапазон возможных технических решений, затрудняя творчество и снижая вероятность появления новых и плодотворных технических решений.
Отметим, что проблема надежности относится не ко всем компонентам открытых систем. Например, такие компоненты, как базы данных, компьютеры или сети Ethernet , обладают высокой надежностью благодаря огромному тиражу и, как следствие, качественной этих компонентов и оптимизации процессов изготовления. Кроме того, выше перечислены только факторы, понижающие надежность открытых систем. Однако одновременно имеются факторы, которые ее повышают - это увеличенный тираж модулей открытых систем по сравнению с низким тиражом полностью заказных систем. Поэтому вывод о надежности открытой системы может быть как положительным, так и отрицательным, в зависимости от конкретного состава ее элементов.
1.4. Заключение к главе "Архитектура автоматизированных систем"
Синтез архитектуры является ответственным этапом, на котором закладываются основные свойства будущей системы. Поэтому архитектор должен одинаково хорошо знать как объект автоматизации, так и технические и программные средства автоматизации.
Наибольшее распространение в АСУ ТП получили распределенные системы, элементы которых (контроллеры, модули ввода-вывода) разнесены в пространстве, независимы друг от друга, но взаимодействуют между собой для выполнения общей задачи. Система обычно имеет несколько уровней иерархии, которые различаются типами промышленных сетей, техническими средствами и кругом решаемых задач. Перспективной тенденцией является применение интернет и интранет технологий, которые обеспечивают возможность построения глобальных систем, когда расстояние перестает иметь значение, а для работы с системой используется любой интернет-браузер.
В последнее десятилетие на рынке средств автоматизации преобладают открытые модульные системы, которые соответствуют общепризнанным стандартам и состоят из компонентов, серийно выпускаемых несколькими конкурирующими производителями.
Обзор публикаций
В работе [Basso ] описана хорошо опробованная технология для управления в реальном времени через интернет на основе Linux -сервера. Компоненты системы, находящиеся на сервере, предоставляют свои свойства и методы клиентам через интернет, используя удаленный вызов процедур и язык XML . В [Groza ] предложена архитектура распределенной системы управления, основанная на интернете и Java . В [Kapsalis , ]. В предложена открытая архитектура интеллектуального датчика, с идеологией "Plug&Play", основанная на интернет-технологии. Такой датчик может работать с любой аппаратно- программной платформой. В [Neag ] описана открытая архитектура коммерческой системы автоматизированного тестирования и диагностики сложной аппаратуры. Система способна к расширению путем применения аппаратуры других производителей: блоков диагностики, оборудования для выполнения тестов, оборудования для отображения информации, систем накопления результатов тестирования и др. В работе [Xia ] сформулированы требования к открытой модульной архитектуре распределенной системы автоматизации, использующей стандарт IEC 61499 на функциональные блоки для обеспечения интероперабельности подсистем.
СТАНДАРТИЗАЦИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
ОСНОВЫ ПОСТРОЕНИЯ СИСТЕМЫ СТАНДАРТОВ ИТ
Понятие открытых систем
Пользователи вычислительной техники неоднократно сталкивались с ситуацией, когда программное обеспечение, отлично работающее на одном компьютере, не желает работать на другом. Или системные блоки одного вычислительного устройства не стыкуются с аппаратной частью другого. Или информационная система другой компании упорно не желает обрабатывать данные, которые пользователь подготовил в информационной системе у себя на рабочем месте, хотя были выполнены все необходимые требования по подготовке данных. Или при загрузке разработанной странички на «чужом» браузере на экране вместо понятного текста возникает бессмысленный набор символов. Эта проблема, которая возникла в ходе бурного развития производства вычислительной и телекоммуникационной техники и разработки программного обеспечения, получила название проблемы совместимости вычислительных, телекоммуникационных и информационных устройств.
Развитие систем и средств вычислительной техники, повсеместное их внедрение в сферы управления, науки, техники, экономики и бизнеса привели к необходимости объединения конкретных вычислительных устройств и реализованных на их основе информационных систем в единые информационно-вычислительные системы и среды, к формированию единого информационного пространства. Такое пространство можно определить как совокупность баз данных, хранилищ знаний, систем управления ими, информационно-коммуникационных систем и сетей, методологий и технологий их разработки, ведения и использования на основе единых принципов и общих правил, обеспечивающих информационное взаимодействие для удовлетворения потребностей пользователей.
Единое информационное пространство складывается из следующих основных составляющих:
Информационные ресурсы, содержащие данные, сведения, информацию и знания, собранные, структурированные по некоторым правилам, подготовленные для доставки заинтересованному пользователю, защищенные и архивированные на соответствующих носителях;
Организационные структуры, обеспечивающие функционирование и развитие единого информационного пространства: поиск, сбор, обработку, хранение, защиту и передачу информации;
Средства информационного взаимодействия, в том числе программно-аппаратные средства и пользовательские интерфейсы, правовые и организационно-нормативные документы, обеспечивающие доступ к информационным ресурсам на основе соответствующих информационно-коммуникационных технологий.
При формировании единого информационного пространства менеджеры, проектировщики и разработчики программно-аппаратных средств столкнулись с рядом проблем. Например, разнородность технических средств вычислительной техники с точки зрения организации вычислительного процесса, архитектуры, систем команд, разрядности процессоров и шины данных потребовала создания физических интерфейсов, реализующих взаимную совместимость компьютерных устройств. При увеличении числа типов интегрируемых устройств сложность организации физического взаимодействия между ними существенно возрастала, что приводило к проблемам в управлении такими системами.
Разнородность программируемых сред, реализуемых в конкретных вычислительных устройствах и системах, с точки зрения многообразия операционных систем, различия в разрядности и прочих особенностей привели к созданию программных интерфейсов. Разнородность физических и программных интерфейсов в системе «пользователь - компьютерное устройство - программное обеспечение» требовала постоянного согласования программно-аппаратного обеспечения и переобучения кадров.
История концепции открытых систем начинается с того момента, когда возникла проблема переносимости (мобильности) программ и данных между компьютерами с различной архитектурой. Одним из первых шагов в этом направлении, оказавшим влияние на развитие отечественной вычислительной техники, явилось создание компьютеров серии IBM 360, обладающих единым набором команд и способных работать с одной и той же операционной системой. Корпорация «IBM», кроме того, предоставляла лицензии на свою ОС пользователям, которые предпочли купить компьютеры той же архитектуры у других производителей.
Частичное решение проблемы мобильности для программ обеспечили ранние стандарты языков, например ФОРТРАН и КОБОЛ. Языи позволяли создавать переносимые программы, хотя часто ограничивали функциональные возможности. Мобильность обеспечивалась также за счет того, что эти стандарты были приняты многими производителями различных платформ. Когда языки программирования приобрели статус стандарта де-факто, их разработкой и сопровождением начали заниматься национальные и международные организации по стандартизации. В результате языки развивались уже независимо от своих создателей. Достижение мобильности уже на этом уровне было первым примером истинных возможностей открытых систем.
Следующий этап в развитии концепции открытости - вторая половина 1970-х гг. Он связан с областью интерактивной обработки и увеличением объема продуктов, для которых требуется переносимость (пакеты для инженерной графики, системы автоматизации проектирования, базы данных, управление распределенными базами данных). Компания «DIGITAL» начала выпуск мини-ЭВМ VAX, работающих под управлением операционной системы VMS. Машины этой серии имели уже 32-разрядную архитектуру, что обеспечило значительную эффективность программного кода и сократило издержки на работу с виртуальной памятью. Программисты получили возможность напрямую использовать адресное пространство объемом до 4 Гбайт, что практически снимало все ограничения на размеры решаемых задач. Машины этого типа надолго стали стандартной платформой для систем проектирования, сбора и обработки данных, управления экспериментом и т.п. Именно они стимулировали создание наиболее мощных САПР, систем управления базами данных и машинной графики, которые широко используются до настоящего времени.
Конец 1970-х гг. характеризуется массовым применением сетевых технологий. Компания «DIGITAL» интенсивно внедряла свою архитектуру DECnet. Сети, использующие протоколы Интернет (TCP/IP), первоначально реализованные Агентством по перспективным исследованиям Министерства обороны США (DARPA), начали широко применяться для объединения различных систем - как военных, так и академических организаций США. Фирма «IBM» применяла собственную сетевую архитектуру SNA (System Network Architecture), которая стала основой для предложенной Международной организацией по стандартизации ISO архитектуры Open Systems Interconnection (OSI).
Когда сетевая обработка стала реальностью и насущной необходимостью для решения большого числа технических, технологических, научных экономических задач, пользователи начали обращать внимание на совместимость и возможность интеграции вычислительных средств как на необходимые атрибуты открытости систем. Организация ISO в 1977-1978 гг. развернула интенсивные работы по созданию стандартов взаимосвязи в сетях открытых систем. Тогда же впервые было введено определение открытой информационной системы.
Таким образом, решение проблем совместимости и мобильности привело к разработке большого числа международных стандартов и соглашений в сфере применения информационных технологий и разработки информационных систем. Основополагающим, базовым понятием при использовании стандартов стало понятие «открытая система».
Существует достаточное число определений, даваемых различными организациями по стандартизации и отдельными фирмами. Например, Ассоциация французских пользователей UNIX и открытых систем (AFUU) дает следующее определение: «Открытая система - это система, состоящая из элементов, которые взаимодействуют друг с другом через стандартные интерфейсы».
Производитель средств вычислительной техники - компания Hewlett Packard: «Открытая система - это совокупность разнородных компьютеров, объединенных сетью, которые могут работать как единое интегрированное целое независимо от того, как в них представлена информация, где они расположены, кем они изготовлены, под управлением какой операционной системы они работают».
Определение Национального института стандартов и технологий США (NIST): «Открытая система - это система, которая способна взаимодействовать с другой системой посредством реализации международных стандартных протоколов. Открытыми системами являются как конечные, так и промежуточные системы. Однако открытая система не обязательно может быть доступна другим открытым системам. Эта изоляция может быть обеспечена или путем физического отделения, или путем использования технических возможностей, основанных на защите информации в компьютерах и средствах коммуникаций».
Другие определения в той или иной мере повторяют основное содержание определений, приведенных выше. (Анализируя их, можно выделить некоторые общие черты, присущие открытым системам:
Технические средства, на которых реализована информационная система, объединяются сетью или сетями различного уровня - от локальной до глобальной;
Реализация открытости осуществляется на основе функциональных стандартов (профилей) в области информационных технологий;
Информационные системы, обладающие свойством открытости, могут выполняться на любых технических средствах, которые входят в единую среду открытых систем;
Открытые системы предполагают использование унифицированных интерфейсов в процессах взаимодействия в системе «человек - компьютер»;
Применение положений открытости предполагает некоторую избыточность при разработке программно-аппаратных комплексов.
Открытую систему сегодня определяют как исчерпывающий и согласованный набор международных стандартов на информационные технологии и профили функциональных стандартов, которые реализуют открытые спецификации на интерфейсы, службы и поддерживающие их форматы, чтобы обеспечить взаимодействие (интероперабельность) и мобильность программных приложений, данных и персонала.
Это определение, сформулированное специалистами Комитета IEEE POSIX 1003.0 Института инженеров по электротехнике и электронике (IEEE), унифицирует содержание среды, которую предоставляет открытая система для широкого использования. Базовым в этом определении является термин «открытая спецификация», имеющий следующее.толкование: «это общедоступная спецификация, которая поддерживается открытым, гласным, согласительным процессом, направленным на постоянную адаптацию новой технологии, и которая соответствует стандартам». Таким образом, под открытыми системами следует понимать системы, обладающие стандартизованными интерфейсами. Решение проблемы открытости систем основывается на стандартизации интерфейсов систем и протоколов взаимодействия между их компонентами.
В качестве примеров использования технологии открытых систем можно привести технологии фирм «Intel» Plug&Play и USB, а также операционные системы UNIX и (частично) ее основного конкурента - Windows NT. Многие новые продукты сразу разрабатываются в соответствии с требованиями открытых систем, примером тому может служить широко используемый в настоящее время язык программирования Javaфирмы «Sun Microsystems».
Общие свойства открытых информационных систем можно сформулировать следующим образом:
взаимодействие/интероперабелъностъ - способность к взаимодействию с другими прикладными системами на локальных и (или) удаленных платформах (технические средства, на которых реализована информационная система, объединяются сетью или сетями различного уровня - от локальной до глобальной);
стандартизуемостъ - ИС проектируются и разрабатываются на основе согласованных международных стандартов и предложений, реализация открытости осуществляется на базе функциональных стандартов (профилей) в области информационных технологий;
расширяемость/масштабируемость - возможность перемещения прикладных программ и передачи данных в системах и средах, которые обладают различными характеристиками производительности и различными функциональными возможностями, возможность добавления новых функций ИС или изменения некоторых уже имеющихся при неизменных остальных функциональных частях ИС;
мобильность/переносимость - обеспечение возможности переноса прикладных программ и данных при модернизации или замене аппаратных платформ ИС и возможности работы с ними специалистов пользующихся ИТ, без их специальной переподготовки при изменениях ИС;
дружественность к пользователю - развитые унифицированные интерфейсы в процессах взаимодействия в системе «пользователь -компьютерное устройство - программное обеспечение», позволяющие работать пользователю, не имеющему специальной системной подготовки.
Все эти общепринятые свойства современных открытых систем, взятые по отдельности, были характерны и для предыдущих поколений ИС и средств вычислительной техники. Новый взгляд на открытые системы определяется тем, что эти черты рассматриваются в совокупности, как взаимосвязанные, и реализуются в комплексе. Это естественно, поскольку все указанные выше свойства дополняют друг друга. Только в такой совокупности возможности открытых систем позволяют решать проблемы проектирования, разработки, внедрения, эксплуатации и развития современных информационных систем.
Проиллюстрируем важность такого подхода на примере важнейшего свойства - интероперабелъности (Interoperability) . Ниже перечислены обстоятельства, которые отражают насущные потребности развития областей применения информационных технологий и мотивируют переход к интероперабельным информационным системам и разработке соответствующих стандартов и технических средств.
Функционирование систем в условиях информационной и реализационной неоднородности, распределенности и автономности информационных ресурсов системы. Информационная неоднородность ресурсов заключается в разнообразии их прикладных контекстов (понятий, словарей, семантических правил, отображаемых реальных объектов, видов данных, способов их сбора и обработки, интерфейсов пользователей и т.д.). Реализационная неоднородности источников проявляется в использовании разнообразных компьютерных платформ, средств управления базами данных, моделей данных и знаний, средств программирования и тестирования, операционных систем и т.п.
Интеграция систем. Системы эволюционируют от простых, автономных подсистем к более сложным, интегрированным системам, основанным на требовании взаимодействия компонентов.
Реинжиниринг систем. Эволюция бизнес-процессов - непрерывный процесс, который является неотъемлемой составляющей деятельности организаций. Соответственно, создание системы и ее реконструкция (реинжиниринг) - непрерывный процесс формирования, уточнения требований и проектирования. Система должна быть спроектирована так, чтобы ее ключевые составляющие могли быть реконструированы при сохранении целостности и работоспособности системы.
Трансформация унаследованных систем. Практически любая система после создания и внедрения противодействует изменениям и имеет тенденцию быстрого превращения в бремя организации. Унаследованные системы (Legacy Systems), построенные на «уходящих» технологиях, архитектурах, платформах, а также программное и информационное обеспечение, при проектировании которых не были предусмотрены нужные меры для их постепенного перерастания в новые системы, требуют перестройки (Legacy Transformation) в соответствии с новыми требованиями бизнес-процессов и технологий. В процессе трансформации необходимо, чтобы новые модули системы и оставшиеся компоненты унаследованных систем сохраняли способность к взаимодействию.
Повторное использование неоднородных информационных ресурсов. Технология разработки информационных систем должна позволять крупномасштабно применять технологию повторного использования информационных ресурсов, которые могут быть «соединены» (т.е. образованы их «интероперабельные сообщества») для производства серий стандартизованных продуктов в определенной прикладной области.
Продление жизненного цикла систем. В условиях исключительно быстрого технологического развития требуются специальные меры, обеспечивающие необходимую продолжительность жизненного цикла продукта, включающего в себя постоянное улучшение его потребительских свойств. При этом новые версии продукта должны поддерживать заявленные функциональности предыдущих версий.
Свойство интероперабельности информационных ресурсов является необходимой предпосылкой удовлетворения перечисленных выше требований.
Таким образом, основной принцип формирования открытых систем состоит в создании среды, включающей в себя программные и аппаратурные средства, службы связи, интерфейсы, форматы данных и протоколы. Такая среда в основе имеет развивающиеся доступные и общепризнанные стандарты и обеспечивает значительную степень взаимодействия (Inter-operability), переносимости (Portability) и масштабирования (Scalability) приложений и данных.
Благодаря этим свойствам минимизируются затраты на достижение преемственности и повторного использования накопленного программно-информационного задела при переходе на более совершенные компьютерные платформы, а также интеграция систем и ресурсов в распределенные системы. Экономическая рентабельность реализации на практике концепции открытых систем основывается на том, что переход к открытым технологиям создает наилучшие предпосылки для инвестиций в ИТ, так как благодаря свойствам открытости систем ИТ существенно повышается конечная эффективность их использования.
Принципы создания и использования открытых систем применяются в настоящее время при построении большинства классов систем:вычислительных, информационных, телекоммуникационных, систем управления в реальном масштабе времени, встроенных микропроцессорных систем. В условиях широкого использования интегрированных вычислительно-телекоммуникационных систем принципы открытости составляют основу технологии интеграции, В развитии и применении открытых систем заинтересованы все участники процесса информатизации: пользователи, проектировщики систем и системные интеграторы, производители технических и программных средств вычислительной техники и телекоммуникации. В частности, по встроенным микропроцессорным системам (МПС) в рамках программы ESPRITсуществует проект OMI (Open Microprocessor Initiative), направленный на создание коллективной пользовательской библиотеки МПС в соответствии с принципами открытых систем.
В условиях перехода к информационному обществу, когда государственное управление и большинство секторов экономики становятся активными потребителями информационных технологий, а сектор производителей средств и услуг информационных технологий непрерывно растет, проблема развития и применения открытых систем составляет для каждой страны национальную проблему. Так, администрация Клинтона еще в 1993 г. объявила о программе создания Национальной информационной инфраструктуры на принципах открытых систем (NationalInformation Infrastructure Initiative), вкладывала в эту программу большие деньги и содействовала инвестициям со стороны частного сектора. Совет Европы в 1994 г. в своих рекомендациях о путях перехода к информационному обществу (Bangemann Report) подчеркнул, что стандарты открытых систем должны играть важнейшую роль при создании информационной инфраструктуры общества. Ведется работа по созданию глобальной информационной инфраструктуры, также основанной на принципах открытых систем.
Таким образом, в условиях перехода к информационному обществу технология открытых систем становится основным направлением информационных технологий.
Похожая информация.