Главная страница
Навигация по странице:

  • "Национальный исследовательский университет "Высшая школа экономики" Отделение программной инженерии

  • ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

  • Объем работы

  • 2. АНАЛИТИЧЕСКИЙ ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ

  • Диссертация. "Технология создания кроссплатформенных приложений с динамическим формированием структуры и контента"


    Скачать 1.73 Mb.
    Название"Технология создания кроссплатформенных приложений с динамическим формированием структуры и контента"
    АнкорДиссертация
    Дата22.02.2022
    Размер1.73 Mb.
    Формат файлаpdf
    Имя файлаDissertation.pdf
    ТипДокументы
    #369742
    страница1 из 5
      1   2   3   4   5

    Правительство Российской Федерации
    Федеральное государственное автономное образовательное учреждение
    высшего профессионального образования
    "Национальный исследовательский университет
    "Высшая школа экономики"
    Отделение программной инженерии
    Кафедра Управления разработкой программного обеспечения
    ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
    На тему “Технология создания кроссплатформенных приложений с динамическим формированием структуры и контента”
    Студент группы 271мУРПО
    ____________________
    Пронин С. А.
    Научный руководитель
    ____________________
    проф., к.т.н. Авдошин С. М.
    Москва, 2014 г.

    АННОТАЦИЯ
    Данная работа посвящена разработке технологии создания кроссплатформенных приложений с динамическим формированием структуры и контента. Основные задачи включают в себя поиск и разработку оптимального паттерна проектирования мобильных приложений, на основе которого возможно построение архитектурного решения, позволяющего создание приложений с динамической структурой и контентом. Выбранное оригинальное решение является модифицированным паттерном Model-View-ViewModel, который включает структурные элементы паттерна Model-View-Controller.
    В работе приведен анализ существующих подходов к решению проблемы создания кроссплатформенных приложений, и, в конечном счете, предложена оригинальная архитектура разработанной технологии, предусматривающей создание нативных мобильных кроссплатформенных приложений без необходимости написания программного кода.
    Отдельное внимание уделяется описанию модели предметной области создаваемых кроссплатформенных приложений. Конечная реализация включает runtime-генерацию классов, на основе которых происходит конфигурация локального для клиентского приложения ORM хранилища данных с учетом возможности изменения описания модели.
    Результатами являются: реализованный паттерн проектирования, разработанная технология создания кросс-платформенных приложений с динамическим формирование структуры и контента, разработанное веб-приложение - конструктор, позволяющий настраивать и изменять структуру и контент кросс-платформенных приложений, разработанное демонстрационное мобильное приложение, способное изменять структуру и содержание контента без внесения изменений в исходный код.
    Объем работы: 73 страницы, 4 главы, 19 использованных источников.
    Ключевые слова: MVC, MVVM, кроссплатформенные приложения, runtime-создание классов, технология создания приложений.
    !2

    ОГЛАВЛЕНИЕ
    1. Введение 3 1.1. Цели работы 7 2. Аналитический обзор существующих решений 9 3. Описание архитектуры 22 3.1. Выбор основополагающего паттерна проектирования 22 3.2. Реализация собственного паттерна проектирования 27 3.2.1. Варианты установки значений для объектов связей 36 3.3. Описание работы исполняемых процедур, как инструмента динамической генерации контекста данных 38 3.4. Суммирующее описание предлагаемого архитектурного решения 40 3.5. Описание специфики runtime-генерации классов 43 3.6. Описание runtime возможностей программных платформ
    47 3.7. Динамическое описание модели
    50 3.8. Описание разработанного демонстрационного мобильного приложения 53 4. Заключение 56
    Список использованных источников 58
    Приложение 1. Модель данных серверного решения 61
    Приложение 2. Описание API для создания скриптов для Procedure
    62
    Приложение 3. Пример 1 исполняемого скрипта для Procedure на языке Python 63
    Приложение 4. Пример 2 исполняемого скрипта для Procedure на языке Python 64
    Приложение 5. Пример структуры приложения в формате JSON 65
    Приложение 6. Описание серверного API технологической платформы 71
    Приложение 7. Программный код разработанного решения 73
    !3

    1. ВВЕДЕНИЕ
    В настоящее времен сложно отрицать взрывной рост количества пользователей мобильных устройств [17] (рис. 2). Рынку любой отрасли приходится в той или иной мере сконцентрировать свое внимание на мобильных устройствах, как с точки зрения маркетинга, так и с точки зрения непосредственного взаимодействия с клиентом. Потенциальные потребители в настоящий момент проводят огромное количество времени, используя мобильные устройства. Внутреннее распределение внимания можно разделить на две составляющих: использование приложений и просмотр мобильных веб-страниц.
    !
    Рисунок 1. Распределение времени пользователя при использовании мобильного устройства
    !4

    Рисунок 2. Поставки персональных устройств доступа к сети Интернет на глобальном рынке
    Согласно последним отчетам аналитиков [1] внимание пользователей в большей мере сосредоточено именно на приложениях, нежели чем на просмотре мобильных веб-страниц: 89% против 11% соответственно (рис. 1).
    Таким образом, одной из основных стратегий современных компаний (как малого, так и среднего бизнеса) становится развитие направления, связанного с присутствием своих приложений на мобильных платформах. Отчеты маркетинговых аналитиков от 2013 года показывают высокий интерес пользователей в отношении мобильных приложений, связанных с брендом той или иной компании (рис. 3).
    В настоящее время на рынке существует множество агенств, занимающихся заказной разработкой мобильных приложений для нужд современного бизнеса. Многие из этих приложений в конечном счете преследуют одну и ту же цель - продвижение бренда, повышение узнаваемости компании,
    развитие отношений с клиентами, продвижение с помощью мобильных социальных инструментов и сервисов. Такого рода
    !5
    заказные приложения могут позволить себе только крупные компании, тогда как компании малого и среднего размера, а так же государственные и образовательные учреждения, не могут позволить себе такого рода решения, так как цена их разработки очень высока. Решение этой проблемы и лежит в основе данной работы.
    В рамках курсовой работы первого курса магистратуры был создан комплекс приложений для продвижения образовательных программ в социальных медиа, в составе которого были разработаны клиентское и серверное приложения, позволяющие изменять содержание и структуру контента в рамках заранее заданных шаблонов без изменения исходного кода клиентской стороны. Примененные подходы и методы подвели автора настоящей работы к пониманию требуемого уровня абстракции технологии, при которой была бы возможна разработка мобильных приложений без необходимости написания программного кода с использованием произвольных шаблонов.
    !6
    Рисунок 3. Заинтересованность пользователя в мобильных приложениях компаний [2]

    1.1. Цели работы
    Целью работы является создание технологии, которая бы позволила создавать кросс-платформенные мобильные приложения с динамическим формированием структуры и содержания контента. Уникальной составляющей технологической платформы является возможность создания приложений, не покидая веб-браузер, то есть без необходимости привлечения программистов и разработчиков.
    Необходимо разработать инструмент, позволяющий создавать и конфигурировать структуру приложения без вмешательства со стороны разработчика клиентского приложения. Таким образом, любая компания или образовательное учреждение сможет создать свое мобильное приложение с использованием без привлечения сторонних компаний и каких-либо затрат.
    Разработка технологической платформы включает в себя следующие задачи.
    1. Проектирование архитектуры, допускающей создание и настройку динамической структуры и содержания контента.
    2. Разработка web-инструментов проектирования и генерации динамического отображения контента.
    3. Разработка API платформы, которое бы позволило сторонним программистам разрабатывать свои модули для использования в создаваемых приложениях.
    4. Разработка внешнего API, которое будет позволять мобильным приложениям взаимодействовать с платформой: получение структуры и шаблонов отображения контента, обработка событий и действий клиентского приложения.
    5. Разработка демонстрационного мобильного клиента на платформе iOS,
    !7
    которое будет реагировать на изменения в структуре, контенте и отображении без необходимости пересборки.
    По сути, можно говорить о технологической платформе, как о
    конструкторе, позволяющем удаленно модифицировать имеющееся у пользователя приложение без внесения изменений в исходных код и без повторной компиляции и сборки.
    !8

    2. АНАЛИТИЧЕСКИЙ ОБЗОР СУЩЕСТВУЮЩИХ РЕШЕНИЙ
    С точки зрения анализа подобных решений можно выделить две категории существующих на рынке продуктов: платформы для генерации готовых мобильных приложений и платформы для создания приложений, используя веб-технологии с последующей генерацией мобильного клиента для разных платформ.
    Все эти продукты так или иначе пытаются решить проблему кросс- платформенной разработки мобильных приложений. Согласно современным тенденциям можно выделить три основных типа создаваемых мобильных приложений [12]:
    1. Нативные приложения (native), то есть специфические для какой-либо конкретной платформы: iOS, Android, Windows Phone и т.д.. Разработку необходимо вести с помощью специальных инструментов на разных для каждой отдельной взятой платформы языках программирования.
    Созданное приложение обычно не является универсальным, то есть необходима разработка отдельных приложений для разных мобильных платформ. В целом, нативные приложения обладают полноценным набором функций, отзывчивостью интерфейса, а также отличаются производительностью. Можно выделить основные отличительные способности:
    • multi-touch жесты;
    • быстрый графический API - эта особенность является критической при отображении больших объемов данных и взаимодействии с ними;
    • доступ к встроенным компонентам устройства и системы: камера, адресная книга, геолокация, а так защищенное локальное хранилище (мобильные приложения в рамках мобильной
    !9
    операционной системы и ее технологической платформы находятся в, так называемой, “песочнице” (“sandbox”), что обычно исключает доступ к их локальным данным извне);
    • простота в использовании для конечного пользователя: нативное решение - это решение, к которому пользователь мобильного устройства уже успел привыкнуть;
    • документация: на просторах сети Интернет и на полках книжных магазинов можно найти массу информации о разработке приложений для таких мобильных платформ, как, например,
    Android и iOS, а также материалы для изучения обычно поставляются компаниями разработчиками мобильных операционных систем и активно поддерживаются сообществами разработчиков.
    Нативные приложения обычно разрабатываются с использованием интегрированных сред разработки, которые предоставляют инструменты для создания и отладки мобильных приложений, а также зачастую интегрированы с системами управления проектами (TeamCity,
    Jira и т.п.) и системами контроля версий (Git, SVN, Mercurial).
    Необходимость в использовании подобных зачастую сложных и перегруженных инструментов объясняется сложностью разработки для разных платформ.
    Большим преимуществом нативного приложения является его представление для пользователя: каждая мобильная платформа предоставляет свой “магазин приложений”, где, с одной стороны, разработчики размещают свои приложения, а потребители, с другой стороны, устанавливают их себе на устройства без дополнительных трудовых затрат.
    2. HTML5 приложения, то есть использующие стандартные веб-
    !10
    технологии: обычно это HTML5, JavaScript и CSS. Такой подход подразумевает разработку кросс-платформенных приложений, которые будут работать на разных с точки зрения программной платформы устройствах. Не смотря на кажущиеся преимущества такой разработки, зачастую открытым остается вопрос управления сессиями, offline- хранение данных, работа без соединения, а также доступ к нативной функциональности устройства.
    Мобильное HTML5 приложение - это, обычно, веб-страница (или набор связанных веб-страниц) со специально спроектированной для отображения на мобильных устройствах разметкой. Современные
    HTML5 приложения не зависят от конкретной платформы и могут исполняться любым современным мобильным веб-браузером. Порог входа для разработки HTML5 приложений обычно ниже, однако
    !11
    Рисунок 4. Количество поддерживаемых функций стандарта
    HTML5 в зависимости от веб-браузера
    специфика верстки веб-страниц приводит к определенным трудностям: программные платформы по-разному реализуют некоторые функции отображения веб-страниц (рис. 4).
    Основным преимуществом мобильных HTML5 приложений является возможность обновления контента и структуры приложения без необходимости выпуска отдельного обновления (сборки). Современная разработка HTML5 приложений упрощается благодаря таким библиотекам, как iScroll, JQuery Mobile, Sencha Mobile и др., которые предоставляют UI компоненты, по производительности не уступающие их нативным аналогам. Главным же недостатками HTML5 приложений являются:
    • отсутствие защищенного локального хранилища данных;
    • базовые UI компоненты;
    !12
    Рисунок 5. Объемы рынка мобильных приложений (тыс.)

    !13
    Рисунок 6. Распределение времени пользователя при использовании мобильных устройств
    Рисунок 7. Распределение выпускаемых разработчиками мобильных приложений

    • отсутствие оптимизации под конкретное устройство, что обычно ведет к потере производительности;
    • отсутствие возможности централизованного распространения приложений: мобильные технологиче ские платформы предоставляют “магазины приложений” (Apple AppStore, Google
    Play, Windows Marketplace) только для нативных продуктов;
    • разные степени поддержки функционала HTML5 стандарта веб- браузерами мобильных операционных систем (рис. 4).
    3. Гибридные приложения, то есть “приложения-обёртки”, которые получаются за счет внедрения HTML5 приложения внутрь нативного контейнера, что позволяет скомбинировать лучшие стороны обоих подходов.
    Существует два основных варианта сборки гибридных приложений:
    • локальная сборка - все HTML файлы разметки, а также необходимые файлы скриптов, стилей и ресурсов хранятся локально внутри мобильного приложения и не требуют соединения с сетью Интернет для полнофункциональной работы;
    • серверная сборка - внутри приложения посредством WebView компонента отображается контент, расположенный на заранее заданном сервере; в таком случае функционал приложения при отсутствии online-соединения сильно ограничен.
    Согласно аналитическим отчетам [18] пользователи мобильных устройств отдают свое предпочтение нативным, нежели чем мобильным веб- приложениям (рис. 6). С другой стороны, эти же отчеты показывают нежелание разработчиков переходить на разработку HTML5 приложений
    (рис. 5, 7).
    Созданная в рамках настоящей работы технология разработки мобильных
    !14
    приложений подразумевает создание именно нативных приложений, но без необходимости написания программного кода и самостоятельной сборки готового приложения. Разработанная технологическая платформа подразумевает наличие клиентского мобильного приложения, которое может изменять структуру и содержание контента без необходимости повторной пересборки, а все изменения в структуре конфигурируются с помощью удаленного веб-приложения. Структура и содержание контента мобильного приложения хранятся локально стандартными для конкретной мобильной платформы способами. Далее приведен обзор существующих самых близких аналогов разработанной технологической платформы.
    В настоящий момент на рынке существует несколько платформ- конструкторов генерации готовых мобильных приложений. Был проведен анализ каждого из представленных решений по следующим критериям:
    1. поддерживаемые мобильные платформы - для каких мобильных платформ конструктор позволяет создавать мобильные приложения;
    2. тип создаваемого приложения - различают нативное (средствами операционной системы, используя стандартные UI элементы), либо "обёрнутое" web-приложение, когда приложение, по сути, состоит только из web-view элемента, который показывает заранее загруженный
    HTML+JS+CSS контент;
    3. настройка внешнего вида - какие настройки внешнего вида приложения доступны в конструкторе.
    Ниже приведен краткий обзор каждого из приложений. Таблица 1 показывает результаты проведенного анализа в соответствии с выбранными критериями.
    !15

    Kitapps - attendify
    Web-сайт: http://attendify.com/
    Платформа-конструктор, позволяющая создавать iOS приложения для событий и социально-значимых мероприятий. Отличается высокой ценой создания приложения. Главным недостатком является малое количество шаблонов и почти полное отсутствие социальных инструментов.
    My-apps.com
    Веб-сайт: http://my-apps.com/
    Платформа-конструктор, ориентированная на приложения для бизнес- организаций. Предлагаются решения для iOS и Android платформ. На данный момент существует 4 разных типа шаблонов в зависимости от типа компании, для которой создается приложение. Главным недостатком является малое количество шаблонов.
    BiznessApps
    Web-сайт: http://www.biznessapps.com/
    Самая крупная платформа-конструктор, предлагающее решения сразу для нескольких (iOS, Android, Mobile Web) мобильных платформ. Структура приложения настраивается с помощью web-приложения, после чего появляется возможность собрать готовое приложение. Предлагаются шаблоны для бизнес-ориентированных предприятий. Основным недостатком платформы является то, что предлагаемое решение в итоге является не нативным приложением, а лишь оберткой мобильного web-приложения.
    В итоге, главным преимуществом разработанного продукта является нативность создаваемых мобильных приложений, а также возможность создания произвольного шаблона отображения, что не предусмотрено ни в одном из рассмотренных продуктов.
    !16

    Таблица 1
    Сравнение существующих похожих решений
    Аналогично, был проведен анализ решений для разработки мульти- платформенных приложений в соответствии со следующими критериями:
    1. поддерживаемые мобильные платформы - для каких мобильных платформ конструктор позволяет создавать мобильные приложения;
    2. тип создаваемого приложения - различают нативное (средствами операционной системы, используя стандартные UI элементы), либо "обёрнутое" web-приложение, когда приложение, по сути, состоит только из web-view элемента, который показывает заранее загруженный
    HTML+JS+CSS контент;
      1   2   3   4   5


    написать администратору сайта