Разработка блока управления активностью графического пользовательского интерфейса методом передачи продолжения
Разработка графического пользовательского интерфейса. Определение сущности формальных методов в программировании. Рассмотрение математических нотаций и рассуждений. Применение формальных методов для описания графического пользовательского интерфейса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 15.08.2020 |
Размер файла | 25,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http: //www. allbest. ru/
Орловский государственный технический университет Россия
Разработка блока управления активностью графического пользовательского интерфейса методом передачи продолжения
Аспирант кафедры «Информационные системы» Ларин В.В.,
научный руководитель канд. техн. наук, доцент Гордиенко А.П.
Annotatіon
In this paper we consider the formal methods for design graphical user interfaces (GUI). As a formal notation we take the process algebra Communication Sequential Processes (CSP). The implementation of processes expressed in terms of CSP we propose to perform by means of Continuation Passing Style (CPS). We choice CPS, because it is a convenient approach to the realization of parallel operator in CSP notation, which describes the concurrent processes.
Введение.
В последнее время все больше и больше исследований в области информационных систем касаются формальных методов при разработке программного обеспечения [1, 2]. Чем же привлекательны формальные методы? С этим вопросом мы попробуем разобраться в данной работе. Прежде всего, необходимо разобраться с термином «формальные методы». Как таковое определение формальных методов в программирование дать довольно сложно, поскольку все языки программирования являются формальными, поэтому все методы написания программ можно назвать формальными. При этом под «формальными методами» подразумевается не просто написание программ на каком-либо языке программирования. Многие авторы определяют формальные методы как методы разработки программ, в которых применяется математический аппарат в виде математической нотации и математических рассуждений.
Формальных методов существует большое количество. Среди них, как наиболее интересные и близкие к нашим исследованиям хотелось бы выделить такие, как конечный автомат (Finite State Machine - FSM, Finite Automata - FA), сети Петри [3], UAN (User Action Notation) [4], языки описания взаимодействующих процессов CSP (Communicating Sequential Processes) К. А. Хоара (C. A. Hoar) [5] и CCS Р. Милнера (R. Milner) [6].
Несмотря на большое количество теоретических работ по формальным методам, их практическое применение до настоящего времени было ограничено. Исключение составляют лишь конечные автоматы, которые чаще других применяются при разработке программного обеспечения. Причем особенно редко встречается на практике применение формальных методов для описания графического пользовательского интерфейса.
В данной работе, в качестве формального метода для разработки графического пользовательского интерфейса выбран язык описания взаимодействующих процессов - CSP, а в качестве средства реализации основных операторов CSP - метод передачи продолжений.
пользовательский интерфейс формальный программирование
1. Использование CSP для описания пользовательского интерфейса.
В этой части хотелось бы кратко рассмотреть язык CSP.
CSP - это язык, формально описывающий работу конкурентных процессов. Эти процессы могут участвовать в событиях и быть синхронизованы с другими процессами. Синхронизация процессов происходит посредством их коммуникации.
Опишем основы нотации CSP.
Процессы будем обозначать заглавными латинскими буквами, события - строчными. В CSP возможны следующие конструкции:
– Префикс. Для события e и процесса P e;P означает процесс, который участвует в событии e, а затем ведет себя как процесс P.
– Последовательная композиция. Последовательная композиция процессов A и B, A>>B, это успешное завершение процесса A, после чего этот процесс ведет себя как B. Следует отметить, что последовательная композиция соединяет два процесса, тогда как префикс соединяет события внутри процесса.
– Выбор. Для событий a и b и процессов A и B, выбор a;A[]b;B, представляет собой процесс, в котором выбирается различное продолжение (A или B) в зависимости входного события.
– Рекурсия. В CSP отсутствуют циклы, но присутствует возможность определения рекурсии. Выражение мX?F(X) описывает процесс, с именем X, который содержит в себе процесс F(X), включающий в себя (рекурсивно) X.
– Параллельная композиция. Конкурентность в CSP выражается оператором параллельной композиции A||B, для процессов A и B.
– Отключение. Оператор отключения A[>B обозначает процесс, который при появлении события, в котором участвует процесс В, завершает процесс A и ведет себя как A.
– Прерывание. A ? B означает, что при появлении события, в котором участвует процесс В, прерывается процесс A, этот процесс ведет себя как B и после успешного завершения возврашается к прерванному A.
В CSP так же есть зарезервированные слова, для обозначения успешно завершившегося процесса - exit; и для процесса, не способного ни к каким действиям - stop.
В языке CSP события - это объекты, служащие для синхронизации процессов. Если событие отражает синхронизацию процесса с окружением, то есть с пользователем, то в момент его совершения происходит ввод данных от пользователя к функциональному ядру или вывод на экран данных, хранящихся в функциональном ядре. Если синхронизируются два процесса, то событие одновременно включает в себя передачу данных между процессами, таким образом обозначение события может быть одновременно и обозначением канала, по которому передаются данные. В этом случае событие записывается парой c.v, где c - название канала, v - значение, передаваемое по каналу (сообщение). Множество всех сообщений, которыми может обмениваться процесс P по каналу c определяется следующим выражением:
с (P) = {v c.v (P)}
Если v с (P), то процесс который сначала передает по каналу c значение v, а затем ведет себя как процесс P, определяется так: (c!v ; P). Процесс, который готов получить значение переменной x по каналу c, а затем вести себя как процесс P(x), определяется в виде: (c?x ; P(x)). Таким образом, событие определяет потоки данных от пользователя к функциональному ядру и в обратном направлении.
Использование CSP для описания логики работы пользовательского интерфейса, представляет интерес в том, что операторы CSP с одной стороны они удобны для описания этой логики, а с другой стороны, их легко реализовать на функциональном языке программирования. Пример реализации основных операторов языка CSP на Лиспе приведен у Хоара [5].
2. Пример использования нотации CSP
Приведем пример использования CSP для описания логики работы пользовательского интерфейса.
Пусть у нас есть программа, которая отображает графические объекты (рисунок 1). Эти графические объекты можно создавать и перемещать. Чтобы переместить объект, сначала его нужно выбрать. Выбрать объект можно либо щелкнув на нем мышкой, либо введя его название с клавиатуры. Затем необходимо указать место перемещения. Это также можно сделать либо мышкой, либо с клавиатуры указав координаты. Для создания нового объекта необходимо ввести с клавиатуры команду «создать имя_объекта» и затем указать местоположение нового объекта.
Процесс работы программы представим тремя параллельными процессами:
Prog = PC ¦ Dialogue ¦ FC ,
где PC - компонента представления, процесс, генерирующий события; Dialogue - процесс логики диалога, который детально будет описан ниже; FC - функциональное ядро, процесс, управляющий списком графических объектов и стеком для временного хранения вводимых пользователем координат. События - каналы к функциональному ядру будут иметь названия fc-<команды>.
Размещено на http: //www. allbest. ru/
Рисунок 1 Пример графического пользовательского интерфейса
Таким образом процесс Dialogue можно определить следующим образом:
Dialogue = (Choice [] Move) [> Create
Здесь процесс Create отменяет все предыдущие действия по поремещению объекта (в часности, его выбор). Прооцесс выбора определяется как
Choice = (string?name || pick) >> fc_choice ; Dialogue
Процесс перемещения определяется как
Move = GetPos >> fc_move ; Dialogue
И процесс создания объекта можно представить в виде
Create = string?com >> GetPos >> fc_create ; Dialogue
Процесс GetPos - это процесс получения координат для перемещения существующего объекта или создания нового, этот процесс мы определим следующим образом:
GetPos = string?s ; fc_push!strtoXY(s) ; exit || loc?pos ; fc_push!pos ; exit
Таким образом мы описали некоторую абстрактную программу, имеющую графической интерфейс пользователя. Этот пример призван показать простоту и описания логики диалога графического пользовательского интерфейса на CSP. Так же стоит отметить приближенность этого описания к декларативным языкам программирования и, следовательно, человеческому языку. И при этом CSP - формальный язык и правила, написанные на нем можно транслировать в программу. При этом получившаяся программа может быть более безопасной, чем просто программа, написанная на императивном языке программирования. Это вытекает из того, что исходные правила на CSP можно проверить на возможность возникновения тупиковых ситуаций, соответствие программы ее функциональным требованиям.
3. Использование метода передачи продолжений
Как было сказано выше, существуют примеры реализации операторов CSP на функциональных языках. Но многие из этих примеров приводятся для того, чтобы показать возможность такой реализации, то есть они не всегда являются эффективными. Одной из основных проблем здесь является представление оператора параллельности. Дело в том, что при большом количестве процессов, работающих параллельно вопрос об эффективности их совместной работы является ключевым. Один из путей решения этой проблемы - это программы, использующие метод передачи продолжений (CPS - Continuation Passing Style) [7]. Метод передачи продолжений широко применяется для реализации различных механизмов, таких как исключения, сопрограммы, недетерминированные вычисления, многозадачность. Существуют исследования, показывающие применение продолжений при работе с процессами [8]. Мы полагаем, что применение метода передачи продолжений может быть эффективным при практической реализации операторов CSP, в частности оператора параллельности процессов. Преимущество использования метода передачи продолжений при описании параллельных процессов заключается в возможности приостановить процесс, при этом сохранив контекст, в котором он выполнялся и затем при необходимости возобновить его работу.
Параллельные процессы можно организовать в виде потоков (threads). Реализация потоков на основе продолжений описана в работе [9], в качестве языка программирования выбран функциональный язык Scheme [10], который по сути является одним из диалектов лиспа. Использование CSP и метода передачи продолжений мы считаем перспективным при разработке графического пользовательского интерфейса и намерены в дальнейшем развивать представленный в этой работе подход.
Заключение
Применение формальных методов при разработке программного обеспечения является достаточно мощным средством. При том, что как было отмечено во введении, в последнее время появляется много работ, посвященных формальным методам, еще недостаточно применяются формальные методы для разработки пользовательского интерфейса. Возможно, это связано с тем, во взаимодействии с пользователем существует много неформальных соображений [11]. Тем не менее, мы считаем, что это во-первых, перспективное направление, а во-вторых, область, в которой действительно необходимо использовать формальные методы, поскольку большинство ошибок в работе программ возникает именно при взаимодействии программы с пользователем.
Литература
1. А. П. Гордиенко. Модели графического пользовательского интерфейса // Вестник МЭИ. - 2003 . - №2 С. 83-90
2. J. Coutaz. Interface Homme-Ordinateur: Conception et Rйalisation. Dunod Informatique. - 1990.
3. J. L. Peterson. Petri nets. ACM Computing Surveys, 9(3):223-252, Sept. 1977.
4. H. R. Hartson, A. C. Siochi, D. Hix. The UAN: A user-oriented oriented representation for direct manipulation interface designs. ACM Translation on Information Systems, 8(3):181-203, 1990.
5. C. A. R. Hoare. Communicating Sequential Processes. Prentice Hall International Series in Computer Science, 1985.
6. R. Milner. Communication and concurrency. - Prentice Hall, 1989.
7. D. P. Friedman, C. T. Haynes, E. Kohlbecker, B. Duba. Programming with continuations. In Program Translations and Programming Environments, 263-274, 1985.
8. M. Wand. Continuation-based multiprocessing. In Proc. 1980 ACM Conference on Lisp and Functional Programming, 1980, 19-28.
9. S. Kumar, C. Bruggeman, R. K. Dybvig. Threads yield continuations. // Lisp and symbolic computation: An International Journal, 9, 001-019, 1997.
10. Sussman G.J., Steele G.L. SCHEME. An interpreter for extended lambda calculus // MIT, Artificial intelligence laboratory, AI Memo N 349, Massachusetts, 1975.
11. Боуэн Д.П., Хинчи М.Д. Десять заповедей формальных методов // Мир ПК. 1997. №10.
Размещено на Allbest.ru
...Подобные документы
Изучение правил проектирования (предоставление пользователю контроля над программой, уменьшение загрузки памяти, увеличение визуальной ясности, последовательность) и принципов разработки пользовательского интерфейса на примере программы "Tidy Start Menu".
курсовая работа [286,6 K], добавлен 27.04.2010Обзор мобильной ОС Android. Выбор инструментов и технологий. Проектирование прототипа графического интерфейса. Характеристика и описание пользовательского интерфейса. Проектирование и разработка базы данных. Определение списка необходимых разрешений.
курсовая работа [376,6 K], добавлен 13.09.2017Понятие и виды пользовательского интерфейса, его совершенствование с помощью новых технологий. Характеристика приборной панели управления современного автомобиля и пультов дистанционного управления. Использование клавиатуры, особенности интерфейса WIMP.
курсовая работа [1,4 M], добавлен 15.12.2011Изучение требований и реализации пользовательского интерфейса в среде Turbo Pascal. Разработка текстового, графического режимов работы дисплеев. Рассмотрение численных методов решения трансцендентных уравнений, их алгоритмизации и программирования.
шпаргалка [776,8 K], добавлен 07.05.2010Обобщенная структура и принципы функционирования экспертных систем. Выбор модели представления знаний. Разработка логического блока программы и графического пользовательского интерфейса. Текст программы и экспериментальная оценка результатов работы.
дипломная работа [2,4 M], добавлен 06.03.2013Разработка графического интерфейса для ввода начальных значений, отображения результатов и тестирования методов собственного класса на языке программирования С++. Подсветка цветом выбранных операндов в процессе их инициализации и вывода на дисплей.
курсовая работа [234,6 K], добавлен 27.12.2014Роль распределенных вычислительных систем в решении современных задач. Инструментальная система DVM для разработки параллельных программ. Средства построения формальной модели графического интерфейса. Требования к графическому интерфейсу DVM-системы.
курсовая работа [2,7 M], добавлен 15.10.2010Определение и виды пользовательского интерфейса как системы сопряжения пользователей с программами, принципы его разработки, используемые методы и приемы. Основные критерии и параметры оценки эффективности функционирования пользовательского интерфейса.
презентация [557,1 K], добавлен 06.10.2014Определение оптимального пути между контактными площадками. Возможность построения графического изображения поля трассировки. Разработка математической модели системы. Принцип волнового алгоритма. Проектирование пользовательского интерфейса, его схема.
контрольная работа [371,1 K], добавлен 19.01.2013Построение, исследование описательных и формальных информационных моделей. Применение электронных обучающих средств в современной системе образования. Обусловленность выбора средств разработки и языков программирования. Обзор пользовательского интерфейса.
дипломная работа [7,3 M], добавлен 09.02.2017Исследование базовых концепций программирования приложений под операционную систему Windows. Изучение истории создания универсального языка программирования Си. Разработка графического пользовательского интерфейса. Обзор правил игры и алгоритма работы.
курсовая работа [58,2 K], добавлен 09.11.2012Обоснование выбора языка и среды программирования. Обзор и анализ существующих программных решений. Разработка графического и пользовательского интерфейса. Алгоритм бинарного поиска. Методы добавления, удаления элемента из дерева и вывода на экран.
курсовая работа [1,3 M], добавлен 31.05.2016Общая характеристика игровых стратегий в жанре "башенная защита". Анализ GUI как графического пользовательского интерфейса, особенности его реализации. Математический подход в обеспечении игрового баланса. Реализация баланса в игре жанра башенной защиты.
курсовая работа [125,0 K], добавлен 16.07.2016Структура организации графического интерфейса, объявление и создание слушателей событий с помощью анонимных классов. Представление данных для таблицы – класс AbstractTableModel. Визуализация ячеек таблицы. Два основных типа потоков ввода-вывода в Java.
лекция [685,3 K], добавлен 01.05.2014Исследование вертикальных проекций яркости и размаха яркости. Программная реализация алгоритма автоматического анализа цифровых изображений номерных знаков с целью сегментации цифробуквенных символов. Разработка графического пользовательского интерфейса.
дипломная работа [1,5 M], добавлен 12.04.2013Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.
курсовая работа [1,3 M], добавлен 28.07.2013Понятие информационной культуры. Назначение и характеристики кэш-памяти. Каталог и его назначение в файловой системе. Особенности пользовательского графического интерфейса. Структура и принцип работы оператора цикла For. Построение диаграммы с областями.
контрольная работа [137,2 K], добавлен 08.06.2011Основание для разработки автоматизированной информационной системы "Будущий абитуриент". Технические требования к программному изделию. Порядок контроля и приемки продукта. Рассмотрение исходной базы данных. Описание интерфейса программного обеспечения.
дипломная работа [3,3 M], добавлен 08.02.2013Критерии и порядок выбора интерфейса веб-сайта. Характеристики, которые определяют успешность пользовательского интерфейса. Структура навигационной системы. Графический дизайн и выбор цветовой схемы. Техническая реализация интерфейса сайта на сегодня.
реферат [164,8 K], добавлен 24.02.2011Особенности процесса взаимодействия пользователя с компьютером. Графический интерфейс ОС Windows, его преимущества и недостатки. Основы простейшего SILK-интерфейса. Основные черты и специфика структуры WIMP-интерфейса. Общепринятые соглашения для меню.
реферат [26,8 K], добавлен 02.10.2012