Функциональная спецификация системы анализа


Table of Contents

1. Общее описание
1.1. Основные понятия
1.2. Обзор системы
1.3. Деление на компоненты
2. Компонента управления конфигурациями
2.1. Вариант использования "Создание пустой конфигурации"
2.2. Вариант использования "Импортирование проекта интегрированной среды разработки в качестве конфигурации"
2.3. Вариант использования "Сохранение текущего состояния конфигурации"
2.4. Вариант использования "Загрузка сохраненной конфигурации"
2.5. Вариант использования "Внесение заданного модуля в конфигурацию"
2.6. Вариант использование "Удаление модуля из конфигурации"
3. Компонента управления сессиями анализа
3.1. Вариант использования "Создание новой сессии анализа"
3.2. Вариант использования "Закончить сессию анализа"
3.3. Вариант использования "Удалить сессию анализа"
4. Компонента управления сессией анализа
4.1. Вариант использования "Добавление точки модификации контекста"
4.2. Вариант использования "Удаление точки модификации контекста"
4.3. Вариант использования "Получение контекста вычисления для указанной конструкции"
4.4. Вариант использования "Вычисление произвольной конструкции"
4.5. Вариант использования "Пошаговая интерпретация кода"
4.6. Вариант использования "Анализ потока данных"
4.7. Вариант использования "Анализ покрытия"
4.8. Вариант использования "Экспорт состояния текущей сессии анализа в программную систему на указанном языке программирования"
4.9. Вариант использования "Анализ зависимостей конструкции"
5. Компонента создания отчетов
5.1. Вариант использования "Создание теста по результату сессии анализа"

1. Общее описание

Система интерактивного и автоматического анализа исходного кода (kuixing) предназначена для решения автоматизируемых задач в процессе как статического, так и динамического анализа исходных текстов программных продуктов.

Система пригодна для анализа модулей на императивных языках программирования, таких как C, Java, Python.

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

1.1. Основные понятия

Модель программной системы - внутреннее представление системой анализа объекта анализа - набора программных модулей, описания целевой среды и входных данных, составляющих объект анализа.

  1. описание целевой среды выполнения: операционная система, контекст среды, версия целевого интерпретатора

  2. контекст программной системы: параметры командной строки, контекст операционной среды, данные поступающие на вход программе

  3. список программных модулей, участвующих в процессе анализа, как непосредственно анализируемых, так и задающих контекст выполнения для анализируемых конструкций

  4. внутреннее представление анализируемых программных модулей

Конфигурация - контейнер сущностей, которыми оперирует система в процессе анализа, включает в себя:

  1. модель программной системы в стартовый момент: начальное состояние

  2. список сессий анализа

Сессия анализа - последовательность преобразований модели программной системы при динамическом анализе. Сессия хранит историю изменений своего состояния в процессе анализа.

Статический анализ - исследование программной системы без помощи интерпретатора.

Динамический анализ - исследование программной системы с помощью интерпретатора.

Контекст - отображение символьных имена

Программный модуль - TODO

Точка модификации контекста - TODO (уровни контекста: среды, конфигурации, инструкции)

1.2. Обзор системы

Поток данных в системе анализа выглядит следующим образом:

1.2.1. Входные данные

На вход система получает набор программных модулей и данные необходимые для интерпретации:

  1. спецификация среды выполнения (версия и класс операционной системы, версия и класс интерпретатора, набор системных библиотек, контекст операционной системы)

  2. входные данные (параметры командной строки, модули данных)

1.2.2. Конфигурация

На основе входных данных создается начальное состояние - отправная точка для всего процесса анализа.

Конфигурация, с внешней по отношению к системе анализа точки зрения, является той сущностью, которой оперирует система анализа. Т.е. по входным данным создается конфигурация, результаты анализа хранятся в конфигурации, промежуточное состояние сохраняется в конфигурацию и восстанавливается из конфигурации.

1.2.3. Сессия анализа

После создания конфигурации начинается последовательность сессий анализа.

Сессия анализа может быть создана, как на основе начального состояния из конфигурации, так и на основе любого промежуточного состояния модели из истории изменений уже существующей сессии.

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

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

1.3. Деление на компоненты

С точки зрения пользователя система делится на следующие компоненты:

  1. компонента управления конфигурациями

  2. компонента управления сессиями анализа (всеми сессиями)

  3. компонента управления сессией анализа (текущей)

  4. компонента создания отчетов

1.3.1. Компонента управления конфигурациями

Эта компонента отвечает за хранение, восстановление, создание и модификацию конфигураций.

1.3.2. Компонента управления сессиями анализа

Каждая проведенная сессия анализа хранится как часть конфигурации в системе. Эта компонента отвечает за управление множеством сессий анализа: создание, копирование, удаление, переименование, категоризация.

Сессии в конфигурации могут находиться в двух состояниях: открытом и заархивированном. Изначально сессия создается в открытом состоянии, проходит последовательность модификаций и переходит в заархивированное состояние.

Сессия не может перейти из заархивированного состояния в открытое, если необходима последующая модификация состояния сессии, то создается новая копированием истории заданной.

1.3.3. Компонента управления сессией анализа

Эта компонента отвечает за непосредственное управление сессией анализа. Компонета дает доступ к возможностям получения интересующих свойств модели в заданной точке, предоставляет возможность исполнять запросы по текущему состоянию. Хранит историю преобразования модели с возможностью отката. Управляет преобразованием модели через добавление и удаление конструкций (инструкций выполнения, определений, точек преобразований контекста).

1.3.4. Компонента создания отчетов

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

2. Компонента управления конфигурациями

2.1. Вариант использования "Создание пустой конфигурации"

2.1.1. Базовый сценарий

Если не существует конфигурации с заданным идентификатором, то создается новая пустая конфигурация с заданным идентификатором, иначе пользователь получает сообщение о невозможности проведения операции.

В случае невозможности создания конфигурации по иным причинам, система выводит сообщение описывающее ошибку.

2.1.2. Постусловие к базовому сценарию

Существует новая пустая конфигурация с заданным идентификатором или пользователь получил сообщение об ошибке.

2.2. Вариант использования "Импортирование проекта интегрированной среды разработки в качестве конфигурации"

2.2.1. Базовый сценарий

Заданный проект интегрированной среды разработки или набор Makefile'ов, описывающие программную систему, могут быть импортированы в качестве конфигурации в системе, таким образом, что перечисленные во входном проекте программные модули и модули данных присутствуют в созданной конфигурации.

2.2.2. Постусловие к базовому сценарию

Создана новая конфигурация, соответствующая по набору модулей и модулей данных входной программной системе или пользователь получил сообщение об ошибке.

2.3. Вариант использования "Сохранение текущего состояния конфигурации"

2.3.1. Базовый сценарий

Состояние конфигурации на текущий момент может быть сохранено на носитель данных.

2.3.2. Постусловие к базовому сценарию

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

2.4. Вариант использования "Загрузка сохраненной конфигурации"

2.4.1. Базовый сценарий

В любой момент, по записи на носителе данных может быть восстановлена конфигурация с состоянием на момент сохранения.

2.4.2. Постусловие к базовому сценарию

В системе появляется сохраненная конфигурация с состоянием на момент сохранения, либо пользователь получил сообщение об ошибке.

2.5. Вариант использования "Внесение заданного модуля в конфигурацию"

2.5.1. Базовый сценарий

В существующую конфигурацию может быть внесен новый программный модуль, либо модуль данных.

2.5.2. Постусловие к базовому сценарию

В существующую конфигурацию внесен заданный модуль, либо пользователь получил сообщение об ошибке.

2.6. Вариант использование "Удаление модуля из конфигурации"

2.6.1. Базовый сценарий

Любой модуль присутствующий в конфигурации может быть удален из нее.

2.6.2. Постусловие к базовому сценарию

В конфигурации отсутствует указанный для удаления модуль, либо пользователь получил сообщение об ошибке.

3. Компонента управления сессиями анализа

3.1. Вариант использования "Создание новой сессии анализа"

3.1.1. Базовый сценарий

Создается новая сессия анализа с заданным идентификатором. Начальное состояние модели программной системы копируется из конфигурации.

3.1.2. Постусловие к базовому сценарию

Создана новая сессия анализа. Состояние модели соответствует состоянию модели в конфигурации. История сессии пустая. Либо пользователь получил сообщение об ошибке.

3.2. Вариант использования "Закончить сессию анализа"

3.2.1. Базовый сценарий

Завершается сессия анализа, по итогам сессии пользователь получает возможность создать новый тест в тест-плане. Сессия архивируется и закрывается для модификации.

3.2.2. Постусловие к базовому сценарию

Указанная сессия заархивирована. Создан новый тест в тест-плане. Либо пользователь получил сообщение об ошибке.

3.3. Вариант использования "Удалить сессию анализа"

3.3.1. Базовый сценарий

Указанная сессия анализа (открытая или заархивированная) удаляется из конфигурации. Если по результатам сессии был создан тес в тест-плане, то он так же удаляется.

3.3.2. Постусловие к базовому сценарию

Указанной сессии и полученных из нее тестов не существует в конфигурации, либо пользователь получил сообщение об ошибке.

4. Компонента управления сессией анализа

4.1. Вариант использования "Добавление точки модификации контекста"

4.1.1. Базовый сценарий

Контекст любого из уровней: ОС, конфигурации, инструкции, может быть модифицирован добавлением точки модификации контекста.

4.1.2. Постусловие к базовому сценарию

Изменена модель программной системы текущей сессии анализа. Контекст всех конструкций модели, лежащих ниже в области видимости изменен в соответствии с добавленной точкой. В истории сессии анализа добавилась запись о добавлении заданной точки модификации.

4.2. Вариант использования "Удаление точки модификации контекста"

4.2.1. Базовый сценарий

Любая точка модификации контекста любого уровня может быть удалена.

4.2.2. Постусловие к базовому сценарию

Изменена модель программной системы текущей сессии анализа. Контекст всех конструкций модели, лежащих ниже в области видимости изменен в соответствии с удалением точки. В истории сессии анализа добавилась запись об удалении заданной точки модификации.

4.3. Вариант использования "Получение контекста вычисления для указанной конструкции"

4.3.1. Базовый сценарий

Для любой конструкции модели программной системы текущей сессии анализа может быть получен контекст ее вычисления.

4.3.2. Постусловие к базовому сценарию

Пользователь получил информацию о контексте заданной конструкции.

4.4. Вариант использования "Вычисление произвольной конструкции"

4.4.1. Сценарий успешного вычисления

В случае если текущий контекст заданной инструкции достаточен для ее вычисления, конструкция может быть вычислена и заменена на результат своего вычисления.

4.4.2. Постусловие к сценарию успешного вычисления

Изменена модель программной системы текущей сессии анализа. Заданная конструкция заменена результатом вычисления. В истории сессии анализа добавилась запись о вычислении конструкции.

4.4.3. Сценарий неуспешного вычисления

В случае если текущий контекст недостаточен для вычисления заданной конструкции, пользователь получает сообщение об ошибке.

4.4.4. Постусловие к сценарию неуспешного вычисления

Пользователь получил сообщение об ошибке. История текущей сессии анализа не модифицирована. Модель программной системы текущей сессии анализа не модифицирована.

4.5. Вариант использования "Пошаговая интерпретация кода"

4.5.1. Базовый сценарий

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

4.5.2. Постусловие к базовому сценарию

Модель программной системы не содержит ни одной исполняемой инструкции. История текущей сессии содержит все шаги интерпретации в порядке выполнения.

4.6. Вариант использования "Анализ потока данных"

4.6.1. Базовый сценарий

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

4.6.2. Постусловие к базовому сценарию

Пользователь получил информацию о зависимых от данного символа контекста в указанной точке модели.

4.7. Вариант использования "Анализ покрытия"

4.7.1. Базовый сценарий

Для любой заданной последовательности модификаций модели програмнной системы текущей сессии анализа может быть указан набор конструкций модели, которые затронуты/не затронуты этой последовательностью модификаций.

4.7.2. Постусловие к базовому сценарию

Пользователь получил информацию о затронутых/не затронутых конструкциях модели программной системы для указанной последовательности модификаций.

4.8. Вариант использования "Экспорт состояния текущей сессии анализа в программную систему на указанном языке программирования"

4.8.1. Базовый сценарий

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

4.8.2. Постусловие к базовому сценарию

Сформированы исходные коды программной системы идентичные состоянию текущей сессии анализа на момент экспорта.

4.9. Вариант использования "Анализ зависимостей конструкции"

4.9.1. Базовый сценарий

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

4.9.2. Постусловие к базовому сценарию

Пользователь получил информацию о необходимых для вычисления заданной конструкции символах, либо сообщение об ошибке.

5. Компонента создания отчетов

5.1. Вариант использования "Создание теста по результату сессии анализа"

5.1.1. Базовый сценарий

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

5.1.2. Постусловие к базовому сценарию

По выбранным пользователем результатам вычисления заданной сессии анализа сформирован тест. Полученный тест добавлен в тест-план конфигурации.