Методы и инструменты декларативного программирования динамических Web-узлов и приложений тема диссертации и автореферата по ВАК РФ 05.13.11, кандидат наук Кейно, Павел Петрович

  • Кейно, Павел Петрович
  • кандидат науккандидат наук
  • 2017, Москва
  • Специальность ВАК РФ05.13.11
  • Количество страниц 212
Кейно, Павел Петрович. Методы и инструменты декларативного программирования динамических Web-узлов и приложений: дис. кандидат наук: 05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей. Москва. 2017. 212 с.

Оглавление диссертации кандидат наук Кейно, Павел Петрович

Оглавление

Глоссарий

Введение

1 Анализ технологий и методов Web-разработки

1.1 Анализ технологий серверной стороны

1.1.1 Иерархическая модель инструментариев

1.1.2 Языки программирования

1.1.3 Динамические платформы FastCGI и CGI

1.2 Использование декларативных и предметно-ориентированных языков на серверной стороне

1.2.1 Общие сведения

1.2.2 Язык WebDSL

1.2.3 Язык Spicey

1.3 Требования к этапам формирования нового предметно-ориентированного языка

1.3.1 Общие принципы

1.3.2 Требования к стадии принятия решения

1.3.3 Требования к стадии анализа

1.3.4 Требования к стадии проектирования

1.3.5 Требования к стадии внедрения

1.4 Выводы по первой главе

1.4.1 Постановка цели и задач исследования

2 Разработка методики декларативного программирования Web-узлов и приложений

2.1 Разработка структуры методики и выявление базовых компонентов

2.2 Разработка компоненты «Модель»

2.3 Разработка компоненты «Локация»

2.4 Разработка компоненты «Набор»

2.5 Разработка компоненты «Блок»

2.5.1 Классифицирование блоков

2.5.2 Разработка атрибутов блока

2.5.3 Разработка базовых и составных блоков с их атрибутами

2.5.4 Разработка файловых блоков и их атрибутов

2.6 Разработка унифицированного метода разграничения прав доступа к данным

2.6.1 Построение авторизационного набора и метода учёта пользователей

2.6.2 Построение набора групп

2.6.3 Разработка функционала прав доступа на блоки и экземпляры набора

2.7 Разработка унифицированного метода получения пользовательских данных с учётом их характерных особенностей

2.7.1 Алгоритм обработки чтения пользовательских данных идемпо-тентного запроса

2.7.2 Алгоритм сохранения пользовательских данных модифицирующего запроса

2.7.3 Алгоритм приёма данных при взаимодействии с BML

2.8 Разработка алгоритмов взаимодействия с шаблонизатором

2.8.1 Алгоритм получения данных от интерпретатора

2.8.2 Алгоритм обработки ошибок валидации данных

2.9 Разработка критерия оптимальности выбора релевантного объекта в задаче динамической маршрутизации Web-адресов, идентифицируемых шаблоном

2.9.1 Алгоритм упрощения регулярного выражения

2.9.2 Алгоритм вычисления мощности в пересекаемых множествах

2.9.3 Алгоритм поиска фактора неопределённости

2.10 Выводы по второй главе

3 Разработка метода комплексной оценки инструментов императивной и декларативной разработки динамических Web-узлов

3.1 Разработка обобщённой оценочной модели

3.2 Определение итоговой величины стоимости критерия оценки

3.2.1 Применение метода анализа иерархий

3.3 Вычисление количественных показателей программного кода методом

Холстеда

3.3.1 Тестирование набора рецептов

3.4 Выводы по главе 3

4 Разработка программного комплекса интерпретатора языка BML и визуального редактора BlockSet

4.0.1 Требования к языку программирования и динамической платформе

4.0.2 Анализ динамической платформы CGI

4.0.3 Анализ динамической платформы FastCGI

4.0.4 Нагрузочное тестирование динамических платформ

4.1 Разработка архитектуры и компонентов программного комплекса интерпретатора

4.1.1 Построение структуры

4.1.2 Исследование синтаксических анализаторов XML

4.2 Архитектура абстрактной фабрики блоков

4.2.1 Альтернативные решения

4.3 Выбор шаблонизатора

4.3.1 Особенности программирования шаблонизатора

4.4 Разработка архитектуры программного комплекса синхронизатора

4.4.1 Обоснование целесообразности разработки

4.4.2 Разработка общего алгоритма работы

4.4.3 Анализ технологий межпроцессного взаимодействия

4.4.4 Проведение нагрузочного тестирования

4.4.5 Разработка алгоритма сетевого взаимодействия

4.4.6 Разработка структуры базы данных и алгоритма ее перестроения

4.4.7 Разработка алгоритма синхронизации отношений таблиц с наборами

4.5 Разработка интерфейсов визуального редактора построения структур декларативного языка BML

4.5.1 Разработка мастера создания нового проекта

4.5.2 Разработка интерфейса редактора набора

4.5.3 Разработка интерфейса редактора блока

4.5.4 Разработка интерфейса редактора локации и модели

4.5.5 Разработка интерфейса редактора прав доступа

4.6 Выводы по главе 4

Заключение

Список литературы

Список рисунков

Список таблиц

A Акты о внедрении и свидетельство на программу для ЭВМ

A.1 Акт о внедрении результатов работы в учебный процесс МАИ

A.2 Акт о внедрении результатов работы в ЗАО ИЦ «Луч»

A.3 Свидетельство на программу для ЭВМ

B Набор типовых рецептов на языке BML

B.1 Листинг рецепта «Гостевая книга»

B.2 Листинг рецепта «Ресурс конференций»

B.3 Листинг рецепта «Форум»

Глоссарий

Абстрактная фабрика — шаблон проектирования, предназначенный для объединения взаимосвязанных классов без специфицирования на конкретные типы.

Авторизационный набор — специализированный набор, предназначенный для проведения авторизации пользователя на ресурсе в методике BlockSet. См. также: набор.

Авторизация — процедура проведения аутентификации и наделения аутентифи-цированного пользователя определёнными правами доступа.

Аутентификация — процедура проверки введённого имени пользователя и пароля.

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

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

Гипертекст — ссылочная среда, объекты которой (страницы) объединены ссылками.

Группа (права доступа) — сущность, предназначенная для объединения пользователей по признаку прав доступа.

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

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

Динамическая страница — страница гипертекста, динамически генерируемая на стороне Web-сервера.

Декларативное программирование — парадигма программирования, характеризующаяся свойством описания задачи без уточнения способов её решения.

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

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

Межпроцессное взаимодействие — интерфейс передачи данных между двумя процессами.

Метод — способ действия в процессе решения задачи, систематизированная совокупность шагов.

Методика — комплекс методов, решающих глобально-сформулированную задачу.

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

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

Модель (В1оскБе1:) — элемент в методике В1оскБе1:, определяющий общий вид проекта.

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

ООП — объектно-ориентированное программирование.

Парадигма программирования — фундаментальный набор правил и стилей, призванный определить вид компьютерной программы: структуру и её элементы.

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

Права доступа — система разрешений и запрещений доступа к определённым объектам (в методике В1оскБе1:: к локациям, наборам и блокам).

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

Регулярный шаблон — текстовая строка, содержащая правила на основе регулярных выражений.

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

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

Статическая страница — страница гипертекста, не задействующая логику генерации на стороне Web-сервера.

СУБД — система управления базами данных.

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

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

Шаблон — документ-заготовка, содержащий обобщённую структуру конечного документа, сопоставляемой с данными.

Шаблон проектирования — набор незыблемых правил, определяющих стиль программирования.

Шаблонизатор — программный комплекс, предназначенный для генерации конечного документа путём сопоставления шаблона с данными.

Экземпляр набора — совокупность полезных данных, являющихся одним из элементов коллекции (набора) в терминах методики BlockSet.

API (Application Programming Interface) — программный интерфейс приложения. Предназначен для взаимодействия между независимыми программными комплексами.

Block или Блок — высокоуровневая сущность определённого типа данных в терминах методики BlockSet.

BlockSet — методика разработки динамических Web-узлов и приложений, разработанная в рамках настоящей диссертации.

BML (BlockSet Modeling Language) — предметно-специфичный декларативный моделирующий язык на основе методики BlockSet, разработанный в рамках данной работы.

BSON (Binary JSON, двоичный JSON) — двоичное представление данных формата JSON.

CGI (Common Gateway Interface) — общий интерфейс шлюза. Динамическая платформа, связующее программное обеспечение (англ. middleware), предназначенное для связи среды Web-сервера и Web-приложения, работающего в контексте операционной системы.

ER-модель (entity-relationship model) или модель «сущность-связь») — модель данных, с помощью которой описывается схема предметной области.

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

GET — HTTP-метод, предназначенный для передачи идемпотентных данных. Характеризуется свойствами статичности и постоянства.

GUI (Graphical User Interface) — графический интерфейс пользователя.

HTML (HyperText Markup Language) — декларативный язык разметки гипертекста.

HTTP (HyperText Transfer Protocol) — гипертекстовый транспортный протокол. Протокол передачи гипертекстовой информации между Web-сервером и браузером.

HTTP-метод — способ диалога с Web-сервером.

JavaScript — интерпретируемый язык высокого уровня, используемый на клиентской стороне в браузере.

JSON (JavaScript Object Notation — объектная нотация JavaScript. Универсальная текстовая структура, формат записи разветвлённых данных, синтаксически совместимый с языком JavaScript.

Location или Локация — наименование динамической страницы в терминах методики BlockSet.

MVC (Model-View-Controller) — модель-контроллер-представление. Фундаментальный шаблон проектирования, разделяющий визуальную часть программы и её логику на отдельные сущности.

CMS (Content Management System) — система управления контентом (содержимым). Специализированная клиент-серверная платформа для управления информацией в Web.

CRC (Cyclic redundancy check) — циклический избыточный код, используемый для нахождения контрольной суммы данных с целью проверки целостности или изменчивости.

DSL (Domain-Specific Language) или предметно-ориентированный язык или предметно-специфичный язык или проблемно-ориентированный язык — язык, предназначенный для решения узкоспециализированных задач.

GPL (General-Purpose Language) или язык общего назначения — универсальный язык программирования высокого уровня абстракции, на котором возможно реализовать любую вычислимую функцию (полный по Тьюрингу).

POST — HTTP-метод, предназначенный для передачи данных, изменяющих состояние Web-сервера. Характеризуется свойством волатильности.

Set или Набор — высокоуровневая коллекция данных различных типов в терминах методики BlockSet.

Socket или Сокет — интерфейс межпроцессного и межсетевого взаимодействия.

ORM (Object-Relational Mapping) — объектно-реляционное отображение. Концепция проецирования принципов объектно-ориенитрованных языков программирования на базы данных.

SQL (Structured Query Language) -— предметно-ориентированный язык структурированных запросов.

URI (Uniform Resource Identifier) — унифицированный указатель ресурса.

URL (Uniform Resource Locator) — единый указатель ресурса в сети Интернет.

XML (eXtensible Markup Language) — семантически-нейтральный универсальный расширяемый язык разметки.

Web-приложение — клиент-серверное приложение, функционирующее в гипертекстовой среде.

Web-сервер — серверное программное обеспечение, работающее по протоколу HTTP и принимающее запросы от клиента, обрабатывающее программную логику и возвращающее результат в браузер клиента.

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

WSGI (Web Server Gateway Interface) — стандарт взаимодействия между программой на языке Python и Web-сервером.

Рекомендованный список диссертаций по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Введение диссертации (часть автореферата) на тему «Методы и инструменты декларативного программирования динамических Web-узлов и приложений»

Введение

Актуальность работы. Информационные системы на основе Web-технологий охватывают широкий спектр задач, поскольку гипертекстовая среда стала доминантой сети Интернет. Многократно растёт и количество небольших проектов, включающих динамические Web-приложения. Тенденции развития современной Web-разработки заключаются не только в увеличении числа типовых решений, но и всё большей востребованности приложений, разработанных по индивидуальному проекту. В связи с этим, актуальной задачей становится разработка инструментария, экономящего временные ресурсы и обеспечивающего низкий порог вхождения в отрасль Web-разработки.

В отрасли Web-разработки за всё время её существования появилось огромное количество разнообразных инструментариев. Говоря о серверной стороне, можно привести в пример различные технологии, начиная от фундаментальных интерфейсов связи внешней программы и Web-сервера (CGI, FastCGI), заканчивая интерпретируемыми языками программирования, наилучшим образом решающих задачи динамической Web-разработки. К таким языкам относятся: Perl, PHP, Ruby, Python и др. Для каждого из них разработано большое количество дополнительных библиотек (фрейм-ворков), облегчающих выполнение рутинных задач. На каждом из языков разработаны специализированные системы управления контентом (англ. CMS, Content Management System). Все упомянутые технологии работают на разных уровнях абстракции и имеют свою целевую группу пользователей, начиная от новичков и заканчивая профессионалами индустрии.

Представленные технологии либо требуют время на изучение и имеют низкий уровень восприятия, либо имеют слабую выразительность. Актуальной задачей становится разработка предметно-ориентированного языка. Предметно-ориентированные языки хорошо зарекомендовали себя в разных областях: от проектирования графических пользовательских интерфейсов (Tcl/Tk) до математического моделирования (Mathematica, Maple), и заканчивая аэрокосмической отраслью (ДРАКОН, ATLAS).

В Web-разработке тоже задействованы предметно-ориентированные языки, являющиеся, кроме всего прочего, и декларативными, но они призваны решать слишком узкоспециализированные задачи: гипертекстовая разметка (HTML), манипулирование базами данных (SQL), преобразование XML-документов (XSLT, XPath, XQuery). Они не решают главную задачу: генерацию конечного документа. Эта функция, как правило, возлагается на императивные языки общего назначения (Java, Perl, PHP, Python, Ruby).

Упомянутая декларативная парадигма описывает свойства конечного результата, а не алгоритм, что является хорошей почвой для визуализации разрабатываемого языка. Кроме того, декларативное программирование на предметно-ориентированном языке повышает восприятие и читаемость программного кода, поскольку программист оперирует понятиями в рамках своей предметной области, причём не алгоритмическими структурами, а описанием её свойств.

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

Степень изученности проблемы. Фундаментальным трудом, где описаны характеристики предметно-ориентированных языков и объяснено, в каком случае оправдана их разработка, можно назвать работу Марьяна Мерника. Большой вклад в предметно-ориентированные и визуальные языки внесли Стивен Келли и Юха-Пекка Толванен. Вопросами декларативных языков занимались Джефри Хир и Майкл Бо-сток.

Среди отечественных разработок стоит упомянуть исследования, проводимые под руководством профессора А.Н. Терехова на кафедре системного программирования Санкт-Петербургского государственного университета. Кафедра занимается предметно-ориентированными, визуальными языками и DSM-платформами (RTST, RTST++, REAL, QReal).

Декларативному программированию на серверной стороне Web-приложения посвящены труды многих ученых. Профессор Илко Виссер предложил язык WebDSL на базе Java. Профессор Майкл Ханус разработал "Spicey" - инструмент, являющийся надстройкой над "Curry" - встраиваемым языком программирования поверх языка Haskell.

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

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

Предмет исследования определён двумя предметными областями паспорта специальности 05.13.11 — «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»: 1) Модели, методы и алгоритмы проектирования и анализа программ и программных систем, их эквивалентных преобразований, верификации и тестирования; 2) Языки программирования и системы программирования, семантика программ.

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

Для достижения поставленной цели необходимо решение следующих задач:

1. Классифицирование методов и средств "еЪ-разработки и сравнительный анализ их парадигм программирования.

2. Разработка методики и её формализация в виде декларативного предметно-ориентированного языка программирования.

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

4. Разработка методов разграничения прав доступа, приёма пользовательских данных и поиска приоритета регулярных шаблонов.

5. Разработка архитектуры программного комплекса интерпретатора и визуального редактора на основе предложенной методики.

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

Методы исследования. При проведении исследования задействованы знания из следующих областей наук: математическая статистика, теория алгоритмов, теория автоматов, теория принятия решений, алгоритмические языки и программирование, базы данных, "еЬ-технологии, "еЪ-программирование.

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

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

Наиболее существенные результаты, относящиеся к научной новизне, следующие:

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

2. Разработаны методы манипулирования данными: метод разграничения прав доступа в представленной методике; метод выборки и изменения данных на основе адаптивной структуры каждой сущности; методы интеллектуального выбора неоднозначных динамических URL за счёт вычисления мощности множеств каждого шаблона; метод отложенной во времени синхронизации больших объёмов данных между синхронизатором и интерпретатором.

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

Основные положения, выносимые на защиту:

1. Методика декларативного программирования Web-узлов и приложений и её формализация в виде декларативного языка программирования BML.

2. Метод комплексной оценки инструментов императивной и декларативной разработки динамических Web-узлов.

3. Унифицированный метод разграничения прав доступа к данным.

4. Унифицированный метод приёма пользовательских данных с учётом их характерных особенностей.

5. Критерий оптимальности выбора релевантного объекта в задаче динамической маршрутизации Web-адресов, идентифицируемых шаблоном.

6. Архитектура программного комплекса интерпретатора языка BML и синхронизатора.

7. Нагрузочное тестирование компонентов интерпретатора.

8. Интерфейсы визуального редактора построения структур декларативного языка BML.

Практическая значимость работы заключается в применении эффективной, гибкой методики создания Web-узлов и приложений с помощью предметно-ориентированного языка декларативным методом без использования классического императивного программирования. Разработан интерпретатор языка BML, позволивший получить возможность исполнения механизмов методики BlockSet на практике. Разработан визуальный редактор BlockSet, позволивший придать BML свойства визуального языка.

Результаты работы активно используются в учебном процессе на кафедре «Системное моделирование и инженерная графика» на базе университета МАИ при подготовке бакалавров по направлению 090301 «Информатика и вычислительная техника» в следующих дисциплинах: Web-технологии, Web-программирование, Информационные системы и Основы программирования на языке Java.

Апробация результатов и степень достоверности работы. Основные результаты работы докладывались и обсуждались на следующих конференциях:

- XXXVII, XXXVIII, XXXIX, XL, XLI, XLII, XLIII Международные молодёжные научные конференции «Гагаринские чтения» (Москва, 2011-2017);

- XXII, XLIII Всероссийские научно-практические конференции «Проблемы безопасности в системе высшей школы» (Москва, 2015-2016);

- X Юбилейная международная научно-практическая конференция «Современные информационные технологии и ИТ-образование» (Москва, 2015);

- VIII Общероссийская молодёжная научно-техническая конференция «Молодёжь. Техника. Космос» (Санкт-Петербург, 2016).

- XV Международная конференция «Авиация и космонавтика» (Москва, 2016);

Проект автора «Лаборатория конференций» разрабатывается с использованием представленной в диссертационной работе методики и поддержан грантом Росмо-лодёжи1.

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

1Новость на официальном сайте учредителя гранта, URL: http://terrascientia.ru/news/391 (дата обращения: 27.08.2016)

10 опубликованы в журналах, входящих перечень рецензируемых научных изданий, рекомендованных ВАК. На визуальный редактор, являющийся дополнением интерпретатора BML, получено свидетельство о государственной регистрации программы для ЭВМ [111].

Работы, опубликованные в журналах из перечня ВАК [79, 91, 93, 98, 100, 102, 113], написаны в соавторстве. В работах [91, 93, 98, 113] Силуянову А.В. принадлежит постановка задач. В работе [79] Бубнову А.В. принадлежит программная реализация инструментальных средств приёма пользовательских данных. В работе [102] Ковалёву А.В. принадлежит идея упрощения регулярного выражения. В работе [113] Стар-чаусу И.С. принадлежит подсчёт численных характеристик исходного кода рецептов, Хорошко Л.Л. - идея внедрения методики в визуальные языки. В работе [100] Ярмуха-метову Ф.Ф. принадлежит программная реализация модуля на основе представленной архитектуры.

Личный вклад. Все исследования, представленные в диссертационной работе, выполнены автором либо самостоятельно, либо при его непосредственном участии. Проект BlockSet представляет собой сложный программный продукт, выполненный соискателем лично, а отдельные части - под его руководством. Стоит отметить, что в разработке проекта задействован большой коллектив студентов, аспирантов и преподавателей кафедры «Системное моделирование и инженерная графика» Московского авиационного института.

Структура и объём работы. Диссертация состоит из введения, четырёх глав, заключения и двух приложений. Полный объем диссертации составляет 175 страниц с 27 рисунками и 22 таблицами. Список литературы содержит 118 наименований.

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

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

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

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

В третьей главе строится оценочная модель программного кода в целом и разрабатываемого языка программирования в частности. Приводится обзор критериев оценки. Упоминаются достоинства и недостатки существующих оценочных методов. Применяется метод анализа иерархий для определения наиболее важных критериев. С помощью метрик Холстеда осуществляется сравнение между языками BML и PHP.

В четвёртой главе показана технологическая сторона построения интерпретатора языка BML. Проведён обзор динамических платформ, а также их нагрузочное тестирование. Показана схема взаимодействия компонентов интерпретатора между собой. Представлены сравнительные характеристики синтаксических анализаторов XML. Детально рассмотрена архитектура фабрики, задействованная в интерпретаторе при обработке логики работы блоков. Выбран шаблонизатор и показан алгоритм взаимодействия с ним. Обособлено внедрение в проект синхронизатора, показаны алгоритмы его работы с BML-документами, проведено его нагрузочное тестирование, показан обзор методов межпроцессного взаимодействия. В конце главы представлен визуальный редактор BML.

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

В приложении A представлены акты о внедрении и свидетельство на программу для ЭВМ.

В приложении B представлены листинги проектов (рецепты), реализованных на основе разработанной методики и языка BML.

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

Автор благодарит за неоценимый вклад в подготовку диссертационной работы: научного руководителя, к.т.н., доц. Силуянова Александра Вячеславовича за напутствия и ценные указания по практической части, д.т.н., проф. Силуянову Марину Владимировну, а также д.т.н., проф. Раева Вячеслава Константиновича д.т.н., проф. Никульчева Евгения Витальевича и к.т.н., доц. Андрианову Елену Гельевну за методические указания по подготовке рукописи, зав. каф. «СМиИГ», к.т.н., доц. Хорошко Леонида Леонидовича за помощь по внедрению результатов диссертационной работы в учебный процесс, к.ф.-м.н., доц. Мокрякова Алексея Викторовича за свой бесценный аналитический опыт, заместителя главного редактора научной редакции МФПУ «Синергия» Власову Екатерину Аркадьевну за рекомендации по оформлению статей, д.т.н. Рыжикова Юрия Ивановича за пособие по подготовке научных работ, ст.преп. каф. «СМиИГ» Квашнина В.М. за консультации по построению эффективных моделей баз данных проекта, а также студентов кафедры «СМиИГ», совместно работавших над проектом и внёсших большой вклад в практическую реализацию представленной работы: Бубнова Андрея Вадимовича, Морозова Андрея Сергеевича, Новикова Александра Юрьевича, Новикова Владислава Евгеньевича, Тарасенко Сергея Сергеевича, Цимбала Артёма Анатольевича, Ярмухаметова Филиппа Фирдусовича и других.

Глава 1

Анализ технологий и методов Web-разработки

Эффективный инструментарий строится по принципу оптимального распределения уровней абстракции: подчёркивания основных высокоуровневых сущностей и вынесении рутинных задач в базовые обобщённые алгоритмы. С повышением уровня абстракции упрощается процесс разработки, однако снижается гибкость. Зачастую, инструментарий с высоким уровнем абстракции не может предоставить достаточный функционал для реализации специфических свойств разрабатываемого объекта. И наоборот, низкий уровень абстракции заставляет разработчика тратить время на освоение инструментария и постоянному возвращению к рутинным задачам вместо сосредоточения сил на поиске основного решения [51].

Описанные проблемы сущестувют во всех отраслях информационных технологий. Не стала исключением и область "еЪ-разработки [14]. Определим типовую классификацию "еЪ-технологий по уровню абстракции с указанием достоинств и недостатков:

- Языки программирования

- Низкий уровень абстракции, повышенная гибкость разработки, появление большого количества рутинных задач;

- Требуются профессиональные знания в области программирования;

- Фреймворки

- Средний уровень абстракции, оптимальное отношение эффективность/гибкость, рутина снижена до минимума;

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

- Системы управления контентом

- Высокий уровень абстракции, знания в области программирования требуются либо на базовом уровне, либо не требуются вовсе;

- Негибкая разработка.

В работе описывается методика моделирования динамических Web-приложений с помощью декларативного программирования. Декларативное программирование является одной из самых простых практик ведения разработки. Оно описывает не методику создания объекта, а его состояние в зависимости от внешних условий. Декларативный стиль программирования по уровню абстракции находится выше классического императивного, следовательно освоение языка не будет представлять значительных трудностей для начинающего разработчика. Например, язык HTML, по своей природе являющийся декларативным, описывает общие свойства документа, а не то, как этот документ должен отображаться на экране. В работе предлагается применить данный подход на серверной стороне, описывая основную логику работы сущности в виде её свойств, а не абстрактных алгоритмов. Положительном фактором такого описания является то, что все свойства сущностей можно визуализировать. Таким образом, разрабатываемая методика включает язык, имеющий все свойства декларативного, предметно-ориентированного и визуального.

Немаловажным аспектом является использование парадигмы разделения логических структур и представления выходных данных. Подобная парадигма используется во многих отраслях, связанных с разработкой программного обеспечения, и носит название MVC (Model-View-Controller) [2]. Роль модели и контроллера отведена языку декларативной разметки, а представления — шаблонизатору — специализированному обработчику, сопоставляющему полученные данные с заготовленным шаблоном.

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

- Операции с данными: выборка, поиск, модификация;

- Авторизация пользователей и разграничение прав доступа к данным [73].

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

Императивное программирование представляет собой процесс манипуляции данными в виде последовательно-заданных инструкций, изменяющих состояние системы. Процесс программирования на императивном языке можно сравнить с приказами в повелительном наклонении в естественных языках. Характерной особенностью программ, использующих императивную парадигму, является наличие в них операции присваивания, позволяющей манипулировать данными в памяти и сохранять их для дальнейшего использования. Императивные языки используют специализированные конструкции — циклы, позволяющие многократно выполнять отдельные части кода определённое количество раз или до тех пор, пока не будет выполнено заданное условие. Существуют также условные ветвления, исполняющие выражения тогда и только тогда, когда условие истинно. Данная парадигма широко используется в языках общего назначения, таких как C, C++, Pascal и др. Сей факт связан с природой парадигмы, направленной на универсальное применение за счёт высокого уровня абстракции и, таким образом, на непосредственное манипулирование данными самого разнообразного уровня. Под манипуляцией данных[28] подразумеватся получение (в теории баз данных - выборка), создание, изменение и удаление данных из какого-либо внешнего хранилища на серверной стороне. Как правило, под таким хранилищем подразумевается система управления базами данных (СУБД), однако существуют и другие принципы хранения: в памяти НЖМД без дополнительного ПО (файловая база данных), в оперативной памяти (memcached) и др.

Противопоставлением императивной парадигме является декларативное программирование и заключается в том, что логика работы программы задаётся описанием свойств уже существующих объектов, в то время как в императивных языках все объекты и их прототипы создаются «с нуля». Иными словами, декларативная парадиг-

ма описывает какова сущность, а не как её создать [41]. Характерной особенностью парадигмы является описание программной логики без необходимости соблюдения порядка выполнения. Многие языки программирования используют декларативный подход для сокращения или избавления от побочных эффектов путём описания того, как именно программа должна выстроить объекты своей предметной области, нежели описания программы в виде абстрактных семантических примитивов. В этом и заключается главное отличие описанных двух парадигм. Таким образом, декларативные языки являются чистыми и детерминированными, что является несомненным преимуществом при проведении отладки.

Исходя из этого, напрашивается вывод, что декларативные языки больше заточены под решение узкоспециализированных задач в противовес императивным, где путём построения строго-заданного алгоритма решаются задачи универсального толка. Так, декларативные языки являются в большинстве своём предметно-ориентированными (иногда имеет место термин «проблемно-ориентированный») (англ. Domain Specific Language, DSL — «предметно-специфичный язык»). К таким языкам относится язык гипертекстовой разметки HTML, предназначенный для описания того, что должно быть на Web-странице, а не того, как она должна быть сгенерирована браузером. К другим языкам такого рода относятся: структурированный язык запросов SQL (англ. Structured Query Language), язык TgX и его препроцессор LTEX, с помощью которых выполнена представленная работа, регулярные выражения, любые языки логического и функционального программирования. Предметно-ориентированные языки не являются Тьюринг-полными[81], однако это обстоятельство никак не ущемляет решения поставленных перед ними задач. Наоборот, как правило, предметно-ориентированные языки проще в освоении, т.к. содержат только тот функционал, который требуется для решения задач в конкретной узко-специализированной предметной области. Понятие предметно-ориентированного языка ставится в противовес языкам общего назначения или GPL (англ. General-purpose programming language) [30].

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

Проведём аналогию использования парадигм программирования со строительством загородного дома. Непосредственное участие субъекта в постройке дома: укладка кирпича, установка окон и дверей, монтирование коммуникаций — всё это по-

Похожие диссертационные работы по специальности «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», 05.13.11 шифр ВАК

Список литературы диссертационного исследования кандидат наук Кейно, Павел Петрович, 2017 год

Список литературы

1. Ampatzoglou A., Frantzeskou G., Stamelos I. A methodology to assess the impact of design patterns on software quality // Information and Software Technology. — 2012. — Vol. 54, no. 4. — Pp. 331-346.

2. Aniche M., Bavota G., Treude C., Van Deursen A., Gerosa M. A. A Validated Set of Smells in Model-View-Controller Architectures // Software Maintenance and Evolution (ICSME), 2016 IEEE International Conference on. — IEEE. 2016. — Pp. 233-243.

3. Baker P., Loh S., Weil F. Model-Driven engineering in a large industrial context—motorola case study // International Conference on Model Driven Engineering Languages and Systems. — Springer. 2005. — Pp. 476-491.

4. Bennett K. H., Rajlich V. T. Software maintenance and evolution: a roadmap // Proceeding ICSE '00 Proceedings of the Conference on The Future of Software Engineering. — 2000. — Pp. 73-87.

5. Binstock A. Mind maps: The poor man's design tool. — Oct. 2012. — URL: http : / / www . drdobbs . com / tools/mind-maps-the-poor-mans -design-tool/2400082 92 (visited on 07/24/2016).

6. Bonachea D., Fishe K., Rogers A., Smith F. Hancock: a language for processing very large-scale data // Proceedings of the 2nd conference on Domain-specific languages. — New York, NY, USA, 1999. — Pp. 163-176.

7. Bonnie A., Nardi B. A small matter of programming: perspectives on end-user computing. — Massachusetts Institute of Technology, 1993.

8. Bruntink M., Deursen A. van, Tourwe T. Isolating idiomatic crosscutting concerns // Software Maintenance, 2005. ICSM'05. Proceedings of the 21st IEEE International Conference on. — 2005. — Pp. 37-46.

9. BSON Binary JSON [Electronic Resource], - 2016. - URL: http : / / bsonspec.org/.

10. Caldiera G., Basili V. R. Identifying and qualifying reusable software components // Computer. - 1991. - Vol. 24, no. 2. - Pp. 61-70.

11. Cho H., Gray J., Syriani E. Syntax Map: A Modeling Language for Capturing Requirements of Graphical DSML // 2012 19th Asia-Pacific Software Engineering Conference. Vol. 1. - IEEE. 2012. - Pp. 705-708.

12. Chomsky N. On certain formal properties of grammars // Information and control. -1959. - Vol. 2, no. 2. - Pp. 137-167.

13. Crepinsek M., Kosar T., Mernik M., Cervelle J., Forax R., Roussel G. On automata and language based grammar metrics // Computer Science and Information Systems. - 2010. - Vol. 7, no. 2. - Pp. 309-329.

14. Fernandez A., AbrahaO S., Insfran E. Empirical validation of a usability inspection method for model-driven Web development // Journal of Systems and Software. -2013. - Vol. 86, no. 1. - Pp. 161-186.

15. Fulmer J.Siege User's Manual [Electronic Resource]. - 2012. - URL: http: //www.joedog.org/siege-manual/.

16. Gaffney Jr J. E. Software metrics: A key to improved software development management // Computer Science and Statistics: Proceedings of the 13th Symposium on the Interface. - Springer. 1981. - Pp. 211-220.

17. Gage C. A., Hind J. R., Peters M. L. URL-based sticky routing tokens using a server-side cookie jar. - Aug. 2012. - US Patent 8,239,445.

18. Genova Z, Christensen K. J. Using signatures to improve URL routing // Performance, Computing, and Communications Conference, 2002. 21st IEEE International. - IEEE. 2002. - C. 45-52.

19. Gilb T., Finzi S. Principles of software engineering management. Vol. 11. -Addison-Wesley Reading, MA, 1988.

20. Gray J., Karsai G. An Examination of DSLs for Concisely Representing Model Traversals and Transformations // System Sciences, 2003. Proceedings of the 36th Annual Hawaii International Conference on. - 2003.

21. Gruber H., Holzer M. Finite automata, digraph connectivity, and regular expression size // Automata, Languages and Programming. - 2008. - Pp. 39-50.

22. Halstead M. H. Elements of software science. Vol. 7. — Elsevier New York, 1977.

23. Hansen T., Apte V., Reeser P. Performance comparison of dynamic web platforms // Computer Communications. — 2003. — Pp. 888-898.

24. Hanus M., Koschnicke S. An ER-based framework for declarative web programming // Practical Aspects of Declarative Languages. — 2010. — Pp. 201-216.

25. Head M. R., Madhusudhan G., Engelen R. van, Zhang W. Benchmarking XML Processors for Applications in Grid Web Services // SC 2006 Conference, Proceedings of the ACM/IEEE. — Tampa, FL, USA, 2006. — P. 30.

26. Heer J., Bostock M. Declarative language design for interactive visualization // Visualization and Computer Graphics, IEEE Transactions on. — 2010. — Vol. 16, no. 6. — Pp. 1149-1156.

27. HTML5 Standard: HTML5 forms specification. — 2015. — Aug.

28. Hu Y., McKenzie G., Yang J.-A., Gao S., Abdalla A., Janowicz K. A Linked-Data-Driven Web Portal for Learning Analytics: Data Enrichment, Interactive Visualization, and Knowledge Discovery. // LAK Workshops. — 2014.

29. Java vs C++ g++ [Electronic Resource] // Computer Language Benchmarks Game. — URL: http://benchmarksgame.alioth.debian.org/u32q/ benchmark.php?test=all&lang=java.

30. Johanson A. N., Hasselbring W. Effectiveness and efficiency of a domain-specific language for high-performance marine ecosystem simulation: a controlled experiment // Empirical Software Engineering. — 2016. — Pp. 1-31.

31. Karus S., Dumas M. Predicting the maintainability of XSL transformations // Science of Computer Programming. — 2011. — Vol. 76, no. 12. — Pp. 1161-1176.

32. Kleene S. C. Representation of events in nerve nets and finite automata: tech. rep. / DTIC Document. — 1951.

33. Klint P., Van Der Storm T., Vinju J. On the impact of DSL tools on the maintainability of language implementations // Proceedings of the Tenth Workshop on Language Descriptions, Tools and Applications. — ACM. 2010. — P. 10.

34. Kosar T., Oliveira N., Mernik M., Pereira V. J. M., CrepinCek M., Da C. D., Henriques R. P. Comparing general-purpose and domain-specific languages: An empirical study // Computer Science and Information Systems. — 2010. — Vol. 7, no. 2. — Pp. 247-264.

35. Kurtev I., Bézivin J., Jouault F., Valduriez P. Model-based DSL frameworks // Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications. — ACM. 2006. — Pp. 602-616.

36. Letkowski J. Doing database design with MySQL // Journal of Technology Research. — 2016. — Vol. 6. — Pp. 1-15.

37. Li C. T., El Gamal A. An efficient feedback coding scheme with low error probability for discrete memoryless channels // IEEE Transactions on Information Theory. — 2015. — Vol. 61, no. 6. — Pp. 2953-2963.

38. Magel K., Kluczny R. M., Harrison W. A., Dekock A. R. Applying software complexity metrics to program maintenance. — 1982.

39. Maggo S., Gupta C. MLP based Reusability Assessment Automation Model for Java based Software Systems // International Journal of Modern Education and Computer Science. — 2014. — Vol. 6, no. 8. — P. 45.

40. Manual O. S. Slavonic Languages. — Oxford University Press, 2003. — P. 350.

41. Martinez T. Execution models for Constraint Programming: kernel language design through semantics equivalence. PhD thesis / Martinez Thierry. — Paris Diderot, 2015.

42. McCabe T. J. A complexity measure // IEEE Transactions on software Engineering. — 1976. — No. 4. — Pp. 308-320.

43. McNaughton R., Yamada H. Regular expressions and state graphs for automata // IRE transactions on Electronic Computers. — 1960. — No. 1. — Pp. 39-47.

44. Mernik M., Heering J., Sloane A. M. When and how to develop domain-specific languages // ACM Computing Surveys (CSUR). — 2005. — Dec. — Vol. 37, no. 4. — Pp. 316-344.

45. Nagaraj S., Koepke D. Dynamic instrumentation of wsgi applications. — Apr. 2015. — US Patent App. 14/699,784.

46. Nickerson J. V. Visual programming. — 1995.

47. Open Market I. FastCGI: A High Performance Web Server Interface, Technical White Paper [Electronic Resource]. — 1996. — URL: http : / /www. fastcgi . com/devkit/doc/fastcgi-whitepaper/fastcgi.htm.

48. Open Market I. FastCGI Specification, Accepting Transport Connections [Electronic Resource]. —2016. — URL: http://www.fastcgi.c0m/drupal/n0de/6? q=node/22.

49. P. F., Jr B. The Design of Design: Essays from a Computer Scientist. — Pearson Education, 2010. — ISBN 0321702069, 9780321702067.

50. Parr T. Language implementation patterns: create your own domain-specific and general programming languages. — Pragmatic Bookshelf, 2009.

51. Paterno F., Santoro C., Spano L. D. MARIA: A universal, declarative, multiple abstraction-level language for service-oriented applications in ubiquitous environments // ACM Transactions on Computer-Human Interaction (TOCHI). — 2009. — Vol. 16, no. 4. — P. 19.

52. Pescador A., Lara J. de DSL-Maps: From Requirements to Design of Domain-Specific Languages. — 2016. — Sept. — DOI: 0.1145/1235.

53. Pickard A. J. Research methods in information. — Facet publishing, 2013.

54. Preschern C., Kajtazovic N., Kreiner C. Evaluation of Domain Modeling Decisions for Two Identical Domain Specific Languages // Lecture Notes on Software Engineering. — 2014. — Vol. 2, no. 1. — P. 37.

55. Prodanoff Z. G., Christensen K. J. Managing routing tables for URL routers in content distribution networks // International Journal of Network Management. — 2004. — Vol. 14, no. 3. — Pp. 177-192.

56. Raggett D., Hors A. L., Jacobs I. Forms in HTML documents. — 1999. — URL: http://www.w3.org/TR/html4/interact/forms.html.

57. Rivers K., Koedinger K. R. Automatic generation of programming feedback: A data-driven approach // The First Workshop on AI-supported Education for Computer Science (AIEDCS 2013). Vol. 50. — 2013.

58. Riihlemann C., Bagoutdinov A., O'Donnell M. B. Modest XPath and XQuery for corpora: Exploiting deep XML annotation // ICAME Journal. — 2015. — Vol. 39, no. 1. — Pp. 47-84.

59. Sakarovitch J. Kleene's theorem revisited // Trends, Techniques, and Problems in Theoretical Computer Science. — 1987. — Pp. 39-50.

60. Singh G., Singh D., Singh V. A study of software metrics // IJCEM International Journal of Computational Engineering & Management. — 2011. — Vol. 11. — Pp. 22-27.

61. Smith S., Madhavapeddy A., Smowton C., Schwarzkopf M., Mortier R., Hand S., M R. Draft: Have you checked your IPC performance lately?.

62. Stevens W. R., Rago S. A. Advanced programming in the UNIX environment. Vol. 3. — Addison-Wesley, 2013.

63. Sun Y., Demirezen Z., Mernik M., Gray J., Bryant B. Is My DSL a Modeling or Programming Language? // Domain-Specific Program Development. — 2008. — P. 4.

64. Tairas R., Mernik M., Gray J. Using ontologies in the domain analysis of domain-specific languages // International Conference on Model Driven Engineering Languages and Systems. — Springer. 2008. — Pp. 332-342.

65. Thompson K. Programming techniques: Regular expression search algorithm // Communications of the ACM. — 1968. — Vol. 11, no. 6. — Pp. 419-422.

66. Valiyev R., Galiullin L., Iliukhin A. Design of the Modern Domain Specific Programming Languages // Int. J. Soft Comput. — 2015. — Vol. 10, no. 5. — Pp. 340343.

67. Visser E. Understanding software through linguistic abstraction // Science of Computer Programming. — 2015. — Vol. 97. — Pp. 11-16.

68. Visser E. WebDSL: A Case Study in Domain-Specific Language Engineering // Generative and Transformational Techniques in Software Engineering (GTTSE 2007) / ed. by R. Lammel, J. Saraiva, J. Visser. — Springer, 2008. — (Lecture Notes in Computer Science).

69. Voelter M., Benz S., Dietrich C., Engelmann B., Helander M., Kats L. C., Visser E., Wachsmuth G. DSL engineering: Designing, implementing and using domain-specific languages. — dslbook.org, 2013.

70. W3C CGI: Common Gateway Interface [Electronic Resource]. — 1995. — URL: http://www.w3.org/CGI/.

71. Wanderley F., Silveira D. S. da, Araujo J., Moreira A. Transforming creative requirements into conceptual models // IEEE 7th International Conference on Research Challenges in Information Science (RCIS). — IEEE. 2013. — Pp. 1-10.

72. Wanderley F., Silveira D., Araujo J., Moreira A., Guerra E. Experimental Evaluation of Conceptual Modelling through Mind Maps and Model Driven Engineering // International Conference on Computational Science and Its Applications. — Springer. 2014. - Pp. 200-214.

73. Weber H., Harbarth /.Systems and/or methods for automatically deriving web service permissions based on XML structure permissions. — May 2014. — US Patent 8,732,201.

74. White J., Hill J. H., Gray J., Tambe S., Gokhale A. S., Schmidt D. C. Improving domain-specific language reuse with software product line techniques // IEEE software. — 2009. — Vol. 26, no. 4. — Pp. 47-53.

75. Wienands C., Golm M. Anatomy of a visual domain-specific language project in an industrial context // International Conference on Model Driven Engineering Languages and Systems. — Springer. 2009. — Pp. 453-467.

76. Xu K., Zhang S., Feng Y., Zhao D. Answering Natural Language Questions via Phrasal Semantic Parsing // Natural Language Processing and Chinese Computing. — 2014. — Dec. — Vol. 496. — Pp. 333-344.

77. Zhang C., Budgen D. What do we know about the effectiveness of software design patterns? // IEEE Transactions on Software Engineering. — 2012. — Vol. 38, no. 5. — Pp. 1213-1231.

78. Бубнов А. В., Кейно П. П. Архитектура интерпретатора декларативного языка моделирования динамических веб-узлов по методологии BlockSet // Современные информационные технологии и ИТ-образование [Электронный ресурс] / Сборник научных трудов X Юбилейной международной научно-практической конференции / под ред. В. А. Сухомлина. - 2015. - С. 173-180. - ISBN 978-59556-0179-3.

79. Бубнов А. В., Кейно П. П. Особенности приёма данных по протоколу HTTP в компилируемом Web-приложении и их унификация в предметно-ориентированном языке // Безопасность информационных технологий. — 2016. -№ 1. - С. 16-19.

80. Булычов О. И. Использование шаблонного метапрограммирования при реализации параллельных гибридных метаэвристических алгоритмов оптимизации // Вестник Уфимского государственного авиационного технического университета. - 2010. - Т. 14, 4 (39).

81. Дмитриев С. Языково-ориентированное программирование: следующая парадигма // RSDN Magazine. - 2005. - Т. 5.

82. Долгов В., Софонова Н. О дугах конечных автоматов для описания алгоритмов построения Ватерлоо-подобных автоматов // Стохастическая оптимизация в информатике. — 2015. — Т. 11, № 1. — С. 65—76.

83. Дубс В. Разработка фреймворка по управлению техническими средствами // Техника радиосвязи. — 2011. — № 16. — С. 65—74.

84. Кейно П. П. Punycode: От цифры к слову // Доменные имена. — М., 2011. — № 1. — С. 58—59.

85. Кейно П. П. Иерархическая модель прав доступа в декларативном языке моделирования Web-приложений по методологии BlockSet // Безопасность информационных технологий. — 2016. — № 1. — С. 53—58.

86. Кейно П. П. Использование предметно-специфичных языков в аэрокосмической отрасли // 15-я Международная конференция «Авиация и космонавтика - 2016». — М. : МАИ (НИУ), 2016. — С. 520—521.

87. Кейно П. П. Предпосылки формирования новой методологии разработки веб-узлов BlockSet и декларативного языка BML // Современные информационные технологии и ИТ-образование. Т. 2. — 2015. — С. 78—84.

88. Кейно П. П. Проблемно-ориентированный декларативный язык разработки динамических Web-узлов BML // Молодежь. Техника. Космос. — СПб. : ВОЕН-МЕХ. Вестник БГТУ, 2016. — С. 45—46.

89. Кейно П. П. Разработка архитектуры программного комплекса синхронизатора при интерпретаторе декларативного языка BML // Прикладная информатика. — 2016. — 2(52). — С. 65—77.

90. Кейно П. П. Унификация типов прав доступа к информационным ресурсам облачных Web-сервисов // Безопасность информационных технологий. — 2015. — № 1. — С. 87—89.

91. Кейно П. П., Силуянов А. В. Автоматизированная разработка динамических Web-узлов средствами декларативного языка программирования // Прикладная информатика. — 2014. — 6 (54). — С. 70—78.

92. Кейно П. П., Силуянов А. В. Вычисление мощности множества регулярного выражения как критерия оптимальности выбора шаблона // XLI Гагаринские чтения. Т. 3. — М. : ИНФРА-М, 2015. — С. 88—90.

93. Кейно П. П., Силуянов А. В. Декларативный подход описания динамических структур серверной стороны при разработке "еЪ-узлов // Информационные системы и технологии. — 2015. — 3 (89). — С. 47—51.

94. Кейно П. П., Силуянов А. В. Использование структурного языка программирования для описания динамических "еЪ-страниц на стороне сервера // ХЬ Гагаринские чтения. Т. 5. — М. : МАТИ, 2014. — С. 227—229.

95. Кейно П. П., Силуянов А. В. Комплексные методы и средства автоматизации оценки качества программного кода на основе заданных грамматик различных парадигм программирования // Гагаринские чтения - 2017: ХЬ111 Международная молодёжная научная конференция. — М. : МАИ (НИУ), 2017. — С. 736.

96. Кейно П. П., Силуянов А. В. Основы построения высоконагруженных систем сети Интернет. Краткий обзор некоторых решений // XXXIX Гагаринские чтения. Т. 5. — М. : МАТИ, 2013. — С. 144—146.

97. Кейно П. П., Силуянов А. В. Предпосылки формирования нового подхода к проектированию динамических ресурсов всемирной паутины // XXXVII Гагаринские чтения. Т. 5. — М. : МАТИ, 2012. — С. 149—150.

98. Кейно П. П., Силуянов А. В. Разработка и внедрение интерпретатора декларативного языка моделирования "еЪ-интерфейсов на высоконагруженных системах // Прикладная информатика. — 2015. — 1(55). — С. 55—70.

99. Кейно П. П., Силуянов А. В. Сравнительный анализ технологий декларативной "еЪ-разработки на стороне сервера // Гагаринские чтения - 2016: XLII Международная молодёжная научная конференция. Т. 1. — М. : МАИ (НИУ), 2016. — С. 59—61.

100. Кейно П. П., Ярмухаметов Ф. Ф. Использование паттерна «абстрактная фабрика» в реализации модуля валидации и преобразования данных интерпретатора Б1оек8е1 // Прикладная информатика. — 2017. — 1(67). — С. 95—101.

101. Кирпичёв Е. Инкрементальные регулярные выражения // Практика функционального программирования. — 2010. — С. 36.

102. Ковалёв А. В., Кейно П. П. Вычисление мощности множества регулярного выражения как критерия оптимальности в задачах динамической маршрутизации "еЪ-адресов // Прикладная информатика. — 2016. — 4(64). — С. 90—96.

103. Ларионцева Е. А. Использование метрических характеристик программ при проведении сертификационных испытаний // Наука и образование. Научное издание МГТУ им. Н.Э.Баумана. — 2012. — Май.

104. Макконнелл Д. Мир программирования. Анализ алгоритмов. Активный обучающий подход (3-е дополненное издание). — ТЕХНОСФЕРА, 2013. — С. 165— 171.

105. Маликова К. Э. Технология разработки интернет-приложений на основе встроенных динамических моделей и XML: диссертация на соискание ученой степени кандидата технических наук: 05.13.11. — 2011.

106. Милютин А. Метрики кода программного обеспечения URL [Электронный ресурс]. — URL: http : / / www . viva64 . com / ru / a / 0045/ (дата обр. 28.09.2016).

107. Михеева Т., Головнин О., Федосеев А. Паттерновое проектирование интеллектуальных транспортных систем // Современные проблемы науки и образования. — 2012. — № 6.

108. Мыцко Е. А., Мальчуков А. Н. Исследование программных реализаций алгоритмов вычисления CRC, совместимых с PKZIP, WinRAR, Ethernet // Известия Томского политехнического университета. — 2013. — Т. 322. — С. 170—175.

109. Полсон Л. Д. Разработчики переходят на динамические языки // Открытые системы. СУБД. — 2007. — № 02.

110. Пупыкина А. А., Сатунина А. Е. Система оценок моделей Web-приложений // Статистика и экономика. — 2015. — № 3.

111. Свидетельство о государственной регистрации программы для ЭВМ. Визуальный редактор BlockSet [Текст] / П. П. Кейно (Российская Федерация). — № 2014660878 ; заявл. 20.10.2014 ; опубл. 20.01.2015, приоритет 10.12.2014.

112. Скачков Д. Розробка практичних методiв проектування та створення веб-додатюв // ScienceRise. — 2015. — 9 (2). — С. 22—26.

113. Старчаус И. С., Кейно П. П., Хорошко Л. Л., Силуянов А. В. Метод анализа и оценки качества декларативного и императивного программирования динамических web-приложений // Прикладная информатика. — 2016. — 6(66). — С. 84— 92.

114. Таненбаум Э., Остин Т. Архитектура компьютера. — 6-е изд. — СПб : Питер, 2013. — ISBN 978-5-496-00337-7.

115. Фурцев Д., Коваленко А., Ткаченко Е. Об оптимизации на основе метода анализа иерархий // Научные ведомости Белгородского государственного университета. Серия: Экономика. Информатика. — 2014. — Т. 29, 1—1 (172).

116. Шетухин А. Тесты производительности [Электронный ресурс]. — URL: http : //ctpp.havoc.ru/template_benchmarks.html (дата обр. 25.08.2016).

117. Щапов В. А., Масич Г. Ф. Программная платформа передачи интенсивных потоков данных на удаленные компьютеры // Труды международной конференции. Суперкомпьютерный консорциум университетов России, Федеральное агентство научных организаций России. — 2015. — С. 720—731.

118. Ярмухаметов Ф. Ф., Кейно П. П. Практика использования веб-шаблонизаторов в программном комплексе интерпретатора на примере CTPP2 // Современные информационные технологии и ИТ-образование. Т. 2. — 2015. — С. 117—120.

Список рисунков

1.1 Иерархическая модель инструментариев Web-разработки.........24

2.1 Место методики BlockSet и языка BML в сфере Web-разработки.....44

2.2 Интеллект-карта языка BML.........................45

2.3 Схема приёма данных различными методами ...............89

3.1 Схема оценочной модели..........................102

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

3.3 Сравнение расчётных и фактических длин рецептов............116

3.4 Вычисленная сложность кодирования программы.............116

3.5 Вычисленные объёмы рецептов.......................117

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

4.1 Испытание Web-платформ со статическим содержимым..........122

4.2 Испытание Web-платформ с динамическим содержимым.........124

4.3 Схема функционирования BML-интерпретатора..............125

4.4 Анализ накладных расходов некоторых синтаксических анализаторов . . 127

4.5 Анализ накладных расходов некоторых синтаксических анализаторов . . 128

4.6 Архитектура модуля блоков.........................133

4.7 Результаты тестирования шаблонизаторов.................134

4.8 Общий алгоритм работы синхронизатора..................151

4.9 Алгоритм перестроения структуры базы данных..............152

4.10 Результаты тестирования неблокирующих сокетов.............153

4.11 Сетевое взаимодействие синхронизатора..................153

4.12 Специфика работы с отдельным объектом.................154

4.13 Мастер создания нового проекта......................155

4.14 Редактор набора...............................155

4.15 Редактор блока................................156

4.16 Редактор локации...............................157

4.17 Редактор прав доступа............................158

Список таблиц

1.1 Предпосылки принятия решения......................34

1.2 Аналитические подходы...........................36

1.3 Подходы проектирования..........................38

1.4 Подходы внедрения .............................40

2.1 Атрибуты набора...............................50

2.2 Общие атрибуты блоков...........................56

2.3 Перечень математических операций, применяемых в атрибуте condition. . 60

2.4 Перечень базовых блоков..........................60

2.5 Перечень составных блоков.........................61

2.6 Перечень атрибутов базовых и составных блоков.............63

2.7 Перечень файловых блоков.........................73

2.8 Дополнительные общие атрибуты файловых блоков............74

2.9 Перечень атрибутов файловых блоков ...................77

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

2.11 Перечень дополнительных характеристик набора, передаваемых в шаб-лонизатор ......................................................................91

2.12 Перечень ошибок, возвращаемых для набора ..............................91

2.13 Перечень ошибок, возвращаемых для отдельного блока ....................92

3.1 Шкала значимости отношений при использовании метода анализа иерархий....................................107

3.2 Присвоение условных обозначений критериям...............108

3.3 Сопоставление относительной важности критериев............109

3.4 Вычисление весов критериев........................109

3.5 Вычисленные метрики Холстеда......................115

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