642.53K
Category: programmingprogramming

Lektsia_2

1.

Корректность программ.
Эталоны и методы
проверки корректности

2.

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

3.

Корректность
- соответствие программы
некоторому эталону или совокупности
эталонных правил;
- отсутствие ошибок в программе по
отношению к цели ее разработки.

4.

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

5.

Корректность
Наиболее полным эталоном корректности
программ является программная
спецификация.
Её особенностью является задание
требований поведения программы для
допустимых наборов входных данных.
Поэтому корректная программа может
неправильно работать или даже сбиваться на
недопустимых наборах входных данных.

6.

Надежность программ
Свойством устойчивости к недопустимым
наборам входных данных обладает надежная
программа - в этом заключается разница
между надёжной и корректной программами.

7.

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

8.

Два типа проверки
корректности
Верификация (verification) –
установление соответствия между
программой и ее спецификацией.
Верификация проверяет, что
программа разработана правильно.

9.

Два типа проверки
корректности
Валидация (validation) – установление
соответствия между функциями программы и
ее целевым назначением.
Валидация проверяет, что
разработана правильная программа.
Валидация - установление соответствия
между тем, что делает программа, и тем, что
нужно Заказчику.

10.

Верификация
– аналитическое исследование
корректности программы по ее тексту на
основе формально-логической системы
установления соответствия между
программой и ее спецификацией.

11.

Верификация
Для упрощения верификации разделяют
две составляющих выполнения программы:
1) частичная корректность –
удовлетворение входной и выходной
спецификациям программы при условии ее
успешно завершения;
2) проверка завершенности программы
– достижение выхода при заданных
спецификацией входных данных

12.

Критерии корректности
Требования к корректности делятся в
зависимости от двух типов критериев
качества.
Для функциональных критериев они
определяются предметной областью и
функциями выполняемой программы.
Для конструктивных критериев они
определяются общими для всех программ
свойствами.

13.

Критерии корректности
Функциональная оценка – определяется
предметной областью.
Конструктивная оценка – определяется
общими свойствами программы.

14.

Корректность программ
В зависимости от проверяемых
компонентов программ различают
следующие виды их корректности:
корректность текстов
корректность модулей
корректность данных
корректность комплексов программ

15.

Корректность текстов
Корректность текстов программ имеет
только конструктивную составляющую.
Благодаря жёстким правилам языков
программирования синтаксическая и
семантическая корректность программ
проверяется на этапе трансляции
программы, и прошедшая трансляцию
программа является корректной с этой точки
зрения.
Корректность текстов учитывает только
структурную проверку корректности

16.

Корректность программных
модулей
Корректность программных модулей имеет и
конструктивную и функциональную
составляющие:
· Конструктивная составляющая
· Функциональная составляющая

17.

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

18.

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

19.

Детерминированная оценка
корректности модулей
Детерминированная оценка - для
фиксированных наборов входных
данных должны быть получены
конкретные значения результатов;
- фиксированный набор данных,
- фиксированный набор результатов.

20.

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

21.

Динамическая оценка
корректности модулей
Динамическая оценка - для заданного
порядка входных данных проверяется
заданный порядок формирования
выходных данных.
Она характерна для систем реального
времени и определяется согласованием
во времени порядка поступления
входных данных и порядка выдачи
результатов выполнения программы.

22.

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

23.

Корректность данных
Функциональная корректность данных
определяется диапазонами изменения их
значений и соответствием типов полей
структур типам значений данных.
Функциональная оценка проверяет
диапазоны изменения значений данных,
соответствие полей структур данных типам
задаваемых значений

24.

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

25.

Корректность комплексов
программ
Функциональная корректность
комплекса программ определяется так же,
как и функциональная корректность
модулей.
Функциональная оценка – соответствие
функций комплекса функциям
спецификации.

26.

Эталоны и методы проверки
корректности

27.

Эталоны проверки
корректности
Эталоны для проверки корректности
программ могут использоваться в
следующих трех формах:
1. Формализованные правила.
2. Программные спецификации.
3. Тесты.

28.

Эталоны и методы проверки
корректности

29.

Формализованные правила
имеют достаточно неопределенностей, так
как определяются двумя видами требований:
-требования стандартов (общероссийских и
стандартов предприятий);
• требования языков и технологий
программирования.
Для полной убедительности в корректности
программ одних формализованных правил
недостаточно.

30.

Программные спецификации
относятся к функциональным
эталонам и в основном обеспечивают
проверку корректности программ в
статике.
Спецификация требований к
программному обеспечению (SRS) —
это документ, описывающий, что будет
делать программное обеспечение и как оно
будет работать .

31.

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

32.

Программные спецификации
Спецификация требований программного
обеспечения (англ. software requirements
specification, SRS)
— структурированный набор
требований/запросов (функциональность,
производительность, конструктивные
ограничения и атрибуты) к программному
обеспечению и его внешним интерфейсам.

33.

Спецификация в
программировании
Спецификация в программировании —
это совокупность всех правил языка
программирования, собранных в единый
документ.

34.

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

35.

Способы формирования
эталонных тестов
1) Применение аналитических выражений
2) Использование моделирования
3) Использование прежних вариантов
тестирования подобных программ

36.

Методы и критерии
тестирования
Методы тестирования – совокупность
правил, регламентирующих
последовательность шагов по тестированию
Критерии тестирования – оценки,
позволяющие судить о достаточности
выполненного тестирования.

37.

Тестирование программ
Тестирование – процесс анализа
программы или контролируемого
выполнения программы на конечном
множестве входных данных с целью
обнаружения ошибок
В зависимости от стадии и характера
проверки разделяются тесты делятся на
•статические и
•динамические.

38.

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

39.

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

40.

Особенности тестирования
1) Частое отсутствие полностью
определенного эталона, которому
должны соответствовать результаты.
2) Высокая сложность программ исключает
исчерпывающее тестирование (проверка
всех возможных маршрутов выполнения).
3) Невысокая формализация критериев
завершения тестирования.

41.

Основные принципы
тестирования
1) Нельзя планировать тестирование в
предположении, что ошибки отсутствуют.
2) Следует избегать тестирования программы ее
автором.
3) Описание предполагаемых значений
результатов должно быть неотъемлемой частью
теста.

42.

Основные принципы
тестирования
4) Тесты для неправильных входных данных
следует разрабатывать также тщательно, как и
для правильных.
5) Следует понимать, что вероятность наличия
необнаруженных ошибок пропорциональна
числу уже обнаруженных.
6) Не следует уничтожать тесты, даже если
программа уже не используется.
English     Русский Rules