Надежность программного обеспечения
Наличие в управляющих комплексах разветвленной сети периферийных устройств связи с объектом и вышестоящими системами управления обусловливает усложнение всех составляющих программного обеспечения. Поскольку в настоящее время не существует методов создания безошибочных программ, то ошибки в программах наравне с отказами технических средств служат источниками системных отказов.
Случайный характер ошибок программного обеспечения и случайный характер комбинаций входных данных, вызывающих их появления, дает возможность говорить о системных отказах, вызванных ошибками программного обеспечения, как о случайных событиях. Это позволяет использовать для их анализа и снижения те же методы, что и для анализа аппаратурных отказов. Тем не менее отказы, вызванные ошибками программного обеспечения, имеют некоторые довольно существенные отличительные черты, обусловившие создание специальных методов анализа надежности программного обеспечения.
Все сказанное выше в первую очередь относится к комплексу программ УВК, входящих в контур управления технологическим объектом. Эти комплексы программ эксплуатируют в течение многих лет и они определяют наряду с другими факторами качество функционирования АСУ ТП, ее надежность. В связи с этим комплексы программ должны удовлетворять определенным требованиям к надежности. Для выполнения этих требований существует комплекс мероприятий и приемов, реализуемых на стадии создания программ, их отладки и эксплуатации. Остановимся более подробно на особенностях отказов, вызванных ошибками программного обеспечения, поскольку ими в значительной мере определяется специфика их математического описания и мероприятий по обеспечению надежности ПО.
Источниками ошибок программного обеспечения являются логические ошибки в проекте или его несовершенство, неправильное кодирование, ошибки при компоновке программ. Эти ошибки приводят к возникновению искажений двух видов: необесценивающих и обесценивающих. Такая градация учитывает влияние ошибок на функционирование ВК. Необесценивающие искажения приводят к появлению ошибок, в среднем мало влияющих на результаты расчетов. Обесценивающие и частично обесценивающие искажения приводят к зацикливанию, останову выполнения программы, снижению темпа решения задач из-за перегрузки ВК, искажениям или потере накопленной информации об управляемом процессе, нарушениям последовательности прохождения программ, пропуску подпрограмм, обработке искаженных сигналов.
Испытания разработанных программ не позволяют проверить выполнение всех функций ВК при различных комбинациях входных данных и управляющих воздействий. В связи с этим после проведения испытаний часть ошибок ПО остается невыявленной. Тем не менее характер распределения во времени выявленных в ходе испытаний ошибок и их число служат основанием для прогноза надежности программного обеспечения при эксплуатации. Невыявленные ошибки постепенно проявляются, исправляются, поток отказов этого вида снижается. Понятие старения и связанного с ним роста интенсивности отказов на программное обеспечение не распространяется, могут стареть материальные носители ПО. Изменение потока отказов в сторону его увеличения при эксплуатации программ обычно вызывается вносимыми в них изменениями.
Качество проектирования программ характеризуется отношением числа ошибок к общему числу команд. Обычно это отношение лежит в пределах 10-4-10-2. При одном и том же исходном числе ошибок в программном обеспечении интенсивность вызванных ими отказов может меняться в широких пределах. К числу не менее важных показателей надежности ПО относятся характеристики его приспособленности к локализации программных отказов и устранению ошибок. К сожалению, данные по этим показателям еще более специфичны и недостаточно обобщены.
Модели надежности ПО
Формулировка требований по надежности к разрабатываемому ПО, подтверждение выполнения этих требований на стадии испытаний и эксплуатации, расчет надежности функций ВК с учетом надежности программного обеспечения, оценка эффективности проведения тех или иных мероприятий по повышению надежности ПО – это далеко не полный перечень задач, для решения которых необходимо использование аналитических или экспериментально-аналитических методов расчета надежности ПО. В настоящее время отсутствуют стандартные методы расчета надежности ПО.
Существует несколько экспериментально-аналитических методов прогнозирования надежности ПО по результатам испытаний, основанных на тех или иных допущениях. К числу наиболее простых относится модель Шумана. Эта модель исходит из следующих предпосылок:
- число команд N в программе постоянно;
- при начальном числе ошибок в ходе испытаний длительностью Т их число снижается, , новые ошибки в ходе исправлений не вносятся;
- относительное число исправленных в ходе испытаний ошибок и их изменение во времени характеризуют оставшееся число ошибок и интенсивность их возникновения
,
–коэффициент пропорциональности.
В ходе эксплуатации программ и будет не ниже , поскольку .
Коэффициенты и рассчитывают по результатам двух интервалов испытаний. В частности, начальная наработка на отказ ПО при испытаниях , откуда . Зная число отказов, предшествующих второй наработке, находим
, получаем
Для повышения точности определения могут быть использованы статистические данные и метод максимального правдоподобия.
Таким образом, с увеличением длительности испытаний растет последующая наработка на отказ ПО. Естественно, что, как и при аппаратурных испытаниях, программа испытаний, входные данные должны обеспечивать высокий процент выявления ошибок. Из рассмотренного выше видно, что при расчете показателей надежности реализации функций с учетом надежности ПО возникают значительные трудности, поэтому особенно важны экспериментальные данные, полученные при эксплуатации УВК.