Об автоматизации моделирования программ при структурном тестировании


Скачать 62.75 Kb.
НазваниеОб автоматизации моделирования программ при структурном тестировании
Дата публикации18.10.2013
Размер62.75 Kb.
ТипДокументы
referatdb.ru > Информатика > Документы


УДК 681.3.06

И.М. Галкин

ОБ АВТОМАТИЗАЦИИ МОДЕЛИРОВАНИЯ ПРОГРАММ ПРИ СТРУКТУРНОМ ТЕСТИРОВАНИИ

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

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

Процесс реализации анализаторов программ распадается на две относительно самостоятельные задачи:

- построение соответствующих представлений исходной программы (для каждого нового языка программирования это практически отдельная задача);

- статический и/или динамический анализ построенных моделей (представлений).

Представлениями программы, используемыми при структурном тестировании, являются:

- модель программы, отображающая требуемые аспекты ее внутренней структуры (например, поток управления и/или поток данных);

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

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

Работы в области создания подобных средств, получивших в русскоязычной литературе название "системы (автоматизации) построения трансляторов" (С[А]ПТ), а в англоязычной (в буквальном переводе) "генераторы (компиляторы) компиляторов", активно велись в 70-80-х гг. в эру господства мэйн-фреймов. Достаточно высокая "наукоемкость" проблемы, а также тогдашняя ограниченность средств поддержки разработки программ предопределили исследовательский характер большинства разработок этого периода, по крайней мере на территории бывшего СССР [2]. Несомненный теоретический интерес, в том числе с точки зрения архитектуры системы, представлял проект генератора компиляторов [3], описанный на специализированном языке XPL. Впоследствии, в эпоху персональных компьютеров, наибольшее признание получила система YACC [4], а также некоторые ее развития, в частности система BISON [5]; из относительно недавних разработок следует отметить исследовательскую разработку PCCTS [6], поддерживающую весьма изощренный формат входных грамматик.

Все отмеченные выше средства являются системами общего назначения и позволяют автоматизировать ряд общих для всех трансляторов функций, в частности синтаксический разбор программы по описанию ее грамматики. Однако предполагаемая специализация делает более предпочтительной разработку собственного средства, естественно, с учетом привлекательных особенностей упомянутых систем.
^ Проект системы автоматизации моделирования программ
За основу системы автоматизации моделирования программ принята система [7], реализованная в свое время на основании идеологии, описанной в [3], и достаточно интенсивно использовавшаяся для разработки трансляторов с языков программирования экономического характера в операционной среде ОС 360 для мэйн-фрэймов.

Новая версия системы реализована на языке C++ в среде C++ Builder и функционирует в операционной среде Windows для персональных компьютеров. Архитектурно система состоит из двух компонентов:

1) транслятора с описания языка программирования в форме Бэкуса-Наура в соответствующие синтаксические таблицы;

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

Наряду с прежним механизмом поддержки действий, задаваемых пользователем, предполагавшим связывание действий с номерами синтаксических правил, поддерживается и принятый в системе YACC механизм поддержки действий посредством их указания непосредственно за правилами в файле, содержащем описание грамматики входного языка. Этот механизм исключает ошибки в связывании действий и правил в случае изменения входной грамматики. Более того, реализована поддержка YACC-формата описания входной грамматики, что позволяет использовать имеющиеся описания грамматик для YACC без изменений.

Несколько уступая упомянутым ранее системам в гибкости, данная система имеет и ряд несомненных достоинств: во-первых, она поддерживает другой класс грамматик (смешанного предшествования (2,1;1,1), в то время как YACC и BISON поддерживают контекстно-свободные LALR(1)-грамматики, а PCCTS - LL(1)-грамматики), а значит, в отдельных случаях данная система может оказаться более предпочтительной; во-вторых, ее ядро открыто для пользователя, а следовательно, при использовании средств отладки он не окажется внутри неизвестных ему ассемблерных модулей, как это случается при использовании, скажем, YACC; в-третьих, данная система имеет перспективу специализации в области автоматизации моделирования программ.
^ Состояние и перспективы разработки
Описываемая система носит исследовательский характер, и ее развитие предполагается проводить по двум относительно независимым направлениям:

1) как системы автоматизации построения трансляторов общего назначения; в этом русле перспективными работами представляются реализация ряда удобных возможностей системы YACC (восстановления после ошибок, работы со "значениями" элементов синтаксических правил, указания приоритета и ассоциативности операций), реализация поддержки формата входных грамматик PCCTS, внутренняя модификация системы с целью ослабления существующих ограничений на размеры обрабатываемых грамматик;

2) как средства поддержки моделирования и инструментирования программ; в данном контексте планируется продолжать работы по автоматизации построения представлений программ и визуализации графовых моделей, в более широком смысле данная система может быть также ориентирована на построение семантической сетевой модели программы в рамках подхода к анализу программ, описанного в [8, 9].
Литература
1. Evaluation Criteria for Information Technology Security. - ISO/IEC 15408: 1999(E).

2. Вооглайд А.О., Серебряков В.А. Применение систем автоматизации построения трансляторов // Прикладная информатика. – М.: Финансы и статистика, 1989. - Вып.15. – С. 72-90.

3. McKeeman W.M., Horning J.J., Wortman D.B. A compiler generator. – Prentice-Hall, Englewood Cliffs, N.J. – 1970. – 527 p.

4. Johnson S.C. Yacc - Yet Another Compiler-Compiler. - Bell Laboratories, Murray Hill, N.J. – 1978.

5. Donnelly C., Stallman R. BISON: the YACC-compatible Parser Generator. – Free Software Foundation, Cambridge. - 1992.

6. Parr T.J., Dietz H.G., Cohen W.E. PCCTS 1.00: The Purdue Compiler Construction Tool Set // SIGPLAN Notices. - 1992. – 27. - № 2. - Pp. 88-165.

7. Галкин И.М., Образкова Н.Л., Романов В.М. Система построения трансляторов МАРС-СПТ // Управляющие системы и машины. - 1983. – № 6. - С. 68-70.

8. Галкин И.М. Использование семантических сетей для моделирования и анализа программ // Управляющие системы и машины. - 1991. - № 5. - С. 55-61.

9. Galkin I.M. A Knowledge-Based Approach to Program Testing and Analysis // Proc. of 12th International Conference on Computer Safety, Reliability and Security (SAFECOMP'93). – Pp. 207-216.
Институт технической

кибернетики НАН Беларуси,

г.Минск

<Примечание:

Статья опубликована в сборнике научных трудов ИТК НАНБ

Комплексная защита информации” (Выпуск 3, 2000, стр. 86-89>


Похожие рефераты:

Использование многосеточного метода для решения уравнения пуассона...
Так как метод Монте-Карло требует больших затрат машинного време­ни, то при разработке программ моделирования должны использоваться...
Лекция Статистическое моделирование систем автоматизации на ЭВМ
Основным методом моделирования таких систем на ЭВМ является метод статистического моделирования, составляющий методологическую основу...
Республики Беларусь «24»
Целью изучения этого курса является подготовка студентов по ряду разделов дискретной математики, широко используемых для построения...
Методическая инструкция по разработке государственных программ 120....
Разработка государственных программ представляет собой процесс анализа, моделирования, определения целей, целевых индикаторов, задач...
Министерство образования и науки республики казахстан алматинский технологический универсистет
Роль автоматизации технологических процессов и установок. Экономическое и социальное значение автоматизации производства. Автоматические...
Программа курса (Syllabus) дисциплины «Основы компьютерного моделирования»
Целью дисциплины является освоение теории, методов и технологии компьютерного моделирования при исследовании, проектировании и применения...
Рабочая программа составлена в соответствии с типовой программой...
Целью дисциплины является освоение теории, методов и технологии компьютерного моделирования при исследовании, проектировании и применения...
Программа огн построена на линейном системно-структурном принципе:...
...
О задачах оптимизации и их специфике
Значение моделирования в исследованиях, оптимизации и управлении технологи­ческими процессами. Цели и задачи курса. Содержание понятий...
Программа вступительных экзаменов в магистратуру по специальности 6М0
Задачи компьютерного моделирования сложных систем. Принцип системного подхода в моделировании. Классификация видов моделирования....

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
referatdb.ru
referatdb.ru
Рефераты ДатаБаза