Специальность 05.13.11 – Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей Научный руководитель: проф. кафедры ИУС, ФТК Котляров Всеволод Павлович Интегрированная методика автоматизированного построения формальных поведенческих моделей C-приложений по исходному коду Юсупов Юрий Вадимович
постоянный рост требований к качеству производимого ПО борьба за качество начинается на самых ранних этапах разработки ПО и заключается в нахождении и исправлении ошибок в первых версиях программных продуктов обеспечение необходимого уровня качества только за счет динамической проверки (тестированием) правильности функционирования ПО становится невозможным переиспользование старого кода восстановление документации и ее поддержка в актуальном виде Особенности промышленной разработки программного обеспечения
Цель – разработка методики автоматизированного построения формальных поведенческих моделей C-приложений по исходному коду, пригодных для статического и визуального анализа поведенческих и структурных свойств. Задачи: анализ области автоматизированного построения формальных моделей по их исходному коду на основе сравнительного анализа промышленных инструментов возвратного проектирования и формальных нотаций; определение модели поведения для систем, реализованных на языке C, пригодной для статического и визульного анализа; создание методик формализации фрагментов исходного кода C-приложений с помощью выбранной формальной нотации; разработка программной реализации, позволяющей обеспечить генерацию формальных спецификаций по фрагментам исходного кода C-приложений; внедрение разработанной методики и программных средств в процесс производства и поддержки ПО. Цели и задачи исследования
Возвратное проектирование – “это процесс анализа системы с целью идентификации системных компонентов и их взаимодействий (поведенческих свойств) и создания представления системы в другой форме или на более высоком уровне абстракции”. (E. Chikofsky, J. Cross) Цели возвратного проектирования: создание альтернативных форм описания системы для облегчения понимания и повышения уровня осмысления; восстановление утраченной информации о системе с целью восстановления документации; построение моделей программ с целью верификации и тестирования. Методы возвратного проектирования: Статический анализ. Динамический анализ. Область исследования
Да Да Да Да Нет Да Сбор метрик по коду Нет Нет Да Да Да Да Доступ к внутр. представл. кода Нет Нет Да (C,C++) Да (SCHEME) Да (Tcl) Да (C,C+) Расширение баз. функцион. (язык прогр-я) CallGraph,DDG, CFG CallGraph,CFG, DDG CallGraph CallGraph, CFG,CDG, DDG,CDG, SDG CallGraph CallGrap,CFG Визуализация графов зависимостей Нет Нет Нет Нет Нет Нет мостр. формальн. моделей* HTML RTF,HTML,TEXT RTF, HTML,WinHelp, GWSC Нет TEXT HTML,PDF Генерация документации 1 5 Объем поддерж. кода (MLOC) C, C++ C, C++, Java C, C++ C, C++ C, C++, Java, Tcl,FORTRAN,COBOL C, C++,C#, Java Поддержка языков Win32 Win32,Unix Win32, Unix Win32,Unix Win32,Unix Win32,Unix Целевая платформа Klocwork Insight Source-Navigator CodeSurfer CC-Rider Imagix 4D Cristal FLOW * Пригодных для статического и визуального анализа автоматизированными средствами Инструментарий возвратного проектирования
- Процесс - - + RAISE VDM-SL,CSP RSL - Функция - - + VDM LPF VDM-SL + Кон.-авт. диаграмма - - + EDT CNSM Estelle - Процесс - - + LOTOS CCS, CSP Lotos + Процесс - - + Spin CSP Promela + Базовый протокол + + + VRS ATS Basicprotocols + Кон.-авт. диаграмма + + + Telelogic TAUG2 CFSM UML + Кон.-авт. диаграмма + + + Telelogic SDLTTCN CFSM SDL - Сценарий - - + Telelogic SDLTTCN,Telelogic TAUG2, VRS CSP MSC Поведенческ. сценарии Мин. един. описания Композ./ декомпоз. Графич. предст-е Текстовое предст-е Инструмент. поддержки Теоретич. модель Критерии Сравнительный анализ формальных нотаций
Формализация Организация проекта из базовых протоколов Генерация поведенческих сценариев Старт Финиш Визуализация модели А А - Автоматический этап А А Р - Ручной этап Исходный код проекта (С) Формальная модель (Базовые протоколы) Поведенческие сценарии (MSC) Анализ кода и исправление найденных ошибок 6 8 5 4 3 2 1 9 Р А Графические представления 7 Р VRS Klocwork Концепция предлагаемого подхода
E = (e1, e2, e3,…) M = (m1, m2, m3,…) Sin = (in1, in2, in3,…) Sout = (out1, out2, out3,…) Аппарат описания модели поведения программной системы Атрибутная транзиционная система < S, A, T, L, l > – S – множество состояний; – А – множество действий; – T – множество размеченных переходов и неразмеченных (скрытых) переходов – L – множество атрибутных разметок; – – частично определенная функция разметки состояний.
Динамические аспекты модели поведения
… … st_2 st_3 st_4 st_5 st_3 st_4 st_5 st_6 bp2 bp4 bp3 bp5 False True for while do- while switch default case1 case2 … Фрагменты систем переходов для нелинейных фрагментов кода Связь базовых протоколов по состояниям агента-приложения st_2, st_3, st_4, st_5, st_6 – состояния агента-приложения; bp2, bp3, bp4, bp5 – базовые протоколы. Методика 1: сохранение потока управления программы
начало конец БП вызывающей функции 1 Протокол-коннектор для передачи управления в вызываемую функцию 2 Протокол-коннектор для возвращения управления в вызывающую функцию 4 БП вызывающей функции 5 РП вызываемой функции 3 1) bpn=(an-1,an) 2) cp1=(an,b1) 3) ep=(b1, bm) 4) cp2=(bm,an+1) 5) bpn+1=(an+1,an+2) (an-1, an) A (b1, bm) B (an+1) A (bm) B (an) A (b1) B (an+1, an+2) A A – множество состояний вызывающей функции B – множество состояний вызываемой функции Методика 2: формализация вызовов функции (1)
Графическое представление шаблона MSC диаграммы mscdocument ; msc ; ENV#envir: instance; MODEL#model: instance; all: condition PRE /*MODEL(model, ); */; MODEL#model: action \'\'; MODEL#model: out () to ENV#env; ENV#env: in ()from MODEL#model; all: condition POST /*MODEL(model, ); */; ENV#envir: endinstance; MODEL#model: endinstance; endmsc; Текстовое представление шаблона MSC диаграммы Методика 3: построение базовых протоколов
1 директория 2 файл директория 3 файл директория функция 5 файл директория функция !Connectors функция_Det функция_Comp EP_функция 4 файл директория функция функция_Det функция_Comp Методика 4: структурирование базовых протоколов – функция_Det – базовые протоколы, описывающие поведение функции на детальном уровне – функция_Comp – базовые протоколы, описывающие поведение функции на некотором уровне абстракции – !Connectors – протоколы-коннекторы для моделирования вызовов функций – EP_ функция – расширенные протоколы, описывающие поведение вызываемых функций
c c c h h Формальная модель Динамически подключаемая библиотека Исходные файлы обработчика Приложение dll Исходные C-файлы Базовые протоколы Klocwork Объект разработки Конфигурационный файл dll АСД Программная поддержка В рамках работы для решения поставленных задач и реализации разработанных методик создан следующий инструментарий:
Метрика оценки объема модели k – количество функций в проекте; BP – количество базовых протоколов, кодирующих детальное поведение функции; EP – количество расширенных протоколов, кодирующих поведение вызываемых функций; CP – количество протоколов-коннекторов, необходимых для моделирования вызовов функций. LOC – количество строк кода функции, каждая из которых содержит хотя бы один оператор; i, e, f, s, w, F – количество операторов if, else, for, switch, while и вызовов функций в коде функции соответственно.
Исходный код (С) 1 Klocwork Insight Результаты анализа кода 3 Специальный обработчик Базовые протоколы 7 Исправление исходного кода Описание окружения Описание сигналов VRS Генерация трасс Построение диаграмм Изменение уровня абстракции 5 6 Трассы Диаграммы 2 4 10 12 11 13 Верификация 16 Требования 14 Структури- рованный проект из базовых протоколов 9 8 Критериальные цепочки 15 Исправления Анализ результатов 17 VRS Общая схема применения методики
Проекты пилотирования и применения методики Пилотирование и применение разработанного комплекса методик и программных средств проведено в следующих 4 проектах: Учебный проект. Применение методики к исходному коду приложения с целью проверки всех разработанных методик и программных средств (40 BPs). Проект автомобильного радио (CarRadio). Применение методики структурирования базовых протоколов для получения проекта, структура которого позволяет работать с моделью покомпонентно и на разных уровнях абстракции (70 BPs). Проект анализатора A-деревьев. Применение методики к исходному коду реализованного обработчика с целью проверки корректности его реализации (8000 BPs). Приложение для тестирования мобильного телефона. Применение методики к исходному коду приложения для мобильного телефона с целью верификации реализованного приложения (70000 BPs).
чел.-часа чел.-часа чел.-часа чел.-часа Тип А Тип Б - трудозатраты автоматиз. подхода - трудозатраты ручного подхода - трудозатраты автоматиз. подхода - трудозатраты ручного подхода Анализ результатов применения Зависимость трудозатрат от размеров модели (аппроксимация на основе пилотирования)
Анализ результатов применения Зависимость размеров моделей от уровня абстракции (аппроксимация на основе пилотирования)
На основе теории агентов и сред предложена модель поведения C-приложений в виде структурированного множества базовых протоколов, пригодная для статического и визуального анализа поведенческих и структурных свойств в среде инсерционного программирования. Разработана методика структуризации представления модели, обеспечивающая свойство декомпозиции модели на структурные элементы и их независимый анализ на заданном уровне абстракции. Разработана методика использования расширенных протоколов и протоколов-коннекторов для спецификации и моделирования вызовов функций и других фрагментов исходного кода, обеспечивающая сокращение размеров модели и достижение различной степени ее детализации Создана программная реализация разработанных методик формализации исходного кода C-приложений, обеспечивающая автоматизацию построения поведенческих моделей. Оценка эффективности разработанных методик и ПО проведена в 4-х программных проектах различной сложности и позволила установить минимум трехкратное преимущество по трудозатратам автоматизированного подхода перед ручным. Анализ результатов позволил получить оценки применения методики в промышленных проектах. Заключение
На защиту выносятся модель поведения приложений, реализованных на языке C, представляемая структурированным множеством базовых протоколов. Модель является пригодной для статического и визуального анализа ее поведенческих и структурных свойств в среде инсерционного программирования; методика структуризации представления модели, позволяющая проводить ее докомпозицию на структурные элементы и их независимый анализ, что обеспечивает возможность работы с крупными моделями промышленных систем; методика использования расширенных протоколов для формализации отдельных фрагментов исходного кода, обеспечивающая сокращение размеров модели и предоставляющая возможность достижения различной степени ее детализации; программные средства, обеспечивающие автоматизацию построения формальных моделей C-приложений по их исходному коду; проверка работоспособности предложенных методик и инструментальных средств в ряде учебных и промышленных проектов.
СПАСИБО ЗА ВНИМАНИЕ