Надежность программного обеспечения информационных систем
План
1. Основные понятия и определения надежности программного обеспечения.
2. Показатели надежности программного обеспечения.
3. Причины отказов программного обеспечения, признаки появления ошибок.
4. Способы обеспечения и повышения надежности программ.
Основные понятия надежности ПО
Надежность работы вычислительной аппаратуры следует рассматривать совместно с программным обеспечением как надежность вычислительного процесса.
Под надежностью программного обеспечения (ПО) будем понимать свойство программы выполнять заданные функции, сохранять свои характеристики в установленных переделах при определенных условиях эксплуатации.
Надежность ПО определяется его безотказностью и восстанавливаемостью.
Безотказность программы или программного обеспечения есть его (ее) свойство сохранять работоспособность при использовании в процессе обработки информации на компьютере.
Безотказность ПО можно оценивать вероятностью его работы без отказов при определенных условиях внешней среды в течении заданного времени наблюдения.
Безотказность программного средства можно также характеризовать средним временем между возникновениями отказов в функционировании программы. При этом предполагается, что аппаратура компьютера находится полностью в работоспособном состоянии.
С точки зрения надежности принципиальное отличие ПО от аппаратуры состоит в том, что программы не изнашиваются и, следовательно, не выходят из строя из-за поломки.
Безотказность ПО определяется его корректностью (правильностью) и, следовательно, целиком зависит от наличия в нем ошибок, внесенных на этапах его создания. В то время как безотказность аппаратуры определяется в основном случайными отказами, зависящими от изменений параметров аппаратуры во время эксплуатации.
Механизм возникновения отказа аппаратуры и отказа ПО существенно отличаются друг от друга. Отказ аппаратуры обусловлен разрушением каких-либо элементов аппаратуры. Отказ ПО обусловлен несоответствием ПО поставленным задачам.
Несоответствие может возникать по двум причинам: либо разработчиком программы допущено нарушение спецификации – технических требований к программе, либо спецификация неточная или неполная.
Корректность программы – ее соответствие спецификации.
Важной характеристикой надежности ПО является его восстанавливаемость, которая определяется затратами времени и труда не устранение отказа из-за проявившейся ошибки в программе и его последствий.
Восстановление после отказа в программе может заключаться в корректировке и восстановлении текста программы, исправлении данных, внесении изменений в организацию вычислительного процесса.
Восстанавливаемость ПО может быть оценена средней продолжительностью устранение ошибки в программе и восстановления ее работоспособности. Восстанавливаемость ПО зависит от многих факторов: от сложности структуры комплекса программ, алгоритмического языка, на котором разрабатывалась программа, стиля программирования, качества документации на программу и т.д.
Причины отказов программного обеспечения
Основными причинами непосредственно вызывающими нарушение нормального функционирования программы, являются [1, 2, 3, 10, 11]:
1. ошибки, скрытые в самой программе;
2. искажения входной информации, подлежащей обработке;
3. неверные действия пользователя;
4. неисправность аппаратуры установки, на которой реализуется вычислительный процесс.
1. Скрытые ошибки программы являются главным фактором нарушения нормальных условий его функционирования;
Можно выделить следующие основные ошибки в программе:
· Ошибки вычислений – ошибки данного класса содержаться в закодированных математических выражениях или получаемых с их помощью результатах. Примерами таких ошибок является неверное преобразование типов переменных, неверный знак операции, ошибка в выражении индекса, переполнение или потеря значимости при вычислениях.
· Логические ошибки – являются причиной искажения алгоритма решения задачи. Такого рода ошибки возникают в связи с неверной передачей управления, неверном задании диапазона изменения параметров цикла, неверных условий и т.д.
· Ошибки ввода-вывода – связаны с такими действиями, как управление вводом-выводом, формирование выходных записей и определение размеров записей.
· Ошибки манипулирования данными – примерами таких ошибок являются неверно определенное число элементов данных, неверные начальные значения, присвоенные данным, неверно указанная длина операнда, имя переменной и т.д.
Ошибки совместимости связанны с отсутствием совместимости с операционной системой или другими прикладными программами используемыми в данной программе.
Ошибки сопряжений вызывают неверное взаимодействие программы с другими программами (подпрограммами), с системными программами, устройствами компьютера, входными данными и т.д.
В качестве примеров ошибок сопряжения можно привести – несовместимость аргументов и параметров подпрограммы, нарушение синхронизации при синхронном выполнении программы и т.д.
2. Искажения информации, подлежащей обработке, вызывает нарушение функционирования ПО, когда входные данные не попадают в область допустимых значений переменных программы. В этом случае между исходной информацией и характеристиками программы возникает несоответствие.
Причинами искажения вводимой информации могут быть, например, следующие:
· искажения данных на первичных носителях информации;
· сбои и отказы в аппаратуре ввода данных с первичных носителей информации;
· шумы и сбои в каналах связи при передачи сообщений по линиям связи и т.д.
3. Неверные действия пользователя, приводящие к отказу в процессе функционирования ПО связаны, прежде всего, с неправильной интерпретацией сообщений, неправильными действами пользователя в процессе диалога с компьютером и т.д.
4. Неисправность аппаратуры – неисправности, возникающие при работе аппаратуры, используемой для реализации вычислительного процесса, оказывают влияние на характеристику надежности ПО. Появление отказа или сбоя в работе аппаратуры приводит к нарушению нормального хода вычислительного процесса и во многих случаях к искажению данных и текстов программ в основной и внешней памяти.
Признаки появления ошибок
Наиболее типичными симптомами появления ошибок в программе являются:
· преждевременное окончание выполнения программы;
· недопустимое увеличение времени некоторой последовательности команд одной из программ;
· полная потеря или значительное искажение накопленных данных, необходимых для успешного выполнения решаемых задач;
· нарушение последовательности вызова отдельных программ, в результате чего происходит пропуск необходимых программ;
· искажение отдельных элементов данных (входных, выходных, промежуточных) в результате обработки искаженной исходной информации.
Способы обеспечения и повышения надежности программ
Они определены на следующие основные категории:
1. усовершенствование технологии программирования;
2. выбор алгоритмов, не чувствительных к различного рода нарушениям вычислительного процесса (использование алгоритмической избыточности);
3. резервирование программ – дуальное или N-версионное программирование, другие методы введения структурной избыточности;
4. контроль и тестирование программ с последующей коррекцией.
Выбор алгоритмов, не чувствительных к нарушениям вычислительного процесса, основан на исследовании их чувствительности. Мерой чувствительности могут являться погрешности, вызванные этими нарушениями.
Результаты вычислений искажаются погрешностями:
· исходных данных, трансформированными в ходе вычислений:
· округления;
· методическими;
· обусловленными отказами, сбоями и ошибками в программе.
Контрольные вопросы и задания
1. Что понимается под надежностью программного обеспечения (ПО)?
2. Что такое корректность ПО?
3. От чего зависит восстанавливаемость ПО компьютера и КС?
4. Определите основные причины отказов ПО.
5. Какие существуют пути повышения надежности ПО компьютеров и КС?
6. Почему при мультипрограммной обработке информации используют принцип виртуальных машин?
7. Какой из способов обеспечения надежности программ считается более эффективным?
8. Что значит «усовершенствование технологии программирования»?
9. Дайте определение понятию «дуальное и N-версионное» программирование.
10. Как оценить вероятность безотказной работы программ?
11. Что означает термин «алгоритмическая избыточность»?