Добавил:
study@slavapmk.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Все Лекции

.pdf
Скачиваний:
0
Добавлен:
12.05.2026
Размер:
15.98 Mб
Скачать

Последствия от ошибок в ПО

С 2000 года по 2010 год в США в авариях с автомобилями Toyota погибло 89 человек и 57 получили увечья, в связи с неисправностями электроники.

В ходе десятимесячного расследования специалисты выявили, что софт не соответствует стандартам MISRA (Motor Industry Software Reliability Association) и

содержит 7134 нарушения.

23

Стоимость ошибки

Стоимость ошибки возрастает при прохождении по циклу разработки

Источники: Boehm (1976), Baizuk (1995)

24

Современная практика разработки ПО.

Компания Google

Около 4х миллиардов пользователей

Gmail –1.5 миллиард активных пользователей

Youtube-1.9 миллиард активных пользователей

2.5 миллиарда устройств на

Android

120 тыс. сотрудников

Более 13 тыс. отдельных проектов

Все проекты синхронизируются в единый репозиторий

4.2 млн. тестов выполняются непрерывно

150 млн. тестов запускаются каждый день

99% тестов завершаются успешно

25

Современная практика разработки ПО. Компания Google

Тестировщики отвечают за автоматизацию и инфраструктуру.

Разработка тестов приравнена к разработке функционала.

Невозможно синхронизировать код в репозиторий без инспекции и прохождения тестов.

1-2 тестировщика на команду из 8-10 разработчиков.

Разработчики отвечают за реализацию тестов.

26

Анализ требований заказчиков по качеству

Методы верификации. Инспекция

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

Целью инспекции является улучшение качества программного продукта и совершенствование навыков разработчика.

Методы инспекции:

Инспекция кода

Парное программирование

Инструментированная инспекция

Пошаговая инспекция

Командная инспекция

28

Методы верификации. Статический анализ

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

В отличие от тестирования, выполнение программ не производится.

Анализ включает в себя ручное или автоматическое создание модели системы и проверку ее свойств на модели без выполнения программы.

29

Примеры типовых ошибок

Параллелизм

•Состояния гонки

•Взаимная блокировка

•Асинхронная блокировка

Исключительные условия

•Целое число, превышающее/понижающее

•Деление на ноль

•Непредвиденные исключения

•Не обрабатывает случаи ошибок

•Ошибки преобразования типа

Качество кода

•Метрики

•Неиспользуемые переменные

•Стиль программирования, комментарии

Ошибки работы с памятью

•Границы массива/переполнение буфера

•Недопустимое освобождение указателей

•Неправильное освобождение памяти

•Утечки памяти

•Использование неинициализированных данных

30

Тестирование на различных уровнях

Приемные испытания. Насколько система отвечает требованиям пользователя

Интеграционное тестирование. Тестирование взаимодействия отдельных модулей.

Системное тестирование. Тестирование всей функциональности системы.

Модульное тестирование. Изолированное тестирование каждого метода, класса, файла.

31

Классификация тестов

32