Экспертиза процесса разработки программного обеспечения

Судебная экспертиза исходного кода на Delphi

Исследуем учётные и отраслевые системы на Delphi: что передано заказчику, собирается ли программа из исходников, что содержат формы и база данных.

Ориентир по стоимости экспертизы
от 100 000 ₽
Ориентир по сроку экспертизы
10 рабочих дней
  • Судебные экспертизы
  • Внесудебные исследования
  • Рецензирование заключений
01 Проверим компетенцию

До оплаты определим, относится ли задача к выбранному виду исследования.

02 Поможем подготовиться

Уточним вопросы и перечень материалов — готовый комплект не обязателен.

03 Работаем с регионами

Принимаем задачи из России, Казахстана и Беларуси; часть материалов можно передать электронно.

04 Сопровождаем результат

Разъясняем методику и выводы, отвечаем на вопросы суда в пределах компетенции эксперта.

О направлении

Подробно о задачах, объектах и методиках

Материал описывает типовые задачи и вопросы. Окончательные формулировки определяются с учётом компетенции эксперта, а правовую оценку обстоятельствам даёт суд.

Содержание страницы

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

    Если спор уже начался, снимите копию раньше, чем систему тронут. Delphi-программы обычно живут на конкретном сервере вместе со своей базой, и обновление или переустановка стирают ровно то, по чему потом восстанавливают картину. Что именно копировать, разобрано ниже, в разделе «Что сохранить, пока система работает».

    Знать язык своей программы вам не нужно, и выяснять его самостоятельно тем более: в договоре двадцатилетней давности он обычно не назван, а спрашивать подрядчика, с которым вы спорите, не стоит. Язык определяется по самим файлам программы за несколько минут, и мы делаем это на бесплатном разборе. Если окажется, что система написана не на Delphi, скажем сразу и назовём подходящее направление.

    Дешевле всего начать с разговора: назовите систему, год, когда её поставили, и то, что осталось у вас на руках: назовите систему, год, когда её поставили, и то, что осталось у вас на руках — дистрибутив, база, договор. Уже по этому видно, какие вопросы по вашей системе решаются, а какие нет. Присылать файлы на этом шаге не нужно.

    С какими спорами приходят по программам на Delphi

    Сюда приходят с объектом, который старше обычного: спорят не о том, что сделали в прошлом квартале, а о системе, которая работает давно и которую нужно либо доработать, либо заменить. До начала работы определите, о какой версии, площадке и периоде идёт речь, — без этого у исследования нет предмета.

    Типичные ситуации выглядят так:

    • заказчик много лет пользуется системой, а исходный текст ему так и не передали, и теперь доработка невозможна без прежнего исполнителя;
    • исходники передали, но собрать из них работающую программу не получается: нет нужной версии среды, недостаёт сторонних компонентов или файлов проекта;
    • новый подрядчик взялся сопровождать чужую систему, сломал часть функций, и стороны спорят, что было до него;
    • система перестала работать после обновления Windows или переноса на новый сервер, и спорят, дефект это или условия эксплуатации;
    • заказчик считает, что вместо разработки ему передали переименованную типовую программу того же исполнителя;
    • исполнитель ликвидирован или недоступен, а системой продолжают пользоваться — нужно установить, что вообще было передано и на что заказчик вправе рассчитывать;
    • спорят о выгрузке накопленных данных при переходе на другую систему.

    Если разногласия касаются обмена с бухгалтерским контуром предприятия, начните со страницы экспертизы 1С: там объекты и следы другие.

    Почему из готовой программы код не восстановить, а форму — можно

    Delphi переводит исходный текст сразу в машинный код процессора, и обратного пути к тексту у эксперта нет: получить из исполняемого файла программу на Object Pascal, сопоставимую с исходной, невозможно. В этом Delphi ближе к C++, чем к платформам, где программа хранится в промежуточном виде.

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

    Что это даёт спору. Даже когда исходного текста нет ни у кого, по одной работающей программе устанавливают состав экранных форм и полей, названия модулей и классов, тексты сообщений и надписей, обращения к таблицам базы, состав использованных сторонних наборов компонентов. Логику расчёта так не прочитать: алгоритм остаётся в машинном коде. Он не становится от этого недостижимым — машинный код разбирают отдельными средствами, и по несложным расчётам вывод получить удаётся, — но это другая по трудоёмкости работа, результат которой приблизителен, и заказывают её отдельно, взвесив цену. Объём же и устройство интерфейсной части восстанавливаются надёжно и быстро. Разница между «что программа умеет» и «как она это считает» здесь проходит резко, и в заключении её обозначают прямо.

    У такого чтения есть пределы, и эксперт называет их вместе с результатом. В описании формы сохраняются только те свойства, которые разработчик изменил: заданное по умолчанию там не хранится, и по описанию нельзя судить о том, каким элемент выглядел на экране. Описание есть у каждой формы, нарисованной в среде разработки, независимо от того, когда программа её открывает; а вот окна и поля, которые программа строит кодом, в ресурсах не появляются вовсе — их видно только при запуске. Наличие формы в файле не означает, что до неё можно дойти из меню: описание отражает замысел на момент разработки, а не работающую функцию. Наконец, если программа собрана с внешними пакетами, часть форм и классов лежит не в исполняемом файле, а в отдельных файлах рядом с ним, и разбор одного исполняемого файла даст неполную картину — поэтому и просят каталог программы целиком.

    Что сделать сегодня, пока следы не стёрлись

    Главное о таких системах: доказательство исчезает само, без чьего-либо умысла, и быстрее, чем принято думать. Прежние версии записей, по которым потом отвечают на вопрос «не удаляли ли строки задним числом», живут в базе часами: сервер вычищает их в фоне постоянно, а ночное резервное копирование доделывает остальное. Журнал событий Windows пишется по кольцу и держит несколько дней. Собственный журнал программы часто обрезается при каждом запуске. Поэтому счёт идёт на дни, и начинать надо с копии базы, а не с переписки.

    Копию файла базы снимают правильным способом, и это важнее скорости. Копировать файл работающей базы обычными средствами нельзя: производитель запрещает это прямо, потому что копия получится негодной, а сама база может пострадать. У Firebird для этой задачи есть штатный механизм: командой nbackup -L базу переводят в состояние, при котором файл можно безопасно скопировать, копируют, а затем командой nbackup -N возвращают в обычный режим. Работу пользователей это почти не прерывает и занимает столько, сколько идёт копирование файла. Если версия базы такого механизма не поддерживает, систему останавливают штатно — останавливают службу базы данных, — копируют файл и запускают службу снова.

    Чего делать не нужно: принудительно выключать базу командой отключения с ключом force. Она откатывает начатые операции у всех, кто в этот момент работает, а состояние «выключено» записывается внутрь файла базы и переживает перезагрузку сервера — если забыть вернуть базу в рабочий режим, утром в неё не войдёт никто.

    Окно планируйте честно. На базе в несколько десятков гигабайт вывод людей, копирование, возврат и разбор жалоб «у меня не открывается» занимают от получаса до полутора часов, и делать это лучше до начала рабочего дня или после его окончания. Если остановить систему нельзя вовсе, приостановите на эту ночь автоматическое резервное копирование и фоновую чистку базы — так следы доживут до ближайшего окна.

    Порядок действий такой:

    1. снимите копию файла базы описанным выше способом — это главный объект, и снимать её нужно первой;
    2. сразу посчитайте контрольную сумму полученного файла, пока система ещё не вернулась в работу;
    3. верните систему в работу и убедитесь, что рабочие места подключаются;
    4. уже спокойно сделайте обычную резервную копию штатным средством — она удобна для работы и прикладывается к первой, но не заменяет её: штатное средство пересобирает содержимое заново и прежних версий записей в него не переносит;
    5. выгрузите журналы сегодня же — журнал приложения, журнал событий Windows и журнал сервера базы данных. Именно выгрузите в файлы, а не «настройте, чтобы не перетирались»: запрет перезаписи в журнале Windows приводит к потере уже новых событий, а на сервере с включённым аудитом безопасности способен остановить его целиком;
    6. приостановите автоматическое удаление старых резервных копий по расписанию — по ним датируют изменения, — предварительно проверив, что места на диске хватит;
    7. напишите служебную записку на полстраницы: какие копии сняты, с какого сервера, в какой день, кем и кто при этом присутствовал.

    Что собрать, кроме базы:

    • каталог установленной программы целиком — с исполняемым файлом, всеми библиотеками рядом с ним, файлами настроек и шаблонами печатных форм; если программа собрана с внешними пакетами, часть кода и форм лежит в отдельных файлах рядом, и без них объект неполон;
    • дистрибутив, которым программу устанавливали, и все сохранившиеся обновления — по ним восстанавливают историю версий;
    • если исходный текст у вас есть, копию всего каталога проекта, включая файлы форм и файл проекта, а не только файлы с кодом;
    • сведения о самой базе: производитель, версия и разрядность сервера. Копия, снятая старой версией, на новой не открывается вовсе, и без этих сведений эксперт не соберёт стенд;
    • сведения об аппаратном ключе защиты, если программа его требует. Сам ключ с работающего сервера не снимайте — без него остановится предприятие; для стенда согласуют отдельный порядок;
    • контрольные суммы всех архивов, посчитанные сразу и сохранённые отдельно от них — например, в письме самому себе. Это короткая строка, вычисленная из содержимого файла: изменится хоть один знак — изменится и она. На современной Windows её считают в PowerShell командой Get-FileHash архив.zip -Algorithm SHA256, на Windows начиная с Vista — командой certutil -hashfile архив.zip SHA256, на сервере под Linux — sha256sum архив.zip. На более старых системах файл переносят на современный компьютер и считают сумму там, записав, когда и как он был перенесён.

    Копируйте и передавайте только то, что принадлежит вам или к чему у вас есть законное право доступа; чужие системы исследуют по определению суда или иного уполномоченного органа. Если исходный текст есть только у исполнителя, с которым вы спорите, действовать самостоятельно не нужно: письменно потребуйте передать материалы по договору и зафиксируйте отказ или молчание. Чужое получают через суд по возбуждённому делу — ходатайством об истребовании доказательства, в котором называют, что именно требуется, какие обстоятельства этим подтверждаются и почему получить его самостоятельно нельзя.

    Выполнять всё перечисленное должен тот, у кого есть доступ к серверу и базе, — ваш системный администратор или подрядчик по инфраструктуре, и пользователей нужно предупредить заранее. Если такого человека нет, позвоните по номеру 8 (800) 333-24-09: подскажем порядок под вашу ситуацию, это бесплатно.

    Отдельно о доступе посторонних. У систем такого возраста удалённый доступ прежнего исполнителя обычно остаётся включённым спустя годы после окончания работ, и пока он есть, любая ваша копия уязвима для возражения «файлы могли изменить». Доступ закрывают до снятия копий, а факт закрытия фиксируют в записке. Но взвесьте и обратное: если система ломается, чинить её сегодня умеет только он, и отключение стоит планировать вместе с тем, кто подхватит сопровождение.

    Пока копии не сняты, не обновляйте программу, не переустанавливайте её и не переносите базу на другой сервер. Ограничение не бессрочное: оно действует до снятия копий и подсчёта контрольных сумм, то есть день-два, а не весь процесс. Если за это время произойдёт сбой и систему придётся восстанавливать — восстанавливайте, но запишите в ту же записку, что именно, когда и почему пришлось сделать.

    Копия, снятая своими силами, доказывает меньше, чем кажется: другая сторона вправе сказать, что архив собран уже после начала спора. Усиливают её посчитанные сразу контрольные суммы и обеспечение доказательств. Путей три, и они не взаимозаменяемы: до обращения в суд доказательство закрепляет нотариус; в арбитражном процессе суд вправе обеспечить доказательство и до предъявления иска — по заявлению, которое рассматривается по правилам о предварительных обеспечительных мерах; по уже возбуждённому делу подают ходатайство об обеспечении доказательств.

    Версия среды и набор компонентов: почему исходники не собираются

    Самый частый спор по этому языку звучит так: исходный текст передали, а работающую программу из него получить не удаётся. По Delphi это почти никогда не признак подделки — гораздо чаще дело в окружении, которое вместе с текстом не передали.

    Чтобы собрать программу, нужны три вещи одновременно: та же версия среды разработки, тот же набор сторонних компонентов тех же версий и полный комплект файлов проекта. Версий среды за тридцать лет вышло много, и они несовместимы между собой: проект, написанный в одной, в другой не открывается без правок, а обещание «соберём в новой версии» на практике означает переписывание части кода. Сторонние компоненты — отдельная проблема: их устанавливают в среду, а не кладут рядом с проектом, поэтому при передаче исходников о них забывают чаще всего.

    Эксперт разбирает такую ситуацию по шагам: устанавливает, какой версией среды собиралась спорная программа, какие сторонние наборы компонентов в ней использованы, какие из них есть в переданном комплекте, а каких недостаёт, и что именно мешает сборке — отсутствие компонента, отсутствие файла проекта или ошибка в самом коде. Ответ «не собирается» без такого разбора не значит ничего: суду нужно знать, чего не хватило и у кого оно должно было быть.

    Сторонние компоненты и их условия использования

    Разработка на Delphi почти всегда опирается на готовые наборы компонентов — таблицы, генераторы отчётов, диаграммы, работа с базой. Наиболее известные наборы платные, и их состав в спорной программе устанавливается: часть компонентов оставляет в исполняемом файле узнаваемые следы, а при наличии исходного текста они видны прямо в файле проекта.

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

    Эксперт устанавливает факты: какой набор какой версии использован, каким документом он сопровождается и что в этом документе написано; текст приводится в заключении. Толкование условий и вывод о том, нарушены ли они, — вопрос права, и решает его суд.

    База данных: где живёт половина логики

    Системы на Delphi почти всегда работают с базой данных, и по этому языку доля логики, вынесенной из программы в базу, выше, чем в любом другом языке. Расчёты, проверки и правила часто реализованы хранимыми процедурами и триггерами, а не кодом приложения, — и тогда исследование только по программе не отвечает на вопрос, ради которого его затевали.

    Стороне, оставшейся без исходного текста, это на руку: база хранит собственное описание и читается независимо от программы. Из файла базы Firebird или InterBase извлекается вся её структура: таблицы, поля, связи, индексы, а обычно и тексты хранимых процедур и триггеров — база хранит их рядом со скомпилированным представлением. То есть часть логики системы бывает доступна для чтения даже тогда, когда сама программа закрыта машинным кодом. Но: работать базе тексты не нужны, и вычистить их при поставке — известный приём защиты, которым тиражные отраслевые разработчики пользуются постоянно; в новых версиях Firebird содержимое базы к тому же может быть зашифровано. Тогда остаётся только скомпилированное представление, читать которое сложнее и не всегда возможно. Поэтому наличие текстов эксперт проверяет первым делом, а не обещает заранее.

    Отдельный случай — системы девяностых и начала двухтысячных, работающие с файловыми таблицами через промежуточный слой доступа к данным, который ставился вместе с программой. Он не был частью Windows и никуда не делся: его до сих пор можно установить, но поддержка прекращена, работает он только с 32-разрядными программами, требует прав администратора и общего сетевого каталога для служебных файлов — а в современной сети такой каталог обычно закрыт. Поэтому запуск подобной системы на новом оборудовании превращается в отдельную работу, которую закладывают в расчёт заранее. Данные при этом читаются и без запуска программы, отдельными средствами.

    Сборка не повторяема побайтово: как связывают код и программу

    Вопрос «получается ли из переданного текста именно эта программа» по Delphi решается иначе, чем на платформах с повторяемой сборкой. Две сборки одного и того же текста дают разные файлы: в исполняемый файл попадают время сборки и другие переменные сведения, а результат зависит ещё и от того, какие версии компонентов установлены в среде. Побайтовое сравнение здесь не работает, и эксперт, который на него опирается, выходит за пределы обоснованного вывода.

    Сравнение ведут по содержанию, и объекты для него выбирают такие, которые сборка сохраняет:

    • ресурсы форм: состав окон, элементов и их свойств в собранной программе сопоставляют с файлами форм из переданного комплекта — это самое надёжное сопоставление по Delphi;
    • перечень классов и их свойств, извлекаемый из исполняемого файла, — с перечнем, который следует из исходного текста;
    • текстовые строки: надписи, сообщения об ошибках, названия таблиц и полей, тексты запросов к базе;
    • состав использованных сторонних наборов компонентов и версия среды сборки;
    • поведение на стенде: одинаково ли ведут себя собранная из переданного текста программа и спорная в одних и тех же сценариях.

    Критерий вывода задают до сравнения, а не подгоняют под его итог, и вместе с ним — предел самого сравнения. Первые четыре признака описывают оболочку программы: формы, классы, строки, состав компонентов. Они хорошо показывают, что перед экспертом та же самая программа, и почти ничего не говорят о содержимом обработчиков — то есть о самих расчётах. Поэтому переданный текст, из которого вырезали или упростили расчётную часть, по одним этим признакам от полного не отличить, и вывод на них не строят. Работает только пятый признак — сравнение поведения, и для него заранее согласуют перечень проверяемых сценариев с исходными данными и ожидаемым результатом по каждому.

    Дальше решение принимают по трём исходам, и каждый назван до начала работы. Совпадение по оболочке и совпадение поведения на всех согласованных сценариях делают вывод о происхождении программы обоснованным. Расхождение поведения хотя бы на одном сценарии при совпавшей оболочке — основание для вывода, что переданный текст спорной программе не соответствует; такое расхождение эксперт описывает и показывает, а не объясняет задним числом. Если собрать переданный текст не удалось вовсе или сценарии согласовать не получилось, вывод о соответствии не делается, и это тоже итог работы.

    Как устанавливают возраст спорной версии

    У современных систем на этот вопрос отвечает история хранилища исходных текстов. У систем, о которых идёт речь здесь, хранилища обычно не было вовсе: код лежал в каталоге на компьютере разработчика, а до заказчика доезжали только готовые дистрибутивы. Поэтому датируют не по одному источнику, а по нескольким слабым сразу, и слабость каждого называют вместе с ним.

    Опираются на такие следы:

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

    Файловые метки в этот перечень входят с оговоркой: копирование и переустановка их переписывают, поэтому сами по себе они не доказывают почти ничего. Совпадение нескольких независимых следов позволяет говорить о периоде обоснованно, а расхождение эксперт показывает, а не сглаживает: в спорах о старых системах расхождение источников само по себе бывает значимым обстоятельством. Окончательный вывод о сроках делает суд. Если спор целиком о сроках и хронологии работ, его разбирает экспертиза сроков и хронологии разработки.

    Следы миграции: что ломается при переносе старой системы

    Отдельный класс споров по Delphi возникает при попытке перевести систему на современную версию среды или на новую операционную систему. Ошибки при переводе повторяются от системы к системе.

    Смотреть нужно как минимум сюда:

    • обработка текста: в старых версиях среды строка хранилась побайтно, в новых — иначе, и после перевода в программе появляются искажённые буквы, обрезанные значения и неверные сравнения;
    • работа с файлами и путями: программа, написанная под старую Windows, пишет настройки и данные в каталог собственной установки. Современная система такую запись обычно не запрещает, а незаметно уводит в личный каталог пользователя, и на экране ничего не ломается — зато у каждого сотрудника оказывается своя копия данных, а общие настройки перестают меняться для всех. Отказ в записи появляется как раз наоборот, после модернизации программы под современные правила;
    • обращение к базе через прежний механизм доступа, отсутствующий в современной системе;
    • сторонние компоненты, у которых нет версии под новую среду, — их заменяют, и вместе с заменой меняется поведение;
    • печатные формы и отчёты: они чаще всего ломаются первыми и заметны пользователю раньше остального.

    Установив дефект, эксперт отвечает и на второй вопрос: возник он при переносе или существовал раньше. Ответ дают предыдущие версии программы и резервные копии базы, поэтому их и просят сохранить. Была ли работа по переносу предусмотрена договором и приняты ли её результаты — вопрос права, и решает его суд.

    Отказы, зависания и рост потребления памяти

    Программа на Delphi — обычное приложение Windows, и следы её отказов ищут там же, где следы отказа любой другой программы этой системы. Материал для таких вопросов специфический: программа должна оставить след, и если ничего не сохранилось, эксперт говорит об этом прямо.

    При аварийном завершении в журнал событий Windows попадает запись с именем модуля и смещением, по которым место отказа определяется — но только при наличии файла с отладочными сведениями, который создаётся при сборке и обычно не передаётся вместе с программой. Без него из записи извлекается лишь то, какая библиотека отказала. Многие системы на Delphi ведут собственный журнал ошибок, и он информативнее системного, потому что содержит цепочку вызовов с именами методов.

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

    Сравнение двух программ на Delphi

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

    Сопоставляют состав и устройство экранных форм — совпадение расположения элементов, их названий и свойств у двух независимо написанных программ практически исключено; перечень классов и модулей; текстовые строки и сообщения; структуру базы данных вместе с текстами хранимых процедур — по ней совпадения видны нагляднее всего. Когда исходный текст есть у обеих сторон, сравнивают и его — теми же способами, что и в других языках: развёрнуто эта задача разобрана на странице экспертизы плагиата исходного кода.

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

    Критерии вывода формулируют до сравнения. Значимыми считают совпадения, которые общим основанием не объясняются; каждое проверяют вручную и описывают в заключении поимённо — вывод строится на перечне таких совпадений, а не на проценте сходства. Если после вычитания значимых совпадений не осталось, вывод отрицательный, и его формулируют так же прямо, как положительный. Если общее основание выделить не удалось — не сохранились версии компонентов, неизвестна отраслевая типовая часть, — вопрос остаётся без ответа: это третий законный исход, и он лучше натянутого вывода. Само по себе совпадение направления заимствования не показывает: кто у кого, устанавливают по датам и по истории изменений, а вывод о нарушении прав делает суд.

    Когда исполнителя уже нет

    Ситуация, невозможная в современных проектах: система работает, а разработчика не найти — организация ликвидирована, автор сменил занятие, договор двадцатилетней давности утрачен. Заказчик остаётся один на один с работающей программой, которую нельзя ни доработать, ни безопасно заменить.

    Исследование здесь решает три практические задачи: описать систему настолько подробно, чтобы её можно было воспроизвести или заменить; установить состав данных и способ их выгрузки; зафиксировать, что именно передавалось заказчику по сохранившимся документам. Первую решают по формам, структуре базы и наблюдению за работой; вторую — по самой базе; третью — по документам, и здесь вывод эксперта ограничен тем, что сохранилось.

    Что при этом сделать нельзя, эксперт говорит сразу: восстановить исходный текст программы по исполняемому файлу невозможно, и заключение не заменяет ни разработку заново, ни право на код. Кому принадлежат права на систему и вправе ли заказчик её дорабатывать — вопросы правовые, и на них отвечает суд по документам, а не эксперт по программе.

    Какие обстоятельства устанавливают по программе на Delphi

    Что именно устанавливать, определяет поставленный вопрос. Но перечень возможного по этому языку своеобразен: часть того, что легко даётся в других языках, здесь невозможна, зато возможно другое, и знать это полезно заранее. По программам на Delphi обычно устанавливают следующее:

    • состав и устройство экранных форм спорной программы — вплоть до отдельного поля и его свойств;
    • перечень модулей и классов, а также использованных сторонних наборов компонентов и их версий;
    • структура базы данных со всеми связями, а также содержание хранимых процедур и триггеров;
    • какой версией среды собрана программа и собирается ли из переданного текста работающая копия;
    • чего недостаёт в переданном комплекте для сборки и что именно мешает ей завершиться;
    • совпадает ли спорная программа с переданным исходным текстом по формам, классам и строкам;
    • из-за чего программа отказывает, зависает или занимает всё больше памяти — при сценарии, который удалось воспроизвести;
    • что изменилось между сохранившимися версиями — в формах, в структуре базы, в наборе модулей;
    • какие данные накоплены в базе и в каком виде их можно выгрузить;
    • объём собственного кода за вычетом компонентов и заготовок среды — величина техническая, стоимость по ней не выводится. Опознать по готовой программе все компоненты нельзя: часть следов не оставляет, поэтому вычитают не всё чужое, и полученная величина завышена в пользу подрядчика. Эту границу указывают вместе с числом.

    За пределами перечня остаётся то, что решает суд: толкование договора, принадлежность прав, существенность недостатка, размер убытков. Технический вывод даёт для этого основание, но не заменяет его. Спор о деньгах выделяют в самостоятельный вопрос — им занимается экспертиза объёма и стоимости работ, при необходимости вместе с экономистом.

    Как проверяют соответствие заданию

    Проверка каждого требования начинается с выбора объекта, на котором оно вообще проверяемо. По Delphi объектов обычно три — работающая система, база и, если повезло, исходный текст, — и они отвечают на разные вопросы. Выбранный объект указывают в заключении рядом с результатом.

    Требования о наличии функции и о её поведении проверяют запуском на стенде: та же версия Windows, копия базы, при необходимости заглушки вместо внешних систем. Требования о составе интерфейса читают по ресурсам форм — это работает и без исходного текста, но подтверждается запуском, потому что описание формы отражает замысел разработчика, а не работающую функцию. Требования о расчётах и правилах ищут сначала в базе: по системам этого класса они чаще реализованы хранимыми процедурами, чем кодом программы. И только требования об устройстве самой программы — «модуль расчёта должен быть выделен» — без исходного текста не проверяются вовсе; подменять их наблюдением за поведением эксперт не вправе и говорит об этом прямо.

    Требования, завязанные на данные заказчика или на обмен с другими системами предприятия, выполняют на его площадке — по сценарию, согласованному заранее, и в согласованное время. Работают при этом на копии базы, а не на рабочей: сценарий, выполненный в боевом учёте, создаёт настоящие документы и меняет остатки, и такую проверку потом справедливо оспорят. Если скопировать базу нельзя, ограничиваются действиями, которые ничего не записывают, и это оговаривают в задании. Односторонней проверка быть не должна: по судебной экспертизе лица, участвующие в деле, вправе присутствовать при её производстве, а порядок и время работ на площадке определяет назначивший орган. Возражение другой стороны само по себе результат не отменяет — допустимость и вес эксперимента оценивает суд, но проверка, поставленная без извещения этой стороны, такой оценки почти наверняка не выдержит.

    Итог по каждому требованию записывают в одной из четырёх форм: реализовано, реализовано частично, не реализовано, не проверяется на представленных объектах — с указанием объекта, способа и полученного результата. Четвёртая форма по Delphi встречается чаще, чем в языках с восстановимым кодом, и это свойство объекта, а не качество работы эксперта. Существенность недостатка и его влияние на приёмку оценивает суд. Если спор целиком о соответствии заданию и язык значения не имеет, задачу закрывает экспертиза соответствия работ техническому заданию.

    Что просят прислать по спору о системе на Delphi

    Набор материалов здесь отличается от современных стеков: хранилища исходных текстов у старых систем обычно нет, зато есть дистрибутивы, накопленная база и люди, которые помнят историю доработок.

    Программа: дистрибутив, исполняемый файл, исходный текст

    Первая часть — то, что было передано заказчику и что у него работает:

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

    База и площадка: где система хранит накопленное

    Вторая часть — то, без чего первая объясняет не всё:

    • резервная копия базы данных, сделанная штатным средством самой базы;
    • описание площадки: версия операционной системы, где стоит база, как подключаются рабочие места;
    • журналы приложения и журнал событий Windows за спорный период;
    • печатные формы и шаблоны отчётов, если они лежат отдельными файлами;
    • техническое задание с приложениями, договор, акты, переписка сторон, инструкции пользователей.

    Чего не хватает по вашему спору, скажем после первичного разбора: набор зависит от вопросов, и присылать всё подряд не нужно.

    Пароли внутри программы: как отдать материалы и не открыть систему

    Порядок передачи такой. До разговора не отправляют ничего: сперва по описанию спора определяют, какие материалы вообще нужны, и лишь затем договариваются о передаче. Идёт она по защищённому каналу и ограниченному кругу лиц — архив шифруют, пароль сообщают отдельно от архива, состав переданного и его контрольные суммы записывают в акт приёмки. Копию рабочей базы не отправляют почтой и не выкладывают в мессенджер.

    Дальше начинается то, из-за чего этот раздел вообще есть. У систем такого возраста доступы лежат прямо в файле настроек рядом с программой, а нередко зашиты внутрь самого исполняемого файла. Файлы программы и настроек передают в том виде, в каком они работают: убирать из них пароли нельзя, это изменит исследуемый объект, и другая сторона справедливо на это укажет. Значит, вместе с материалами уезжает и рабочий пароль к базе.

    Здесь легко сделать хуже, чем было. Совет «после передачи смените пароль к базе» для современных систем разумен, а для этой — разрушителен: пароль зашит в программу, менять его придётся вместе с новой сборкой, а собрать её, если исходного текста нет и автора не найти, попросту некому. Смена пароля к базе в такой системе означает, что назавтра в неё не войдёт ни одно рабочее место. Поэтому поступают иначе: пароль оставляют, а доступ к базе закрывают снаружи — ограничивают подключение к её сетевому порту рабочими местами предприятия, убирают её из общедоступного сегмента сети, отключают удалённый доступ посторонних к серверу. Меняют только то, что действительно меняется без переделки программы: пароли администраторов сервера, учётные записи Windows, доступ к резервным копиям. Что именно из этого выполнимо, решает ваш системный администратор, и решать это лучше до передачи, а не после.

    Объём выгрузки базы — вопрос не изменения объекта, а выбора объектов: таблицы, к спору не относящиеся, в исследование просто не включают, и это согласуют заранее. Если в базе есть персональные данные клиентов, объём определяют по поставленным вопросам, а лишнее обезличивают там, где это не мешает исследованию.

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

    Возврат или уничтожение переданного и срок хранения фиксируют в договоре до начала работы — не после. Отдельно о разглашении: соглашение о конфиденциальности связывает эксперта, но не участников дела. Материалы, поступившие в суд, доступны сторонам, и закрытое заседание этого не меняет — оно закрывает зал от посторонних, а не дело от оппонента. Если раскрытие для вас неприемлемо, обсудите со своим юристом другие пути: ограничить объём передаваемого поставленными вопросами, просить об исследовании на вашей территории без вывоза носителей, поставить вопрос о неразглашении перед судом до передачи.

    Как идёт работа: от приёмки материалов до выводов

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

    1. Приёмка: пересчитывают контрольные суммы, записывают, откуда взята каждая копия и кто её снимал.
    2. Опознание объектов: что перед экспертом — дистрибутив, установленная программа, исходный текст, база; какой версией среды собрана программа и какие компоненты в ней использованы.
    3. Извлечение ресурсов форм и перечня классов из исполняемого файла, чтение структуры базы вместе с хранимыми процедурами.
    4. Подъём стенда: та же версия Windows, копия базы, рабочее место с программой — и проверка, что система вообще запускается.
    5. Попытка сборки из переданного текста, если он есть, с фиксацией того, чего для неё недостало.
    6. Проверка требований — каждое тем способом, который для него применим, с записью условий, при которых получен результат.
    7. Проверка альтернативных объяснений: настройки, данные, версия Windows, действия пользователей.
    8. Выводы строго в пределах поставленных вопросов, с отдельным перечнем того, что установить не удалось и почему.

    Ограничения по Delphi называют всегда, даже когда они не помешали: невозможность восстановить исходный текст, отсутствие отладочных сведений, недостающие компоненты, невозможность запустить систему на современном оборудовании. Читатель заключения должен видеть не только то, что установлено, но и то, на чём это установлено.

    Как формулируют вопросы по программе на Delphi

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

    Поэтому сначала выясняют, какие объекты уцелели, и только потом пишут вопросы. Объект называют поимённо — архив с контрольной суммой, дистрибутив с указанием происхождения, файл базы, — а рядом ставят проверяемый критерий: пункт задания, требование договора, инструкцию пользователя. Свои вопросы и кандидатуру эксперта сторона вправе представить суду до назначения, и отклонение предложенных вопросов суд обязан мотивировать — поэтому формулировки готовят заранее, а не после определения. Окончательный круг вопросов при судебной экспертизе определяет суд, а в иных предусмотренных законом процедурах — орган или лицо, назначившие экспертизу; эксперт отвечает в пределах специальных знаний и представленных материалов и при неясности вопроса сообщает об этом назначившему органу. Помощь с формулировками возможна до назначения; перечни под смежные задачи собраны на страницах экспертизы качества исходного кода и экспертизы плагиата исходного кода. По спорам о системах на Delphi чаще всего ставят такие вопросы:

    1. Возможно ли из содержимого архива с контрольной суммой SHA-256 … собрать работающую программу, представленную файлом …; если нет, каких файлов проекта, наборов компонентов или версий среды разработки для этого недостаёт?
    2. Какие экранные формы и поля содержит программа, представленная файлом …, и к каким объектам базы данных, представленной файлом …, она обращается?
    3. Соответствует ли программа, представленная файлом …, требованиям пунктов … технического задания (приложение № … к договору от …); проверка каждого требования выполняется на объекте, для него применимом, с указанием такого объекта?
    4. Содержит ли база данных, представленная файлом …, тексты хранимых процедур и триггеров; если да, какие расчёты и проверки в них реализованы?
    5. Совпадают ли программы, представленные файлами … и …, по составу экранных форм, перечню классов и структуре базы данных; какие совпадения не объясняются использованием общих наборов компонентов и заготовок среды разработки?
    6. Чем вызван отказ программы …, запись о котором содержится в журнале … , при выполнении действий, описанных в … ?
    7. Какие сведения, накопленные в базе данных …, и в каком виде могут быть выгружены для переноса в иную информационную систему?

    Форматы работы: что выбирают по старым системам

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

    Поэтому первым форматом чаще берут не исследование, а письменную консультацию по материалам. Она отвечает на единственный вопрос — что удастся установить по тому, что уцелело, — и по Delphi этот вопрос решающий: часть спорных обстоятельств по готовой программе не устанавливается в принципе, и узнавать об этом после оплаты экспертизы поздно. Консультацию не путают с бесплатным разбором: разбор устный, по описанию спора, без изучения файлов и без документа на руки; консультация даёт письменный ответ эксперта, на который можно ссылаться в ходатайстве.

    Внесудебное исследование по договору идёт следующим шагом и полезно ровно тем, что его материалы собирает сам заказчик — на своей площадке, в своём темпе, включая точную копию базы, которую после назначения экспертизы получить будет уже сложнее. Судебную экспертизу назначают определением суда или постановлением органа расследования: эксперт предупреждается об уголовной ответственности за заведомо ложное заключение, а материалы поступают через назначивший орган.

    Если по делу уже есть чужое заключение, его разбирают рецензированием — подробнее на странице рецензии на заключение о процессе разработки. Сама по себе рецензия ничего не отменяет, она обосновывает ходатайство: о вызове эксперта для пояснений, о дополнительной экспертизе при неполноте или неясности заключения, о повторной — при сомнениях в обоснованности заключения или противоречиях в выводах. Заранее установленной силы у заключения нет, суд оценивает его наряду с остальными доказательствами.

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

    Из чего складываются стоимость и срок

    Расчёт здесь задаёт не размер программы, а подготовка: сколько времени уйдёт, прежде чем эксперт увидит объект в работе.

    Первое обстоятельство — есть ли исходный текст. С ним разбор предсказуем: эксперт читает код и сверяет его с программой. Без него исследование строится на ресурсах форм, структуре базы и наблюдении за поведением; это дольше, а часть вопросов остаётся без ответа, и предупредить об этом честнее до начала, чем после.

    Второе — возраст системы, и по Delphi он решает больше всего. Программе двадцатилетней давности нужно окружение той же эпохи: старая версия Windows в виртуальной машине, промежуточный слой доступа к данным, иногда аппаратный ключ защиты, без которого программа просто не запускается. Собрать такой стенд дольше, чем разобрать саму программу, и это отдельная позиция сметы.

    Третье — нужен ли выезд на площадку. Проверки на работающей системе согласуются по времени, порядку и участникам, выполняются на копии базы и без ваших людей не проходят; это отдельная позиция сметы, как и участие специалиста в заседании.

    Ориентир для судебной экспертизы — от 100 000 ₽, ориентировочный срок — 10 рабочих дней. По судебной экспертизе порядок оплаты другой, чем по договору: размер вознаграждения определяет суд, а деньги вносятся на депозитный счёт суда стороной, заявившей ходатайство, до назначения. Оговорка по срокам обязательна: ориентир рассчитан на систему, которую удаётся поднять на обычном оборудовании. Если под неё нужно собирать отдельное окружение со старой операционной системой, срок сдвигается, и насколько — говорят после разбора, до подписания договора, а не по ходу работы.

    Отдельно об исходе «на представленных материалах не проверяется». По Delphi он вероятнее, чем в других языках, и это тоже результат работы: эксперт указывает, какого объекта или условия не хватило, вывод оплачивается наравне с любым другим и показывает суду, где именно оборвалась цепочка. Чтобы такого исхода было меньше, состав материалов и определяют на бесплатном разборе, а не по телефону в день обращения.

    На руки вы получаете заключение — сшитый документ с описанием объектов, применённых методов, хода исследования и выводов по каждому поставленному вопросу, с приложениями: перечнем материалов, контрольными суммами, снимками экранов и распечатками. Число экземпляров и способ передачи оговаривают в договоре: по судебной экспертизе заключение направляется назначившему органу, по внесудебному исследованию — заказчику.

    Чтобы получить расчёт, архивы собирать не надо. Хватит описания спора, названия системы и перечня того, что у вас на руках: договор, задание, переписка, дистрибутивы. Позвоните по номеру 8 (800) 333-24-09 или оставьте заявку — скажем, относится ли задача к нашей компетенции, какое направление её закрывает, что стоит сохранить сегодня и каких данных не хватает для расчёта.

    Проведение экспертизы по уголовному делу

    Судебная экспертиза по уголовному делу производится государственными судебными экспертами и иными экспертами из числа лиц, обладающих специальными знаниями.

    Негосударственными судебно-экспертными учреждениями постановление Пленума Верховного Суда Российской Федерации от 21 декабря 2010 г. № 28 «О судебной экспертизе по уголовным делам» признаёт некоммерческие организации, созданные в соответствии с Гражданским кодексом Российской Федерации и Федеральным законом «О некоммерческих организациях» и осуществляющие судебно-экспертную деятельность в соответствии с принятыми ими уставами.

    По сведениям организации, проведение судебных экспертиз предусмотрено её уставом (см. действующую редакцию в разделе «Документы организации»). Это само по себе не означает автоматического поручения любой экспертизы. Возможность поручить конкретное исследование определяет назначающий орган с учётом предмета дела, квалификации эксперта, оснований для отвода и действующего перечня экспертиз, выполняемых только государственными судебно-экспертными организациями.

    Актуализировано
    Форматы работы

    Стоимость и сроки

    Указан предварительный ориентир. Точный расчёт зависит от вопросов, объёма материалов, количества объектов и необходимости выезда. Начало отсчёта фиксируем после проверки необходимого комплекта.

    По договору

    Внесудебное исследование

    от 100 000 ₽
    10 рабочих дней
    точная стоимость будет определена после ознакомления с объектом исследования

    Итог — внесудебное исследование или документ специалиста по договору. Его наименование, представление и доказательственное значение зависят от вида процесса и оцениваются судом.

    Заказать исследование
    Проверка готового заключения

    Рецензирование

    от 40 000 ₽
    10 рабочих дней
    точная стоимость будет определена после ознакомления с заключением и приложениями

    Итог — письменная рецензия на готовое заключение. Она проверяет исходные данные, методы и выводы, но не отменяет заключение и не заменяет новое исследование объекта.

    Передать заключение на проверку
    Письменный ответ эксперта

    Консультация и справка

    от 20 000 ₽
    2-3 рабочих дня
    точная стоимость будет определена после ознакомления с объектом исследования

    Поможет предварительно оценить вопрос, определить перспективу исследования и подготовить дальнейшие действия.

    Описать вопрос
    Разбор задачи — без оплаты

    Проверим вид исследования, комплектность материалов и возможность работы. Если по присланным материалам видно, что ответить нельзя, скажем сразу и работу не возьмём. Когда материалы структурированы, предварительный прогноз тоже бесплатный; если разбор требует долгой работы эксперта, предупредим об этом до начала — тогда это платная консультация.

    Получить предварительную оценку
    Организация исследования

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

    До начала исследования уточним предмет задачи, состав материалов и формат итогового документа.

    1. 01 Предварительный разбор

      Проверяем компетенцию и сообщаем, можно ли провести исследование по поставленной задаче.

    2. 02 Вопросы и материалы

      Уточняем вопросы и сообщаем, каких документов или объектов не хватает.

    3. 03 Экспертное исследование

      Эксперт применяет профильные методики, фиксирует ход работы и обосновывает выводы.

    4. 04 Заключение и пояснения

      Передаём результат и при необходимости разъясняем суду применённую методику и выводы.

    Выполненные исследования

    Практика по этому направлению

    Краткие описания задач с указанием суда и ссылкой на опубликованные материалы дела. Формулировки взяты из карточек дел и воспроизводят вопросы, поставленные назначившим органом: они показывают, что исследовалось, а не то, какие вопросы можно поручить эксперту. Виновность, принадлежность прав и обоснованность требований разрешает суд.

    Все примеры по направлению
    Опубликованный пример
    Завершена в марте 2025 года

    Экспертиза №158474

    Судебная компьютерно-техническая экспертиза программы для ЭВМ RULIS и ее базы данных, проведенная для Арбитражного суда Приморского края.

    Арбитражный суд Приморского краяДело №А51-15545/2023
    Участники: ООО МЕДИЦИНСКИЙ ДИАГНОСТИЧЕСКИЙ ЦЕНТР "ДОКТОР ТАФИ", ООО "ПРОГРАММНЫЙ СТИЛЬ"

    Аннотация

    Судебная компьютерно-техническая экспертиза программы для ЭВМ RULIS и ее базы данных, проведенная для Арбитражного суда Приморского края. Экспертиза включала комплексный анализ функциональных характеристик программного обеспечения и его соответствия условиям лицензионного и внедренческого договоров. В ходе исследования эксперты сравнивали различные версии программы и баз данных, предоставленных истцом и ответчиком, используя специализированное программное обеспечение для сопоставления файлов и структур данных. Осуществлялась оценка объема и качества выполненных работ по техническому заданию, а также анализ истории изменений на серверном оборудовании, функционирующем под управлением Linux Ubuntu. Целью экспертизы было выявление возможных недостатков, их критичности и влияния на общую работоспособность информационной системы.
    Открыть описание
    Опубликованный пример
    Завершена в июне 2014 года

    Экспертиза №2528

    Судебная компьютерно-техническая экспертиза проводилась в рамках дела о защите прав на базу данных, связанную с системами автоматизации автобусных пассажирских перевозок.

    Арбитражный суд Пермского краяДело №А50-16993/2013
    Участники: ПКГУП "Автовокзал", ООО "Комплексные автоматизированные распределительные системы"

    Аннотация

    Судебная компьютерно-техническая экспертиза проводилась в рамках дела о защите прав на базу данных, связанную с системами автоматизации автобусных пассажирских перевозок. В ходе исследования был осуществлен детальный сравнительный анализ исходных программных кодов двух различных систем, "Автоматизированная система управления автовокзалом" и "Комплексная автоматизированная распределенная система", представленных на электронных носителях. Эксперты определили степень идентичности фрагментов кода, а также установили, является ли база данных неотъемлемой частью одной из программ и может ли она функционировать без неё. Исследованы структуры баз данных на предмет заимствований и оценена возможность управления удаленным техническим доступом к серверу базы данных. Применялись методы статического и динамического анализа кода, структурного анализа файловой системы и метаданных базы данных. Целью было разрешить спорные вопросы о принадлежности и использовании программного обеспечения и его компонентов.
    Открыть описание
    В открытом доступе представлена часть выполненных исследований по разным объектам и судебным делам. Сведения, защищённые законом или условиями конфиденциальности, не раскрываются. Чтобы проверить возможность исследования по вашей ситуации, опишите задачу.

    Документы организации

    Ответы специалистов

    Частые вопросы

    Практические пояснения о назначении, материалах и использовании экспертного заключения.

    Все вопросы по направлению
    Когда экспертиза старой учётной системы имеет смысл?

    Тогда, когда спор упирается в проверяемое состояние системы, а не только в толкование договора. По Delphi поводы свои: заказчик много лет пользуется программой, а исходный текст ему не передали; текст передали, но собрать из него работающую программу не выходит; новый подрядчик взялся сопровождать чужую систему и часть функций перестала работать; система отказала после обновления Windows или переноса на другой сервер.

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

    Не годится экспертиза там, где вопрос правовой: приняты ли работы, кому принадлежат права на программу, существенны ли недостатки. Эксперт устанавливает факты о системе, а правовую оценку им даёт суд.

    Отдельная страница: Когда экспертиза старой учётной системы имеет смысл?
    Можно ли получить исходный код программы на Delphi?

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

    Что из готовой программы всё-таки извлекается — совсем другой набор сведений: описания экранных форм со всеми элементами, перечень классов и их свойств, текстовые строки и сообщения, обращения к таблицам базы, признаки использованных сторонних компонентов. Этого хватает, чтобы описать устройство системы, но не хватает, чтобы прочитать алгоритм расчёта.

    Границу эксперт проводит в заключении прямо: что установлено по машинному коду, что — по ресурсам, а что установить нельзя. Выводы суд оценивает наряду с другими доказательствами.

    Отдельная страница: Можно ли получить исходный код программы на Delphi?
    Что даёт исследование экранных форм без исходного кода?

    Состав окон программы целиком, вплоть до отдельного поля. Внешний вид каждого окна на Delphi описан отдельным файлом формы, и при сборке эти описания попадают внутрь исполняемого файла как ресурсы. Оттуда они извлекаются и читаются: состав окон, элементы на каждом, надписи, размеры, привязка полей к таблицам базы, имена обработчиков событий.

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

    Поэтому по формам проверяют состав интерфейса, а вывод «требование выполнено» подтверждают ещё и запуском. Что происходит внутри обработчика, по формам не установить — алгоритм остаётся в машинном коде, и суд оценивает вывод с учётом этой границы.

    Отдельная страница: Что даёт исследование экранных форм без исходного кода?
    Исходники передали, а программа не собирается — чья вина?

    Сам по себе этот факт не доказывает ничего, пока не установлена причина. По Delphi для сборки нужны три вещи одновременно: та же версия среды разработки, те же сторонние наборы компонентов тех же версий и полный комплект файлов проекта вместе с файлами форм.

    Компоненты — самая частая причина. Их устанавливают в среду, а не кладут рядом с проектом, поэтому при передаче исходников о них забывают, и текст оказывается формально полным, а собрать из него нечего. Эксперт разбирает это по шагам: какой версией среды собиралась спорная программа, какие компоненты в ней использованы, что есть в переданном комплекте, а чего недостаёт.

    Вывод формулируют так, чтобы им можно было пользоваться: не «не собирается», а чего именно не хватило. Кто отвечает за недостающее по условиям договора, решает суд.

    Отдельная страница: Исходники передали, а программа не собирается — чья вина?
    Как узнают, какие сторонние компоненты использованы?

    Двумя путями, и оба дают проверяемый результат. Если исходный текст есть, состав компонентов виден прямо в файле проекта и в списке используемых модулей. Если текста нет, компоненты опознают по самой программе: многие известные наборы оставляют в исполняемом файле узнаваемые имена классов и строки, а их формы попадают в ресурсы вместе с остальными.

    Метод не исчерпывающий, и эксперт разделяет опознанное надёжно и предположительно. Часть компонентов следов не оставляет, поэтому вывод строят как «использованы такие-то», а не «использованы только такие-то».

    Дальше начинается вопрос условий: у каждого набора свой лицензионный документ, и встречаются условия, привязанные к числу разработчиков. Эксперт устанавливает, какой набор какой версии подключён и каким документом сопровождается, и приводит его текст; толкование условий — за судом.

    Отдельная страница: Как узнают, какие сторонние компоненты использованы?
    Зачем эксперту база данных, если спор о программе?

    Потому что в системах на Delphi значительная часть логики живёт не в программе, а в базе: расчёты, проверки и правила реализованы хранимыми процедурами и триггерами. Исследование только по программе на вопрос о расчёте тогда просто не отвечает.

    База при этом читается независимо от программы: из файла извлекается вся структура — таблицы, поля, связи, индексы, — а обычно и тексты процедур и триггеров, которые хранятся рядом со скомпилированным представлением. Но: работать базе тексты не нужны, и вычистить их при поставке — известный приём защиты логики; в новых версиях Firebird содержимое базы к тому же бывает зашифровано. Тогда остаётся скомпилированное представление, читать которое сложнее.

    Поэтому наличие текстов эксперт проверяет первым делом и указывает в заключении, что именно было доступно. Какое значение имеет установленное, оценивает суд.

    Отдельная страница: Зачем эксперту база данных, если спор о программе?
    Систему не запустить на новом компьютере — что тогда?

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

    Слой этот никуда не делся и устанавливается до сих пор, но поддержка прекращена: он работает только с 32-разрядными программами, требует прав администратора и общего сетевого каталога для служебных файлов — а в современной сети такой каталог обычно закрыт. Отсюда и берётся впечатление, что систему «невозможно запустить». Подъём такого окружения занимает больше времени, чем сам разбор, и в расчёт его закладывают заранее.

    Если запустить не удалось совсем, данные читаются и без программы — отдельными средствами. Всё, что проверить не получилось, эксперт перечисляет как ограничение, и суду важно видеть эту границу, а не только результат.

    Отдельная страница: Систему не запустить на новом компьютере — что тогда?
    Как доказать, что программа собрана из этого кода?

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

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

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

    Отдельная страница: Как доказать, что программа собрана из этого кода?
    Как установить, когда появилась спорная версия?

    По совокупности источников, потому что надёжного одиночного не существует. Хранилище исходных текстов у старых систем обычно не велось, поэтому вес каждого сохранившегося источника выше, чем в современных стеках.

    Смотрят на сведения о версии внутри исполняемого файла — их заполняет разработчик, поэтому они показывают намерение, а не факт; на дистрибутивы и обновления, сохранившиеся у заказчика, вместе с письмами о поставке; на журналы установки и резервные копии базы за прошлые периоды. Отдельный источник — сама структура базы: добавление таблицы или поля почти всегда связано с конкретной доработкой. Порядок изменений виден по служебным сведениям внутри базы, но только в точной копии файла: восстановление из обычной резервной копии перестраивает их заново.

    Файловые метки переписываются копированием и переустановкой, поэтому сами по себе доказывают мало. Расхождение источников эксперт показывает, а не сглаживает; окончательный вывод о периоде делает суд. Если спор именно о сроках, его разбирает экспертиза сроков и хронологии разработки.

    Отдельная страница: Как установить, когда появилась спорная версия?
    Система сломалась после перевода на новую среду?

    Сравнением поведения до и после, поэтому предыдущую версию и резервную копию базы просят сохранить в первую очередь. Дефекты при переводе старой системы на новую среду однотипны, и эксперт знает, где их искать.

    Первое — работа с текстом: в старых версиях среды строка хранилась побайтно, в новых иначе, и после перевода появляются искажённые буквы, обрезанные значения и неверные сравнения. Второе — запись файлов в каталог установки: современная Windows её обычно не запрещает, а незаметно уводит в личный каталог пользователя, и тогда у каждого сотрудника своя копия данных, а общие настройки перестают меняться для всех. Третье — сторонние компоненты, у которых нет версии под новую среду: их заменяют, и вместе с заменой меняется поведение. Печатные формы ломаются чаще всего и раньше всех.

    Установив дефект, эксперт отвечает и на второй вопрос: возник он при переводе или существовал раньше. Была ли работа по переводу предусмотрена договором, решает суд.

    Отдельная страница: Система сломалась после перевода на новую среду?
    Вылетает программа на Delphi: найдут ли причину?

    Обычно да, но объём вывода зависит от того, что сохранилось. При аварийном завершении Windows записывает в журнал событий имя отказавшего модуля и смещение внутри него. Само по себе смещение места в коде не называет: для этого нужен файл с отладочными сведениями, который создаётся при сборке и вместе с программой почти никогда не передаётся.

    Выручает то, что многие системы на Delphi ведут собственный журнал ошибок с цепочкой вызовов и именами методов — он информативнее системного. Если такой журнал включён, место отказа устанавливается и без отладочных сведений.

    Причину эксперт называет после проверки альтернативных объяснений: неверные данные, недоступность базы, нехватка прав, действия другой программы. Если журналов не сохранилось, эксперт записывает это как ограничение, а дефект это или условия эксплуатации, оценивает суд.

    Отдельная страница: Вылетает программа на Delphi: найдут ли причину?
    Программа зависает при работе с базой: где причина?

    Чаще всего не в программе, а в базе, и это важно для правильной постановки вопроса. Пока программа не отвечает, снимают снимок её состояния и смотрят, чем заняты потоки: ждут ли они ответа базы, встали ли на общей блокировке, заблокировали ли друг друга. Два-три снимка подряд отвечают, стоит работа или идёт медленно.

    Если ожидание пришло со стороны базы, дальше смотрят уже её: какие соединения удерживают блокировку, какая операция её поставила, есть ли долгие запросы. По системам на Delphi типична ситуация, когда одно рабочее место держит открытой длинную операцию, а все остальные ждут его.

    Вывод сопровождают описанием сценария, при котором зависание воспроизведено, и числом одновременных пользователей. Соответствует ли это условиям эксплуатации из задания, оценивает суд.

    Отдельная страница: Программа зависает при работе с базой: где причина?
    По чему сравнивают две программы на Delphi?

    Не по машинному коду: одинаковый текст, собранный разными версиями среды, даёт разный результат, а разный текст может дать похожий. Сравнивают то, что сборка сохраняет в узнаваемом виде.

    Главный объект — экранные формы: совпадение расположения элементов, их имён и свойств у двух независимо написанных программ практически исключено. К нему добавляют перечень классов и модулей, текстовые строки и сообщения, а также структуру базы вместе с текстами хранимых процедур — по ней совпадения видны нагляднее всего. Из сравнения сначала вычитают общее основание: код сторонних компонентов, заготовки, которые среда создаёт сама, стандартные конструкции языка.

    Направление заимствования само совпадение не показывает: кто у кого, устанавливают по датам и истории изменений, а вывод о нарушении прав делает суд. Развёрнуто задача разобрана на странице экспертизы плагиата исходного кода.

    Отдельная страница: По чему сравнивают две программы на Delphi?
    Разработчика больше нет: что даст экспертиза?

    Собрать программу можно только при трёх условиях сразу. Первая — описать систему настолько подробно, чтобы её можно было воспроизвести или заменить: по ресурсам форм, структуре базы и наблюдению за работой это делается без исходного текста. Вторая — установить состав накопленных данных и способ их выгрузки. Третья — зафиксировать по сохранившимся документам, что именно передавалось заказчику.

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

    Кому принадлежат права на систему и вправе ли заказчик её дорабатывать — вопросы правовые. На них отвечает суд по документам, а заключение эксперта даёт для этого техническую опору: что представляет собой программа и что было передано.

    Отдельная страница: Разработчика больше нет: что даст экспертиза?
    Как проверить, что данные можно выгрузить?

    Проверкой на самой базе, а не обсуждением. Утверждение «данные выгрузить невозможно» проверяемо: эксперт открывает резервную копию базы, читает её структуру и устанавливает, в каких таблицах лежат нужные сведения, связаны ли они между собой и можно ли получить их в переносимом виде.

    По системам с базами Firebird и InterBase ответ чаще положительный: такая база несёт полное описание собственной структуры, и выгрузка из неё — обычная операция. Но заранее его не объявляют: у систем с файловыми таблицами и с базами других производителей картина другая, а старые версии формата новый сервер не открывает вовсе — их приходится поднимать сервером той же эпохи. Сложность не в чтении, а в толковании: значение отдельных полей бывает известно только программе. Если восстановить его по формам и поведению не удалось, вывод отрицательный — эти данные в переносимый вид не приводятся, и так и записывают. Переносимым считают вид, в котором каждое поле имеет понятное назначение и связи между таблицами сохранены.

    Результатом становится описание состава данных и способа выгрузки, пригодное для переноса в другую систему. Обязана ли другая сторона такую выгрузку предоставить, определяет суд по условиям договора.

    Отдельная страница: Как проверить, что данные можно выгрузить?
    Что считать работой подрядчика, а что — компонентами?

    Считают в модулях, формах и строках, но не по всему каталогу проекта: сначала из него вычитают чужое и машинное. Это код сторонних наборов компонентов, заготовки, которые среда создаёт сама при добавлении формы или модуля, а также файлы, полученные автоматически.

    Эксперт сначала отделяет эти слои, описывает основание для каждого исключения и только потом измеряет остаток. Именно границы исключения обычно и оспариваются, поэтому они должны быть проверяемыми. По Delphi к остатку добавляют то, чего нет в других языках: описания форм — это тоже результат работы, хотя строк кода в них нет.

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

    Отдельная страница: Что считать работой подрядчика, а что — компонентами?
    Как проверяют требования задания без исходного кода?

    Способ проверки выбирают под требование, и по Delphi объекты для этого разные. Требования о составе интерфейса читают по ресурсам форм — это работает и без исходного текста, но вывод «требование реализовано» подтверждают запуском: описание формы отражает замысел разработчика, а не работающую функцию. Требования о поведении проверяют запуском на стенде: отдельный компьютер с нужной версией Windows, копией базы и рабочим местом программы.

    Требования об устройстве программы — «расчёт должен быть вынесен в отдельный модуль» — без исходного текста не проверяются, и эксперт говорит об этом прямо, а не подменяет их наблюдением за поведением. Требования, завязанные на данные заказчика или на обмен с другими системами, выполняют на его площадке по согласованному сценарию.

    Если ни один способ не применим, эксперт указывает, какого объекта или условия не хватило, и оставляет вопрос без ответа: это самостоятельный результат, он показывает суду, чего недостаёт. Задачу без привязки к языку закрывает экспертиза соответствия работ техническому заданию.

    Отдельная страница: Как проверяют требования задания без исходного кода?
    Обязательно ли эксперту работать на нашем сервере?

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

    Доступ нужен там, где требование завязано на данные заказчика, на обмен с другой системой предприятия или на оборудование — принтеры этикеток, сканеры, кассовую технику. Тогда проверку выполняют на площадке: по согласованному сценарию и в согласованное время, с записью условий и результата. Работают при этом на копии базы, а не на рабочей: сценарий, выполненный в боевом учёте, создаёт настоящие документы и меняет остатки. Односторонней такая проверка быть не должна — по судебной экспертизе лица, участвующие в деле, вправе присутствовать при её производстве.

    После назначения экспертизы порядок и время работ на площадке определяет назначивший орган, а не сторона. Возражение другой стороны само по себе результат не отменяет — допустимость такого эксперимента оценивает суд, но проверка, поставленная без извещения этой стороны, такой оценки почти наверняка не выдержит.

    Отдельная страница: Обязательно ли эксперту работать на нашем сервере?
    Что прислать по спору о старой учётной системе?

    Три группы материалов, и начинать нужно не с них, а с остановки удаления: журнал событий Windows пишется по кольцу, собственный журнал программы часто обрезается при запуске, а ночная задача каждую ночь стирает старую резервную копию базы. Отключите ротацию журналов и приостановите удаление старых копий сегодня же.

    По базе снимают две копии, и порядок важен. Сначала точную копию файла, и делает это ваш системный администратор, предупредив пользователей заранее: копировать файл работающей базы обычными средствами нельзя, для этого есть штатный механизм блокировки, а при его отсутствии базу останавливают штатно. Контрольную сумму считают сразу же. И только потом делают обычную резервную копию штатным средством — она прикладывается к первой, но не заменяет её, потому что пересобирает содержимое заново.

    Дальше — каталог программы целиком с библиотеками, настройками и печатными формами, дистрибутивы всех сохранившихся версий, исходный текст с файлами форм, если он передавался, журналы за спорный период и документы: задание, договор, акты, переписка. Передавать можно только то, к чему у вас есть законное право доступа, а недостающее у другой стороны запрашивают через суд.

    Отдельная страница: Что прислать по спору о старой учётной системе?
    Пароли лежат прямо в настройках — как быть с передачей?

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

    А вот привычный совет «после передачи смените пароль к базе» для систем такого возраста разрушителен: пароль зашит в программу, и менять его пришлось бы вместе с новой сборкой, которую при утраченных исходниках делать некому. Наутро в базу не войдёт ни одно рабочее место. Поэтому доступ закрывают снаружи: ограничивают подключение к сетевому порту базы рабочими местами предприятия, убирают её из общедоступного сегмента, отключают удалённый доступ посторонних к серверу.

    Меняют только то, что меняется без переделки программы: пароли администраторов сервера, учётные записи Windows, доступ к резервным копиям. И отдельно о том, кому передавать. Всё сказанное относится к внесудебному исследованию по договору. Если экспертиза уже назначена, материалы эксперту напрямую не передают вовсе — они идут через назначивший орган, иначе заключение обесценится целиком. Срок хранения и возврат переданного фиксируют договором.

    Отдельная страница: Пароли лежат прямо в настройках — как быть с передачей?
    Что делать, если в базе персональные данные клиентов?

    Объём определяют по поставленным вопросам, а не по принципу «пусть будет»: если для ответа достаточно структуры таблиц и нескольких записей, полная копия базы не нужна. Лишнее обезличивают там, где это не мешает исследованию, и об этом договариваются до передачи.

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

    Полная копия базы предприятия создаёт самостоятельный риск для вас как оператора, поэтому её и просят не по умолчанию, а только когда без неё вопрос не решается.

    Отдельная страница: Что делать, если в базе персональные данные клиентов?
    Какие вопросы ставить, если исходного кода нет?

    Главное — не просить прочитать в готовой программе то, что из неё не читается. «Каким алгоритмом программа считает надбавку» — вопрос без ответа, если исходного текста нет. «Какие поля содержит форма расчёта надбавки и к каким таблицам базы она обращается» — вопрос с ответом на том же самом материале.

    В вопросе должны быть названы объект и критерий. Объект — конкретный архив с контрольной суммой, конкретный дистрибутив с указанием происхождения или файл базы; критерий — пункт технического задания, требование договора или инструкция. Формулировки вроде «качественно ли выполнены работы» непроверяемы.

    Стоит предусмотреть и ответ «на представленных материалах не проверяется»: по Delphi он вероятнее, чем в других языках. При судебной экспертизе окончательный круг вопросов определяет суд; помощь с формулировками возможна до назначения.

    Отдельная страница: Какие вопросы ставить, если исходного кода нет?
    Что меняется после назначения экспертизы судом?

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

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

    Поэтому стадия диктует и выбор формата. До иска берут внесудебное исследование, чтобы понять, есть ли предмет: по Delphi часть вопросов не решается в принципе, и узнать об этом дешевле заранее.

    Отдельная страница: Что меняется после назначения экспертизы судом?
    Из чего складываются срок и стоимость по старой системе?

    Ориентир по судебной экспертизе — от 100 000 ₽ и 10 рабочих дней; точную сумму и срок называют после бесплатного разбора и закрепляют договором до начала работы. Разброс задают три обстоятельства, и первое — есть ли исходный текст: с ним работа предсказуема, без него она строится на формах, базе и наблюдении, идёт дольше, а часть вопросов остаётся без ответа.

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

    Исход «на представленных материалах не проверяется» по Delphi вероятнее, чем в других языках. Это тоже результат работы, он оплачивается наравне с любым другим и показывает суду, какого объекта или условия не хватило.

    Отдельная страница: Из чего складываются срок и стоимость по старой системе?
    На что смотреть в чужом заключении по системе на Delphi?

    Проверяют путь к выводам. Первое — объекты: назван ли конкретный файл с контрольной суммой и сказано ли, что исследовалось — исходный текст, готовая программа или база. Второе — не сравнивал ли эксперт байты собранных файлов: по Delphi сборка не повторяема, и такое сравнение обоснованного вывода не даёт.

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

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

    Отдельная страница: На что смотреть в чужом заключении по системе на Delphi?
    Обращение в организацию

    Отправьте материалы на предварительную оценку

    Приложите имеющиеся документы и кратко опишите задачу. Мы проверим компетенцию и комплектность, определим специальность эксперта и сообщим возможные срок и стоимость.

    Отправить материалы