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


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

Работа №31877

Тип работы

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

Предмет

информатика

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

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


ВВЕДЕНИЕ 3
1 ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ 5
1.1 Обзор паттернов проектирования 5
1.2 Выбор паттерна проектирования в генерируемом приложении 12
2 ТРЕБОВАНИЯ К ПРОГРАММНОМУ РЕШЕНИЮ 14
2.1 Структура входного файла 14
2.2 Общие требования к программному продукту 18
3 РЕАЛИЗАЦИЯ ПРОГРАММНОГО РЕШЕНИЯ 21
3.1 Общая структура программного решения 21
3.2 Базовые компоненты 23
3.3 Конкретные сущности 27
3.4 Система шаблонов 30
3.5 Генераторы 32
3.6 Взаимодействие компонентов системы 43
3.7 Результат работы программного решения 45
ЗАКЛЮЧЕНИЕ 48
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 49
ПРИЛОЖЕНИЕ А. Пример входного файла 51
ПРИЛОЖЕНИЕ Б. Пример сгенерированного кода приложения 53
ПРИЛОЖЕНИЕ В. Исходный код программы


Для обеспечения гибкости и упрощения тестирования программного обеспечения особенное внимание в процессе разработки уделяется следованию паттерну проектирования, использование которого позволяет разрабатывать приложения со слабосвязанными компонентами, которые разделены на абстрактные слои [1]. Наиболее распространенными шаблонами проектирования в области разработки приложений для операционной системы Android на текущий момент являются MVP, MVC, MVVM, Clean Architecture [2]. На данный момент одним из перспективных шаблонов построения архитектуры является MVI (Model-View-Intent). Например, согласно статье Ханнеса Дорфманна, использование MVI позволяет сделать Android приложение с более предсказуемым поведением и предотвратить возможность конфликта состояний окна [3].
В процессе реализации архитектуры приложения, которая включает в себя создание интерфейсов для компонентов приложения, создание сервисов, которые могут предоставлять данные как из сети, так и из внутреннего хранилища устройства, создание окон с наиболее часто встречающимся функционалом, разработчик может столкнуться с написанием однотипного кода так как, зачастую, для решения тривиальных задач архитектура приложения и её элементы схожи. Из-за схожести элементов возникает повторение однотипных действий как на уровне разных проектов, так и на уровне одного проекта. Это значит, что разработка и написание архитектуры приложения происходит по большей части вручную, что требует определенных временных затрат, размер которых зависит от нетривиальное™ задач и общего объема проекта.
Частичная автоматизация процесса построения архитектуры приложения позволит уменьшить количество однотипного кода, который программист пишет вручную, что в большинстве случаев позволит сократить время на построение и написание архитектуры и снизить количество кода, который пишет разработчик, что снижает шансы допущения ошибки последним, так как, по результатам исследования компании Coverity, на 1000 строк кода в открытом ПО насчитывается около 0.45 ошибки, на 1000 строк кода в проприетарном ПО насчитывается около 0.64, где средний размер проекта с открытым исходным кодом около 832000 строк кода, а средний размер проекта с закрытым исходным кодом около 7500000 строк кода [4].
Цель данной работы - разработать программный продукт, который позволяет автоматизировать построение архитектуры приложения.
Задачи, выполнение которых необходимо для достижения поставленной цели:
• выделить основные сущности, представляющие из себя компоненты архитектуры приложения;
• разработать структуру входного файла, который описывает архитектуру разрабатываемого приложения в декларативном стиле;
• выявить связи между сущностями и их взаимодействие друг с другом;
• реализовать генерацию кода, опираясь на описанные сущности.


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

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

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


В результате выполнения данной дипломной работы был разработан программный инструментарий, который позволяет автоматизировать построение архитектуры Android-приложения.
Для достижения данной цели были выполнены следующие задачи:
• выделены основные сущности, представляющие из себя компоненты приложения;
• на основании выделенных сущностей разработана структура входного файла, который описывает структуру генерируемого приложения в декларативном стиле;
• выявлены связи между сущностями генерируемого приложения и их взаимодействие друг с другом;
• реализована генерация кода компонентов приложения (классы данных, Kotlin-интерфейсы компонентов, реализация классов репозиториев, реализация Interactor-компонентов, компоненты, отвечающие за инъекцию зависимостей, файлы настроек системы автоматической сборки Gradle).
Для дальнейшего развития данного программного решения планируется реализовать поддержку генерации экранов приложения, кэширования данных, а также графический интерфейс для программного решения.
Результаты данной выпускной квалификационной работы опубликованы в открытом доступе в репозитории GitLab и доступны по ссылке http://gititis.kpfu.ru/OrtyomZ/project architecture generation.



1. Sinhal, A. MVC, MVP and MVVM Design Pattern [Электронный ресурс]
/ A. Sinhal // Medium. - 2017. - URL: https://medium.com/
@ankit. sinhal/mvc-mvp-and-mvvm-design-pattem-6e 1695 67bbad (дата
обращения: 20.04.2019).
2. Quang, N. Architecture patterns in Android [Электронный ресурс] / N.
Quang // Medium. - 2017. - URL: https://android.jlelse.eu/
architecture-pattems-in-android-abf99f2b6f70 (дата обращения: 23.04.2019) .
3. Dorfmann, H. Reactive Apps with Model-View-Intent [Электронный ресурс] / H. Dorfmann. - 2017. - URL: http://hannesdorfmann.com/ android/mosby3-mvi-l (дата обращения: 19.04.2019).
4. Coverity: Ha 1000 строк исходного кода открытых программ
насчитывается 1 дефект [Электронный ресурс]. - 2012. - URL: https://www.securitylab.ru/news/420674.php (дата обращения:
22.04.2019) .
5. Verdecchia, R. Guidelines for Architecting Android Apps: A Mixed-Method Empirical Study [Text] / R. Verdecchia, I. Malavolta, P. Lago // 2019 IEEE International Conference on Software Architecture (ICSA). - 2019. - P. 141-150.
6. Jarad, N. How to do TDD in Android [Электронный ресурс] / N. Jarad //
Medium. - 2016. - URL: https://medium.com/mobility/
how-to-do-tdd-in-android-90f013d91d7f (дата обращения: 20.04.2019).
7. Mainkar, P. Expert Android Programming: Master skills to build enterprise grade Android [Text] / P. Mainkar. - Birmingham: Packt Publishing Ltd, 2017.-381 p.
8. Clean Architecture Manifest [Электронный ресурс]. - 2018. - URL: https://github.com/ImangazalievM/CleanArchitectureManifest/blob/master/ README-RU.md (дата обращения: 21.04.2019).
9. Лекция 4 по архитектуре андроид приложения. Clean Architecture
[Электронный ресурс]. - URL: https://www.fandroid.info/
lektsiya-4-po-arhitekture-android-prilozheniya-clean-arcitecture/ (дата обращения: 25.04.2019).
10. Dorfmann, Н. Reactive Apps with Model-View-Intent - Part2 - View and Intent [Электронный ресурс] / H. Dorfmann. - 2017. - URL: http://hannesdorfimann.com/android/mosby3-mvi-2 (дата обращения:
19.04.2019) .
11. Data Classes [Электронный ресурс]. - URL: https://kotlinlang.org/docs/reference/data-classes.html (дата обращения: 26.04.2019) .
12. Retrofit [Электронный ресурс]. - URL: https://square.github.io/retrofit/ (дата обращения: 29.04.2019).


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




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