Стандарты открытых систем, регламентирующие структуру и интерфейсы программных средств

 

Рядом зарубежных организаций и промышленных фирм под руководством IEEEс 1990 года ведется активная разработка последовательных версий стандартов интерфейсов открытых систем POSIX(Portable operating system interfaces). Выполнена большая работа по пересмотру, расширению и реорганизации около двадцати базовых спецификаций POSIX 1990 - 1998 года IEEE 1003. Улучшена систематизация и структура стандартов, усовершенствовано удобство их применения пользователями. В результате подготовлен комплексный проект фундаментального международного стандарта из четырех крупных частей ISO 9945:1-4:2003(IEEE 1003.1 – 2003), объемом свыше трех тысяч страниц. Настоящий стандарт совместная разработка IEEE и The Open Group, он является одновременно стандартом IEEE, стандартом ISOи стандартом Open Group Technical.

Цель документа – стандартизация в программной инженерии обеспечения переносимости программ на уровне исходных текстов. В нем определены основные интерфейсы операционных систем и окружения, интерфейсы командного интерпретатора, а также программы общих утилит. Три отдельных крупных тома включают: базовые определения; системные интерфейсы; команды управления и сервисные программы (утилиты). Кроме того, имеется большой четвертый том общего обоснования выбранных решений системы POSIX. Важными свойствами разработанных программных интерфейсов являются целостность, модульность их построения и параметризуемость.

Стандарты открытых систем – POSIX регламентируют совокупность базовых, системных сервисов для обеспечения унифицированных интерфейсов прикладных программ, специфицированных для языка С, командного языка и совокупности служебных программ. Основная цельсделать программы переносимыми на уровне различных исходных языков. У каждого интерфейса программ существует вызывающая и вызываемая сторона, стандарты POSIX ориентированы преимущественно на формализацию вызывающей стороны. Мобильность приложений должна обеспечиваться благодаря применению большого числа стандартизированных системных интерфейсных сервисов и возможности динамического выяснения характеристик целевой платформы и подстройки под них интерфейсов приложений.

При формировании концепции стандартов POSIX былипоставлены следующие задачи:

- содействовать облегчению и автоматизации переноса кода готовых прикладных программ на иные платформы;

- способствовать определению и унификации интерфейсов программных компонентов заранее при проектировании программных средств, а не только в процессе их реализации;

- сохранять по возможности и учитывать все главные, созданные ранее, унаследованные и используемые программные средства и компоненты;

- определять необходимый минимум интерфейсов компонентов и комплексов программ, для ускорения создания и расширения программных продуктов, а также для анализа, одобрения и утверждения документов;

- развивать стандарты в направлении обеспечения коммуникационных сетей, распределенной обработки данных и защиты информации;

- рекомендовать ограничивать использование объектного кода для программ в простых системах.

Разработчики новых версий стандартов группы POSIX тщательно учитывали их предысторию и наличие множества унаследованных, созданных и развиваемых компонентов и комплексов программ, удовлетворяющих более ранним версиям этих стандартов. В процессе развития стандартов соблюдался принцип обратной совместимости – новые интерфейсы добавлялись так, чтобы они не конфликтовали со старыми. Однако полностью это не удалось реализовать, и некоторые интерфейсы в повторно применяемых программах необходимо корректировать при их использовании в новых программных средствах.

Цель данной версии стандарта состоит в том, чтобы минимизировать дополнительную работу для разработчиков прикладных программ. Тем не менее, поскольку каждая историческая реализация стандарта неизбежно подвергается изменению, пусть даже незначительному, прикладным программам также неизбежно предстоит изменяться, чтобы прийти в соответствие. Концептуально, этот стандарт описывает набор фундаментальных услуг, необходимых для эффективной разработки прикладных программ. Доступ к этим услугам обеспечивался определением интерфейса, с использованием языка программирования Cи, процессора командного языка, и стандартных сервисных программ (утилит), которые устанавливают стандартную семантику и синтаксис интерфейсов. Этот стандарт предназначен для всех, кто по роду своей деятельности связан с операционными системами, базирующимся на UNIX.

Цель состояла также в том, чтобы продвинуть мобильность прикладных программ по всей области применения операционной системы UNIX, развивая ясный, последовательный, и однозначный стандарт для спецификации интерфейса переносимой операционной системы, основанной на документации системы UNIX. Этот стандарт систематизирует все существующие типовые формулировки операционной системы UNIX. Стандарт был разработан для того, чтобы программа, написанная и транслированная для исполнения в одной конкретной версии ОС, могла быть также транслирована для другой версии ОС. Однако этот стандарт не гарантирует, что используемый код (объектный) даст соответствующий результат при другой ОС, нежели той, для которой программа была транслирована, даже при идентичном аппаратном обеспечении.

Разработчики данного стандарта стремились добиться возможности наиболее широкого применения данного стандарта ко всему диапазону уже существующих и потенциальных операционных систем. Однако существовало согласованное мнение по поводу того, какой набор функций, типов, определений (дефиниций) и концепций предназначен для формирования того интерфейса, который является общим для большинства исторически сложившихся типов реализации ПС. Предыдущие стандарты и их модификации выявили множество несогласованных областей, что в основном устранено в данном варианте. Пересмотренное издание стандарта стремится минимизировать количество изменений, касающихся реализаций, которые соответствуют более ранним версиям одобренных стандартов, необходимых для приведения их в соответствие с настоящим стандартом.

Новую версию международных стандартов POSIX составляют аннотированные ниже четыре части стандартов ISO 9945:1-4:2003 – ИТ. Интерфейсы переносимых операционных систем. Ч.1. Базовые определения. Ч.2. Системные интерфейсы. Ч.3. Команды управления и сервисные программы. Ч 4. Обоснование.

Стандарт ISO 9945-1:2003- содержит основные концептуальные определения и подробные пояснения методов реализации интерфейсов для обеспечения мобильности компонентов и комплексов программ, общее для всех томов оглавление стандарта, в том числе сервисные соглашения и определения заголовков языка Си. В большом разделе - концепция изложены: базовые директории; файловая иерархия; сетевое взаимодействие; измерение времени и синхронизация; процессы повторного использования компонентов; политика очередей и применение семафоров. Далее выделены разделы:

- описание синтаксиса и организации данных в файлах для системных интерфейсов и взаимодействия с терминалами;

- характеристики переносимых компонентов, язык кодирования, описание файлов;

- локальные переменные, определения и грамматика;

- описание переменных окружения, интернационализация переменных;

- контекстно-независимый синтаксис представления характеристик переменных компонентов, определения регулярных выражений, генерация требований, базис и грамматика выражений, продленные выражения;

- структура директорий, файлов и устройств, типы терминалов;

- базовые интерфейсы типов терминалов, параметры возможных устройств;

- конвенция и руководство по синтаксису аргументов утилит;

- содержание функций прототипов, описание символьных констант, макросы, препроцессоры, типы определений, форматы входов.

Стандарт ISO 9945-2:2003 - Системные интерфейсы – уточняет и детализирует: концепцию переносимости и принципы её обеспечения путем унификации интерфейсов прикладных программ с операционными системами, функции обслуживания, ориентированные на язык программирования Си, функциональные вопросы, в том числе мобильность, обработка ошибок, и устранение ошибок. Он содержит три крупных раздела:

- введение;

- содержание основной информации;

- системные интерфейсы.

Документ предназначен для разработчиков приложений, в которых необходимо обеспечить мобильность программ и данных, для разработчиков и пользователей операционных систем, а также для покупателей вычислительной техники и программных средств. Основная цель стандарта - унифицировать интерфейсы приложений и связи с окружением ядра операционной системы путем формализации описаний внутренних и внешних интерфейсов на базовом языке программирования Си. Концептуально представлено описание синтаксиса и семантики взаимосвязей, используемых при проектировании переносимых прикладных программ. Унификация ориентирована на версии UNIX, а также на другие операционные системы, совместимые по интерфейсам с версиями UNIX. Разработчики стандарта стремились предусмотреть все потенциально возможные фун-кции взаимодействия прикладных программ с ядром ОС на различных аппаратных платформах, в автономных, сетевых и распределенных информационных системах. Для этого представлено содержание 1123 интерфейсов, включающих: описание, типовую структуру, возможные ошибки, примеры и обоснование каждого.

Языково-ориентированные услуги и интерфейсы для языка Си в стандарте состоят из двух частей: ядра взаимодействующего с ядром операционной системы на языке Си и расширения для взаимодействия с прикладными программами, реализованными на различных языках. Первоначальная, жесткая ориентация стандартов POSIX на ОС UNIX в последующем изменилась и расширилась на любые операционные среды, обеспечивающие реализацию концепции открытых систем. Отмечается целесообразность применения для взаимодействия с внешней средой концепции и совокупности стандартов, являющихся развитием базовой эталонной модели взаимосвязи открытых систем (ВОС) - ISO 7498.

В третьей части стандарта ISO 9945-3:2003 – Основные команды управления и сервисные программы (Shell and utilities) – изложено конкретное представление команд операционной системы и утилит, обеспечивающих унифицированное взаимодействие с мобильными прикладными программами, определения для стандартного источника кодового уровня интерфейса командного интерпретатора ("shell") и стандартные утилиты для прикладных программ. Стандарт содержит четыре раздела:

- введение;

- описание языка управления;

- пакет обслуживания окружения;

- сервисные программы – утилиты.

Цель этой части стандарта конкретизировать интерфейсы прикладных программ на уровне команд, для интерпретатора командного языка, и полный набор сервисных программ – утилит. Он специфицирует интерфейсы операционных систем на уровне программных текстов и кодов. Стандартизированный командный язык Shell – средство для подготовки небольших мобильных процедур и их быстрой интерактивной отладки. В развитой среде, возможно объединять команды в цепочки с фильтрацией промежуточных результатов. Каждая утилита содержит: описание структуры; применение; операнды; входные файлы; окружение. Факультативные утилиты расширяют возможности для пользователей мобильных приложений по связи с внешним окружением. В терминах языка Си (стандарт ISO 9899:1990) описаны языково-независимые услуги интерфейсов для переносимых приложений и связи с внешним окружением при представлении интерфейсов приложений на различных языках высокого уровня. Команды и утилиты содержат конкретные механизмы на уровне операторов для выполнения операций: сравнения, вывода на печать и на экран файлов, редактирования файлов, вычисления выражений, сортировки данных, определения очередности исполнения сигналов и доступа к информации о среде. Можно выделить:

- утилиты среды взаимодействия программ;

- управляющие утилиты, поддерживающие мобильность программ и связь внешних пользователей с асинхронными терминалами;

- утилиты для взаимодействия комплексов программ;

- языково-независимые системные услуги для прикладных программ на нескольких языках программирования высокого уровня.

Четвертая часть стандарта ISO 9945-4:2003– Обоснование – содержит группу из пяти крупных приложений:

- обоснование базовых определений – приложение А;

- обоснование системных интерфейсов – приложение В;

- обоснование команд управления и сервисных программ-утилит – приложение С;

- рассмотрение переносимости – приложение D;

- рассмотрение субпрофилей – приложение Е.

В перечисленных приложениях подробно разъясняются базовые положения стандартов POSIX, обосновываются формализованные в них решения. Пространные пояснения, которые не слишком вписывались в остальные части документа, содержат исторические комментарии по тексту стандарта, разъяснения причин, по которым те или иные свойства, признаки и компоненты были включены в стандарт или были отвергнуты разработчиками.

Параллельно с подготовкой и внедрением новых четырех стандартов группы POSIX, действуют и применяются, представленные ниже, утвержденные базовые международные стандарты, углубляющие некоторые возможности и облегчающие создание мобильных приложений.

В стандарте ISO 14252:1996 - Руководство по POSIX окружению открытых систем (OSE) – изложена идеология и модель создания мобильных программных средств, которое детализирует для пользователей модель комплекса стандартов POSIX, а также взаимодействующих с ними стандартов де-юре, де-факто и спецификаций, необходимых для создания переносимых приложений. Модель отражает принципы построения интерфейсов прикладных программ с платформой - операционной системой, через которую осуществляется взаимодействие с компонентами внешнего окружения. Считается, что прикладные программы непосредственно не взаимодействуют с внешним окружением, а связаны с ним только через операционную систему. Разработка приложений предполагается в кросс-режиме, то есть платформа разработки – инструментальная может не совпадать с платформой исполнения (применения) программ (объектной – целевой). Результат компиляции программы на инструментальной платформе может быть перенесен для исполнения на целевую платформу.

Определяющими являются два интерфейса между тремя базовыми компонентами: между прикладными программами и платформой - операционной системой (API) и между платформой и внешним окружением (EEI). Определены общие функции - услуги платформы для этих взаимодействий. Внешнее окружение включает компоненты человеко-машинного взаимодействия с пользователями, компоненты информационного взаимодействия с внешними устройствами ЭВМ и с компонентами, обеспечивающими коммуникацию с внешней средой. Эти интерфейсы и услуги более детально формализованы соответствующими стандартами POSIX.

Стандарт включает также общие принципы и руководство по формированию и описанию сложных согласованных профилей и по обеспечению непротиворечивости их интерфейсов с внешним окружением.

- поддерживающие непосредственное взаимодействие прикладных программ с пользователями, регламентирующие интерфейсы с виртуальными терминалами и графические системы;

- обеспечивающие административное управление файловыми системами и различными, в том числе, распределенными базами данных;

- регламентирующие телекоммуникацию и обмен данными на верхних уровнях эталонной модели ВОС;

- обеспечивающие аттестацию и безопасность применения информационных технологий, программ и данных в соответствии со стандартами ВОС и криптографии.

Стандарт ISO 13210:1998 - Методы тестирования для оценки соответствия стандартам POSIX - содержит общую методологию тестирования для проверки соответствия интерфейсов прикладных программ стандартам POSIX. Представлены принципы формирования наборов тестов и предлагается методика развития системы тестов для контроля создаваемых приложений на соответствие ISO 9945. В методе тестирования выделены: подготовка тестов; процедуры тестирования; оформление документов, удостоверяющих соответствие стандартам. Определены и кратко представлены три основных уровня сложности тестирования: исчерпывающий; достаточно полный; оценочный – для установления общих характеристик качества. Подчеркивается, что предлагаемые методы не гарантируют абсолютное соответствие стандартам, так как исчерпывающее тестирование невозможно по техническим и экономическим причинам. Приводятся рекомендации по:

- классификации тестовых сценариев и утверждений;

- подготовке описаний детерминированных тестов и тестов для проверки структурных конструкций;

- кодированию и представлению результатов тестирования во взаимосвязи с исходными тестами;

- формированию удостоверения о соответствии интерфейсов прикладных программ стандартам POSIX.

В стандартах POSIX даются ссылки на многие стандарты ISO, ANSI и де-факто. В результате полная совокупность стандартов, поддерживающих проектирование мобильных программ в разных классах открытых систем, возрастает. В конкретных прикладных разработках каждый раз необходима только некоторая, относительно небольшая часть из них, которую целесообразно выделять в соответствующий проблемно-ориентированный профиль.