Автор: Пользователь скрыл имя, 14 Октября 2011 в 15:36, реферат
Понятие надежности программы. Надежность программы может быть определена как свойство программы, которое выражается в выполнении заданных функций в заданных условиях работы и на заданной вычислительной машине, аналогично тому, как определяется понятие надежности аппаратуры. Однако механизмы возникновения отказа аппаратуры и отказа программного обеспечения существенно отличаются друг от друга.
Надежность программного обеспечения
Понятие надежности программы. Надежность программы может быть определена как свойство программы, которое выражается в выполнении заданных функций в заданных условиях работы и на заданной вычислительной машине, аналогично тому, как определяется понятие надежности аппаратуры. Однако механизмы возникновения отказа аппаратуры и отказа программного обеспечения существенно отличаются друг от друга. Отказ аппаратуры обусловлен, как правило, разрушением каких-либо элементов аппаратуры. Отказ программного обеспечения обусловлен несоответствием программного обеспечения поставленным задачам. Несоответствие может возникать по двум причинам: либо разработчиком программы допущено нарушение спецификации — технических требований к программе, либо спецификация неточная или неполная.
Несоответствие по первой причине встречается в первую очередь в сложных программных системах, где отдельные ошибки программиста трудно обозримы и могут оставаться нераскрытыми.
Несоответствие по второй причине возникает в первую очередь потому, что при составлении спецификации многие факторы, влияющие на работу программы, неизвестны. Они выясняются только постепенно, в ходе эксплуатации программы. Особенно это относится к управляющим программам.
Кроме того, ни в технических требованиях, ни при проверке программы невозможно оговорить и проверить все ситуации, которые возникают при использовании программы. Дело в том, что программа является краткой записью очень сложных функций. Поэтому записать в спецификациях все свойства функций, которые должна выполнить программа, будет ненамного проще, чем разработать соответствующую программу. Например, легко подсчитать, что если входами для программы являются 10 переменных, каждая из которых может приобретать 103 различных значений, то число возможных входных комбинаций будет 10 . Если допустить, что проверка реакции программы на каждую из входных комбинаций занимает только одну микросекунду, то в году возможно приблизительно только 3 10 проверок (!). Поэтому естественно, что в разработанной программе всегда могут встречаться непроверенные сочетания исходных данных, при наступлении которых в ходе эксплуатации программа может отказать в выполнении нужных функций.
Поскольку не всегда возможно составлять точную спецификацию, предлагается классифицировать программы по степени точности спецификации следующим образом:
1)
программы, функции которых
2)
программы, функции которых
3)
программы, действующие в
Корректность программы — ее соответствие спецификации. Поскольку спецификация не всегда и не полностью соответствует фактическим требованиям к программе, возможны случаи, когда некорректная программа работает надежно или, наоборот, корректная программа — ненадежно.
Характерной особенностью ошибок, обусловливающих отказы программ, является скрытость ошибок. Это означает, что скрытая ошибка проявляется только при отдельных редких комбинациях из огромного количества возможных комбинаций исходных данных и поэтому обнаруживается не сразу, а только в ходе длительной эксплуатации. Ошибки, проявляющиеся при любых исходных данных, неопасны, поскольку обнаруживаются сразу, при первых пробных прогонах программы.
Мерой скрытости ошибок является диаметр ошибки. Диаметром ошибки D называется вероятность того, что при некотором наборе исходных данных ошибка в программе проявляется как отказ программы. При определении диаметра ошибки значение имеет распределение вероятностей наборов (векторов) исходных данных. Предполагается, что диаметр ошибки должен быть определен при распределении вероятностей наборов исходных данных, соответствующих их распределению в ходе эксплуатации программы.
Проблема надежности программного обеспечения включает три основных направления: оценка надежности программы, тестирование программ и построение надежных программ путем введения избыточности.
Оценка надежности программ. Оценка надежности программ может быть осуществлена либо расчетными, либо экспериментальными методами. Расчетные методы применяются на ранних этапах разработки программы, когда экспериментальные данные о работе программы отсутствуют. Они основаны на регрессионных моделях, построенных на основании статистики эксплуатации различных, ранее разработанных, программ. Регрессионная зависимость позволяет оценивать число ошибок в программе по свойствам структуры программы.
Следуя, рассматривается регрессионная модель, согласно которой оценка ожидаемого числа ошибок У в программе выражается через линейную зависимость
где параметр программы; — число существенных параметров; — коэффициент.
Таблица 5.6
Тип программ |
| ||||||||
fli |
<*2 | «3 | а4 | «5 | «6 | а7 | <*8 | а | |
Управляющие | 0 | 0,0405 | 0,171 | 0,430 | 0,036 | 0 | 0 | -0,00186 | 4,00 |
|
0 | 0 | 0,780 | 0 | 0 | 0 | 0,0218 | 0 | 4,56 |
Вычислительные | 0 | 0,024 | 0,412 | 0 | 0,416 | 0,016 | 0,082 | -0,0026 | 6,34 |
Настройки | 0 | 0,001 | 0,592 | 0 | 0 | 0 | 0,0625 | -0,0036 | 3,04 |
Служебные | 2,090 | 0,0374 | 0,628 | 0,102 | 0 | 0 | 0 | -0,0133 | 1,64 |
В качестве параметров выбраны величины: — сложность условных операторов IF, , где — число условных операторов 1-го -уровня вложенности циклов, —весовой коэффициент, где Q — наивысший уровень вложенности циклов (количество циклов, вложенных друг в друга); z2 — общее число ветвлений; z 3 — общее число связей с прикладными программами; z4 — общее число связей с системными программами; z5 — число операций ввода—вывода; z 6 — число вычислительных операторов; z 7 — число операторов обработки данных; z 8 — общее число комментариев.
В результате исследований получены следующие коэффициенты регрессии (табл. 5.6).
В,
последней графе таблицы
где D — средний диаметр ошибок, Т— время однократного прохождения программы.
В первом приближении величину D можно оценить как отношение среднего количества элементов программы, участвующих при однократном прохождении программы, к общему количеству элементов программы. Однако эта оценка будет завышена, так как при отладке программы обнаруживаются и устраняются преимущественно ошибки с большим значением Д а необнаруженными остаются ошибки с малым значением D. Следовательно, в результате своего рода «естественного отбора» в программе остаются ошибки с малым значением D. Поэтому рекомендуется оценить D экспериментально, определяя интенсивность отказов и количество ошибок для нескольких программ рассматриваемого вида.
Изложенный метод может обеспечить лишь грубую оценку интенсивности отказов программы. Более точные результаты могут быть получены на основании моделей, прогнозирующих надежность программы на основании результатов ее отладки или пробной эксплуатации. Ниже приведены важнейшие из таких моделей.
Модель Джелинского—Моранды. Эта модель основана на следующих допущениях: 1) время до следующего отказа распределено экспоненциально; 2) интенсивность отказов программы пропорциональна количеству оставшихся в программе ошибок.
Согласно этим допущениям вероятность безотказной работы программы после 1-го отказа как функция времени 11 равна
где
, (5.11)
Здесь С D — коэффициент пропорциональности; N — первоначальное число ошибок программы. В (5.11) отчет времени начинается от момента последнего (i - 1 )-го отказа программы.
Модель Шумана. Данная модель отличается от модели Джелинского—Моранды только тем, что периоды времени отладки и эксплуатации рассматриваются отдельно.
Модель Шика—Волвертона. Основой этой модели является предположение о том, что интенсивность проявления ошибок программы пропорциональна не только количеству оставшихся в программе ошибок, но и времени, потраченному на отладку.
Недостаток рассмотренных моделей в том, что при неточном определении N интенсивность отказов программы делается отрицательной, а это приводит к бессмысленному результату. Кроме того, здесь предполагается, что после обнаружения ошибка ликвидируется полностью и не вносятся новые ошибки, что тоже неочевидно.
В целях преодоления этих трудностей была предложена модель, основанная на допущении о том, что поток возникновения ситуаций, в которых возможен отказ программы, является пуассонов-ским с параметром X, однако по мере обнаружения и исправления ошибок отказы в этих ситуациях возникают с вероятностью меньше единицы. Другими словами, поток отказов представляется в виде разреженного потока с переменным коэффициентом разрежения р i, где i — номер отказа.
В простейшем случае
(5.12)
где q — некоторый коэффициент, j - начальный коэффициент разрежения потока.
Модель подходит не только для прогнозирования интенсивности возникновения следующего отказа программы, но и для прогнозирования параметра потока отказов.
Из (5.12) следует, что изображение параметра потока отказов по Лапласу
Приближенное выражение его оригинала имеет вид