Правообладатель заявил о копировании исходного кода в конкурирующем продукте. Требовалось установить наличие и степень заимствования.
Правообладатель заявил, что его исходный код был скопирован и использован в конкурирующем программном продукте. Ответчик утверждал, что код разработан самостоятельно, а совпадения носят случайный характер.
Требовалось технически и проверяемо установить, имеются ли признаки копирования, какова степень совпадения исходных кодов и кто является первичным автором спорных фрагментов.
Установлены фрагменты с высокой степенью совпадения, превышающей типичные случайные совпадения.
Совпадают характерные структурные решения, именования и нетривиальные участки логики.
По метаданным и истории изменений реконструирована последовательность появления спорных фрагментов.
Обнаружены уникальные признаки (комментарии, опечатки, служебные артефакты), указывающие на копирование.
Сборки демонстрируют совпадающее поведение и характерные строки, согласующиеся с исходным кодом.
Установлены фрагменты с высокой степенью совпадения исходных кодов. Совпадают характерные структурные решения и нетривиальные участки логики. Обнаружены уникальные маркеры, указывающие на копирование. Бинарное сравнение согласуется с выводами по исходному коду. По метаданным реконструирована хронология и направление заимствования. Случайным характером совокупность совпадений не объясняется.
Заключение стало доказательной базой правообладателя: измеримо подтверждены признаки и степень заимствования, что усилило позицию по защите прав на программный продукт.
Степень совпадения считали не по «похожести на глаз», а по трём независимым метрикам. Первая: доля совпадающих токенов после нормализации, когда из кода убраны имена переменных, комментарии и форматирование, а сравниваются только конструкции языка. Вторая: длина общих последовательностей, то есть насколько длинными кусками совпадает логика подряд. Третья: доля совпадающих нетривиальных решений, к которым два независимых разработчика прийти одинаково почти не могут. Совпадение считалось значимым, когда все три метрики сходились на одном фрагменте.
Первое сравнение дало высокий процент совпадения по всему проекту, и этот результат пришлось отбросить. Оказалось, что около трети объёма это код внешних библиотек и автоматически сгенерированные файлы, одинаковые у всех, кто пользуется теми же инструментами. Мы отделили сторонний и сгенерированный код от авторского и пересчитали заново уже по той части, которую действительно писали руками. Без этого шага вывод был бы завышен, и защита разбила бы его первым же вопросом.
Срок сложился из четырёх частей. Фиксация и снятие образов заняли один день. Нормализация и отсев стороннего кода два дня, это самая трудоёмкая часть. Сравнение и проверка совпадений на случайность три дня. Оформление заключения и подготовка приложений с фрагментами кода два дня. Ожидание доступа к репозиторию ответчика в срок не входило: эти дни считаются отдельно, потому что зависят не от эксперта.
Результат меряли пригодностью для суда, а не размером отчёта. Каждый вывод подкреплён приложением с двумя фрагментами кода рядом и указанием, чем именно они совпадают. Проверяемость: другой специалист может повторить сравнение теми же инструментами и получить те же числа, потому что в заключении названы версии программ и параметры запуска.


Опишите ситуацию, и ведущий эксперт бесплатно оценит перспективу, сроки и стоимость.