Проблемы сбора структурных покрытий при верификации

advertisement
УДК 004.4(06) Технологии разработки программных систем
М.А. СУДЬБИН
Московский инженерно-физический институт (государственный университет)
ПРОБЛЕМЫ СБОРА СТРУКТУРНЫХ ПОКРЫТИЙ
ПРИ ВЕРИФИКАЦИИ ПРОГРАММНОГО КОДА
Рассматривается процедура сбора структурного покрытия в рамках
верификации программного обеспечения. Ставится задача о сокращении объемов
хранения и времени интерпретации данных с помощью представления кода в виде
соответствующей модели.
Одним из этапов верификации программного обеспечения является
процедура сбора и анализа структурного покрытия кода. В таких отраслях
как авионика этот этап имеет первостепенную важность и жестко
регламентируется соответствующими стандартами[1, 2]. В соответствии
со стандартами выделяются четыре различных уровня покрытия:
 покрытие требований;
 покрытие всех операторов кода;
 покрытие всех условий в коде;
 независимое покрытие всех логических переменных, входящих в
условия.
Вне зависимости от уровня, процедуру структурного покрытия можно
условно разбить на три части: накопление, хранение и интерпретацию
данных о покрытии. При значительном объеме кода и большом числе
тестовых примеров количество хранимых данных становится гигантским,
а их интерпретация становится непрозрачной и мало эффективной.
На практике, при объеме исходного кода в десять мегабайт и
количестве тестов порядка тысячи, использование существующих
инструментов сбора покрытия приводит к появлению соответствующей
отчетности размером до нескольких гигабайт, а то и до десятков гигабайт.
Детальная интерпретация отчетов такого размера становится слишком
трудоемкой и нецелесообразной.
С другой стороны, процедура сбора структурного покрытия не требует
исчерпывающих данных об исходном коде, важны лишь вполне
определенные его свойства. Поэтому, предлагается рассматривать
исходный код в рамках некоторой модели, которая бы учитывала только
необходимые свойства исходного кода, тем самым позволяя существенно
уменьшить количество хранимой информации и упростить ее
интерпретацию.
ISBN 5-7262-0555-3. НАУЧНАЯ СЕССИЯ МИФИ-2005. Том 2
53
УДК 004.4(06) Технологии разработки программных систем
Эта модель должна обладать следующими основными свойствами:
1. выделять все точки ветвления программы и декомпозировать код
до конечных операторов, при этом семантика операторов не важен и
учитываться не должен;
2. выделять каждое условие и описывать его с нужной степенью
детализации;
3. накапливать информацию о собранном покрытии и трассировать
каждый тестовый пример на соответствующий элемент структурного
покрытия;
4. выделять принципиально непокрываемые участки кода и не
рассматривать их при накоплении информации и трассировке.
Свойства 1 и 2 непосредственно вытекают из требований к процедуре
сбора структурного покрытия. Модель должна учитывать специфику
процедуры и хранить информацию для каждого уровня покрытия
оптимальным образом.
Свойства 3 и 4 принципиальны для практического применения
предлагаемой модели, так как одной из основных целью сбора
структурного покрытия является локализация непокрытых, а значит не
проверенных участков кода и выявления причин такого непокрытия [3]. В
дальнейшем обычно требуется определить тестовые примеры а так же
требования соответствующие непокрытым участкам кода, поэтому
трассируемость выделена как одно из ключевых свойств предлагаемое
модели.
В докладе обсуждается практический опыт применения данного
подхода при верификации программного обеспечения бортовых систем.
Рассматривается результативность использования модели в случае
различных уровней покрытия и определяются возможные пути
дальнейшего развития этой идеи.
Список литературы
1. Требования к программному обеспечению бортовой аппаратуры и систем при
сертификации авиационной техники (КТ-178А). Межгосударственный Авиационный
Комитет, Авиационный Регистр, 1997.
2. Software Considerations in Airborne Systems and Equipment Certification (DO-178B),
RTCA Inc., 1992
3. Г. Майерс. Надежность программного обеспечения. М.: МИР, 1980
ISBN 5-7262-0555-3. НАУЧНАЯ СЕССИЯ МИФИ-2005. Том 2
54
Download