Основы событийно ориентированного программирования

23. Событийно-ориентированное программирование.

Событийно-ориентированное программирование (event-driven programming) — это парадигма программирования, в которой выполнение программы определяется событиями — действиями пользователя (клавиатура, мышь), сообщениями других программ и потоков, событиями операционной системы (например, поступлением сетевого пакета).

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

Событийно-ориентированное программирование, как правило, применяется в трех случаях:

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

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

Как правило, в реальных задачах оказывается недопустимым длительное выполнение обработчика события, поскольку при этом программа не может реагировать на другие события.

При каждом движении мыши, нажатии на ее кнопки или клавиши на клавиатуре генерируется событие. События могут также генерироваться системным таймером или пользовательскими программами. Существуют также «визуальные» события: например, сдвинув или закрыв одно из окон, мы открыли часть окна, находившегося внизу. Этому окну посылается событие, говорящее, что ему нужно перерисовать часть себя.

Каждое событие представляет собой структуру данных, которая содержит код, обозначающий тип события: движение мыши, нажатие кнопки и т.д., а также поля, различные для различных типов событий: для «мышиных» событий это текущие координаты мыши и битовая маска, обозначающая состояние кнопок (нажата/отпущена). Для клавиатурных событий это код нажатой клавиши — обычно, ASCII для алфавитноцифровой клавиатуры и специальные коды для стрелок и других «расширенных» клавиш — и битовая маска, обозначающая состояние различных модификаторов, таких как SHIFT, CNTRL, ALT, и т.д. для визуальных событий это координаты прямоугольника, который нужно перерисовать, и так далее.

Читайте также:  Среда программирования jupiter notebook

Все события помещаются в очередь в порядке их возникновения.

В системе существует понятие обработчика событий. Обработчик событий представляет собой об ект, то есть структуру данных, с которой связано несколько программных модулей — методов. Один из методов вызывается при поступлении события и называется callback (дословно — «вызов назад»).

Представим себе простой об ект, такой как меню. При нажатии на кнопку мыши в области этого меню вызывается callback. Он разбирается, какой из пунктов меню был выбран, и вызывает соответствующую функцию обработки этого пункта. Таким образом, вместо последовательно исполняющейся программы, время от времени вызывающей систему для исполнения той или иной функции, мы получаем набор callback’ов, вызываемых системой в соответствии с желаниями пользователя. Отсюда, видимо, и происходит термин «callback» — это «системный вызов, идущий в обратном направлении».

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

33. Бизнес-процесс. Средства анализа и моделирования. Автоматизация бизнес-процессов.

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

Существуют три вида бизнес-процессов:

  1. Управляющие — бизнес-процессы, которые управляют функционированием системы. Примером управляющего процесса может служить Корпоративное управление и Стратегический менеджмент.
  2. Операционные — бизнес-процессы, которые составляют основной бизнес компании и создают основной поток доходов. Примерами операционных бизнес-процессов являются Снабжение,Производство, Маркетинг и Продажи.
  3. Поддерживающие — бизнес-процессы, которые обслуживают основной бизнес. Например, Бухгалтерский учет, Подбор персонала, Техническая поддержка, АХО.

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

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

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

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

Одним из методов анализа текущей деятельности является составление модели бизнес-процесса «как есть» (англ. as is). После этого модель бизнес-процесса подвергается критическому анализу или обрабатывается специальным программным обеспечением. По результатам анализа формируется модель бизнес-процесса «как должно быть» (англ. to be) и план мероприятий по внедрению необходимых изменений.

Существует множество нотаций, применяемых для моделирования бизнес-процессов, например:

Источник

Событийно-ориентированное программирование.

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

Событийно-ориентированное программирование, как правило, применяется в следующих случаях:

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

    Событийно-ориентированное программирование применяется в серверных приложениях для решения проблемы масштабирования на 10 тыс. одновременных соединений и более. В серверах, построенных по модели «один поток на соединение», проблемы с масштабируемостью возникают по следующим причинам:

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

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

      Разные языки программирования поддерживают СОП в разной степени. Наиболее полной поддержкой событий обладают следующие языки:

        • Perl
        • PHP
        • Java
        • Delphi
        • ActionScript 3.0
        • C# (события event),
          • JavaScript (действия пользователя)

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

          Многопоточное программирование. Процесс и поток выполнения. Средства синхронизации потоков.

          Многопоточность — свойство платформы (например, операционной системы, виртуальной машины и т.д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительно машины. Такие потоки называют потоками выполнения

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

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

          Источник

          Вступительные испытания в магистратуру / 09.04.01 / Ответы на экзамен / МАГИСТРАТУРА 2017 / Voprosy_po_faylam / 23. Событийно-ориентированное программирование

          Событийно-ориентированное программирование — это парадигма программирования, в которой выполнение программы определяется событиями — действиями пользователя (клавиатура, мышь), сообщениями других программ и потоков, событиями операционной системы (например, поступлением сетевого пакета).

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

          Событийно-ориентированное программирование, как правило, применяется в трех случаях:

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

          Применение в серверных приложениях

          Событийно-ориентированное программирование применяется в серверных приложениях для решения проблемы масштабирования на 10000 одновременных соединений и более.

          В серверах, построенных по модели «один поток на соединение», проблемы с масштабируемостью возникают по следующим причинам:

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

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

          Разные языки программирования поддерживают СОП в разной степени. Наиболее полной поддержкой событий обладают следующие языки:

          • Perl (события и демоны DAEMON, и их приоритеты PRIO),
          • Delphi (язык программирования),
          • ActionScript 3.0,
          • C# (события event),
          • JavaScript (действия пользователя).

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

          Источник

Оцените статью