№37 (Надежность программного обеспечения) (1006294)
Текст из файла
37 Надежность программного обеспечения
Понятие отказа программы
Условием успеха исследования или разработки в области техники является системный подход к решаемой проблеме. Поэтому следует рассматривать надежность работы вычислительной аппаратуры совместно с программным обеспечением как надежность вычислительного процесса.
Надежность программного обеспечения может быть определена как свойство программы, которое выражается в выполнение заданных функций в заданных условиях работы и на заданной вычислительной машине, аналогично тому, как определяется понятие надежности аппаратуры. Однако механизмы возникновения отказа аппаратуры и отказа программного обеспечения существенно отличаются друг от друга. Отказ аппаратуры обусловлен, как правило, разрушением каких-либо элементов аппаратуры. Отказ программного обеспечения обусловлен несоответствием программного обеспечения поставленным задачам. Несоответствие может возникать по двум причинам; либо разработчиком программы допущено нарушение спецификации—технических требований к программе, либо спецификация неточная или неполная.
Несоответствие по первой причине встречается в первую очередь в сложных программных системах, где отдельные ошибки программиста трудно обозримы и могут оставаться нераскрытыми.
Несоответствие по второй причине возникает в первую очередь потому, что при составлении спецификации многие факторы, влияющие на работу программы, неизвестны. Они выясняются только постепенно, в ходе эксплуатации программы. Особенно это относится к управляющим программам.
Кроме того, ни в технических требованиях, ни при проверке программы невозможно оговорить и проверить все ситуации, которые возникают при использовании программы. Дело в том, что программа является краткой записью очень сложных функций. Поэтому записать в спецификациях все свойства функций, которые должна выполнить программа, будет не намного проще, чем разработать соответствующую программу. Например, легко подсчитать, что если входами для программа являются 10 переменных, каждая из которых может приобретать 103 различных значений, то число возможных входных комбинации будет 1030. Если допустить, что проверка реакции программы на каждую из входных комбинаций занимает только одну микросекунду, то в году возможно приблизительно только 3*1013 проверок (!). Поэтому естественно, что в разработанной программе всегда могут встречаться непроверенные сочетания исходных данных, при наступлении которых в ходе эксплуатация программа может отказать в выполнении нужных функций. Поскольку не всегда возможно составлять точную спецификацию, предлагается классифицировать программы по степени точности спецификации следующим образом:
1) программы, функции которых полностью определяются спецификацией;
2) программы, функции которых корректируются сопоставлением вычислительных и измеренных результатов (сюда относятся моделирующие программы, т. е. программы, реализующие математическую модель, физического объекта);
3) программы, действующие в постоянно изменяющейся среде (состоящей из других программ, данных, пользователей, реальных систем, и установок и т. п.; сюда относятся операционные системы, программы управления воздушным движением, программы управления ресурсами и др.).
Корректность программы — ее соответствие спецификации. Поскольку спецификация не всегда и не полностью соответствует фактическим требованиям к программе, возможны случаи, когда некорректная программа работает надежно или, наоборот, корректная программа — ненадежно.
Характерной особенностью ошибок, обуславливающих отказы программ, является скрытость ошибок – это означает, что скрытая ошибка проявляется только при отдельных редких комбинациях из огромного количества возможных комбинаций исходных данных и поэтому обнаруживается не сразу, а только в ходе длительной эксплуатации. Ошибки, проявляющиеся при любых исходных данных, не опасны, поскольку обнаруживаются сразу, при первых пробных прогонах программы.
Классификация ошибок программирования.
Анализ ошибок программирования основан на их классификации.
Ошибки программ могут быть разделены на ошибки, обусловленные ограниченными возможностями программы (отказ в получении результатов за заданное время пли при заданных ограничениях по объему вычислений) и на логические ошибки (выражаются в получения неправильных результатов, не взирая на время и объем вычислений).
В настоящее время имеется представительная статистика об ошибках программного обеспечения и их причинах. Процентные частоты появления ошибок различного типа по данным приведены в табл. 6.1. Наиболее часто встречающиеся ошибки — ошибки технического задания к программе—могут быть, в свою очередь, разделены па категории, приведенные в табл. 6 2.
Всесторонний анализ ошибок, встречающихся в программах, возможен только при наличии точных данных об отказах программ, причинах отказов, о самих программах и условиях их разработки (квалификация программиста, сроки разработки и др.).
Эти данные являются основой для построения математических моделей надежности программ с целью ее оценки и прогнозирования, а также для нахождения путей ее обеспечения и повышения.
Способы обеспечения и повышения надежности программ. Они могут быть разделены па следующие основные категории:
1) усовершенствование технологии программирования;
2) выбор алгоритмов, не чувствительных к различного рода нарушениям вычислительного процесса (использование алгоритмической избыточности);
3} резервирование программ — дуальное и N-версионное программирование, другие методы введения структурной избыточности;
4) контроль и тестирование программ с последующей коррекцией.
Выбор алгоритмов, не чувствительных к нарушениям вычислительного процесса, основан на исследовании их чувствительности. Мерой чувствительности могут являться погрешности, вызванные этими нарушениями.
Результаты вычислений искажаются погрешностями:
1) исходных данных, трансформированными в ходе вычислений;
2) округления;
3) методическими
4) обусловленными отказами, сбоями и ошибками в программах.
Эти погрешности могут быть вo многих случаях оценены теоретически, однако в общем случае проще определить их методом цифрового моделирования вычислительных процессов и источников погрешностей. Как следует из табл. 6.2, ошибки, обусловленные недостаточной точностью вычислений, составляют в общем количестве ошибок небольшую долю. Это обстоятельство объясняется, с одной стороны, тем, что разрядность ЭВМ в большинстве случаев выбирается со значительным запасом, С другой стороны, отказы, обусловленные недостаточной точностью, легко обнаруживать и устранить. Остальные же ошибки, приведенные и табл. 6.1 и 6.2 вызваны в основном трудно обнаруживаемыми ошибками программирования.
Такие ошибки могут быть обнаружены и устранены путей тщательной отладки и тестирования программы. Считается, что более эффективна борьба с такими ошибками путем профилактики, что достигается улучшением технологии программирования.
Пусть задан вычислительный процесс, реализующий функцию
где
исходные данные, а
результат. Тогда мерой погрешности результата у является расстояние
где у обозначает точное значение результата, а
— искаженное нарушением значение. В случае числового результата под расстоянием
понимается либо евклидово расстояние
компоненты п-мерных векторов
либо выражения вида
В случае, если результаты представлены в виде двоичных кодов, не имеющих числового содержания,
расстояние выражается как
где
компоненты n-мерных двоичных кодов
представляющих собой соответственно неискаженный и искаженный результаты,
В случае одномерного числового результата
расстоянием р служит разность
Мерой чувствительности М тогда может служить величина
где
соответственно неискаженный в искаженный промежуточные результаты или исходные данные. В зависимости от причины искажения говорят о чувствительности вычислительного процесса к различным нарушениям.
Подобная мера чувствительности позволяет выявлять те части алгоритмов, которые обладают повышенной чувствительностью к различного рода нарушениям, в той числе и к погрешностям округления и погрешностям исходных данных. Во многих случаях такие части алгоритмов могут быть преобразовано к виду, менее чувствительному к погрешностям. Например, выражение
приведет к повышенной погрешности результата, если
Преобразованное выражение
к повышенной погрешности результата не приведет.
МОДЕЛИ НАДЕЖНОСТИ ПРОГРАММ
Прогнозирование надежности программ в ходе их эксплуатации. Оценка и прогнозирование надежности программ осуществляется на основе математических моделей надежности программ. Ниже рассматривается модель надежности программы, предложенная Б. Литтл-вудом и Дж. Л. Верраллом [32], имеющая в первую очередь познавательную ценность, а также более простые модели, нашедшие применение в различных частных случаях
Рассмотрим временную ось (рис. 6.2), где снизу нанесены номера отказов в программе, а сверху обозначены интервалы времени между отдельными отказами программы. Представим, следуя [32]. что в начальный момент времени программа работает и сохраняет свою работоспособность до окончания интервала времени t1, когда происходит первый отказ программы. Программист после этого «исправляет» программу, которая затем работает исправно в течение времени t2, и т. д. Пусть случайное время между i-м и (i+1)-м отказом имеет функцию плотности распределения
, где параметр
мера интенсивности отказов. Чем меньше
тем лучше программа. Программист стремится сделать программу лучше, чем она была до обнаружения отказа, т. е. сделать ее более надежной. Другими словами, программист стремится уменьшить
, т. е. добиться соотношения
для всех i. Безусловно, он не может быть уверен, что в ходе частичной переделки программа действительно стала лучше — имеется много случаев, когда программа после переделки стала намного хуже.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















