📄Работа №30623

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

📝
Тип работы Дипломные работы, ВКР
📚
Предмет Информатика и вычислительная техника
📄
Объем: 43 листов
📅
Год: 2018
👁️
Просмотров: 406
Не подходит эта работа?
Закажите новую по вашим требованиям
Узнать цену на написание
ℹ️ Настоящий учебно-методический информационный материал размещён в ознакомительных и исследовательских целях и представляет собой пример учебного исследования. Не является готовым научным трудом и требует самостоятельной переработки.

📋 Содержание

ВВЕДЕНИЕ 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).

🛒 Оформить заказ

Работу высылаем в течении 5 минут после оплаты.
Предоставляемые услуги, в том числе данные, файлы и прочие материалы, подготовленные в результате оказания услуги, помогают разобраться в теме и собрать нужную информацию, но не заменяют готовое решение.
Укажите ник или номер. После оформления заказа откройте бота @disshelp_bot для подтверждения. Это нужно для отправки вам уведомлений.

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