Описание_применения. Серия Авторское приложение Приложение гиперсистема
![]()
|
-Преобразование блок-схем на язык ГераклСозданные в MS VISIO блок-схемы алгоритмов управления преобразуются в текст на языке ГЕРАКЛ программой Алгоритмы_Visio_Геракл. В дальнейшем текст алгоритма на языке ГЕРАКЛ преобразуется в программу на языке DELPHI, а также в визуальную программу на языке автоматного программирования SFC среды технологического программирования IsaGraf. Программа Алгоритмы_Visio_Геракл выполняет преобразование в текст на языке ГЕРАКЛ только одной блок-схемы, созданной на первой странице документа Алгоритм MS VISIO. Для преобразования любой другой блок-схемы нужно предварительно изменить порядок страниц, сделав нужную страницу первой. ![]() В последующих иллюстрациях показан описанный процесс преобразования блок-схемы алгоритма в текст на языке ГЕРАКЛ. Преобразуемые алгоритмы управления записываются в текстовый файл Алгоритмы. ![]() В окне программы Алгоритмы_Visio_Геракл представлен алгоритм NVIP на языке ГЕРАКЛ. Он записан также в текстовый файл Алгоритмы. Закрываем программу, ставим на первое место нужную страницу (алгоритм NVIP1), выходим с сохранением из MS VISIO, снова запускаем программу. Не очень удобно, но на каждой итерации можно работать с блок-схемами, а также редактировать при необходимости текстовый файл Алгоритмы. ![]() В окне программы Алгоритмы_Visio_Геракл представлен алгоритм NVIP1 на языке ГЕРАКЛ. Он дописан также в текстовый файл Алгоритмы. ![]() --Ввод табличных данных ТЗ![]() Из документа ТЗ считываются и записываются в виде текстовых файлов в папку Предметные конструкции модели:
Верификация Логических функций![]() Модуль верификации Верификация символов в логических функциях Как показано на рисунке 3.1, в исходное техническое задание были внесены некоторые изменения, которые перевели данные логические функций в состояние несоответствующее формальному описанию логической функции. ![]() Рисунок 4.1 – Фрагмент технического задания с внесенными изменениями Код функции для верификация символов в логических функциях представлен в листинге 4.1. function Verification.VerifyAll(key: string): Bool; var RegExp: TRegExpr; begin RegExp:=TRegExpr.Create; RegExp.Expression:='[A-Z0-9_(+*^)=]+'; RegExp.Exec(key); if RegExp.MatchLen[0]=key.Length then begin Result:=True; end else begin Result:=False; end; end; Листинг 4.1 – Функция верификации всех символов логической функции На рисунке 4.2 приведен пример вывода результата работы данной функции на экран при помощи созданного тестового приложения для проверки правильности выполнения функций программного средства. ![]() Рисунок 4.2 – Результат выполнения верификации символов логических функций Верификация структуры в логических функциях Как показано на рисунке 4.3, в исходное техническое задание были внесены некоторые изменения, которые перевели данные логические функций в состояние несоответствующее формальному описанию логической функции. ![]() Рисунок 4.3 – Фрагмент технического задания с внесенными изменениями На рисунке 4.4 приведен пример вывода результата работы данной функции на экран при помощи созданного тестового приложения для проверки правильности выполнения функций программного средства. ![]() Рисунок 4.4 – Результат выполнения верификации структуры логических функций Модуль валидации Модуль валидации предназначен для поиска дубликатов имен логических функций и поиска имен аргументов логических функций, не объявленных в именах логических функций (рисунок 3.14). Валидация имен логических функций (поиск дубликатов) Для поиска дубликатов имен были переписаны имена нескольких функций на уже существующие (рисунок 4.5). ![]() Рисунок 4.5 – Фрагмент технического задания с дубликатами функций На рисунке 4.6 приведен пример вывода результата работы данной функции на экран при помощи созданного тестового приложения для проверки правильности выполнения функций программного средства. ![]() Рисунок 4.6 – Результат выполнения валидации имен логических функций Валидация аргументов логических функций (поиск несуществующих имен аргументов) Для поиска несуществующих имен аргументов были переписаны имена нескольких функций на уже существующие (рисунок 4.5). l ![]() Рисунок 4.7 – Фрагмент технического задания, с несуществующими именами аргументов На рисунке 4.6 приведен пример вывода результата работы данной функции на экран при помощи созданного тестового приложения для проверки правильности выполнения функций программного средства. ![]() Рисунок 4.6 – Результат выполнения валидации аргументов логических функций Детальные итоги валидации можно увидеть в файле отчете расположенном возле документа с техническим заданием, после итогов валидации. В процессе работы программного средства формируется таблица с данными по всем логическим формулам в текущем документе. Файл, содержащий таблицу, находится возле документа с техническим заданием. Просмотреть все данные из этого файла можно при помощи специального редактора (sqlitebrowser). ![]() Рисунок 5.3 – Предварительный итог валидации Как поиск дубликатов имен логических функций, так и поиск имен аргументов логических функций не объявленных в именах логических функций обе эти функции требуют наличия структуры, хранящей в себе уникально идентифицированные имена всех функций. Структура такого хранилища достаточно проста и для хранения записей можно использовать файлы, но для удобства доступа к данных и облегчения выполнения функций верификации используется легковесная встраиваемая реляционная база данных – SQLite. SQLite — легковесная встраиваемая реляционная база данных. Слово «встраиваемый» означает, что SQLite не использует парадигму клиент-сервер, то есть движок SQLite не является отдельно работающим процессом, с которым взаимодействует программа, а предоставляет библиотеку, с которой программа компонуется и движок становится составной частью программы. Таким образом, в качестве протокола обмена используются вызовы функций (API) библиотеки SQLite. Такой подход уменьшает накладные расходы, время отклика и упрощает программу. SQLite хранит всю базу данных в единственном стандартном файле на том компьютере, на котором исполняется программа. Простота реализации достигается за счёт того, что перед началом исполнения транзакции записи весь файл, хранящий базу данных, блокируется; ACID-функции достигаются в том числе за счёт создания файла журнала. Необходимая таблица (рисунок 3.15) создаётся и заполняется при помощи набора функций: formSqliteTable – создает таблицу базы данных; insertSqliteTable – добавляет запись в таблицу; findDuplicates – осуществляет поиск дубликатов имен логических функций; findNotExNames – осуществляет поиск имен аргументов логических функций не объявленных в именах логических функций. ![]() Рисунок 3.15 – Список таблиц базы данных Файл-отчет По завершении работы функций формируется текстовый файл, содержащий более подробный отчет об ошибках (рисунок 3.18). В файле указывается следующее: имя проверенного документа; заголовок таблицы; ошибки верификации:
ошибки валидации:
Файл записывается по мере выполнения функций приложением и создается рядом с проверяемым техническим заданием. Имя каждого отчета состоит из имени документа и уникально идентифицируется приписыванием текущей даты к названию. ![]() Рисунок 5.4 – Расположение файла-отчета ![]() Рисунок 3.18 – Файл-отчет |