Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
33
Добавлен:
18.03.2015
Размер:
312 Кб
Скачать

Лекция #2

Формальные методы обеспечения качества ПО

Михаил Моисеев

Методы оценки надежности ПО

Определение надежности

Надежность (Reliability, Dependability) – свойство объекта сохранять во времени в установленных пределах значения всех параметров, характеризующих способность выполнять требуемые функции в заданных режимах и условиях применения, технического

обслуживания, хранения и транспортирования*

Надежность – комплексное свойство, в зависимости от назначения и условий применения может включать

Безотказность – свойство непрерывно сохранять работоспособное состояние в течении некоторого времени

Долговечность – свойство сохранять работоспособное состояние в течении установленного срока эксплуатации

Ремонтопригодность – свойства приспособленности к поддержанию

работоспособного состояния путем обслуживания и ремонта

Сохраняемость – свойство сохранять значения параметров при хранении и

транспортировке

* ГОСТ 27.002-89

Лекция #2

2

Показатели надежности

Вероятность безотказной работы – вероятность того, что в пределах заданной

наработки (времени или объема работы) не возникнет отказ

Средняя наработка до отказа (Mean Time To Failure) – мат. ожидание

наработки объекта до первого отказа

Средняя наработка на отказ (Mean Time Between Failures) –

отношение суммарной наработки к мат. ожиданию числа отказов в течении этой наработки

Интенсивность отказов – плотность вероятности возникновения отказов

Коэффициент готовности – вероятность того, что объект окажется в

работоспособном состоянии в произвольный момент времени

Средний срок службы

Вероятность восстановления

Лекция #2

3

Постановка задачи

Процесс обеспечения любой характеристики подразумевает возможность оценки полученного результата

Измерение (оценка) надежности ПО – определение одного или нескольких показателей надежности

История вопроса

Интерес к измерению надежности программного обеспечения (ПО) возник одновременно с появлением программ. Были предприняты попытки получить традиционную вероятностную оценку надежности для ПО как для отдельной технической системы, с помощью подходов классической

теории надежности.

Теория надежности ПО (Software Reliability Engineering)

Лекция #2

4

Причины ненадежности

Источники ненадежности аппаратных систем – внешние факторы

Источник ненадежности программ – ошибки, сделанные разработчиками программ, на разных стадиях проектирования

Инженеры vs Программисты

Истинные причины

Сложность ПО обычно выше, больше набор входных данных, больше внутренних состояний, длинные зависимости между состояниями в времени

Аппаратная система проектируется из сравнительно небольшого числа типовых элементов

Аппаратные решения меньше подвержены изменениям

Для аппаратуры меньше взаимное влияние элементов друг на друга

Инженеры тоже делают ошибки

Лекция #2

5

Ошибки в программах

Процесс проектирования ПО – преобразование и детализация

различных представлений программы

Ошибки вносятся на разных стадиях и присутствуют в соответствующих представлениях программы (артефактах процесса проектирования)

Причина появления ошибок – высокая сложность проектирования ПО

Лекция #2

6

Ошибки в программах

Значительное число ошибок вносится на стадии кодирования – эти ошибки находятся в исходном коде программы

Будем рассматривать в основном такие ошибки

Вопросы управления требованиями и формирования программной спецификации, а также остальные этапы проектирования рассматриваются в других курсах

Лекция #2

7

Классификация ошибок

Функциональные ошибки – нарушения программной спецификации (несоответствие функциональным или нефункциональным требованиям). Приводят к ухудшению функциональности ПО (пригодность, точность)

Нефункциональные ошибки – нарушения правил языка программирования, неправильное использование библиотечных функций и т.п. Приводят к снижению надежности (зрелости) и

ухудшению функциональности (защищенности)

Ошибки в последовательных программах

Ошибки синхронизации

Лекция #2

8

Примеры программных дефектов

Функциональные ошибки

Нефункциональные ошибки – зависят от языка программирования

Основные виды нефункциональных ошибок в последовательных программах на языке C

Ошибки использования неинициализированного, освобожденного указателя или указателя на NULL

Утечки ресурсов, в том числе динамической памяти

Ошибочно игнорируемые участки кода

Ошибки отсутствия инициализации интервальных переменных

Ошибки выхода за границы статических и динамических объектов

Отсутствие проверки возвращаемого значения функций

Лекция #2

9

Примеры программных дефектов

Основные виды ошибок синхронизации для программ,

использующих библиотеку Pthreads

Конкурентная работа с разделяемыми объектами программы из нескольких потоков (Race condition) – один из видов недетерминизма при выполнении программы

Взаимная блокировка потоков на объектах синхронизации (Deadlock)

Активная блокировка (Livelock), возникающая из за невозможности получения всех необходимых ресурсов

Лекция #2

10

Соседние файлы в папке печатать мавлют