Методы повышения надежности программного обеспечения

Большая трудоемкость и стоимость создания ПО систем управления заставляет уделять особое внимание обеспечению его надежной работы. Высокая стоимость ПО во многом обусловлена его низкой надежностью. Следует иметь в виду, что в настоящее время не разработаны методы проектирования программ с гарантированным отсутствием ошибок. Это объясняется рядом причин, и в том числе тем, что программное обеспечение значительно сложнее аппаратуры; характеризуется большей, чем аппаратура, зависимостью от применения; состоит из примитивных составляющих - машинных кодов, из которых синтезируются огромные программные структуры.

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

По образному выражению Ф.П. Брукса «программа - это сообщение, передаваемое человеком машине». Чтобы сделать это сообщение «понятным бессловесной машине», требуется предельная формализация как описания алгоритмов, так и программ.

1. Формализация позволяет в существенной степени исключить, а при наличии ошибок - облегчить их выявление и локализацию.

2. Мощным средством повышения надежности у ПО САПР является автоматизация программирования, заключающаяся в использовании ЭВМ для составления машинных программ, т. е. программ, выполненных на языке ЭВМ по исходной программе, составленной на языке высокого уровня.

Системы автоматизированного программирования обеспечивают по­вышение производительности и облегчение труда программистов. Эти системы применяют для программирования языки высокого уровня, более близкие к естественному языку специалистов, и тем самым освобождают программиста от необходимости составлять программу на языке машинных команд. У нас в стране создан ряд систем автоматизированного программирования для ЭВМ. Эти системы обеспечивают автоматизацию создания программ и документов с минимальным расходом ручного труда как при основных, так и при вспомогательных работах, в том числе: .трансляцию текстов программ в машинные коды с семантическим и синтаксическим контролем, автономную отладку программ, диалоговое общение программистов со средствами автоматизации, выпуск эксплуатационных и технологических документов, а также их корректировку.

Методы повышения надежности программного обеспечения - №1 - открытая онлайн библиотека

Рис. 5. 4. 1. Классификация методов обеспечения надежной работы про­граммного обеспечения

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

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

3. 1. Временная избыточность использует часть производительности
ЭВМ для контроля исполнения программ и восстановления вычислительного
процесса. Как следствие при проектировании ПО необходимо предусматривать
резерв производительности ЭВМ, обычно резерв составляет 5-10%.

3. 2. Информационная избыточность заключается в резервировании
(дублировании) исходных и промежуточных данных, что обеспечивает как
обнаружение искажения данных, так и устранение ошибок.

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

5. Структурирование данных позволяет уменьшить сложность комплекса программ и снизить вероятность появления ошибок из-за их не­правильного использования. Совокупность данных можно разделить на два иерархических уровня: простые переменные и массивы. Простые переменные представляют собой минимальный компонент данных, имеющий имя и описание. Массивы образуются из нескольких простых переменных по определенным правилам объединения и имеют собственное имя, описание и структуру.

С целью упорядочения создан ряд типовых структур данных, при­менение которых зависит от назначения и метода использования переменных. Структура массивов определяется на основе компромисса между объемом памяти для хранения массива и затратами производительности ЭВМ, необходимыми для выборочного поиска и обращения к данным в массиве. Так, простые структуры массивов экономны по затратам производительности ЭВМ для взаимодействия с данными, но требуют большого объема памяти. Для повышения надежности ПО целесообразно использовать простейшие структуры массивов данных,

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

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

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

6. Типовые математические схемы моделирования

6.1. Непрерывно-детерминированные модели (D-схемы)

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

Основные соотношения. Обычно в таких математических моделях в качестве независимой переменной, от которой зависят неизвестные искомые

функции, служит время /. Тогда математическое соотношение для

- детерминированных систем (2.6) в общем виде будет

Методы повышения надежности программного обеспечения - №2 - открытая онлайн библиотека (1.7)

где Методы повышения надежности программного обеспечения - №3 - открытая онлайн библиотека , Методы повышения надежности программного обеспечения - №4 - открытая онлайн библиотека и Методы повышения надежности программного обеспечения - №5 - открытая онлайн библиотека - n-мерные векторы; Методы повышения надежности программного обеспечения - №6 - открытая онлайн библиотека - вектор-функция, которая определена на некотором (n+1)-мерном Методы повышения надежности программного обеспечения - №7 - открытая онлайн библиотека множестве и является непрерывной.

Так как математические схемы такого вида отражают динамику изучаемой системы, т.е. ее поведение во времени, то они называются D-схемами (англ. dynamic).

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

Методы повышения надежности программного обеспечения - №8 - открытая онлайн библиотека (1.8)

Наиболее важно для системотехники приложение D-схем в качестве математического аппарата в теории автоматического управления. Для иллюстрации особенностей построения и применения D-схем рассмотрим простейший пример формализации процесса функционирования двух элементарных систем различной физической природы: механической SM (колебания маятника, рис. 2.1, а) и электрической SK (колебательный контур, рис. 2.1, б).

Методы повышения надежности программного обеспечения - №9 - открытая онлайн библиотека

Рис. 2.1. Элементарные системы

Процесс малых колебаний маятника описывается обыкновенным дифференциальным уравнением

Методы повышения надежности программного обеспечения - №10 - открытая онлайн библиотека

где Методы повышения надежности программного обеспечения - №11 - открытая онлайн библиотека - масса и длина подвеса маятника; g - ускорение свободного падения; Методы повышения надежности программного обеспечения - №12 - открытая онлайн библиотека - угол отклонения маятника в момент времени t.

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

Методы повышения надежности программного обеспечения - №13 - открытая онлайн библиотека

Аналогично, процессы в электрическом колебательном контуре описываются обыкновенным дифференциальным уравнением

Методы повышения надежности программного обеспечения - №14 - открытая онлайн библиотека

где Методы повышения надежности программного обеспечения - №15 - открытая онлайн библиотека - индуктивность и емкость конденсатора; q(t) - заряд конденсатора в момент времени t.

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

Методы повышения надежности программного обеспечения - №16 - открытая онлайн библиотека

Очевидно, что, введя обозначения Методы повышения надежности программного обеспечения - №17 - открытая онлайн библиотека , Методы повышения надежности программного обеспечения - №18 - открытая онлайн библиотека , Методы повышения надежности программного обеспечения - №19 - открытая онлайн библиотека , Методы повышения надежности программного обеспечения - №20 - открытая онлайн библиотека , получим обыкновенное дифференциальное уравнение второго порядка, описывающее поведение этой замкнутой системы:

Методы повышения надежности программного обеспечения - №21 - открытая онлайн библиотека (1.9)

где h0, hl, h2 - параметры системы; z(t) - состояние системы в момент времени t.

Таким образом, поведение этих двух объектов может быть исследовано на основе общей математической модели (1.9). Кроме того, необходимо отметить, что поведение одной из систем может быть проанализировано с помощью другой. Например, поведение маятника (системы Sm) может быть изучено с помощью электрического колебательного контура (системы SK).

Если изучаемая система S, т. е. маятник или контур, взаимодействует с внешней средой Е, то появляется входное воздействие x(t) (внешняя сила для маятника и источник энергии для контура) и непрерывно-детерминированная модель такой системы будет иметь вид

Методы повышения надежности программного обеспечения - №22 - открытая онлайн библиотека .

С точки зрения общей схемы математической модели x(t) является входным (управляющим) воздействием, а состояние системы S в данном случае можно рассматривать как выходную характеристику, т. е. полагать, что выходная переменная совпадает с состоянием системы в данный момент времени у = z.

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

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

Методы повышения надежности программного обеспечения - №23 - открытая онлайн библиотека - вектор входных (задающих) воздействий; Методы повышения надежности программного обеспечения - №24 - открытая онлайн библиотека - вектор возмущающих воздействий; Методы повышения надежности программного обеспечения - №25 - открытая онлайн библиотека - вектор сигналов ошибки; Методы повышения надежности программного обеспечения - №26 - открытая онлайн библиотека - вектор управляющих воздействий; экзогенные переменные: Методы повышения надежности программного обеспечения - №27 - открытая онлайн библиотека - вектор состояний системы S; Методы повышения надежности программного обеспечения - №28 - открытая онлайн библиотека - вектор выходных переменных, обычно

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

Разность между заданным узад(t) и действительным у(t) законами изменения управляемой величины есть ошибка управления Методы повышения надежности программного обеспечения - №29 - открытая онлайн библиотека . Если предписанный закон изменения управляемой величины соответствует закону изменения входного (задающего) воздейст­вия, т.е. Методы повышения надежности программного обеспечения - №30 - открытая онлайн библиотека , Методы повышения надежности программного обеспечения - №31 - открытая онлайн библиотека .

Методы повышения надежности программного обеспечения - №32 - открытая онлайн библиотека

Рис. 2.2. Структура системы автоматического управления

Системы, для которых ошибки управления h’(r) = 0 во все моменты времени, называются идеальными. На практике реализация идеальных систем невозможна. Таким образом, ошибка h'(t) - необходимый субстрат автоматического управления, основанного на принципе отрицательной обратной связи, так как для приведения в соответствие выходной переменной y(t) ее заданному значению используется информация об отклонении между ними. Задачей системы автоматического управления является изменение переменной y(t) согласно заданному закону с определенной точностью (с допустимой ошибкой). При проектировании и эксплуатации систем автоматического управления необходимо выбрать такие параметры системы S, которые обеспечили бы требуемую точность управления, а также устой­чивость системы в переходном процессе.

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

Пример 2.1. Рассмотрим одноканальную систему автоматического управления Методы повышения надежности программного обеспечения - №33 - открытая онлайн библиотека , которая описывается D-схемой общего вида

Методы повышения надежности программного обеспечения - №34 - открытая онлайн библиотека (1.10)

где Методы повышения надежности программного обеспечения - №35 - открытая онлайн библиотека и Методы повышения надежности программного обеспечения - №36 - открытая онлайн библиотека - производные по времени m-го и n-го порядков от функций х и у соответственно. Пусть система Методы повышения надежности программного обеспечения - №33 - открытая онлайн библиотека , описываемая уравнением (1.10), работает в некотором режиме, характеризуемом функциями x0(t) и у0(t). Обозначим малые отклонения x(t) от x0(t) через Методы повышения надежности программного обеспечения - №38 - открытая онлайн библиотека , a у(t)от у0(t) через Методы повышения надежности программного обеспечения - №39 - открытая онлайн библиотека , т. е. Методы повышения надежности программного обеспечения - №40 - открытая онлайн библиотека .

Тогда уравнение (1.10) можно линеаризовать, разложив функцию Методы повышения надежности программного обеспечения - №41 - открытая онлайн библиотека в ряд Тейлора и ограничившись его линейными членами от­носительно приращений Методы повышения надежности программного обеспечения - №42 - открытая онлайн библиотека и Методы повышения надежности программного обеспечения - №43 - открытая онлайн библиотека , т. е.

Методы повышения надежности программного обеспечения - №44 - открытая онлайн библиотека

Методы повышения надежности программного обеспечения - №45 - открытая онлайн библиотека (1.11)

Так как полученное уравнение (1.11) приближенно описывает рассматриваемый процесс, то производные вычисляют при некоторых фиксированных значениях входящих в него переменных, т. е. получается система с постоянными коэффициентами. Кроме того, уравнения получаются линейными относительно Методы повышения надежности программного обеспечения - №38 - открытая онлайн библиотека , Методы повышения надежности программного обеспечения - №39 - открытая онлайн библиотека и их производных. Это весьма существенно, так как методы решения и исследования линейных систем значительно проще, чем систем общего вида, и более детально разработаны.

Методы повышения надежности программного обеспечения - №48 - открытая онлайн библиотека (1.12)

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

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

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