- •А.М. Бакшаев
- •Основные эксплуатационные характеристики эвм
- •Надежность вычислительных систем
- •Показатели надежности
- •Термины и определения
- •Надежность программного обеспечения
- •Способы обеспечения и повышения надежности программ
- •Способы повышения эксплуатационной надежности эвм
- •Классификация методов и средств контроляфункционирования эвм
- •Система автоматического контроля эвм
- •Контроль передачи информации
- •Контроль комбинационных схем
- •Самопроверяемые схемы контроля
- •Диагностические средства проверки работоспособности схем контроля
- •Прерывания от схем контроля
- •Принципы построения системы контроля процессора
- •Контроль счетчиков
- •Контроль алу на основе метода самопроверяемого дублирования
- •Контроль по модулю
- •Числовой и цифровой контроль
- •Частные случаи контроля по модулю
- •Способы построения схем сверток
- •Методы оценки эффективности системы аппаратного контроля
- •Резервирование в эвм и вс
- •Основные способы резервирования
- •Механизм обнаружения отказа и замещения резервным блокомможет быть:
- •Автоматическое восстановление вычислительного процесса после машинных ошибок Типы машинных ошибок
- •Автоматическое восстановление вычислительного процесса после сбоев
- •Автоматическое восстановление вычислительного процесса после отказов
- •Схемотехнические аспекты эксплуатационного обслуживания эвм Иерархия процессов обслуживания
- •Формы эксплуатационного обслуживания эвм
Надежность программного обеспечения
ПОНЯТИЕ ОТКАЗА ПРОГРАММЫ
ЭВМ является единым комплексом ее аппаратных и программных средств, поэтому следует рассматривать надежность работы вычислительной аппаратуры совместно с программным обеспечением как надежность вычислительного процесса.
Надежность программного обеспеченияможет быть определена как свойство программы, которое выражается в выполнении заданных функций в заданных условиях работы и на заданной вычислительной машине, аналогично тому, как определяется понятие надежности аппаратуры.Однако механизмы возникновения отказа аппаратуры и отказа программного обеспечения существенно отличаются друг от друга.Отказ аппаратуры обусловлен, как правило,разрушением каких-либо элементов аппаратуры. Отказ программного обеспечения обусловлен несоответствием программного обеспечения поставленным задачам.Несоответствие может возникатьпо двум причинам:
либо разработчиком программы допущено нарушение спецификации—технических требований к программе;
либо спецификация неточная или неполная.
Несоответствие по первой причиневстречается в первую очередь в сложных программных системах, где отдельные ошибки программиста трудно обозримы и могут оставаться нераскрытыми.
Несоответствие по второй причиневозникает в первую очередь потому, что при составлении спецификации многие факторы, влияющие на работу программы, неизвестны. Они выясняются только постепенно, в ходе эксплуатации программы. Особенно это относится к управляющим программам.
Кроме того, ни в технических требованиях, ни при проверке программы невозможно оговорить и проверить все ситуации, которые возникают при использовании программы. Поэтому записать в спецификациях все ситуации свойства функций, которые должна выполнить программа, будет не намного проще, чем разработать соответствующую программу.
Например, легко подсчитать, что если входами для программы являются 10переменных, каждая из которых может приобретать 103 различных значений, то число возможных входных комбинаций будет 1030.Если допустить, что проверка реакции программы на каждую из входных комбинаций занимает только одну микросекунду, то в году возможно приблизительно только 31013 проверок (!)(2,5 года).Поэтому естественно, что в разработанной программе всегда могут встречаться непроверенные сочетания исходных данных, при поступлении которых в ходе эксплуатации программа может отказать в выполнении нужных функций.
Поскольку не всегда возможно составлять точную спецификацию, предлагается классифицировать программы по степени точности спецификации следующим образом:
1)программы, функции которых полностью определяются спецификацией;
2)программы, функции которых корректируются сопоставлением вычислительных и измеренных результатов (сюда относятся моделирующие программы, т.е. программы, реализующие математическую модель физического объекта);
3)программы, действующие в постоянно изменяющейся среде (состоящей из других программ, данных, пользователей, реальных систем и установок и т.п.; сюда относятся операционные системы, программы управления воздушным движением, программы управления ресурсами и др.).
Надежность программы определяется ее безотказностью и восстанавливаемостью.
Безотказность программы характеризуется средним временем между возникновением отказов в функционировании программы, при этом аппаратура находится в исправном состоянии и работоспособна. Характеристики функционирования программы зависят только от ее качества, предопределяемого процессом разработки.
Безотказность программы определяется ее корректностью (правильностью),и, следовательно, целиком зависит от наличия в ней ошибок, внесенных на этапах ее создания, а безотказность аппаратуры определяется в основном случайными отказами, зависящими от параметров аппаратуры, происходящих во время эксплуатации.
Корректность программы —это ее соответствие спецификации. Поскольку спецификация не всегда и не полностью соответствует фактическим требованиям к программе, возможны случаи, когда некорректная программа работает надежно или, наоборот, корректная программа—ненадежно.
Восстанавливаемость программы определяется затратами времени и труда на устранение ошибок в программе и их последствий.
Восстановление после отказа в программе может заключаться:
в корректировке и восстановлении текста программы;
в исправлении входных данных и данных, полученных в результате неправильного функционировании программы;
при внесении изменений в организацию вычислительных процессов;
изменений алгоритма работы программы и т.д.
Восстанавливаемость программыоценивается средним временем устранения ошибки и восстановления ее работоспособности, котороезависит от многих факторов:
от сложности структуры комплекса программ;
используемого языка и технологий программирования;
стиля программирования;
квалификации программиста;
качества сопроводительной документации на программу и т.д.
Характерной особенностью ошибок, обусловливающих отказы программ, является скрытость ошибок — это означает, что скрытая ошибка проявляется только при отдельных редких комбинациях из огромного количества возможных комбинаций исходных данных и поэтому обнаруживается не сразу, а только в ходе длительной эксплуатации. Ошибки, проявляющиеся при любых исходных данных(явные ошибки),не опасны, поскольку обнаруживаются сразу, при первых пробных прогонах программы.
Пример устранения скрытой ошибки в программе. Пусть программа предназначена для вычисления функции у=(а sin x)/x+b при x /2.
Если ошибкой является, например, наличие в формуле знака минус вместо знака плюс, то такая ошибка проявляется сразу, при любых вычислениях, за исключением случая, когда b=0. Однако программа будет содержать и скрытую ошибку в виде неопределенности при х=0, которая при числовых вычислениях проявляется как большая погрешность вычислений при x , где —некоторое малое число.
Правильная программа должна быть составлена по выражению:
(а sin x)/x+b при < x /2
y = a + b при x
Сравним интенсивности отказов в зависимости от времени эксплуатации аппаратных средств и программ.
Из графика видно, что-характеристика на начальном периоде эксплуатации имеет большое значение (t<t1 ) и называется периодом приработки аппаратуры, на котором в первую очередь выходят из строя элементы с заводским браком. Периодt1-t2 называется периодом нормальной работы, который характеризуется приблизительно одинаковой интенсивностью отказов элементов, а приt>t2 наступает период старения элементов и число отказов возрастает вследствие отклонения параметров элементов от номинальных.
Снижение интенсивности отказов в программе от времени объясняется тем, что в процессе эксплуатации программы обнаруживаются и устраняются скрытые ошибки, заложенные на этапе ее разработки, хотя зависимость надежности программы от времени является косвенной и зависит от многих факторов.
Теория надежности аппаратуры частично применима к проблеме надежности программного обеспечения, учитывая следующие различия между надежностью аппаратуры и программного обеспечения:
- элементы программного обеспечения не стареют из-за износа или усталости;
- для контроля программного обеспечения имеется намного больше путей и способов, чем для контроля аппаратуры;
- в программном обеспечении имеется намного больше объектов для контроля, чем в аппаратуре;
- в аппаратуре использование стандартных элементов распространено намного шире, чем в системе программного обеспечения;
- количество документации по программному обеспечению огромное по сравнению с количеством документации по аппаратуре;
- внести изменения в программы просто, но трудно делать это корректно.
Классификация ошибок программирования.Анализ ошибок программирования основан на их классификации.
Ошибки программ могут быть разделены:
на ошибки, обусловленные ограниченными возможностями программы (отказ в получении результатов за заданное время или при заданных ограничениях по объему вычислений);
на логические ошибки (выражаются в получении неправильных результатов, не взирая на время и объем вычислений), причинами которых могут быть;
ошибки, скрытые в самой программе;
искажения входной информации:
при вводе с клавиатуры;
при вводе с первичных носителей;
из-за ошибок в документации (инструкции оператора);
неверные действия оператора, связанные с неправильной интерпретацией сообщений и неправильными действиями оператора в процессе диалога;
сбои в работе аппаратуры, на которой реализуется вычислительный процесс.
В настоящее время имеется представительная статистика об ошибках программного обеспечения и их причинах. Процентные частоты появления ошибок различного типа по данным из литературных источников приведены в таблице 6.1. Наиболее часто встречающиеся ошибки— это ошибки технического задания к программе— могут быть, в свою очередь, разделены на категории, приведенные в таблице 6.2.
Всесторонний анализ ошибок, встречающихся в программах, возможен только при наличии точных данных об отказах программ, причинах отказов, о самих программах и условиях их разработки (квалификация программиста, сроки разработки и др.).
Таблица 6.1 – Типовые причины отказов в программе
Причина ошибки |
Частота появления, % |
Неполное или ошибочное задание Отклонение от задания Пренебрежение правилами программирования Ошибочная выборка данных Ошибочная логика или последовательность операций Ошибочные арифметические операции Нехватка времени для решения Неправильная обработка прерываний Неправильные постоянные или исходные данные Неточная запись |
28 12 10 10 12 9 4 4 3 8 |
Таблица 6.2 – Типы ошибок в ТЗ
Причина ошибки |
Частота появления, % |
Ошибки в числовых значениях Недостаточные требования к точности Ошибочные символы или знаки Ошибки оформления Неправильное описание аппаратуры Основы разработки неполные или неточные Двусмысленность требований |
12 4 2 15 2 52 13 |
Эти данные являются основой для построения математических моделей надежности программ с целью ее оценки и прогнозирования, а также для нахождения путей ее обеспечения и повышения.