Блог компании "Лаборатория Цифровых Исследований"

Экспертиза компьютерных программ: полное руководство

Полезно
Представьте: вы заказали разработку программного продукта за несколько миллионов, а он не работает, как обещано. Или ваш бывший разработчик утверждает, что код написан им, а вы не можете это оспорить. Или вы обнаружили, что конкурент использует вашу программу без разрешения. В каждой из этих ситуаций ответ даёт экспертиза компьютерных программ.
Это комплексное исследование, которое позволяет объективно оценить программное обеспечение, установить его авторство, качество, соответствие требованиям или выявить скрытые недостатки . Разберём, что это такое, когда назначается и как проводится.

Что такое экспертиза компьютерных программ

Экспертиза компьютерных программ - это исследование, проводимое независимыми специалистами для установления фактов, имеющих юридическое значение. Она охватывает не только сам код, но и документацию, архитектуру, функциональность и даже историю разработки .
В отличие от обычного тестирования, экспертиза проводится по строгим методикам, а её результат - заключение эксперта - признаётся судом в качестве доказательства . Это делает её незаменимым инструментом в IT-спорах.

Когда назначается экспертиза программного обеспечения

Экспертиза компьютерных программ может проводиться как в рамках судебного разбирательства, так и в досудебном порядке . Вот основные ситуации, в которых она нужна:

1. Споры о качестве разработки

Заказчик оплатил разработку, а система работает с ошибками, не соответствует техническому заданию или вовсе непригодна к использованию . Экспертиза устанавливает:
  • Соответствует ли готовый продукт условиям договора и ТЗ.
  • Есть ли в коде критические ошибки или «технический долг».
  • Можно ли использовать систему по назначению.

2. Защита авторских прав и интеллектуальной собственности

Программный код - это объект авторского права. Споры о том, кому принадлежит код, кто его написал и не скопировал ли конкурент ваше решение, решаются через экспертизу авторства . Эксперты анализируют:
  • Совпадения в структуре кода, алгоритмах и переменных.
  • Стилистические особенности программирования (индивидуальный «почерк» разработчика).
  • Факты заимствования исходного кода или использования сторонних библиотек с нарушением лицензий .

3. Споры с подрядчиком о невыполнении обязательств

Разработчик сдал проект, а вы считаете, что он не выполнил объём работ. Или после увольнения программистов оказалось, что код удалён или недоступен . Экспертиза помогает:
  • Установить, был ли выполнен объём работ.
  • Восстановить утраченный код (если есть носители).
  • Оценить стоимость переделки или доработки .

4. Вопросы лицензионной чистоты и информационной безопасности

Компания использует софт, но возникли подозрения, что лицензии нарушены, а в коде есть «закладки» для несанкционированного доступа. Экспертиза проверяет:
  • Наличие недекларированных функций или бэкдоров.
  • Соответствие лицензионным соглашениям (особенно при использовании open-source компонентов) .
  • Наличие следов взлома или нелицензионного использования .

5. Уголовные дела о преступлениях в сфере компьютерной информации

Экспертиза назначается по статьям 272-274 УК РФ (неправомерный доступ, создание вредоносных программ и т.д.) . Исследуются вредоносные программы, вирусы, трояны, а также инциденты с несанкционированным доступом.

Что именно исследуют эксперты

Объекты исследования зависят от поставленных вопросов, но в общем случае эксперты работают с :
  • Исходный код и исполняемые файлы - программа в «сыром» виде и в виде готового к запуску продукта.
  • Техническая документация -техническое задание, проектная документация, спецификации, архитектурные диаграммы .
  • Базы данных и журналы (логи) - копии БД, системные и прикладные журналы, которые фиксируют все изменения и события .
  • Среда функционирования - операционные системы, веб-серверы, СУБД, сведения о версиях компиляторов и систем сборки .
  • История версий - данные из систем контроля версий (Git, SVN), которые показывают, кто, когда и какие изменения вносил в код.

Как проводится экспертиза: этапы и методы

Процесс экспертизы строго регламентирован и включает несколько ключевых этапов :

1. Подготовительный этап

  • Изучение постановления о назначении экспертизы (или договора с заказчиком).
  • Определение целей и задач исследования.
  • Подбор методик и инструментария.
  • Консультация с заказчиком для уточнения вопросов .

2. Получение и фиксация материалов

На этом этапе важно сохранить неизменность данных. Эксперты создают криминалистические копии носителей с фиксацией хеш-сумм, чтобы гарантировать, что данные не были изменены в процессе исследования .

3. Исследовательский этап

Включает несколько видов анализа:
Статический анализ - изучение исходного кода без его запуска. Проверяются:
  • Структура и архитектура программы.
  • Стиль кодирования.
  • Соответствие стандартам.
  • Наличие известных уязвимостей (инъекции, переполнение буфера и т.д.) .
Динамический анализ - запуск программы в контролируемой среде и тестирование её работы в реальных сценариях . Выявляются:
  • Ошибки конфигурации.
  • Проблемы взаимодействия между компонентами.
  • Уязвимости, проявляющиеся только во время выполнения.
Анализ архитектуры и масштабируемости — оценка того, как код справляется с ростом нагрузки. Выявляются «бутылочные горлышки», технический долг, проблемы с модульностью и связанностью компонентов .
Сравнительный анализ - для установления авторства или плагиата сравниваются две или более программ: их структура, алгоритмы, уникальные фрагменты кода, переменные, стиль программирования .

4. Оформление заключения

Эксперт готовит официальное заключение, в котором:
  • Описывает ход исследования и применённые методы.
  • Приводит аргументированные выводы по каждому вопросу.
  • Даёт рекомендации (например, по устранению дефектов).

Виды экспертизы программных средств

В зависимости от цели, экспертиза может быть разных видов :
Вид экспертизы
Что исследуется
Зачем
Функциональная
Соответствие заявленным характеристикам и ТЗ
Проверить, работает ли программа так, как обещано
Экспертиза авторства
Сравнительный анализ кода, стилистика программирования
Доказать плагиат или установить автора
Экспертиза защитных механизмов
Аутентификация, шифрование, логирование
Оценить устойчивость к взлому
Экспертиза вредоносных программ
Вирусы, трояны, бэкдоры
Выявить и классифицировать угрозы
Экспертиза качества
По стандартам ISO/IEC 25010: надёжность, производительность, сопровождаемость и др.
Оценить, соответствует ли ПО лучшим практикам

Что нужно предоставить для экспертизы

Чтобы экспертиза была максимально полной и объективной, заказчику необходимо подготовить пакет материалов :
  1. Исходный код - полный, с историей версий и всеми зависимостями.
  2. Исполняемые файлы - готовые сборки программы разных версий.
  3. Техническая документация - ТЗ, проектная документация, архитектурные схемы, руководства пользователя и разработчика .
  4. Копии баз данных - актуальные дампы данных и схемы БД.
  5. Системные и прикладные журналы - логи за интересующий период.
  6. Сведения о среде функционирования - версии ОС, веб-серверов, СУБД, фреймворков.
  7. Договорная документация - договор на разработку, акты выполненных работ, переписка сторон, которая проясняет спорные моменты .

Экспертиза vs тестирование: в чём разница

Тестирование
Экспертиза
Проводит разработчик или QA-специалист
Проводит независимый аттестованный эксперт
Выявляет ошибки и дефекты
Устанавливает юридические факты (плагиат, несоответствие ТЗ, качество)
Отчёт для внутреннего использования
Заключение эксперта - доказательство в суде
Методика может меняться
Апробированная, документированная, по стандартам

Заключение

Экспертиза компьютерных программ - это не просто техническая проверка. Это инструмент защиты прав, который позволяет объективно оценить качество разработки, установить авторство, выявить скрытые угрозы и получить доказательства для суда .
Если вы столкнулись со спором по разработке, подозреваете плагиат или сомневаетесь в качестве полученного продукта - не откладывайте. Досудебное исследование поможет оценить перспективы дела, сформулировать правильные вопросы и подготовить убедительную доказательную базу для суда или переговоров.
Нужна экспертиза компьютерных программ?
Лаборатория цифровых исследований (LCI) проводит судебные и досудебные компьютерно-технические экспертизы программного обеспечения: анализ качества кода, установление авторства, проверку соответствия ТЗ, выявление уязвимостей и недекларированных возможностей.