Анализ правильности проектной информации
Лекция 12.02.13
Аркадий Чикибаев. Союз граждан Украины.
Чем раньше обнаружена ошибка, тем меньше затрачивается средств на её исправление. Для нас наиболее важный период - это формирование требований к ПО.
Главной проблемой с которой сталкиваются разработчики ПО при попытке анализировать правильность проектной информации заключается в том, что универсальных методов проверки нету, дающие исчерпывающую информацию о правильности проектной информации. Очевидно, что эти методы должны базироваться на строгом, формальном (математическом) подходе. И в этом отношении существует 2 принципиальных подхода:
- подход, основанный на извлечении правильной проектной информации из математических рассуждений
- подход, который опирается на доказательстве правильности (верификации) информации
Оба подхода базируются на положении, что в основе должна лежать всегда правильная
информация, из которой и получена наша проектная информация. Проблема сводится к том, чтобы обеспечить всю проектную информацию правильной исходной.
|
|
Существует ряд недостатков формальных методов анализа проектной информации:
· сложность
· громоздкость, а следовательно большая вероятность допущения ошибки
· невозможность прогнозировать функционирование ПО в случае неправильных исходных данных
Формальные методы анализа правильности проектной информации активно развиваются и в ряде случаев применяется для простейших проектов и проектов, носящих численный характер, т.е. проекты, где задачи достаточно формализованны.
Существует и специальные программные средства, автоматизирующие этот процесс, где конечной целью развития формальных подходов является автоматизация синтеза процедур или ПО, при котором программное изделие генерируется на основе заданных спецификаций.
В настоящее время среди формальных методов анализа наиболее распространенным является метод верификации - верификации программ на основе методов индуктивных утверждений, предложенной Флоидом и модифицированный Хоаром.
Суть метод индуктивных утверждений – метод состоит в том, что в рамках некоторой формальной системы (исчисление предикатов) формируются утверждения (исходные утверждения) о входных и выходных данных программы. В точках, расположенных соответственно перед началом программы и после программы.
Двигаясь от начальной вершины графа, осуществляется преобразование исходных утверждений о входных или выходных данных в зависимости от направления движения. В результате этого процесса имеются 2 утверждения для одной и той же точки управляющего графа:
|
|
· исходное
· утверждение, полученное в результате преобразований (выведенной утверждение)
Затем формулируется теорема (условие верификации) о том, что выведенное утверждение правильно. Указанное доказательство теоремы свидетельствует, что программа работает правильно, в противном случае необходимо выесняется неправильность работы управляющего графа. Успешное доказательство теоремы свидетельствует о правильности работы программы. Кроме того, необходимо доказать, что программа должна закончить свою работу.
Обычно, формулируют не одно и несколько утверждение, количество определяется путями управляющего графа.
Наиболее сложные вещи в этом методе – поиск ошибки в циклах, т.к. механизм, предложенные в этом методе не всегда срабатывает.
Перечисленные трудности метода формального описания анализа проектной информации двинули развитие верификации в направление имперических подходов, где в основе лежит понятие “испытание” – испытание проектной информации с целью найти в ней ошибку. И в этом отношении наиболее ярким представителем такого направления является подход тестирования, где основная задача стоит в выявлении максимального числа ошибок.
Существуют различные стратегии тестирования, но все они нацелены на выбор оптимального набора тестов. Под оптимальностью понимают компромисс между полнотой тестирования и количеством тестов, необходимых для тестирования проектной информации. В силу того, что тестирование провести невозможно, то механизм тестирования относится к экономической категории и определяется то количество тестов, которое необходимо для тестирования проектной информации.
К тестированию также относится и сквозной контроль – т.е. проверка правильности проектной информации путем имитации её выполнения на тестах. Имитация может быть ручной и автоматизированной. Тестирование относится к динамическим средствам проверки проектной информации, т.е. средствам, основанным на выполнении проверяемой информации. К ним также относится проверка в процессе выполнения некоторых утверждений (аннотаций о состоянии вычислений в её отдельных точках).
Символьное тестирование состоит в том, что один прогон программы при символльном выполнении эквивалентен целому множеству тестов.
Таким образом, методы оценки правильности проектной информации можно рассматривать по 3 направления
· статические и динамические
· формальные и неформальные
· ручные и автоматизированне
Кроме проблем выбора адекватных методов проверки правильности проектной информации и их программной поддержки, имеется еще ряд проблем, на которых следует остановиться, вторая из них – проблема воспроизводимости, т.е. повторяемости проведенных испытаний.
Еще одна проблема – обеспечение полноты проверки, которая состоит в планировании процесса проверки, например по стоимости, времени и т.д.