Состав команды: Арикова Кристина Георгиевна, Гусарова Александра Павловна, Утенкова Мария Александровна
Капитан команды: Утенкова Мария Александровна
Руководитель: i2z1
Обзор проекта от идеи до реализации представлен здесь
Также доступно видео демонстрации работы программы
- R версии 4.0 и выше
- Git (проект тестировался на версии git 2.48 для Windows)
- RStudio (по желанию)
Для корректной работы ПО необходимо установить пакеты, для чего можете выполнить команду:
install.packages(c(
"shiny", "shinydashboard", "DT", "dplyr", "plotly", "tidyr",
"ggplot2", "RColorBrewer", "treemap", "glue", "httr2", "DBI",
"duckdb", "stringr", "markdown", "shinyjs", "networkD3",
"zoo", "igraph", "lubridate"
))
Для запуска проекта вы можете выбрать любой удобный способ:
- Запуск через консоль R:
shiny::runApp('git-analysisProject.R')
- Запуск через RStudio:
Основные UI-библиотеки:
shiny- базовый фреймворк для создания веб-приложений на Rshinydashboard- создание панелей управления с боковым меню и вкладкамиshinyjs- дополнительные JavaScript-эффекты и анимации
Работа с данными:
dplyr- манипуляции с данными (arrange, select, filter, mutate, summarize)tidyr- преобразование структуры данныхglue- интерполяция строк и шаблонизацияstringr- обработка строковых данных
Визуализация:
ggplot2- построение статических графиковplotly- создание интерактивных графиковRColorBrewer- цветовые палитры для визуализацийtreemap- древовидные карты для иерархических данныхnetworkD3- интерактивные сетевые графики (коллаборации)
Работа с БД:
DBI- универсальный интерфейс работы с базами данныхduckdb- встраиваемая колоночная СУБД для хранения данных
Вспомогательные инструменты:
DT- интерактивные таблицы DataTableshttr2- HTTP-запросы (проверка URL, работа с API GitHub)tools- работа с файловыми путями и расширениямиmarkdown- обработка Markdown-контента
Анализ временных данных:
zoo- скользящие средние для анализа временных рядовlubridate- обработка дат и времени
Сетевой анализ:
igraph- анализ графов (выявление связей между разработчиками)
После запуска программы вас встречает следующий интерфейс:
Слева представлены навигационные ссылки по разделам:
- Репозитории: добавление новых репозиториев в базу данных, просмотр и анализ добавленных репозиториев, удаление репозиториев из базы
- Авторы: просмотр и анализ авторов, которые работали над добавленными репозиториями
- Организация: сводная информация о графике работы над добавленными проектами, топ лучших разработчиков, сеть взаимодействия разработчиков
- Рекомендации: подбор команды для проекта
- О программе: краткая информация и инструкция по работе с проектом
Возможны три способа добавления репозитория в базу данных. Для добавления репозитория нужно необходимые данные подставить в соответствующие поля формы на вкладке "Репозитории", предварительно выбрав режим добавления.
Если выбрано добавление удаленного репозитория или добавление всех репозиториев пользователя, выбранные репозитории будут склонированы в указанную пользователем директорию.
- Добавление локального репозитория:
- путь к директории, в которой располагается git-репозиторий
- Добавление удаленного репозитория:
- URL удаленного репозитория представляет собой ссылку для клонирования репозитория с удаленного хостинга
- путь к директории, в которую будет склонирован git-репозиторий
- Добавление всех репозиториев пользователя:
- Имя пользователя на сайте github.com
- путь к директории, в которую будут склонированы git-репозитории
Для удаления репозитория необходимо выбрать его в списке, кликнув по нему ЛКМ. Выбранная строка станет синей.
После этого необходимо нажать на кнопку "Удалить". Появится всплывающее окно для подтверждения удаления репозиториЯ из базы данных.
Если вы уверены, что хотите удалить репозиторий, нажмите на кнопку "Удалить", иначе нажмите на кнопку "Отмена"
При удалении репозитория из базы данных происходит удаление информации о нем, но директория с репозиторием остается нетронутой.
При необходимости пользователь может удалить локальный репозиторий стандартными средствами операционной системы.
Путь, по которому располагается репозиторий, указан в таблице со всеми добавленными репозиториями на вкладке "Репозитории". Поэтому рекомендуется при удалении репозитория из базы данных скопировать этот путь, чтобы без проблем найти и удалить репозиторий с диска.
Для анализа репозитория необходимо выбрать его в списке, кликнув по нему ЛКМ. Выбранная строка станет синей.
После этого необходимо нажать на кнопку "Анализировать".
Появится всплывающее окно. В левой части представлены фильтры:
- Авторы - участники команды, работающей над проектом
- Период - даты с-по для уточнения временного интервала анализа. По умолчанию выбран весь доступный период.
Пользователю доступны следующие графики для анализа:
- Вклад участников
- Типы изменений
- История участия
- Коммиты в файлах
Для закрытия этого окна нужно нажать на кнопку "Dismiss" или кликнуть на затемненной области за пределами всплывающего окна в рамках интерфейса программы.
Список всех авторов, работавших над добавленными в базу данных репозиториях, представлен на вкладе "Авторы".
Для анализа автора необходимо выбрать его нажатием ЛКМ, соответствующая строка станет синей.
Далее необходимо нажать на кнопку "Анализировать".
Появится всплывающее окно.
В левой части окна доступен фильтр по исследуемому периоду (даты с-по для уточнения временного интервала анализа). По умолчанию выбран весь доступный период.
Также в левой части окна представлена статистика:
- Количество репозиториев, над которыми работал автор
- Количество коммитов автора
- Среднее количество коммитов автора в день
- Наиболее часто используемое слово в описании коммита
- Наиболее продуктивный день по коммитам
Пользователю доступны следующие крафики для анализа:
- Использование языков программирования
- Анализ репозиториев по количеству файлов
- Тепловая карта
- Коммиты в репозиториях
- Активные часы
На вкладке «Обзор репозитория» в правой части окна представлены три области, демонстрирующие динамику активности проекта, список лучших разработчиков и сеть взаимодействия разработчиков.
- «Динамика активности проекта» отображает три показателя: коммиты, 7-дневное среднее и 30-ти дневное среднее по количеству коммитов во временной шкале.
Строится график работы над проектами (склонированными репозиториями) во времени по количеству коммитов. Что позволяет сделать выводы о динамике работы всех проектов.
- «Лучшие разработчики» показывает топ 5 лучших авторов, количество коммитов в активные дни и дату последнего коммита. Оценка разработчика вычисляется на основе опыта, активности и регулярности.
Лучшие авторы выбираются на основе их оценки, которая в свою очередь вычисляется как средневзвешенное произведение показателей опыта, активности и регулярности:
experience_score * 0.4 + activity_score * 0.4 + recency_score * 0.2
- «Сеть взаимодействия разработчиков» определена взаимосвязью пользователей, принимающих участие, в одинаковых файлах и проиллюстрирована в виде графов.
На основе этого графа можно сделать вывод о командах, работающих над одним проектом, то есть выполняющих коммиты в один и тех же файлах проекта.
На вкладке «Рекомендации» пользователю необходимо в веб-панели управления параметрами проекта указать требуемые характеристики.
Когда форма настройки параметров проекта будет заполнена, пользователь нажимает на кнопку «Сформировать рекомендацию», чтобы запустить процесс подбора команды.
Программа предусматривает следующие характеристики проекта:
- «Примерный размер проекта (KLOC)» - это показатель, который обозначает размер программного проекта в тысячах строк кода. Автоматически подставляется значение 50, однако пользователь может ввести нужное количество с клавиатуры или выбрав нужное число в окне.
- Приоритет проекта представляет собой выпадающий список с вариантами приоритета команды – опыт, скорость разработки, стабильность или баланс.
- Тип проекта таже является выпадающим списком с возможными типами backend, frontend, fullstack и документация.
После нажатия кнопки на экране появится результаты имеющихся в базе данных авторов – «сводные рекомендации».
В области «рекомендованная команда» указан оптимальный размер команды и ключевые разработчики, которые лучше всех удовлетворяют требованиям к реализации проекта по стилю работы и знаниям.
Ниже приведена таблица «Детальная оценка разработчиков» имеющихся в базе данных разработчиков.
Таблица содержит следующие метрики:
- Разработчик (никнейм)
- Опыт (числовой показатель 0.00-2.00)
- Активность (шкала 0.00-10.00)
- Регулярность (коэффициент 0.00-1.00)
- Основной язык
- Количество коммитов
- Средний размер коммита (в строках кода)
- Итоговая оценка
Для удобства каждый параметры таблицы отсортировать.























