Тип работы:
Предмет:
Язык работы:


АВТОМАТИЗАЦИЯ ПРОЦЕССА ВНЕДРЕНИЯ ЗАВИСИМОСТЕЙ ПРИ РАЗРАБОТКЕ ANDROID-ПРИЛОЖЕНИЙ

Работа №30623

Тип работы

Дипломные работы, ВКР

Предмет

информатика

Объем работы43
Год сдачи2018
Стоимость4900 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
307
Не подходит работа?

Узнай цену на написание


ВВЕДЕНИЕ 3
1 ПОСТАНОВКА ЗАДАЧИ 5
1.1 Обзор существующих решений 5
1.2 Требования к программному продукту 6
2 РЕАЛИЗАЦИЯ ПРОГРАММНОГО ИНСТРУМЕНТА 8
2.1 Использованные технологии 8
2.2 Общая архитектура программного продукта 8
3 ПРИНЦИП РАБОТЫ БИБЛИОТЕКИ 11
3.1 Сбор информации о классах проекта 12
3.2 Генерация классов, внедряющих зависимости в корневые классы 14
3.3 Генерирование класса-фабрики 17
4 ФУНКЦИОНАЛЬНОСТЬ БИБЛИОТЕКИ 26
ЗАКЛЮЧЕНИЕ 30
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 32
ПРИЛОЖЕНИЕ 34


С каждым днем мобильные приложения все больше становятся частью нашей жизни. Они получают все больше и больше функций, решают все больше повседневных задач.
Мобильные приложения следует разрабатывать с учетом их дальнейшего расширения. Именно поэтому важно придерживаться принципа Inversion of Control. Он подразумевает максимальную изолированность отдельных модулей приложения от реализаций других, что обеспечивает большую гибкость в разработке [1].
Одной из реализаций данного принципа является внедрение зависимостей - Dependency Injection. Этот процесс представляет собой передачу ответственности за построение требуемых модулю зависимостей специально предназначенному для этого внешнему механизму [2]. Другими словами, необходимые зависимости модулю предоставляются извне.
Также следование описанному принципу упрощает тестирование продукта. Если все компоненты системы сильно завязаны друг на друге, невозможно подменить какие-либо ее части, чтобы изолировать одну из них и проверить ее работоспособность. Некоторые модули могут быть, к примеру, слишком тяжеловесными, в таком случае тестирование будет занимать значительное время; либо же зависящими от внешних сервисов, изменение поведения которых может быть и вовсе невозможно.
Для реализации Dependency Injection используются такие инструменты, как Dagger 2, называемые DI-фреймворками [3]. Они предоставляют механизм для создания и внедрения зависимостей. При их использовании были выявлены следующие недостатки:
• Необходимость написания в большинстве случаев неоправданно большого количества кода для настройки - например, Dagger 2 требует написания 3-х дополнительных классов для каждого экрана приложения [4];
• Отсутствие автоматической конфигурации и автоматического поиска зависимостей;
• В случае простой настройки, которая не требует большого количества программного кода, работа приложения заметно замедляется из-за особенностей реализации библиотеки.
Целью данной выпускной квалификационной работы является разработка базовой функциональности DI-фреймворка, учитывающей эти недостатки.
Были поставлены следующие задачи:
1. Разработать механизм автоматического поиска реализаций зависимостей;
2. Разработать механизм создания экземпляров классов зависимостей;
3. Разработать механизм внедрения созданных экземпляров классов зависимостей.

Возникли сложности?

Нужна помощь преподавателя?

Помощь студентам в написании работ!


В результате работы был разработана библиотека для внедрения зависимостей, предназначенная для использования в приложениях для операционной системы Android и обладающая следующими ключевыми особенностями:
1. Простота использования, отсутствие необходимости в написании большого количества конфигурационного кода;
2. Использование кодогенерации, что не оказывает значимого влияния на производительность приложения. Это было подтверждено тестами производительности в сравнении с аналогичными решениями. Результаты приведены в таблице 2.
Название Время сборки, с Время старта приложения, с Количество конфигурационных строк кода
Dagger 2 7,628 0,782 240
Guice 3,652 1,269 30
Ручная реализация 3,236 0,723 150
Разработанный продукт 4,167 0,843 30
Таблица 2. Сравнение производительности существующих решений и решения, выполненного в рамках данной работы.

Исходя из данных, представленных выше, можно сделать вывод, что разработанный продукт требует написания меньшего количества кода по сравнению с аналогичными решениями, а также показывает один из лучших результатов по времени запуска приложения и времени его сборки.
Все поставленные задачи были выполнены, а именно:
1. Разработан механизм автоматического поиска реализаций зависимостей;
2. Разработан механизм создания экземпляров классов зависимостей;
3. Разработан механизм внедрения созданных экземпляров классов зависимостей.
Данная библиотека позволит упростить Android-разработчикам задачу внедрения зависимостей без влияния на производительность приложения и необходимости написания большого количества шаблонного кода, так как он создается реализованным продуктом автоматически.


1. The Solution for Decoupling: Dependency Injection | Inversion of Control with the Managed Extensibility Framework (MEF) | InformIT [Электронный ресурс]. - Режим доступа: http://www.informit.com/articles/article.aspx? p=1635818&seqNum=2 (дата обращения: 03.06.2018).
2. Clean Code: A Handbook of Agile Software Craftsmanship [Текст] / Robert C. Martin. - Pearson Education, 2008. - 464 c.
3. IoC, DI, IoC-контейнер [Электронный ресурс]. - Режим доступа: https://habr.com/post/131993/ (дата обращения: 03.06.2018).
4. User's Guide | Dagger [Электронный ресурс]. - Режим доступа: https://google.github.io/dagger/users-guide (дата обращения: 03.06.2018).
5. The Android Arsenal - Dependency Injections - A categorized directory of libraries and tools for Android | The Android Arsenal [Электронный ресурс]. - Режим доступа: https://android-arsenal.com/tag/28?sort=rating (дата обращения: 03.06.2018).
6. Guice is a lightweight dependency injection framework for Java 6 and above, brought to you by Google [Электронный ресурс]. - Режим доступа: https://github.com/google/guice (дата обращения: 03.06.2018).
7. Using Java Reflection [Электронный ресурс]. - Режим доступа: http://www.oracle.com/technetwork/articles/java/javareflection-1536171.html (дата обращения: 08.06.2018).
8. Gradle Build Tool [Электронный ресурс]. - Режим доступа: https://gradle.org (дата обращения: 10.06.2018).
9. Java Platform SE 7 [Электронный ресурс]. - Режим доступа: https://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/package-su mmary.html (дата обращения: 10.06.2018).
10. A Java API for generating .java source files. [Электронный ресурс]. - Режим доступа: https://github.com/square/javapoet (дата обращения: 10.06.2018).


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2024 Cервис помощи студентам в выполнении работ