Введение 3
Глава 1. Обоснование необходимости разработки платформы 6
1.1 Основные сложности при изучении библиотек и фреймворков 6
1.2 Обзор аналогов 7
1.2.1 stackshare.io 7
1.2.2 mvnrepository.com 7
1.2.3 packagist.org 8
1.2.4 rubygems.org 9
1.2.5 android-arsenal.com 10
1.2.6 Итоги обзора 10
Глава 2. Проектирование платформы 11
2.1 Функциональность платформы 11
2.2 Проектирование интерфейса платформы 11
2.3 Архитектура платформы 14
2.4 Проектирование индекса Elasticsearch 16
2.5 Реляционная база данных 18
Глава 3. Разработка интерактивной платформы 20
3.1 Реализация пользовательского интерфейса 20
3.2 Модуль поиска проектов с открытым исходным кодом 23
3.3 Модуль поиска примеров использования библиотек и фреймворков 24
3.4 Модуль поиска метаданных библиотек и фреймворков 25
3.5 Модуль анализа документации библиотек и фреймворков 26
3.6 Модуль поиска обучающих статей 27
Глава 4. Особенности реализации модулей 28
4.1 Github API 28
4.2 Поиск репозиториев с проектами 29
4.3 API поиска примеров использования библиотек и фреймворков 33
4.4 Модуль анализа используемых технологий 34
4.5 Реализация модуля взаимодействия с API сервисов хранения проектов с открытым исходным
кодом 36
4.6 Модуль анализа проектов, использующих пакетный менеджер Maven 38
Заключение 41
Список литературы 42
Приложение
На сегодняшний день сообщество разработчиков создало огромное количество программных продуктов, библиотек и фреймворков. Только в репозиториях maven насчитывается более 9-ти миллионов артефактов [1], которые упрощают разработку современному программисту. В начале разработки программного обеспечения или реализации дополнительного функционала к уже готовой системе, разработчик проводит обзор существующих технологий для конкретной предметной области. Эти технологии помогут ему реализовать программу быстрее, а также избежать часто допускаемые ошибки реализации, которые предусмотрены в них. Одновременно с этим, разработчик получит набор навыков, которые сможет использовать в дальнейшей работе. Когда опытный разработчик находит подходящую ему библиотеку, он начинает изучать документацию к ней. Если же документация оказывается недостаточно полной, а документации сгенерированной на основе стандарта документирования классов недостаточно, так как она не отражает взаимодействие между компонентами библиотеки, то разработчик начинает обращаться за помощью к сервисам, которые созданы сообществом. Программисты обращаются на следующие ресурсы:
1. reddit.com;
2. stackoverflow.com;
3. dzone.com;
4. github.com;
5. youtube.com;
Также русскоязычное сообщество используют следующие ресурсы:
1. habrahabr.ru;
2. tproger.ru;
3. proglib.io;
4. toster.ru;
Начинающий разработчик, из-за отсутствия знаний и опыта, проходит вышеописанные этапы медленнее, чем опытный. Это связано с тем, что большинство студентов, при решении каких-то задач, ищут обучающие материалы в популярных поисковых системах. На фильтрацию нерелевантных результатов поиска, составление правильного поискового запроса студенты тратят очень много времени, что сильно замедляет процесс обучения. Также студенты могут выбрать неподходящую для решения задачи технологию, что заставит произвести поиск еще раз. Еще одной проблемой является то, что студенты не умеют искать примеры использования технологии в реальных проектах. Это связано с тем, что ресурсы, такие как Github предоставляют интерфейс поиска, который слишком сложен, для них.
Интерактивная платформа, которая предоставляет поиск, подробную информацию о различных технологиях, совокупность различных статей, обучающих материалов с популярных блогов по разработке, а также показывает аналоги искомых технологий, уменьшит время, которое затрачивает студент на поиск обучающих материалов о библиотеках и фреймворках. Поиск, осуществляющийся по индексу, содержащему только информацию о библиотеках и фреймворках, поможет сократить количество нерелевантных результатов поиска. Примеры использования искомой технологии на реальных проектах с открытым исходным кодом помогут студентам найти лучшие практики использования этой технологии. Одновременно с этим платформа поможет студентам не ограничиваться одной технологией, а узнать аналогичные и изучить их. Создание такой платформы, которая не будет зависеть от конкретных технологий, и поможет студентам сократить время на изучение библиотек и фреймворков, благодаря автоматизированному
агрегированию учебных материалов к библиотекам и фреймворкам, а также представляет примеры использования из реальных проектов и будет главной целью данной работы.
В результате выполнения дипломной работы были разработаны и спроектированы архитектура и абстракции для интерактивной платформы сбора и анализа данных об использовании фреймворков и библиотек, позволяющая сократить время на поиск учебных материалов по технологиям, путем агрегации учебных статей с популярных источников, упрощающая поиск технологий для решения различных задач, мотивирует студента изучать технологии, смежные с искомой.
В процессе выполнения дипломной работы были решены следующие задачи:
1. Собрана и проанализирована информации об основных трудностях, которые возникают у студентов при поиске различных технологий и обучающих материалов к ним;
2. Спроектирована архитектура платформы;
3. Спроектированы следующие модули платформы:
a. поиска технологий;
b. сбора метаданных о технологии;
c. агрегации обучающих материалов;
d. поиска проектов, использующих технологию;
e. поиска примеров использования технологии в проектах с открытым исходным кодом;
f. анализа документации библиотек и фреймворков:
g. поиска технологий;