Неправильный перевод информации как причина ошибок в программных средствах

Автор работы: Пользователь скрыл имя, 07 Января 2011 в 16:56, реферат

Описание работы

При разработке и использовании ПС мы многократно имеем дело [35, с. 22-28] с преобразованием (переводом) информации из одной формы в другую (см. рис. 2.1). Заказчик формулирует свои потребности в ПС в виде некоторых требований. Исходя из этих требований, разработчик создает внешнее описание ПС, используя при этом спецификацию (описание) заданной аппаратуры и, возможно, спецификацию базового программного обеспечения. На основании внешнего описания и спецификации языка программирования создаются тексты программ ПС на этом языке. По внешнему описанию ПС разрабатывается также и пользовательская документация. Текст каждой программы является исходной информацией при любом ее преобразовании, в частности, при исправлении в ней ошибки.

Файлы: 1 файл

жоголев 1.doc

— 176.00 Кб (Скачать файл)

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

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

    В качестве примера рассмотрим использование  такой архитектуры для построения операционной системы. Такую архитектуру применил Дейкстра при построении операционной системы THE [60]. Эта операционная система состоит из четырёх слоев (см. рис. 6.1). На нулевом слое производится обработка всех прерываний и выделение централь-

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

    Прикладные  программы

    3:   Управление входными и выходными  потоками данных

    2:             Обеспечение связи с консолью  оператора

    1:                             Управление памятью

    0:        Диспетчеризация и синхронизация  процессов

    Компьютер

    Рис. 6.1. Архитектура операционной системы  THE

    Коллектив параллельно действующих  программ представляет собой набор программ, способных взаимодействовать между собой, находясь одновременно в стадии выполнения. Это означает, что такие программы, во-первых, вызваны в оперативную память, активизированы и могут попеременно разделять по времени один или несколько центральных процессоров, а во-вторых, осуществлять между собой динамические (в процессе выполнения) взаимодействия, на базе которых производится их синхронизация. Обычно взаимодействие между такими процессами производится путём передачи друг другу некоторых сообщений.

    Простейшей  разновидностью такой архитектуры  является конвейер. Возможности для организации конвейера имеются, например, в операционной системе UNIX [28]. Конвейер представляет собой последова-

    тельность программ, в которой стандартный  вывод каждой программы, кроме самой  последней, связан со стандартным вводом следующей программы этой последовательности (см. рис. 6.2). Конвейер обрабатывает некоторый поток сообщений. Каждое сообщение этого потока поступает на ввод первой программе, которая переработанное сообщение передаёт следующей программе, а сама начинает обработку очередного сообщения потока. Таким же образом действует каждая программа конвейера: получив сообщение от предшествующей программы и, обработав его, она передаёт переработанное сообщение следующей программе и приступает к обработке следующего сообщения. Последняя программа конвейера выводит результат работы всего конвейера (результирующее сообщение). Таким образом, в конвейере, состоящим из п программ, может одновременно находиться в обработке до п сообщений. Конечно, в силу того, что разные программы конвейера могут затратить на обработку очередных сообщений разные отрезки времени, необходимо обеспечить каким-либо образом синхронизацию этих процессов (некоторые процессы могут находиться в стадии ожидания либо возможности передать переработанное сообщение, либо возможности получить очередное сообщение).

    

    Рис. 6.2. Конвейер параллельно действующих  программ

    В общем  случае коллектив параллельно действующих  программ может быть организован  в систему с портами сообщений. Порт сообщений представляет собой программную подсистему, обслуживающую некоторую очередь сообщений: она может принимать на хранение от программы какое-либо сообщение, ставя его в очередь, и может выдавать очередное сообщение другой программе по ее требованию. Сообщение, переданное какой-либо программой некоторому порту, уже не будет принадлежать этой программе (и использовать ее ресурсы), но оно не будет принадлежать и никакой другой программе, пока в порядке очереди не будет передано какой-либо программе по ее запросу. Таким образом, программа, передающая сообщение, не будет находиться в стадии ожидания, пока программа, принимающая это сообщение, не будет готова его обрабатывать (если только не будет переполнен принимающий порт).

    Пример  программной системы с портами  сообщений приведен на рис. 6.3. Порт U может рассматриваться как порт вводных сообщений для представленного на этом рисунке коллектива параллельно действующих программ, а порт W - как порт выводных сообщений для этого коллектива программ.

    

    Рис. 6.3. Пример программной системы с  портами сообщений

    Программные системы с портами сообщений могут быть как жёсткой конфигурации, так и гибкой конфигурации. В системах с портами жёсткой конфигурации каждая программа жёстко связывается с одним или с несколькими входными портами. Для передачи сообщения такая программа должна явно указать адрес передачи: имя программы и имя её входного порта. В этом случае при изменении конфигурации системы придётся корректировать используемые программы: изменять адреса передач сообщений. В системах с портами гибкой конфигурации с каждой программой связаны как входные, так и выходные виртуальные порты. Перед запуском такой системы должна производиться предварительная настройка программ по информации, задаваемой пользователем. Эта настройка производится с помощью специальной программной

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

    6.3. Архитектурные функции

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

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

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

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

    Для контроля архитектуры ПС используется смежный  контроль и ручная имитация.

    Смежный контроль архитектуры ПС сверху - это её контроль разработчиками внешнего описания: разработчиками спецификации качества и разработчиками функциональной спецификации. Смежный контроль архитектуры ПС снизу - это ее контроль потенциальными разработчиками программных подсистем, входящих в состав ПС в соответствии с разработанной архитектурой.

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

    Вопросы к главе 6

    6.1. Что  такое архитектура ПС!

    6.2. Какие  классы архитектур Вы знаете?

    6.3. Что  такое архитектурная функция!

Информация о работе Неправильный перевод информации как причина ошибок в программных средствах