🟨 Экспертиза программного обеспечения после некачественных работ: что проверяет эксперт на объекте

🟨 Экспертиза программного обеспечения после некачественных работ: что проверяет эксперт на объекте

💻 Введение: когда код становится предметом судебного разбирательства

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

Раздел 1: 📋 Когда назначается экспертиза ПО после некачественных работ

Программное обеспечение стало неотъемлемой частью бизнеса. 📉 Споры о его качестве возникают в самых разных ситуациях:

  • Разработка на заказ (ERP-системы, CRM, интернет-магазины, мобильные приложения, телеграм-боты) — продукт не соответствует техническому заданию (ТЗ), имеет критические ошибки.

  • Поставка лицензионного ПО (коробочные решения) — оказалось, что это подделка, «пиратка» или не та версия.

  • Сопровождение и доработка существующего ПО — подрядчик «сломал» работавшую систему, внес недокументированные изменения.

  • Споры о передаче исходного кода (эскроу-счета) — переданный код неработоспособен или неполон.

  • Интеграция между системами — данные теряются, дублируются, искажаются.
    ⚖️ Экспертиза проводится как в судебном порядке (по определению суда), так и в досудебном (для претензии или оценки перспектив). Союз «Федерации судебных экспертов» имеет в штате сертифицированных экспертов в области программирования, тестирования и информационной безопасности.

Раздел 2: 🗂️ Какие документы и материалы нужно предоставить эксперту

Для качественной экспертизы необходима документальная база. 📑 Союз «Федерации судебных экспертов» рекомендует собрать:

  1. Техническое задание (ТЗ) — основной документ, определяющий функции, характеристики, интерфейсы, производительность и условия эксплуатации ПО.

  2. Договор разработки и все дополнительные соглашения (спецификации, протоколы согласования).

  3. Акты приёма-передачи (если частично работы уже приняты) и переписку сторон (претензии, письма, чаты).

  4. Исходный код (если он передавался или является предметом спора) — в репозитории (Git, SVN) или архиве.

  5. Доступ к работающему экземпляру ПО (URL, логин/пароль, тестовый стенд, доступ к серверу).

  6. Инструкции пользователя и администратора (если есть).

  7. Логи ошибок (логи) — файлы журналов событий, stack trace’ы (следы исключений).

  8. Результаты предыдущего тестирования (если заказчик проводил своё) — скриншоты ошибок, протоколы.
    📌 Если подрядчик отказывается предоставить исходный код, ссылаясь на «коммерческую тайну», эксперт может сделать вывод о невозможности полного исследования, что суд может трактовать против подрядчика.

Раздел 3: 🧩 Что проверяет эксперт на объекте (общая схема)

Осмотр ПО на объекте — это не «посмотреть экран», а комплекс мероприятий. 🧰 Эксперт Союза «Федерации судебных экспертов» действует поэтапно:

  1. Анализ документации — изучает ТЗ, договор, спецификации, чтобы понять, что должно быть.

  2. Функциональное тестирование — проверяет каждую заявленную функцию: работает ли так, как описано? (например, кнопка «Сохранить» действительно сохраняет данные в нужную таблицу).

  3. Тестирование граничных случаев — что происходит при нестандартных вводных (пустые поля, неверный формат, большая нагрузка).

  4. Анализ архитектуры и кода — если есть доступ к исходному коду, проверяет его на соответствие стандартам, наличие «костылей» (заплаток), ошибок, уязвимостей.

  5. Нагрузочное тестирование (если требуется) — сколько пользователей может одновременно работать, не упадет ли система.

  6. Проверка безопасности — нет ли известных уязвимостей (SQL-инъекции, XSS, незакрытые порты).

  7. Сравнение с аналогами (опционально) — соответствует ли заявленной функциональности.
    🖥️ Выезд на объект может включать доступ к серверам заказчика или использование удалённого доступа (TeamViewer, RDP). Все действия фиксируются в протоколе.

Раздел 4: 🔍 Ошибки в реализации функциональных требований (соответствие ТЗ)

Самая частая причина споров — несоответствие техническому заданию. 📋 Эксперт Союза «Федерации судебных экспертов» проверяет:

  • Полнота реализации — все ли пункты ТЗ выполнены. Например, в ТЗ сказано «отчёт по продажам за период с выбором дат», а в системе только «отчёт за текущий месяц». Это недостаток.

  • Точность реализации — как именно работает функция. Пример: в ТЗ «скидка 10% от суммы заказа», а считает 10% от цены товара без учёта доставки. Это ошибка.

  • Соответствие входных и выходных данных — что подал, то и получил (без искажений).

  • Обработка ошибок — если пользователь вводит неверные данные, программа должна выдать понятное сообщение, а не «упасть» или молча сохранить не то.

  • Локализация (если требуется) — все надписи на русском (или нужном языке), правильно ли склоняются числа, даты.
    📌 Эксперт составляет таблицу «Требование — Реализация — Комментарий», где зелёным помечает выполненные, красным — невыполненные или с ошибками. Каждая ошибка иллюстрируется скриншотом.

Раздел 5: 🐞 Ошибки производительности (тормоза, зависания, вылеты)

ПО может работать, но медленно — это тоже брак. 🐢 Эксперт Союза «Федерации судебных экспертов» проверяет:

  • Время отклика (response time) — сколько миллисекунд проходит от нажатия кнопки до появления результата. Нормы прописываются в ТЗ (например, «не более 1 секунды для 90% операций»). Если не прописано, эксперт использует отраслевые стандарты (2–3 секунды для обычных операций, до 10 секунд для сложных отчётов).

  • Нагрузка на сервер — загрузка CPU, памяти, дисковых операций при типовых сценариях.

  • Утечки памяти (memory leak) — если программа со временем «съедает» всё больше памяти и в конце концов падает (проверяется длительным тестом на 24–48 часов).

  • Количество критических ошибок (crash’ей) — вылетает ли программа сама по себе, без видимых причин. Фиксируется число ошибок на час работы.

  • Параллелизм (многопользовательский режим) — если два пользователя одновременно редактируют один объект, не происходит ли конфликта, потери данных.
    📊 Эксперт использует инструменты нагрузочного тестирования (имитация работы 10, 50, 100 виртуальных пользователей). Если при 10 пользователях система падает, а по ТЗ должно выдерживать 200 — это явное несоответствие.

Раздел 6: 🔐 Ошибки безопасности (уязвимости и «закладки»)

Безопасность ПО часто игнорируется, но последствия могут быть катастрофическими. 🔓 Эксперт Союза «Федерации судебных экспертов» проверяет:

  • Аутентификация и авторизация — можно ли зайти под чужим логином? Можно ли получить доступ к функциям, не предназначенным для вашей роли (например, обычный пользователь может зайти в админку, изменив URL)?

  • Защита от SQL-инъекций — можно ли, введя специальный код в поле ввода, выполнить произвольный запрос к базе данных? Эксперт вводит ‘ OR ‘1’=’1 и смотрит на результат.

  • Защита от межсайтового скриптинга (XSS) — можно ли внедрить вредоносный скрипт в отображаемые данные?

  • Хранение паролей — не хранятся ли пароли в открытом виде (в базе данных, в логах)? Должны быть хэшированы (bcrypt, PBKDF2).

  • «Закладки» (бэкдоры) — не оставил ли разработчик скрытый вход в систему (например, пароль admin/admin, специальный URL), чтобы в любой момент получить доступ.

  • Обновление и исправление уязвимостей — используются ли библиотеки с известными уязвимостями (эксперт проверяет версии).
    🛡️ Если эксперт находит критическую уязвимость, он фиксирует это как грубый недостаток, делающий ПО непригодным для безопасной эксплуатации.

Раздел 7: 🧩 Анализ качества исходного кода (если доступен)

Исходный код — это «внутренности» программы. 🧬 Эксперт Союза «Федерации судебных экспертов» оценивает:

  • Читаемость и поддерживаемость — названия переменных, функций, комментарии, структура файлов. «Код-лапша» (спагетти-код) свидетельствует о низком качестве.

  • Наличие дублирования — один и тот же кусок кода скопирован 10 раз вместо вынесения в функцию. Это увеличивает риск ошибок и стоимость доработок.

  • Следование стандартам (PSR для PHP, PEP для Python, Java Code Conventions и т.д.).

  • Покрытие тестами (unit tests) — если по договору должно быть не менее 70% покрытия, а фактически 5% — дефект.

  • Обработка ошибок (exception handling) — не «проглатываются» ли ошибки без логирования? Не падает ли программа при отсутствии интернета?

  • Наличие «мёртвого кода» (неиспользуемые функции, переменные) — увеличивает размер и сложность, но не является критичным само по себе, но свидетельствует о небрежности.
    📌 Эксперт использует статические анализаторы кода (SonarQube, ESLint, PMD и др.) — они выдают количественные метрики (количество предупреждений на тысячу строк кода). Нормы также могут быть в договоре.

Раздел 8: 📊 Анализ логов и мониторинг работы в реальном времени

Логи — это «чёрный ящик» программы. 📜 Эксперт Союза «Федерации судебных экспертов» изучает:

  • Наличие критических ошибок (Exception, Error) — их частоту, контекст (при каком действии возникли).

  • Информативность — пишутся ли понятные сообщения, которые помогают найти причину, или только «Ошибка 500».

  • Отсутствие логирования конфиденциальных данных (паролей, номеров карт) — грубая ошибка безопасности.

  • Заполнение диска логами — если логи не ротируются (не очищаются), диск может переполниться, и программа упадёт.

  • Сравнение с ожидаемым поведением — например, в логах видно, что ежедневно происходит 10 падений, хотя по ТЗ допускается не более 1 падения в месяц.
    📌 Эксперт может попросить заказчика запустить сценарии (бизнес-процессы) и в реальном времени смотреть логи, чтобы сопоставить действия и ошибки.

Раздел 9: ⏳ Соответствие версиям и документации (миграции, обновления)

Часто споры возникают из-за того, что подрядчик «переписал» уже работавшую систему. 🔄 Эксперт проверяет:

  • Управление версиями — есть ли в коде теги, метки, история изменений. Если подрядчик не использовал Git или SVN — это нарушение современной практики.

  • Миграции базы данных — если менялась структура БД, есть ли скрипты миграции (up/down), можно ли откатить изменения без потери данных.

  • Документация — инструкции администратора, разработчика, пользователя. Соответствуют ли они реальной системе? Не устарели ли?

  • Установка и развёртывание — сколько времени и усилий требуется, чтобы развернуть ПО на новом сервере. Если это «танец с бубном» на 2 дня — недостаток.
    📌 При неполноте документации эксперт делает вывод: «ПО не может быть передан в эксплуатацию без документации», что является существенным недостатком.

Раздел 10: 🧪 Сравнительный анализ с рыночными аналогами (бенчмаркинг)

Иногда в договоре нет чётких метрик, но есть фраза «не ниже рыночного уровня». 📈 Эксперт Союза «Федерации судебных экспертов» может сравнить спорное ПО с 2–3 аналогами:

  • Функциональность (есть ли ключевые возможности, которые есть у всех конкурентов).

  • Удобство интерфейса (субъективно, но эксперт может выявить критические неудобства, например, нельзя отменить действие).

  • Производительность (быстрее/медленнее аналогов).

  • Стоимость владения (сопоставляется с ценой, если в договоре есть привязка).
    📌 Однако это вспомогательный метод. Основной — соответствие ТЗ, а не «как у других».

Реальные кейсы из практики Союза «Федерации судебных экспертов»

💼 Кейс №1: Интернет-магазин падает при 10 пользователях
Заказчик оплатил разработку интернет-магазина с гарантией, что сайт выдержит 500 одновременных посетителей. После запуска при 10 посетителях сайт падал с ошибкой 500. Эксперты Союза «Федерации судебных экспертов» провели нагрузочное тестирование и выявили: неоптимальные запросы к базе данных (N+1 проблема), отсутствие кеширования, утечку памяти в модуле корзины. Суд обязал подрядчика полностью переписать архитектуру модулей или вернуть 2,8 млн руб. Экспертиза стала ключевым доказательством.

💼 Кейс №2: Отсутствие требуемой функции и «закладка»
Заказчик просил разработать CRM с функцией автоматической рассылки email по расписанию. Подрядчик сдал систему, но рассылка не работала (ошибка в коде). При дополнительном анализе эксперт нашёл в коде «бэкдор» — скрытую страницу /admin/supersecret, с которой можно было просматривать любые данные клиентов без пароля. Суд признал ПО некачественным, подрядчик выплатил компенсацию 1,5 млн руб. и уголовное дело за неправомерный доступ.

💼 Кейс №3: Нечитаемый код (спагетти) и отсутствие документации
После ухода программиста заказчик не мог вносить изменения в систему: код был написан «как попало», без комментариев, имена переменных «a,b,c,x1,y2», дублирование 70% кода. Эксперт Союза «Федерации судебных экспертов» оценил, что стоимость доработки фактически равна стоимости разработки с нуля (3,6 млн руб.). Суд взыскал с подрядчика эту сумму, так как по договору код должен быть читаемым и сопровождаемым.

💼 Кейс №4: SQL-инъекция и потеря данных клиентов
Разработчик сдал интернет-магазин, но через месяц хакеры через уязвимость SQL-инъекции выгрузили базу данных клиентов (паспорта, номера карт). Заказчик понёс репутационные потери и штраф от Роскомнадзора. Экспертиза показала, что разработчик не использовал параметризованные запросы (просто склеивал строку запроса из ввода пользователя). Суд признал это грубейшей ошибкой, подрядчик выплатил 5,2 млн руб. убытков и штрафа.

💼 Кейс №5: Расхождение с ТЗ в 30% функций
По договору разрабатывалась ERP-система с 200 функциями. Заказчик принял ПО, но при детальной проверке выяснилось, что 60 функций (30%) работают не так, как в ТЗ, либо отсутствуют. Эксперт Союза «Федерации судебных экспертов» составил подробную таблицу расхождений, провёл скриншоты. Суд снизил стоимость работ пропорционально невыполненным функциям (подрядчик вернул 2,1 млн руб. из 7 млн).

🔚 Заключение: пошаговый чек-лист для заказчика ПО

Уважаемый заказчик! 🛡️ Чтобы экспертиза программного обеспечения после некачественных работ прошла успешно, Союз «Федерации судебных экспертов» рекомендует:

  1. 📂 Сохраняйте всё ТЗ, договоры, переписку — это база для сравнения.

  2. 🖥️ Обеспечьте доступ эксперта к работающему ПО (тестовый стенд, логи, сервер). Если подрядчик заблокировал доступ — это его проблема.

  3. 📊 Зафиксируйте ошибки до начала экспертизы (скриншоты, видео, логи) своими силами.

  4. 🧠 Сформулируйте чёткие вопросы эксперту: не «работает ли программа плохо?», а «соответствует ли модуль “Отчёты” пунктам 4.2–4.5 ТЗ?».

  5. 🧑‍💻 Требуйте исходный код (если он ваш по договору). Если подрядчик не отдаёт — обращайтесь в суд с иском об истребовании.

  6. ⏱️ Срочность — экспертиза ПО занимает от 2 недель до 2 месяцев, закладывайте это в сроки суда.

  7. 🔐 Безопасность — если вы подозреваете «закладки», требуйте от эксперта проверки на бэкдоры.
    📌 Помните: программное обеспечение — это товар, и к нему применимы требования качества. Не верьте подрядчику на слово, доказывайте с помощью науки. Союз «Федерации судебных экспертов» поможет восстановить справедливость.

Полную контактную информацию, телефон и адрес офиса, а также более подробную информацию по вашему вопросу вы можете найти на нашем официальном сайте ✅ https://krimexpert.ru

Похожие статьи

Новые статьи

🟨 Независимая экспертиза коррозии сифона

💻 Введение: когда код становится предметом судебного разбирательства Заказчик потратил миллионы рублей на разраб…

🟨 Судебная экспертиза причин аварии теплообменника

💻 Введение: когда код становится предметом судебного разбирательства Заказчик потратил миллионы рублей на разраб…

🟨 Судебная экспертиза загрязнений сухой строительной смеси

💻 Введение: когда код становится предметом судебного разбирательства Заказчик потратил миллионы рублей на разраб…

🟨 Независимая судебная экспертиза качества ремонта канализационного стояка

💻 Введение: когда код становится предметом судебного разбирательства Заказчик потратил миллионы рублей на разраб…

🟨 Судебная экспертиза состава пенополиуретана

💻 Введение: когда код становится предметом судебного разбирательства Заказчик потратил миллионы рублей на разраб…

Задавайте любые вопросы

20+1=