Компилятор с языка анализа задач на язык действий пользователя: семантический анализ
Промежуточное представление текста программы – синтаксически, семантически эквивалентный исходному языку набор данных, над которым выполняется дальнейший анализ. Исследование логической схемы базы данных для хранения информации об узлах дерева целей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 01.02.2019 |
Размер файла | 247,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Размещено на http://www.allbest.ru
Для описания графического пользовательского интерфейса (ГПИ) интерактивных программных систем на различных этапах его разработки используются различные нотации. Согласно методике создания ГПИ, предложенной автором в работе [2], на этапе сбора и анализа требований к ГПИ применяется язык анализа задач (ЯАЗ) на базе нотации GOMS (Goals, Operators, Methods, Selection rules) [2], на этапе проектирования ГПИ - язык действий пользователя (ЯДП) на базе нотации UAN (User Action Notation) [2]. Описание ГПИ на ЯАЗ отражает в терминах целей, методов, операторов пользовательское видение (с учётом собственных знаний, умений, опыта, пожеланий) решения поставленной задачи в ходе диалога с программной системой. По сути, это является спецификацией требований к ГПИ. ЯДП описывает ГПИ в виде набора взаимодействующих задач и в виде реакции программной системы на действия пользователя в процессе диалога.
По описанию ГПИ на ЯАЗ может быть получена первоначальная («черновая») спецификация ГПИ на ЯДП, которая в дальнейшем будет корректироваться с учётом особенностей ЯДП. Соответствующий компилятор (с ЯАЗ на ЯДП) позволит ускорить процесс преобразования одной спецификации ГПИ в другую.
Важным компонентом компилятора является блок семантического анализа [1], выполняющий проверку контекстных условий в синтаксически верных конструкциях языка. О возможном варианте семантического анализатора компилятора с ЯАЗ на ЯДП, пойдёт речь ниже.
Семантика языка анализа задач.
Лексика и синтаксис ЯАЗ изложены в работах автора, в частности, [2, 3]. Более детально остановимся на семантике ЯАЗ. Для этого введём понятие правильного выражения.
Поскольку ЯАЗ является языком спецификации (в нём отсутствуют вычисления значений выражений), под правильным выражением на ЯАЗ будем понимать синтаксически верную языковую конструкцию, изменяемые элементы которой (например, названия целей, методов, формулировки условий и т.п.) принадлежат ЯАЗ, т.е. состоят из символов алфавита ЯАЗ.
Опираясь на уточнённый синтаксис ЯАЗ [4], а также понятие правильного выражения на ЯАЗ, опишем семантику каждой синтаксической конструкции ЯАЗ.
1. Базовыми случаями правильных выражений на ЯАЗ являются операторы: Нажать_кнопку_мыши, Отпустить_кнопку_мыши, Дважды_нажать_кнопку_мыши, Переместить_курсор Позиция, Нажать_клавишу_клавиатуры [Клавиша], Отпустить_клавишу_клавиатуры [Клавиша].
2. Описание методов.
Если Оператор1, Оператор2, …, Операторn - это операторы ЯАЗ (перечисленные выше), то описание базового метода достижения цели или выполнения более обобщенного метода вида:
2.1. Метод: Название метода;
[Оператор1;
Оператор2;
…
Операторn;]
Проверить_результат.
является правильным выражением на ЯАЗ для последовательного выполнения операторов.
2.2. Метод: Название метода;
[Цикл: [Условие: Оператор;]; ]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим многократному выполнению оператора (ноль, один или более раз).
2.3. Метод: Название метода;
[Выбор: [Условие1: Оператор1;
Условие2: Оператор2;
…
Условиеn: Операторn; ]; ]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим исполнению одного из возможных операторов, в зависимости от истинности условия. По аналогии вводятся правильные выражения для методов с подметодами. Если Метод1,Метод2, …, Методn - это базовые методы (перечисленные выше) и Методi = Метод: Название методаi, то описание метода достижения некоторой цели или выполнения более обобщенного метода вида:
2.4. Метод: Название метода;
[Метод1;
Метод2;
…
Методn;]
Проверить_результат.
является правильным выражением на ЯАЗ для последовательного выполнения подметодов.
2.5. Метод: Название метода;
[Цикл: [Условие: Метод;]; ]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим многократному выполнению подметода (ноль, один или более раз).
2.6. Метод: Название метода;
[Выбор: [Условие1: Метод1;
Условие2: Метод2;
…
Условиеn: Методn; ]; ]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим исполнению одного из возможных подметодов, в зависимости от истинности условия.
По индукции понятие правильного выражения на ЯАЗ можно распространить на описание метода с произвольной степенью вложенности подметодов.
3. Подобным образом вводится понятие правильного выражения для базовых целей, состоящих только из методов. Если Метод1,Метод2, …, Методn - это методы и Методi = Метод: Название методаi, то описание базовой цели для достижения некоторой более общей цели вида:
3.1. Цель: Название цели;
[Метод1;
Метод2;
…
Методn;]
Проверить_результат.
является правильным выражением на ЯАЗ для последовательного выполнения методов.
3.2. Цель: Название цели;
[Цикл: [Условие: Метод;]; ]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим многократному выполнению метода (ноль, один или более раз).
3.3. Цель: Название цели;
[Выбор: [Условие1: Метод1;
Условие2: Метод2;
…
Условиеn: Методn; ]; ]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим исполнению одного из возможных методов, в зависимости от истинности условия.
По аналогии вводятся правильные выражения для целей с подцелями. Если Цель1,Цель2,…, Цельn - это базовые цели (перечисленные выше) и Цельi = Цель: Название целиi, то описание достижения некоторой более обобщенной цели вида:
3.4. Цель: Название цели;
[Цель1;
Цель2;
…
Цельn;]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим последовательному достижению подцелей.
3.5. Цель: Название цели;
[Цикл: [Условие: Цель;]; ]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим многократному достижению подцели (ноль, один или более раз).
3.6. Цель: Название цели;
[Выбор: [Условие1: Цель1;
Условие2: Цель2;
…
Условиеn: Цельn; ]; ]
Проверить_результат.
является правильным выражением на ЯАЗ, соответствующим достижению одной из возможных подцелей, в зависимости от истинности условия.
По индукции понятие правильного выражения на ЯАЗ можно распространить на описание цели с произвольной степенью вложенности подцелей. Важно отметить, что на нижнем уровне иерархии целей всегда располагаются только базовые цели.
Таким образом, семантически корректное описание ГПИ на ЯАЗ представляет собой набор правильных выражений, начинающийся с единственной главной цели и заканчивающийся базовыми методами, в котором:
1) названия целей (методов) уникальны, т.е., отсутствуют описания целей (методов) с одинаковыми названиями и различными способами их достижения (выполнения);
2) отсутствуют так называемые «висячие» цели (методы), т.е., для всех целей (методов) определены базовые методы их достижения (выполнения).
Более того, в рамках компиляции с ЯАЗ на ЯДП, следует ввести дополнительное семантическое ограничение, согласно которому названия целей и методов в спецификации ГПИ на ЯАЗ должны быть уникальны, поскольку и цели и методы ЯАЗ будут представлены задачами на ЯДП. При наличии цели и метода с одинаковыми названиями их невозможно будет различить на уровне задач.
На основании рассмотренной семантики и с учётом особенностей ЯАЗ, учтённых на этапах лексического и синтаксического анализа [3], семантический анализ спецификации ГПИ на ЯАЗ заключается в проверке уникальности названий целей и (или) методов, наличия/ отсутствия «висячих» целей (методов), содержания конструкций цикла и выбора: в них могут быть только цели и методы (для целей) или только методы и операторы (для методов).
Поскольку для проведения перечисленных семантических проверок необходимы сведения обо всей спецификации ГПИ на ЯАЗ, следует рассмотреть вопрос об её возможном промежуточном представлении.
Промежуточное представление спецификации ГПИ.
Промежуточное представление текста программы - это синтаксически и семантически эквивалентный исходному языку набор данных, над которым выполняется дальнейший анализ.
Из различных форм промежуточного представления [1,4], в нашем случае целесообразно использовать базу данных (БД), например, реляционную.
При этом удобно хранить информацию о большом количестве узлов дерева целей, а получение сведений о них сводится к выполнению запросов. Присущую БД избыточность информации можно сократить путём приведения её схемы к нормализованному виду [5].
Примерный вариант такой схемы БД представлен на рисунке 1.
Рисунок 1 - Логическая схема БД для хранения информации об узлах дерева целей
Отношение «Вид_Узла» хранит информацию о разновидностях узлов в нотации GOMS: цель, метод, цикл, выбор; отношения «Узел_Дерева», «Родитель», «Потомок» - сведения о конкретном узле, его родителях и потомках. Узел может иметь как несколько потомков, так и несколько, поэтому информация о них вынесена в отдельные отношения. Узел выбора содержит отдельное условие для каждого узла-потомка. Сведения об этих альтернативных условиях и хранятся в отношении «Альтернатива».
Представленная на рисунке 1 схема БД для промежуточного представления спецификации ГПИ на ЯАЗ находится в третьей нормальной форме (3НФ) [5]. программа логический синтаксический
Представленные ранее семантические проверки спецификации можно выполнить с помощью запросов к БД.
1. Проверку на уникальность названий целей и методов можно свести к поиску узлов-дубликатов. Тогда запрос к БД может быть сформулирован следующим образом: вывести названия узлов целей и методов, для которых существуют узлы-дубликаты. Вариант текста запроса на языке запросов SQL представлен на рисунке 2.
Рисунок 2 - Текст запроса для поиска дубликатов целей и методов
Для ускорения поиска по текстовым полям можно использовать механизмы БД, например, создание индекса по этим полям.
2. Проверку на наличие «висячих» узлов можно свести к поиску узлов без родителей и к поиску узлов, которые не являются операторами, и у которых нет потомков. Для первого случая текст запроса на языке SQL приведён на рисунке 3, для второго - на рисунке 4.
Рисунок 3 - Текст запроса для поиска узлов без родителей
Рисунок 4 - Текст запроса для поиска узлов-неоператоров без потомков
3. Проверку на наличие в узлах выбора и цикла только целей и методов (для целей) и только методов и операторов (для методов) можно свести к поиску узлов выбора и цикла, у которых родителями являются узлы-цели или узлы-методы, а среди потомков встречается хотя бы один узел-оператор (для целей) или узел-цель (для методов). Запросы для узлов-целей и узлов-методов идентичны, различаются только некоторыми условиями. Вариант запроса для узлов целей представлен на рисунке 5. На этом же рисунке курсивом в фигурных скобках приведены значения условий для узлов-методов.
По результатам представленных выше запросов можно обнаружить узлы дерева целей, нарушающие контекстные условия ЯАЗ.
Рисунок 5 - Текст запросов для проверки конструкций выбора и цикла
По семантически верному описанию ГПИ на ЯАЗ, используя концептуальные правила трансляции [2], можно получить первоначальную спецификацию ГПИ на ЯДП, в которую в дальнейшем могут быть внесены необходимые уточнения и корректировки по взаимодействию задач и действий пользователя (в соответствии со спецификой ЯДП).
Список литературы
1. Ахо, Альфред, В. Компиляторы: принципы, технологии и инструменты/ Альфред. В. Ахо, Рави Сети, Джеффри Д. Ульман: Пер. с англ. - М.: Издательский дом «Вильямс», 2003. - 768 с.; ил.
2. Конюхова, О.В. Графический пользовательский интерфейс для автоматизированных систем раскроя изделий сложной формы [Текст]: дис. канд. техн. наук 05.13.06: защищена 27.06.206: утв. 13.10.2006/ Конюхова О.В.- Орёл, 2006.- 171 с.
3. Конюхова, О.В. Синтаксис языка анализа задач для спецификации графического пользовательского интерфейса интерактивных компьютерных систем [Электронный ресурс]/ О.В. Конюхова// Методологические и теоретические аспекты создания и развития информационных технологий: Материалы V международной научно-технической конференции «Информационные технологии в науке, образовании и производстве.- Орёл, 2012.- 1 эл.опт. диск (CD-ROM): цв.
4. Зубов, М.В. Применение универсальных промежуточных представлений для статического анализа исходного программного кода [Электронный ресурс]/ М.В. Зубов, А.Н. Пустыгин, Е.В. Старцев // Доклады ТУСУРа,2013.- №1 (27).- С. 64-68.- Режим доступа: https://journal.tusur.ru/storage/45570/064.pdf?1466656372
5 Дейт, К., Дж. Введение в системы баз данных, 8-е издание.: Пер. с англ. - М.: Издательский дом «Вильямс», 2005. - 1328 с.: ил. - Парал. тит. англ.- ISBN 5-8459-0788-8.
Размещено на Allbest.ru
...Подобные документы
Эволюция концепций баз данных. Требования, которым должна удовлетворять организация базы данных. Модели представления данных. Язык SQL как стандартный язык баз данных. Архитектуры баз данных. Среда Delphi как средство для разработки СУБД.
дипломная работа [278,9 K], добавлен 26.11.2004- Создание базы данных автомобилестроительного предприятия в виде настольного приложения на языке Java
Разработка логической схемы базы данных автомобилестроительного предприятия. Инфологическое моделирование системы. Создание графического интерфейса пользователя для базы данных средствами языка программирования Java. Тестирование программных средств.
курсовая работа [2,3 M], добавлен 16.12.2013 Обзор существующих систем управления базы данных. Основные характеристики языка программирования MS VB 2010. Содержание базы данных для хранения информации об успеваемости. Программирование системных модулей программы, содержание интерфейса пользователя.
курсовая работа [1,1 M], добавлен 22.02.2014Описание процедуры выбора структуры хранения данных. Программная реализация одномерного неоднородного массива. Представление бинарного дерева в виде динамической структуры данных. Изучение способов поиска в упорядоченном дереве. Содержание базы данных.
практическая работа [850,0 K], добавлен 16.04.2015Базы данных как совокупность структур, предназначенных для хранения больших объемов информации и программных модулей. Основные особенности создания базы данных автобусного парка, анализ этапов проектирования. PHP как скриптовый язык программирования.
курсовая работа [1,9 M], добавлен 04.04.2013Основные подходы к организации баз данных, компоненты языка Delphi, используемые для их построения. Разработка программного обеспечения - базы данных "Школа", предназначенной для хранения информации об учащихся, их успеваемости по различным дисциплинам.
курсовая работа [739,8 K], добавлен 14.07.2012Главные составные части среды программирования. Требование к надежности, к составу и параметрам технических средств. Табличные базы данных. Выбор и обоснование выбора системы управления базами данных. Высокопроизводительный компилятор в машинный код.
курсовая работа [793,5 K], добавлен 31.01.2016Автоматизация работы пользователя по поиску, просмотру и редактированию информации о работниках, соискателях, вакансиях. Построение информационно-логической и физической моделей данных. Создание базы данных в СУБД MS SQL Server. Описание SQL запросов.
курсовая работа [1,8 M], добавлен 07.08.2013Составление схемы концептуальной модели данных. Разработка структуры реляционной базы данных и интерфейса пользователя. Особенности главных этапов проектирования базы данных. Способы реализации запросов и отчетов. Специфика руководства пользователя.
курсовая работа [186,9 K], добавлен 18.12.2010Базы данных - важнейшая составная часть информационных систем. Проектирование базы данных на примере предметной области "Оргтехника". Сбор информации о предметной области. Построение информационно-логической модели данных. Разработка логической структуры.
курсовая работа [318,6 K], добавлен 24.12.2014Реализация программы в виде класса, используя для хранения информации контейнеры стандартной библиотеки шаблонов (STL) языка C++. Создание новой базы данных. Вывод информации о всех компьютерах. Удаление элементов контейнера, их поиск по критериям.
курсовая работа [97,4 K], добавлен 10.01.2015Информационная система – совокупность организационных, технических и программных средств, объединенных в единую систему для сбора, хранения, обработки, выдачи необходимой информации. Анализ особенностей инфологической, логической моделей базы данных.
курсовая работа [675,2 K], добавлен 16.09.2017Базы данных как совокупность структур, предназначенных для хранения больших объемов информации и программных модулей. Анализ способов создания базы данных для учета книг личной библиотеки, особенности использования языка программирования C++Builder.
курсовая работа [8,1 M], добавлен 10.01.2014Разработка и внедрение базы данных в управление парком культуры и отдыха. Учет посетителей парка отдыха. Определение логической структуры базы данных. Технология ввода в базу данных входной информации. Разработка диалогового приложения пользователя.
курсовая работа [1,2 M], добавлен 27.11.2011Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.
курсовая работа [532,7 K], добавлен 20.07.2014Разновидности систем управления базами данных. Анализ предметной области. Разработка структуры и ведение базы данных. Структурированный язык запросов SQL. Организация выбора информации из базы данных. Общие принципы проектирования экранных форм, макросов.
курсовая работа [3,1 M], добавлен 26.02.2016Исследование значения информации и информационных услуг в современном мире. Изучение истории хранения и обработки информации. Проектирование инфологической модели базы данных. Реляционная модель баз данных. Домены и отношения. Реляционное исчисление.
курсовая работа [47,9 K], добавлен 13.07.2015Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.
курсовая работа [2,1 M], добавлен 08.06.2012Проектирование логической структуры базы данных методом нормальных форм, сущность связь. Сравнительный анализ спроектированной базы данных и базы данных существующих информационных систем. Выбор и обоснование состава технических и программных средств.
курсовая работа [3,0 M], добавлен 22.12.2014Разработка информационно-логической схемы базы данных для горнолыжного курорта. Выделение объектов и информационных процессов в данной области. Реляционная модель базы данных. Разработка интерфейса пользователя. Создание форм, отчетов и запросов.
курсовая работа [4,3 M], добавлен 17.03.2014