13 Надежность программного обеспечения
Тема: Надежность программного обеспечения информационных систем
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. Что означает термин «алгоритмическая избыточность»?
Источник
Модели качества и надежности в программной инженерии
К атрибутам функциональности относятся:
К подхарактеристикам надежности ПО относятся:
К некоторым типам систем (реального времени, радарных, систем безопасности, коммуникация и др.) предъявляются требования для обеспечения высокой надежности (недопустимость ошибок, точность, достоверность, удобство применения и др.). Таким образом, надежность ПО в значительной степени зависит от числа оставшихся и не устраненных ошибок в процессе разработки на этапах ЖЦ. В ходе эксплуатации ошибки обнаруживаются и устраняются.
Если при исправлении ошибок не вносятся новые или, по крайней мере, новых ошибок вносится меньше, чем устраняется, то в ходе эксплуатации надежность ПО непрерывно возрастает. Чем интенсивнее проводится эксплуатация, тем интенсивнее выявляются ошибки и быстрее растет надежность ПО.
К факторам, влияющим на надежность ПО, относятся:
- совокупность угроз, приводящих к неблагоприятным последствиям и к ущербу системы или среды ее функционирования;
- угроза как проявление нарушения безопасности системы;
- целостность как способность системы сохранять устойчивость работы и не иметь риска.
Обнаруженные ошибки могут быть результатом угрозы извне или отказов, они повышают риск и уменьшают некоторые свойства надежности системы.
Надежность — одна из ключевых проблем современных программных систем, и ее роль будет постоянно возрастать, поскольку постоянно повышаются требования к качеству компьютерных систем. Новое направление — инженерия программной надежности ( Software reliability engineering) — ориентировано на количественное изучение операционного поведения компонентов системы по отношению к пользователю, ожидающему надежную работу системы [10.7], и включает:
- измерение надежности, т.е. проведение ее количественной оценки с помощью предсказаний, сбора данных о поведении системы в процессе эксплуатации и современных моделей надежности;
- стратегии и метрики конструирования и выбора готовых компонентов, процесс разработки компонентной системы, а также среда функционирования, влияющая на надежность работы системы;
- применение современных методов инспектирования, верификации, валидации и тестирования при разработке систем, а также при эксплуатации.
Верификация применяется для определения соответствия готового ПО установленным спецификациям, а валидация — для установления соответствия системы требованиям пользователя, которые были предъявлены заказчиком.
В инженерии надежности термин dependability (пригодноспособность) обозначает способность системы иметь свойства, желательные для пользователя, который уверен в качественном выполнении функций ПС, заданных в требованиях. Данный термин определяется дополнительным количеством атрибутов, которыми должна обладать система, а именно:
- готовность к использованию (availability);
- готовностью к непрерывному функционированию ( reliability );
- безопасность для окружающей среды, т.е. способность системы не вызывать катастрофических последствий в случае отказа ( safety );
- секретность и сохранность информации (сonfidential);
- способность к сохранению системы и устойчивости к самопроизвольному ее изменению (integrity);
- способность к эксплуатации ПО, простота выполнения операций обслуживания, а также устранения ошибок, восстановление системы после их устранения и т.п. ( maintainability );
- готовность и сохранность информации (security) и др.
Достижение надежности системы обеспечивается предотвращением отказа (fault prevention), его устранением (removal fault), а также оценкой возможности появления новых отказов и мер борьбы с ними с применением методов теории вероятности.
Каждый программный компонент, его операции и данные обрабатываются в дискретные моменты времени, например, . Пусть за время
после первого неудачно обработанного компонента системы появился отказ,
— вероятность этой неудачи, тогда
n\delta\> = (1 — q_
)^< n>» style=»display: inline; «> и среднее время ожидания .
Положим, что момент времени убывает, а время
остается фиксированным, тогда имеем
t\> = (1 — \frac<\delta>
, распределенная экспоненциально с параметром
.
Таким образом, оценка надежности ПО — это трудоемкий процесс, требующий создания устойчивой работы системы по отношению к отказам ПО, т.е. вероятности того, что система восстановится самопроизвольно в некоторой точке после возникновения в ней отказа (fault).
К подхарактеристиками удобства применения относятся:
- понимаемость — атрибут, который определяет усилия, затрачиваемые на распознавание логических концепций и условий применения ПО;
- изучаемость (легкость изучения) — атрибут, который определяет усилия пользователей на определение применимости ПО путем использования операционного контроля, диагностики, а также процедур, правил и документации;
- оперативность — атрибут, который показывает на реакцию системы при выполнении операций и операционного контроля;
- согласованность — атрибут, который показывает соответствие разработки требованиям стандартов, соглашений, правил, законов и предписаний.
К подхарактеристикам эффективности ПО относятся:
- реактивность — атрибут, который показывает время отклика, обработки и выполнения функций;
- эффективность ресурсов — атрибут, показывающий количество и продолжительность используемых ресурсов при выполнении функций ПО;
- согласованность — атрибут, который показывает соответствие данного атрибута с заданными стандартами, правилами и предписаниями.
Cопровождаемость включает подхарактеристики:
Источник