
Структурное проектирование программных средств на основе концепции и стандартов открытых систем.
В последнее время структурное проектирование сложных комплексов программ на базе готовых программных и информационных компонент качественно изменяется и активно развивается на основе концепции и стандартов открытых систем. Открытая система - это система, реализующая открытые спецификации на интерфейсы, процессы и форматы данных, достаточные для того, чтобы обеспечить:
- возможность переноса (мобильность) прикладных систем, разработанных должным образом, с минимальными изменениями на широкий диапазон аппаратных и операционных платформ;
- совместную работу (интероперабельность) с другими прикладными системами на локальных и удаленных платформах;
- взаимодействие с пользователями в стиле, облегчающем последним переход от системы к системе (мобильность пользователей).
Основными целями создания и применения концепции, методов и стандартов открытых систем является повышение общей экономической эффективности разработки и функционирования информационных систем, а также логической и технической совместимости их компонент, обеспечение мобильности и применения готовых программ и данных. Для достижения этих целей развиваются и применяются различные проблемно - ориентированные технологии и комплексы средств автоматизации ЖЦ мобильных программ и баз данных, основанные на повторном использовании готовых апробированных программных компонент и данных, их эффективном переносе на различные аппаратные и операционные платформы и согласованном взаимодействии в распределенных информационных системах.
Цели и методы организации функционирования открытых информационных систем поддерживаются и конкретизируются совокупностями стандартов для каждой из выделенных групп методов. Они обобщили современные методы и реальный опыт решения соответствующих задач. Однако процессы обобщения, разработки и оформления стандартов требуют значительного времени, исчисляемого годами (3-5 лет на стандарт), в течение которого методы совершенствуются и развиваются. Это приводит к необходимости издания дополнений к стандартам или их обновленных редакций и к ограничению сроков действий стандартов. Ряд обобщений методов создания информационных систем формализуется стандартами де-факто, которым целесообразно следовать для обеспечения достаточного качества и конкурентоспособности ИС. Некоторые из этих стандартов со временем проходят процедуры корректировки и редактирования в подкомитетах ISO и получают статус международных стандартов.
Открытые системы делают доступным пользователям широкий круг прикладных ПС и БД, позволяют фирмам сэкономить средства на документации и переподготовке персонала, а кроме того делают их независимыми от конкретных поставщиков программного и аппаратного продукта. Профессионалы в области открытых систем акцентируют усилия на поиске и создании гибкой, способной к наращиванию среды, что базируется на трех направлениях стандартизации в области информационных систем:
- стандартизация аппаратных и операционных платформ;
- стандартизация методов и технологии обеспечения жизненного цикла прикладных программных средств и баз данных;
- стандартизация интерфейсов приложений между собой, с операционной и внешней средой.
Для реализации перечисленных выше целей с начала 80-х годов за рубежом активно развиваются два направления идеологии, концепции и системы стандартов открытых систем (рис. З):
- открытых вычислительных систем (open computing systems -OCS), обеспечивающее возможность относительно простого и эффективного по трудоемкости переноса апробированных программных средств и информации баз данных на различные типы аппаратных платформ за счет стандартизации процессов и интерфейсов взаимодействия прикладных программ между собой и с операционными системами ЭВМ;
- взаимосвязи открытых систем (open systems interconnection -OSI), унифицирующее структуру, процессы и интерфейсы для обеспечения совместимости методов и средств обмена данными между разнотипными удаленными ЭВМ, а также поддерживающее возможность предварительного выбора типов и ресурсов ЭВМ в соответствии с потребностями ИС для решения конкретных прикладных задач.
В первом направлении основной задачей является транспортировка и перенос функций и процедур обработки информации, а также содержания баз данных между различными платформами, осуществляющими ее обработку. Подобные обмены функциями, процедурами и данными имеют неоперативный характер и могут осуществляться вне реального масштаба времени. Проблемы состоят преимущественно в обеспечении сохранности апробированного функционального ядра текстов программ и информации баз данных при их переносе на иные аппаратные и операционные платформы для снижения трудоемкости создания подобных информационных систем. Ниже основное внимание уделено этому направлению.
Во втором направлении основную роль играет оперативная транспортировка данных между компонентами распределенных информационных систем в реальном масштабе времени. Проблема заключается в обеспечении совместимости различных систем передачи данных и в эффективном использовании распределенных вычислительных ресурсов для обработки информации.
Открытые вычислительные системы (OCS) Открытые системы коммуникации (OSI)
(первое направление) (второе направление)
Концепция и методы обеспечения Концепция и методы обеспечения
переносимости программных средств совместимости обмена данными
и баз данных в информационных системах
Методы обеспечения совместимости переносимых
программных средств и баз данных с операционной
и внешней средой
Методы создания Методы обеспечения непосредственной
Переносимых программных совместимости обмена данными между
Средств и баз данных компонентами информационных систем
Рис 3.
Основной экономический эффект в этом случае достигается за счет сокращения дополнительных преобразований данных на стыках коммуникационных средств и повышения тем самым степени полезного использования вычислительных и коммуникационных ресурсов.
Важнейшими, объединяющими целями развития обоих направлений открытых систем являются снижение трудоемкости и длительности создания, а также повышение качества и функциональных возможностей современных информационных систем. В этих двух направлениях развиваются соответствующие концепции и методы, которые формализуются и детализируются комплексами стандартов. Для каждого направление характерно развитие методов и стандартов, ориентированных преимущественно на его поддержку и реализацию, а также некоторой общей части для обоих направлений. Таким образом выявились достаточно автономные части каждого направления и объединяющая их часть методов и стандартов открытых систем (см. рис.3).
Основная цель концепции открытых вычислительных систем -создание методов, обеспечивающих эффективный по трудоемкости и качеству перенос готовых прикладных программных средств обработки информации и баз данных на различные аппаратные и операционные платформы. Эти методы можно разделить на три части:
- общая концепция и методы непосредственного обеспечения мобильности прикладных программных средств и баз данных в процессе разработки информационных систем за счет унификации интерфейсов с операционной системой;
- методы, поддерживающие мобильность прикладных программ и данных в распределенных информационных системах и совместимость их взаимодействия с внешней средой;
- методы создания программных средств, баз данных и их компонент на стандартизированных языках программирования высокого уровня, обеспечивающие потенциальную возможность их переноса на различные аппаратные платформы.
Первая группа методов создавалась с ограниченной и определенной целью локализовать и унифицировать интерфейсы прикладных программ между собой, с заранее выделенными операционными системами и с внешней средой. Интерфейсные стандарты являются базой для обеспечения свободного перемещения приложений в различные по архитектуре и функциям операционные окружения и аппаратные платформы. Эти методы позволяют разделить функциональную часть приложений и их связи с организационным окружением, обеспечивая технологическую, архитектурную и языковую независимость функциональной части программ и данных. Тем самым они являются базой для реализации концепции открытости в информационных системах и обеспечивают свободу разработчикам при выборе методов проектирования и языков программирования для создания прикладных программ и описаний данных. Стандарты этой группы включают головную группу стандартов POSIX, в которой определены концепция и функции интерфейсов переносимых операционных систем, команды управления и сервисные программы, а также расширение для переносимых операционных систем реального времени.
Вторая группа методов имеет целью поддержать мобильность приложений в открытых информационных системах путем унификации их интерфейсов с внешней средой. Они обеспечивают и совместимость обмена данными в различных файловых системах и базах данных, унификацию административного управления и взаимодействия с пользователями функциональных приложений, а также методов защиты информации. Таким образом, создается стандартизированная по интерфейсам внешняя среда на различных гетерогенных аппаратных платформах, в которую могут эффективно погружаться различные приложения, согласованные по интерфейсам с этими стандартами. Стандарты этой группы регламентируют функции и процессы, поддерживающие взаимодействие с внешней средой:
- концепции и архитектуру визуализации информации для взаимодействия с пользователями и ее представления в базовых системах графического отображения;
- архитектуру, интерфейсы, базовые процессы и языки управления файловых систем и баз данных, обеспечивающих их совместимость и унификацию в сложных информационных системах;
- административное управление локальными и распределенными компонентами информационных систем в процессе решения функциональных задач обработки информации.
Третья группа методов создавалась в значительной степени независимо от первой и второй и на много раньше. Методы преследуют цель унифицировать тексты программ и описания данных, создаваемых для различных аппаратных платформ при любой их архитектуре, независимо от операционной и внешней среды. Первоначальное огромное число языков программирования третьего поколения (3GL) (свыше 200), каждый из которых имел несколько диалектов, в результате сократилось до 6-10 языков, ограниченных стандартами, не допускающих диалектов. Создание современных ПС и БД поддерживается методами и средствами CASE-технологий, языками проектирования четвертого поколения (4GL), методами тестирования и аттестации программ и их интерфейсов, а также стандартизированным составом и содержанием документации на прикладные программы и базы данных. Эти методы и средства обеспечивают необходимое качество сложных ПС и БД и его сохранение при их переносе. В результате обеспечена мобильность функциональной части программ, однако они могут требовать доработок для сопряжения с новой средой аппаратного и операционного окружения информационных систем.
Стандарты этой группы поддерживают современный технологический процесс разработки и сопровождения сложных программных средств. Этот процесс позволяет создавать прикладные программы и базы данных высокого качества, подготовленные к переносу на иные платформы, и осуществлять перенос. Поэтому его представление совместно с методами и стандартами открытых систем является необходимым расширением для более полного отражения проблем и методов переноса программ и данных. Процесс поддерживается широким набором стандартов, основная часть которых создавалась независимо от концепции открытых систем. Основные стандарты регламентируют:
- жизненный цикл, разработку и сопровождение современных ПС и БД;
- наиболее популярные языки программирования Си, Ада, Фортран, Паскаль, Кобол и их унифицированные интерфейсы с операционной системой, обеспечивающие переносимость приложений, которые можно рассматривать как расширение языков;
- разработку компонент на языках программирования 3GL;
- тестирование компонент и программных средств в целом;
- обеспечение сопровождения и управление конфигурацией программных средств;
- документирование программных средств и баз данных. Следует подчеркнуть, что применение стандартов открытых систем должно начинаться при создании архитектуры исходных мобильных ПС и БД, а далее неукоснительно использоваться при всех процессах переноса на различные платформы. При переносе унаследованных ПС и БД, созданных вне концепции открытых систем, может оказаться рентабельным одновременно с переходом на новую технологию ввести применение стандартов открытых систем, что обеспечит возможность удобного, последующего функционального расширения перенесенной системы. Во всех случаях созданиеархитектуры современных сложных ИС целесообразно вести с использованием совокупности международных стандартов, значительная часть которых обеспечивает мобильность и возможность использования готовых программных средств и баз данных.
Таким образом, для обеспечения эффективного управления разработкой программ необходимо при системном проектировании стандартизировать и соблюдать ряд принципов и правил архитектурного построения ПС. Эти принципы и правила могут иметь особенности для ПС в различных проблемно - ориентированных областях. Однако их стандартизация обеспечивает значительный эффект в снижении трудоемкости и длительности разработки ПС и их версий. Потеря гибкости архитектуры ПС, некоторое возрастание ресурсов, необходимых для их реализации, обычно полностью компенсируются повышением управляемости и технико-экономических показателей процесса разработки, а также качества ПС.
История создания и текущий статус стандарта posix
Обеспечение мобильности (переносимости, портабельности) программного обеспечения (ПО) - задача исключительной важности и сложности; в наше время это обстоятельство едва ли нуждается в пространных обоснованиях. Один из общепринятых способов повышения мобильности ПО - стандартизация окружения приложений: предоставляемых программных интерфейсов, утилит и т.п. На уровне системных сервисов подобное окружение описывает стандарт POSIX (Portable Operating System Interface - мобильный интерфейс операционной системы); название предложено известным специалистом, основателем Фонда свободного программного обеспечения Ричардом Столмэном.
Мы будем рассматривать наиболее современную из доступных версий стандарта POSIX, в редакции 2003 г., которую можно назвать "стандартом втройне", а именно: стандартом IEEE Std 1003.1, Техническим стандартом Open Group и, что для нас важнее всего, международным стандартом ISO/IEC 9945.
История создания этой версии такова. В начале 1998 г. представители трех организаций - Комитета по стандартам мобильных приложений Института инженеров по электротехнике и электронике, Open Group и рабочей группы 15 подкомитета 22 совместного технического комитета 1 (JTC1/SC22/WG15) Международной организации по стандартизации - начали консультации по вопросу слияния и развития курируемых ими стандартов интерфейсов к системным сервисам: IEEE Std 1003.1, IEEE Std 1003.2, Базовых спецификаций от Open Group, ISO/IEC 9945-1, ISO/IEC 9945-2. В сентябре того же года в городе Остин, штат Техас, в офисе корпорации IBM состоялось организационное заседание группы, сформированной для достижения поставленной цели (см. http://www.opengroup.org/austin).
Основополагающим документом для пересмотренного стандарта, первый проект которого был представлен в июле 1999 года, стали Базовые спецификации от Open Group, поскольку они включали положения стандартов IEEE и ISO/IEC. В 2001 году, по завершении подготовительной работы, стандарт содержал следующие четыре части:
основные определения (термины, концепции и интерфейсы, общие для всех частей);
описание прикладного программного C-интерфейса к системным сервисам;
описание интерфейса к системным сервисам на уровне командного языка и служебных программ;
детальное разъяснение положений стандарта, обоснование принятых решений.
Далее в ISO, IEEE и Open Group с большей или меньшей скоростью (в 2001-2002 гг.) прошло формальное утверждение нового стандарта POSIX. Тем временем накапливались относительно мелкие исправления, учтенные в редакции 2003-го года.
С развитием стандарта расширялась и трактовка термина "POSIX". Первоначально он относился к документу IEEE Std 1003.1-1988, описывавшему прикладной программный интерфейс ОС класса Unix. После стандартизации интерфейса на уровне командного языка и служебных программ более правильно понимать под словом "POSIX" стандарт в целом, обозначая перечисленные выше части 2 и 3 через POSIX.1 и POSIX.2 в соответствии с нумерацией документов IEEE и ISO/IEC.
Основные идеи стандарта posix
Стандарт POSIX описывает множество базовых, системных сервисов, необходимых для функционирования прикладных программ. Доступ к ним предоставляется посредством интерфейса, специфицированного для языка C, командного языка и общеупотребительных служебных программ.
У каждого интерфейса есть две стороны: вызывающая и вызываемая. Стандарт POSIX ориентирован в первую очередь на вызывающую. Его цель - сделать приложения мобильными на уровне исходного языка. Это значит, в частности, что при переносе C-программ на другую операционную платформу потребуется перекомпиляция. О мобильности выполнимых программ и/или объектных файлов речь не идет.
Стандарт POSIX отнюдь не ограничен рамками Unix-среды. Существуют операционные системы (ОС) "независимого происхождения" (например, системы реального времени), предоставляющие необходимые сервисы и тем самым поддерживающие выполнение POSIX-совместимых приложений. Можно утверждать, что следование стандарту POSIX облегчает перенос приложений практически на любую сколько-нибудь распространенную операционную платформу. Дополнительные усилия по повышению мобильности, прилагаемые на этапе разработки, безусловно, окупятся.
Определяя интерфейс к системным сервисам, POSIX оставляет за рамками рассмотрения их реализацию. В частности, не различаются системные вызовы и библиотечные функции. Не являются объектом стандартизации средства администрирования, аппаратные ограничения и функции, необходимые только суперпользователю, что еще раз подчеркивает направленность стандарта POSIX на приложения, а не на операционные системы.
POSIX нейтрален по отношению к системной архитектуре и разрядности процессора. Это очень важный аспект мобильности приложений.
Ориентация на международный стандарт языка C определила не только стиль описания функций, но и, до некоторой степени, направление развития спецификаций POSIX в плане синхронизации обоих стандартов. Как известно в утвержденной в 1999 г. редакции спецификаций языка C узаконен комплексный тип данных, что вызвало соответствующее пополнение POSIX-функций.
В стандарте POSIX проведено разделение на обязательные и дополнительные функции, причем обязательное ядро сделано по возможности компактным. Разумеется, особое внимание уделяется способам реализации стандартизуемых функций как в "классической" Unix-среде, так и на других операционных платформах, в сетевых и распределенных конфигурациях.
Разработчики новой версии стандарта POSIX очень бережно отнеслись и к его предыстории, и к предыстории Unix-систем, и, главное, к приложениям, удовлетворявшим более ранним версиям стандарта. Существующие интерфейсы старались сохранять; в процессе развития соблюдался принцип обратной совместимости; новые интерфейсы добавлялись так, чтобы они не конфликтовали со старыми. Полностью избежать внесения изменений в приложения не удалось по вполне понятным причинам: потребовалось устранить противоречия между разными исходными спецификациями, а также отказаться от поддержки "традиционного" варианта языка C и перейти на его международный стандарт.