Диссертация (1090660), страница 4
Текст из файла (страница 4)
Детально рассмотрена архитектура фабрики, задействованная в интерпретаторе при обработке логики работы блоков. Выбран шаблонизатор и показан алгоритмвзаимодействия с ним. Обособлено внедрение в проект синхронизатора, показаны алгоритмы его работы с BML-документами, проведено его нагрузочное тестирование,показан обзор методов межпроцессного взаимодействия.
В конце главы представленвизуальный редактор BML.В заключении подведены итоги работы над диссертацией с подробным описаниемполученных результатов.В приложении A представлены акты о внедрении и свидетельство на программудля ЭВМ.В приложении B представлены листинги проектов (рецепты), реализованных наоснове разработанной методики и языка BML.Возможное применение. Результаты диссертационной работы могут быть использованы в индустрии Web-разработки в качестве гибкого и эффективного инструментасоздания динамических Web-узлов с высоким уровнем абстракции. Уровень подготовки, необходимый для использования системы зависит от уровня сложности разрабатываемого проекта и может варьироваться от начинающего пользователя без знанийязыков программирования и до профессионала индустрии.18Автор благодарит за неоценимый вклад в подготовку диссертационной работы:научного руководителя, к.т.н., доц.
Силуянова Александра Вячеславовича за напутствия и ценные указания по практической части, д.т.н., проф. Силуянову МаринуВладимировну, а также д.т.н., проф. Раева Вячеслава Константиновича д.т.н., проф.Никульчева Евгения Витальевича и к.т.н., доц. Андрианову Елену Гельевну за методические указания по подготовке рукописи, зав.
каф. «СМиИГ», к.т.н., доц. ХорошкоЛеонида Леонидовича за помощь по внедрению результатов диссертационной работыв учебный процесс, к.ф.-м.н., доц. Мокрякова Алексея Викторовича за свой бесценный аналитический опыт, заместителя главного редактора научной редакции МФПУ«Синергия» Власову Екатерину Аркадьевну за рекомендации по оформлению статей,д.т.н. Рыжикова Юрия Ивановича за пособие по подготовке научных работ, ст.преп.каф. «СМиИГ» Квашнина В.М. за консультации по построению эффективных моделей баз данных проекта, а также студентов кафедры «СМиИГ», совместно работавших над проектом и внёсших большой вклад в практическую реализацию представленной работы: Бубнова Андрея Вадимовича, Морозова Андрея Сергеевича, НовиковаАлександра Юрьевича, Новикова Владислава Евгеньевича, Тарасенко Сергея Сергеевича, Цимбала Артёма Анатольевича, Ярмухаметова Филиппа Фирдусовича и других.19Глава 1Анализ технологий и методовWeb-разработкиЭффективный инструментарий строится по принципу оптимального распределения уровней абстракции: подчёркивания основных высокоуровневых сущностей ивынесении рутинных задач в базовые обобщённые алгоритмы.
С повышением уровняабстракции упрощается процесс разработки, однако снижается гибкость. Зачастую,инструментарий с высоким уровнем абстракции не может предоставить достаточный функционал для реализации специфических свойств разрабатываемого объекта.И наоборот, низкий уровень абстракции заставляет разработчика тратить время наосвоение инструментария и постоянному возвращению к рутинным задачам вместососредоточения сил на поиске основного решения [51].Описанные проблемы сущестувют во всех отраслях информационных технологий.Не стала исключением и область Web-разработки [14]. Определим типовую классификацию Web-технологий по уровню абстракции с указанием достоинств и недостатков:– Языки программирования– Низкий уровень абстракции, повышенная гибкость разработки, появлениебольшого количества рутинных задач;– Требуются профессиональные знания в области программирования;– Фреймворки– Средний уровень абстракции, оптимальное отношение эффективность/гибкость, рутина снижена до минимума;20– Помимо профессиональных знаний, требуются дополнительные временны́ересурсы на изучение специфики каждой из библиотек;– Системы управления контентом– Высокий уровень абстракции, знания в области программирования требуются либо на базовом уровне, либо не требуются вовсе;– Негибкая разработка.В работе описывается методика моделирования динамических Web-приложений спомощью декларативного программирования.
Декларативное программирование является одной из самых простых практик ведения разработки. Оно описывает не методику создания объекта, а его состояние в зависимости от внешних условий. Декларативный стиль программирования по уровню абстракции находится выше классического императивного, следовательно освоение языка не будет представлять значительныхтрудностей для начинающего разработчика. Например, язык HTML, по своей природеявляющийся декларативным, описывает общие свойства документа, а не то, как этотдокумент должен отображаться на экране.
В работе предлагается применить данныйподход на серверной стороне, описывая основную логику работы сущности в видееё свойств, а не абстрактных алгоритмов. Положительном фактором такого описания является то, что все свойства сущностей можно визуализировать. Таким образом,разрабатываемая методика включает язык, имеющий все свойства декларативного,предметно-ориентированного и визуального.Немаловажным аспектом является использование парадигмы разделения логических структур и представления выходных данных. Подобная парадигма используетсяво многих отраслях, связанных с разработкой программного обеспечения, и носит название MVC (Model-View-Controller) [2]. Роль модели и контроллера отведена языкудекларативной разметки, а представления — шаблонизатору — специализированномуобработчику, сопоставляющему полученные данные с заготовленным шаблоном.В рамках выполнения работы, как было описано выше, произведено перераспределение уровней абстракции, выделен ограниченный набор сущностей, доступных дляманипуляции.
Так, набор всех действий, решаемых в рамках работы динамическихWeb-интерфейсов можно свести к следующим:– Операции с данными: выборка, поиск, модификация;– Авторизация пользователей и разграничение прав доступа к данным [73].21В сфере информационных технологий используются языки с самыми различнымипарадигмами программирования: императивные, декларативные, структурные функциональные, объектно-ориентированные, процедурные, логическое и др.
Структурапрограммы, исполняющей идентичную логику, может кардинально измениться в зависимости от выбранной парадигмы. Например, в объектно-ориентированном программировании происходит работа с коллекцией объектов, имеющих свои свойстваи методы, и взаимодействующих между собой точно заданными постулатами.
Приэтом в процедурном программировании работа происходит с более примитивнымиструктурами данных — процедурами и функциям. Тем не менее, и процедурное иобъектно-ориентированное программирование обобщается более обширной парадигмой, называемой императивным программированием.Императивное программирование представляет собой процесс манипуляции данными в виде последовательно-заданных инструкций, изменяющих состояние системы. Процесс программирования на императивном языке можно сравнить с приказами в повелительном наклонении в естественных языках.
Характерной особенностьюпрограмм, использующих императивную парадигму, является наличие в них операции присваивания, позволяющей манипулировать данными в памяти и сохранять ихдля дальнейшего использования. Императивные языки используют специализированные конструкции — циклы, позволяющие многократно выполнять отдельные частикода определённое количество раз или до тех пор, пока не будет выполнено заданноеусловие. Существуют также условные ветвления, исполняющие выражения тогда итолько тогда, когда условие истинно.
Данная парадигма широко используется в языках общего назначения, таких как C, C++, Pascal и др. Сей факт связан с природойпарадигмы, направленной на универсальное применение за счёт высокого уровня абстракции и, таким образом, на непосредственное манипулирование данными самогоразнообразного уровня. Под манипуляцией данных[28] подразумеватся получение (втеории баз данных – выборка), создание, изменение и удаление данных из какоголибо внешнего хранилища на серверной стороне. Как правило, под таким хранилищем подразумевается система управления базами данных (СУБД), однако существуюти другие принципы хранения: в памяти НЖМД без дополнительного ПО (файловаябаза данных), в оперативной памяти (memcached) и др.Противопоставлением императивной парадигме является декларативное программирование и заключается в том, что логика работы программы задаётся описанием свойств уже существующих объектов, в то время как в императивных языках всеобъекты и их прототипы создаются «с нуля».
Иными словами, декларативная парадиг-22ма описывает какова сущность, а не как её создать [41]. Характерной особенностьюпарадигмы является описание программной логики без необходимости соблюденияпорядка выполнения. Многие языки программирования используют декларативныйподход для сокращения или избавления от побочных эффектов путём описания того,как именно программа должна выстроить объекты своей предметной области, нежели описания программы в виде абстрактных семантических примитивов.
В этом изаключается главное отличие описанных двух парадигм. Таким образом, декларативные языки являются чистыми и детерминированными, что является несомненнымпреимуществом при проведении отладки.Исходя из этого, напрашивается вывод, что декларативные языки больше заточены под решение узкоспециализированных задач в противовес императивным,где путём построения строго-заданного алгоритма решаются задачи универсального толка.
Так, декларативные языки являются в большинстве своём предметноориентированными (иногда имеет место термин «проблемно-ориентированный»)(англ. Domain Specific Language, DSL — «предметно-специфичный язык»). К таким языкам относится язык гипертекстовой разметки HTML, предназначенный дляописания того, что должно быть на Web-странице, а не того, как она должнабыть сгенерирована браузером.
К другим языкам такого рода относятся: структурированный язык запросов SQL (англ. Structured Query Language), язык TEX и егопрепроцессор LATEX, с помощью которых выполнена представленная работа, регулярные выражения, любые языки логического и функционального программирования. Предметно-ориентированные языки не являются Тьюринг-полными[81], однако это обстоятельство никак не ущемляет решения поставленных перед нимизадач.