Разработка системы проверки совместимости лицензий ПО
|
Введение 4
1. Обзор предметной области 7
1.1. Открытое программное обеспечение 7
1.2. Лицензии программного обеспечения 7
1.3. Совместимость типов лицензий 11
1.4. Совместимость открытых лицензий 12
1.5. Исследования нарушений лицензирования ПО 13
2. Обзор существующих решений 15
3. Архитектура плагина 18
4. Алгоритм контроля лицензий 20
4.1. Извлечение информации о лицензиях компонент проекта 21
4.2. Определение допустимых лицензий для модуля проекта 27
5. Пользовательской интерфейс плагина 32
6. Апробация плагина 36
Заключение 39
Список литературы 42
1. Обзор предметной области 7
1.1. Открытое программное обеспечение 7
1.2. Лицензии программного обеспечения 7
1.3. Совместимость типов лицензий 11
1.4. Совместимость открытых лицензий 12
1.5. Исследования нарушений лицензирования ПО 13
2. Обзор существующих решений 15
3. Архитектура плагина 18
4. Алгоритм контроля лицензий 20
4.1. Извлечение информации о лицензиях компонент проекта 21
4.2. Определение допустимых лицензий для модуля проекта 27
5. Пользовательской интерфейс плагина 32
6. Апробация плагина 36
Заключение 39
Список литературы 42
На сегодняшний день существует большое количество проектов с открытым исходным кодом (open source projects). В 2018 году в открытом доступе на хостинге IT-проектов GitHub существовало более 180 000 открытых проектов [22], и их количество продолжает расти.
Открытые лицензии программного обеспечения позволяют разработчикам надлежащим образом использовать, модифицировать и распространять программное обеспечение. За нарушение условий лицензии предусмотрена ответственность, включающая крупные денежные штрафы. Лицензирование открытого программного обеспечения — сложная область со множеством нюансов. На данный момент насчитывается более 450 различных открытых лицензий [27].
Обычно программисты склонны повторно использовать любой находящийся в открытом доступе код, не обращая внимания на его лицензию. В крупных IT-компаниях вопросом лицензирования занимаются специальные юристы, которые проверяют лицензии открытого ПО, использующееся в продуктах компании, и выявляют возможные несовместимости. Вместе с тем, у обычных разработчиков часто не хватает ресурсов для таких пристальных проверок.
Согласно результатам исследования фон Крога и др. [42] существуют две основные причины нарушения лицензий программного обеспечения с открытым исходным кодом. Первая причина заключается в том, что из-за ограничения в ресурсах и времени разработчики часто повторно используют сторонний код, чтобы не тратить силы на решение тривиальных задач. Вторая причина заключается в том, что из-за большого количества открытых лицензий разработчики программного обеспечения часто не понимают их условия и различия между ними, что впоследствии может приводить к нарушениям лицензирования [9].
Для того, чтобы изучить текущую ситуацию с заимствованием кода и нарушением лицензий, лаборатория Методов машинного обучения в программной инженерии JetBrains Research провела исследование потенциальных нарушений лицензирования в популярных Java-проектах на GitHub [29]. В рамках исследования было изучено и описано значительное количество открытых лицензий, а также сложная система их совместимости. По результатам исследования оказалось, что целых 9,4% методов Java-классов в данных проектах потенциально могли быть скопированы с нарушением лицензирования.
Чтобы помочь разработчикам не совершать подобных ошибок и не тратить время на отдельные проверки, можно показывать по запросу необходимую информацию прямо в интегрированной среде разработки (Integrated Development Environment, IDE). Такая возможность позволит определять совместимые лицензии проекта и сообщать программисту о потенциальных нарушениях. Благодаря этому разработчики смогут избегать ошибок, связанных с лицензиями, что потенциально снизит количество нарушений лицензирования в открытых программных продуктах.
Постановка задачи
Целью данной выпускной квалификационной работы является разработка плагина к IntelliJ IDEA для работы с лицензиями Java-проектов. Плагин должен позволить на основании лицензий компонент проекта определять допустимые лицензии для каждого модуля проекта и сообщать программисту о потенциальных нарушениях.
Для достижения цели были поставлены следующие задачи.
• Сделать обзор предметной области.
• Провести анализ существующих решений в этой области.
• Разработать архитектуру плагина.
• Реализовать алгоритм контроля лицензий проекта:
— реализовать процедуру извлечения информации о лицензиях компонент проекта;
— реализовать механизм определения допустимых лицензий для модуля проекта на основании лицензий компонент проекта.
• Реализовать пользовательский интерфейс плагина.
• Провести апробацию созданного инструмента.
Открытые лицензии программного обеспечения позволяют разработчикам надлежащим образом использовать, модифицировать и распространять программное обеспечение. За нарушение условий лицензии предусмотрена ответственность, включающая крупные денежные штрафы. Лицензирование открытого программного обеспечения — сложная область со множеством нюансов. На данный момент насчитывается более 450 различных открытых лицензий [27].
Обычно программисты склонны повторно использовать любой находящийся в открытом доступе код, не обращая внимания на его лицензию. В крупных IT-компаниях вопросом лицензирования занимаются специальные юристы, которые проверяют лицензии открытого ПО, использующееся в продуктах компании, и выявляют возможные несовместимости. Вместе с тем, у обычных разработчиков часто не хватает ресурсов для таких пристальных проверок.
Согласно результатам исследования фон Крога и др. [42] существуют две основные причины нарушения лицензий программного обеспечения с открытым исходным кодом. Первая причина заключается в том, что из-за ограничения в ресурсах и времени разработчики часто повторно используют сторонний код, чтобы не тратить силы на решение тривиальных задач. Вторая причина заключается в том, что из-за большого количества открытых лицензий разработчики программного обеспечения часто не понимают их условия и различия между ними, что впоследствии может приводить к нарушениям лицензирования [9].
Для того, чтобы изучить текущую ситуацию с заимствованием кода и нарушением лицензий, лаборатория Методов машинного обучения в программной инженерии JetBrains Research провела исследование потенциальных нарушений лицензирования в популярных Java-проектах на GitHub [29]. В рамках исследования было изучено и описано значительное количество открытых лицензий, а также сложная система их совместимости. По результатам исследования оказалось, что целых 9,4% методов Java-классов в данных проектах потенциально могли быть скопированы с нарушением лицензирования.
Чтобы помочь разработчикам не совершать подобных ошибок и не тратить время на отдельные проверки, можно показывать по запросу необходимую информацию прямо в интегрированной среде разработки (Integrated Development Environment, IDE). Такая возможность позволит определять совместимые лицензии проекта и сообщать программисту о потенциальных нарушениях. Благодаря этому разработчики смогут избегать ошибок, связанных с лицензиями, что потенциально снизит количество нарушений лицензирования в открытых программных продуктах.
Постановка задачи
Целью данной выпускной квалификационной работы является разработка плагина к IntelliJ IDEA для работы с лицензиями Java-проектов. Плагин должен позволить на основании лицензий компонент проекта определять допустимые лицензии для каждого модуля проекта и сообщать программисту о потенциальных нарушениях.
Для достижения цели были поставлены следующие задачи.
• Сделать обзор предметной области.
• Провести анализ существующих решений в этой области.
• Разработать архитектуру плагина.
• Реализовать алгоритм контроля лицензий проекта:
— реализовать процедуру извлечения информации о лицензиях компонент проекта;
— реализовать механизм определения допустимых лицензий для модуля проекта на основании лицензий компонент проекта.
• Реализовать пользовательский интерфейс плагина.
• Провести апробацию созданного инструмента.
В ходе данной работы были получены следующие результаты.
1. Сделан обзор предметной области. Рассмотрены различные типы открытых лицензий и правила совместимости между ними. Также сделан обзор известных исследований о нарушении лицензирования при копировании кода открытых проектов.
2. Проведен анализ популярных инструментов для работы с лицензиями проектов, который показал, что большинство инструментов не обрабатывают лицензии зависимостей проекта. Бесплатные инструменты не предоставляют пользователю рекомендации по выбору основной лицензии проекта и не сообщают о несовместимых лицензиях. Кроме того, ни один из инструментов не встроен ни в одну из популярных интегрированных сред разработки.
3. Спроектирована архитектура плагина. Она позволила отделить логику работы с лицензиями от пользовательского интерфейса и упростить поддержку новых детекторов и лицензий в плагине.
4. Реализован алгоритм контроля лицензий проекта. Реализован механизм извлечения информации о лицензиях модулей и зависимостей проекта, а также реализован механизм определения совместимых лицензий для каждого модуля проекта на основании лицензий зависимостей и подмодулей.
5. Реализован интерфейс плагина, который содержит подробную информацию о лицензиях модулей и зависимостей, а также список потенциальных нарушений лицензирования. Кроме того, интерфейс содержит рекомендации по выбору лицензии, совместимой с лицензиями всех модулей и зависимостей проекта.
6. Проведена апробация разработанного плагина на 100 самых популярных проектах на GitHub, содержащих код на Java. Плагин обнаружил 762 потенциальных нарушений лицензирования, из которых 384 потенциальное нарушение связано с использованием библиотек с модификациями лицензии GPL-2.0 в модулях с раз-решительной лицензией.
В результате данной работы была реализована и выпущена пилот-ная версия плагина для работы с лицензиями Java-проектов, который может успешно применяться для поиска потенциальных нарушений лицензирования. Плагин может быть улучшен главным образом за счет расширения списка поддерживаемых лицензий и более точных инструментов для определения типа лицензии по её полному тексту. Весь код проекта находится в открытом доступе на GitHub.
Благодарности
Я хочу поблагодарить Ярослава Голубева за всестороннюю поддержку в процессе работы над плагином, а также за помощь с коррекцией текста и ценные замечания по простоте восприятия работы.
Также я хочу поблагодарить Владислава Танкова за помощь в решении проблем, связанных с технической частью этой работы.
Отдельное спасибо Ивану Кузнецову, который разработал модель машинного обучения для определения лицензии по тексту и помогал с интеграцией модели в плагин.
Кроме того, я выражаю свою благодарность Егору Булычеву за то, что согласился отрецензировать эту работу и дал ценные замечания.
И, конечно же, я хочу поблагодарить своего научного руководителя, Тимофея Брыксина, который качественно и трудолюбиво оказывает помощь своим студентам в написании выпускных квалификационных работ.
1. Сделан обзор предметной области. Рассмотрены различные типы открытых лицензий и правила совместимости между ними. Также сделан обзор известных исследований о нарушении лицензирования при копировании кода открытых проектов.
2. Проведен анализ популярных инструментов для работы с лицензиями проектов, который показал, что большинство инструментов не обрабатывают лицензии зависимостей проекта. Бесплатные инструменты не предоставляют пользователю рекомендации по выбору основной лицензии проекта и не сообщают о несовместимых лицензиях. Кроме того, ни один из инструментов не встроен ни в одну из популярных интегрированных сред разработки.
3. Спроектирована архитектура плагина. Она позволила отделить логику работы с лицензиями от пользовательского интерфейса и упростить поддержку новых детекторов и лицензий в плагине.
4. Реализован алгоритм контроля лицензий проекта. Реализован механизм извлечения информации о лицензиях модулей и зависимостей проекта, а также реализован механизм определения совместимых лицензий для каждого модуля проекта на основании лицензий зависимостей и подмодулей.
5. Реализован интерфейс плагина, который содержит подробную информацию о лицензиях модулей и зависимостей, а также список потенциальных нарушений лицензирования. Кроме того, интерфейс содержит рекомендации по выбору лицензии, совместимой с лицензиями всех модулей и зависимостей проекта.
6. Проведена апробация разработанного плагина на 100 самых популярных проектах на GitHub, содержащих код на Java. Плагин обнаружил 762 потенциальных нарушений лицензирования, из которых 384 потенциальное нарушение связано с использованием библиотек с модификациями лицензии GPL-2.0 в модулях с раз-решительной лицензией.
В результате данной работы была реализована и выпущена пилот-ная версия плагина для работы с лицензиями Java-проектов, который может успешно применяться для поиска потенциальных нарушений лицензирования. Плагин может быть улучшен главным образом за счет расширения списка поддерживаемых лицензий и более точных инструментов для определения типа лицензии по её полному тексту. Весь код проекта находится в открытом доступе на GitHub.
Благодарности
Я хочу поблагодарить Ярослава Голубева за всестороннюю поддержку в процессе работы над плагином, а также за помощь с коррекцией текста и ценные замечания по простоте восприятия работы.
Также я хочу поблагодарить Владислава Танкова за помощь в решении проблем, связанных с технической частью этой работы.
Отдельное спасибо Ивану Кузнецову, который разработал модель машинного обучения для определения лицензии по тексту и помогал с интеграцией модели в плагин.
Кроме того, я выражаю свою благодарность Егору Булычеву за то, что согласился отрецензировать эту работу и дал ценные замечания.
И, конечно же, я хочу поблагодарить своего научного руководителя, Тимофея Брыксина, который качественно и трудолюбиво оказывает помощь своим студентам в написании выпускных квалификационных работ.
Подобные работы
- Методика проектирования ИТ-инфраструктуры системы выявления мошенничества с банковскими кредитами среди юридических лиц
Дипломные работы, ВКР, информатика. Язык работы: Русский. Цена: 4300 р. Год сдачи: 2020 - СУДЕБНАЯ ПРАКТИКА В СИСТЕМЕ ИСТОЧНИКОВ НАЛОГОВОГО ПРАВА (на примере ЕС и РФ)(12.00.14 )
Диссертации (РГБ), административное право. Язык работы: Русский. Цена: 700 р. Год сдачи: 2003 - РАЗРАБОТКА ИНФРАСТРУКТУРЫ И СЕРВЕРНОГО ПРИЛОЖЕНИЯ ДЛЯ ПРОЕКТА «МОНИТОРИНГ 1Т-КОНФЕРЕНЦИЙ»
Дипломные работы, ВКР, информационные системы. Язык работы: Русский. Цена: 4240 р. Год сдачи: 2021 - Разработка информационной системы учёта технического обслуживания автомобилей
Дипломные работы, ВКР, информатика. Язык работы: Русский. Цена: 4345 р. Год сдачи: 2019 - Авторское право на аудиовизуальное произведение по законодательству Российской Федерации (Авторское право,
Российский государственный гуманитарный университет)
Дипломные работы, ВКР, гражданское право. Язык работы: Русский. Цена: 2200 р. Год сдачи: 2023 - Оценка рисков информационной безопасности и формирование политики информационной безопасности для операционной системы EMBOX
Дипломные работы, ВКР, информационная безопасность. Язык работы: Русский. Цена: 4800 р. Год сдачи: 2016 - МЕТОДЫ ТЕХНИКО-КРИМИНАЛИСТИЧЕСКОЙ ЭКСПЕРТИЗЫ ДОКУМЕНТОВ: СОВРЕМЕННОЕ СОСТОЯНИЕ И ПЕРСПЕКТИВЫ РАЗВИТИЯ
Дипломные работы, ВКР, криминалистика. Язык работы: Русский. Цена: 4325 р. Год сдачи: 2017 - Психолого-акмеологическое сопровождение развития профессионализма специалиста в процессе повышения квалификации
Магистерская диссертация, психология. Язык работы: Русский. Цена: 4920 р. Год сдачи: 2015



