Верификация программ посредством их параметризованного тестирования специализаторами на базе моделей этих программ, реализация верификатора для языка программирования JAVA
Объектом исследования являются методы верификации программных систем со сложным поведением на базе моделей этих программ, методы верификации распределённых вычислительных систем. Целью работы является создание эффективных автоматических методов верификации на основе специализации и реализация на основе этих методов прототипа верификатора программ написанных на языке программирования Java. Методы исследований включают в себя кодировки верифицируемых объектов в виде программ с последующей их глубокой оптимизацией (суперкомпиляцией). Инструменты суперкомпиляции содержат элементы рассуждений методом математической индукции по структуре данных преобразуемой программы. Полученные результаты включают в себя: Разработана технология верификации управляющих программных систем со сложным поведением на базе моделей этих программ. Разработаны примеры, подтверждающие преимущества предложенной технологии, — на основе экспериментальных данных, полученных при тестировании прототипа верификатора. По разработанной схеме проведены автоматические доказательства корректности следующих snooping cache coherence протоколов с условиями глобальной корректности: Synapse N+1, Xerox PARC Dragon, MOESI, IEEE Futurebus+, MESI, MOSI, MSI, “The University of Illinois”, DEC Firefly, “Berkeley” (см. [37], [10], [11]). Мы удачно проверифицировали Steve German’s directory consistency клиент-сервер протокол [13] и Load Balancing протокол [12]. Построена формальная модель, описывающая инструменты суперкомпиляции (одной из технологий автоматической специализации программ), использование которых достаточно для верификации рассматриваемого класса cache coherence протоколов. Доказана теорема корректности этой формальной модели. Разработаны алгоритмы суперкомпилятора и верификатора объектно-ориентированного языка Java на основе ранее разработанных методов верификации средствами суперкомпляции и опыта применения суперкомпилятора SCP4 языка Рефал к задаче верификации программ и программных систем со сложным поведением на примере задач верификации моделей параметризованных cache coherence протоколов с условиями глобальной корректности. Разработанные алгоритмы реализованы в прототипе верификатора Java программ JVer, отлажены и оттестированы. Разработан набор тестовых программ для верификатора языка Java, которые являются сложными содержательными задачами, имеющими практическое значение, — моделями различных параметризованных коммуникационных протоколов. Один тест представляет собой неправильную модель протокола и предназначен для проверки того, как верификатор отрабатывает неверные программы и спецификации. В этом случае верификатор должен определить начальные данные, для которых выдается false. Разработана методика экспериментальных исследований и подготовлены тестовые программы. Реализован прототип верификатора Java программ (JVer). Прототип верификатора JVer прошел отладку, тестирование и апробацию как на разработанных тестах, так и на внешних тестовых примерах. Часть тестов была разработана в рамках данного проекта. В частности, к ним относится набор тестовых программ для верификатора языка Java, которые являются сложными содержательными задачами, имеющими практическое значение, — моделями различных параметризованных коммуникационных протоколов. Другая часть алгоритмов и построенных на их основе тестовых программ является внешней по отношению к данному проекту. Например, в качестве тестовых программ использовались программы для вычисления быстрого преобразования Фурье, бинарного поиска числа в упорядоченном массиве чисел, предикат кодирующий головоломку А.Эйнштейна. Разработанные тестовые программы проверяют основные элементы алгоритмов верификации на основе суперкомпиляции: распространение условий на значения параметров вдоль путей метаинтерпретации, автоматического определения глубины развертки графа программы, автоматического построения промежуточных индуктивных гипотез, правильность работы конфигурационного анализа, построения моделей программ адекватных контексту их использования. На примере неудачной спецификации протокола Xerox PARC Dragon данной Ж. Дельзанно [11] показана возможность использования верификатора JVer для обнаружения ошибок спецификации и построения тестов на эти ошибки. Проведено теоретическое обобщение результатов работ по данному проекту. Результаты исследований опубликованы в рецензируемых международных журналах и доложены на российских и международных конференциях. Результаты исследований проводившихся в рамках данного проекта представлены 15-ю докладами на международных и всероссийских конференциях. Результаты теоретических исследований и практической реализации прототипа верификатора использованы в образовательном процессе в Университете г. Переславля. Разработанные и реализованные в ходе выполнения проекта программные продукты прошла государственную регистрацию:
Проведены патентные исследования с целью получения обоснованных данных для проверки патентной чистоты созданных по теме НИР объектов интеллектуальной собственности, получения обоснованных данных для анализа созданных по теме НИР объектов интеллектуальной собственности на соответствие их критерию патентоспособности «новизна» и получения сведений об охранных и иных документах, которые могли бы препятствовать использованию созданных по теме НИР объектов интеллектуальной собственности на территории РФ и зарубежом, а также условий использования таких документов. Возможная область применения: автоматическая верификация спецификаций программных систем со сложным поведением, реализованных на языке программирования Java, распределённых вычислительных систем и электронных устройств; полуавтоматическое построение подозрительных тестов, возможно, указывающих на ошибки спецификации. Значимость данной работы. Актуальность данной работы определяется широким распространением языка программирования Java, быстрым развитием возможностей для организации распределённых вычислений, большой трудоёмкостью проверки корректности спецификаций объектов и громадными неэффективными материальными затратами при реализации и внедрении ошибочно специфицированных объектов. Экономический эффект от внедрения разрабатываемых методов верификации и поддерживающих их программных инструментов не вызывает сомнений в контексте неэффективных материальных затрат при реализации и внедрении ошибочно специфицированных вычислительных систем, в частности, Java программ со сложным поведением. Список использованных источников
|