Из системы алгебраических уравнений имеем:
Для вероятностей состояний справедливо следующее соотношение
;Определим
. Имеем: . ;или
Отсюда
Коэффициент готовности:
3. НАДЁЖНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Исследования в области программной надёжности находятся на начальном этапе своего развития.
Целесообразно выделить две стороны программного обеспечения объекта: программную надёжность объекта - свойство объекта выполнять заданные функции, обусловленные качеством программного обеспечения; надёжность программного обеспечения - свойство программного обеспечения выполнять предписанные ему требования.
Программная надёжность изделия проявляется при совместной работе аппаратуры и программы. Она характеризует способность изделия выполнять заданные функции при условии, что программа будет находиться в том или другом состоянии.
Надёжность программного обеспечения характеризует качественное состояние программы. Её иногда называют правильностью программы, корректностью программы, надёжностью программы.
Программная надёжность объекта - это то, что интересует его потребителя. Для её обеспечения необходимо, чтобы программа была “правильной”, “корректной”, “надёжной”, т.е. чтобы она не содержала ошибок. Может оказаться, что некоторые из ошибок совсем не проявятся при работе объекта или, наоборот, при работе объекта обнаружатся дополнительные несовершенства (“ошибки”) программы. Однако очевидно, что необходимым условием надёжной работы объекта является “корректность” программ, т.е. отсутствие в них ошибок.
Программная надёжность становится особо актуальной, когда программы являются самостоятельным изделием. В этом случае они изготовляются, проверяются и подвергаются приёмосдаточным испытаниям так же, как обычные объекты.
Положения о двух сторонах надёжности программного обеспечения полезно иметь в виду при исследовании надёжности программно-управляемых объектов.
3.1 Сравнительные характеристики программных и аппаратурных отказов
Программные отказы изделия и аппаратурные отказы имеют много общего, но во многом существенно различаются. Общее между ними:
а) невыполнение объектом заданных функций;
б) времена до отказов и времена устранения отказов носят случайный характер;
в) методы обработки статистических данных об отказах одинаковы, а потому статистические оценки показателей надёжности аппаратурной и программной, полученные по результатам испытаний и эксплуатации, могут быть одинаковыми по своему названию: средняя наработка объекта на программный отказ, интенсивность программных отказов объекта и т.д. Возможны и объединённые (комплексные) оценки: средняя наработка объекта на программный и аппаратурный отказ и т.п.
Вместе с тем отказы программные существенно отличаются от отказов аппаратурных:
а) отказ аппаратурный зависит либо от времени, либо от объёма выполненной работы, а отказ программный - от той функции, которую выполняет изделие под управлением программы (точнее, от того, с какой вероятностью программа выйдет на такой участок, который содержит ошибку);
б) обнаружение и устранение аппаратурного отказа (заменой отказавшего элемента исправным) не означает, что такой же отказ не повторится при дальнейшей работе изделия, а обнаружение и устранение отказа программного (исправление программы) означает, что такой отказ в дальнейшем не повторится;
в) программный отказ, обнаруживаемый при автономной проверке программы, может переходить в разряд недействующих, если состояние аппаратуры делает её нечувствительной к данному виду программного отказа. Например, если в программе ошибочно не предусмотрена программная защита от аппаратурного сбоя, то это программный отказ, но если при этом в аппаратуре не возникает сбоя, то отказ программный становится недействующим;
г) прогнозировать возникновение аппаратурных отказов сравнительно легко, а прогнозировать возникновение отдельных программных отказов трудно, а часто и невозможно. Для отдельных программных отказов трудно предвидеть время, когда они становятся действующими, а когда-недействующими;
д) аппаратурные отказы целесообразно подразделять на внезапные и постепенные, т.е. отказы, различные по своей физической природе, законам распределения времени до отказа, методам борьбы за снижение их вероятности. Программные отказы нет смысла делить на внезапные и постепенные. Они возникают внезапно, как только программа переходит на такой участок, который содержит “ошибку”. В то же время они по природе своей не совпадают с внезапными аппаратурными отказами. Вероятность их возникновения не связана с продолжительностью работы изделия, а связана с условной вероятностью того, что программа содержит ошибку в данной части программы, и вероятностью того, что изделие будет работать под управлением этой части программы.
3.2 Проверка и испытания программ
Испытания программ на надёжность и испытания изделий на надёжность их программного обеспечения - обязательные этапы при проверке надёжности систем.
Испытания с целью проверки надёжности программ осуществляются с помощью специальных программ (тестирование) и специальных (имитационных) стендов. Проверяется при этом степень отработанности программы и её соответствие заданным требованиям.
Испытания с целью проверки надёжности изделий, работающих под управлением программ, осуществляются при совместной работе программы и изделия. Проверяются при этом и степень отработанности программы в соответствии с заданными требованиями, и корректность этих требований, и согласованность взаимодействий программы и аппаратуры.
Степень отработанности программы может проверяться различными методами. Чем выше требование к достоверности проверки, тем более сложен метод проверки.
Рассмотрим один из наиболее простых методов. В процессе проверки “корректности” программы (с помощью наблюдений за работой либо изделия, либо имитирующего устройства, либо на специальном стенде с помощью тестов) фиксируются времена обнаружения ошибок в программе. Результаты проверки обрабатываются при следующих предположениях: 1) ошибки программы независимы. Каждый раз после обнаружения они устраняются и в дальнейшем не проявляются. 2) интенсивность ошибок уменьшается по мере их обнаружения и устранения (ступенчато, как показано на рисунке 3.1).
Выявление и устранение ошибок производится до тех пор, пока значение
будет меньше заданного значения. Заданное значение назначается с учётом требований к надёжности изделия. Ориетировочно можно исходить из того, что интенсивность программных ошибок, приводящих к отказу, на этапе отладочных испытаний должна быть не больше интенсивности аппаратурных отказов.Положение о том, что при создании программного обеспечения больших систем возможно возникновение ошибок и что выявление программных ошибок - чрезвычайно трудная задача, не только не должно обезоруживать разработчиков систем, а наоборот, должно ориентировать их на максимальное сосредоточение сил для ликвидации программных отказов.
Влияние программных ошибок на надёжность изделия должно непрерывно уменьшаться с каждым новым этапом освоения программ (разработка - отладка - опытная эксплуатация - нормальная эксплуатация) так, чтобы на этапе нормальной эксплуатации объекта программная надёжность его была на уровне заданных требований.
3.3 Основные проблемы исследования надёжности программного обеспечения
В сложной программно - управляемой технической системе любого типа можно выделить две основные, относительно независимые части.
1. Совокупность автономно, паралельно работающих технических схем и устройств - аппаратная часть.
2. Совокупность программ, ориентированных на решение данного комплекса задач, представляющих математическое обеспечение технической системы и образующих её программную часть (операционная система и рабочие программы пользователей).