Экспертиза ПО – исследование программного обеспечения, от небольшой утилиты до операционной системы, выполняемое компьютерным специалистом, либо группой экспертов. Цель исследования – определение фактических функций, параметров программы, ее соответствия отраслевым нормам, требованиям заказчика, наличия слабых мест, уязвимостей, которые могут быть использованы хакерами, привести к потере, краже, повреждению личных данных.
Экспертиза ПО может быть не только личной инициативой заказчика, но и требованием судебного органа власти в рамках гражданского, уголовного, административного дел. В отношении каких продуктов она проводится? Каковы основные принципы и методы?
Объекты экспертизы
Возможен анализ следующих программных продуктов:
- Операционные системы и приложения, определяющие их базовую функциональность и работоспособность. Допустимы проверки как платных ОС, например, Microsoft Windows, так и бесплатных, Linux-подобных;
- Утилитарные приложения со специфичными задачами, например, ориентированные на архивирование файлов, оптимизацию файловой структуры дисковых накопителей;
- Приложения для программистов и разработчиков, позволяющие с нуля создавать новый софт;
- Профессиональные приложения, ориентированные на создание, изменение текстовых файлов, видео, музыки;
- Игровые, мультимедийные и другие программы.
Необходимость экспертизы ПО
Анализ программного обеспечения требуется в следующих ситуациях:
- Несоответствие результата, характеристик готового ПО параметрам, прописанным в техническом задании. В таком случае инициаторами экспертизы становятся заказчики, недовольные качеством оказанной услуги. Они могут полагать, что быстродействие, уровень защиты, степень совместимости разработки не отвечают обозначенным требованиям;
- Плохая работа ПО. Выражается она в общей нестабильности, регулярных произвольных перезагрузках, недоступности основных и второстепенных функций;
- Срыв сроков сдачи разработки. В случае нарушения заранее оговоренных сроков сдачи продукта, приведшего к финансовым, репутационным потерям, эксперты помогут определить, по чьей вине случилась задержка, каковы ее причины, какой окажется степень ответственности;
- Подтверждение, опровержение авторских прав. Исходные и другие коды программы, как правило, нельзя использовать без согласия их создателя. В случае конфликта, эксперты должны изучить коды, определить, кто является автором.
Задачи экспертизы
Исследование программного продукта – комплексный процесс, подразумевающий оценку всех его характеристик. Каждую из задач, выполняемых экспертами, следует разобрать подробно.
#1 — проверка соответствия ТЗ
Эксперту нужно изучить требования, зафиксированные в исходном техническом задании, понять, соответствует ли им программа. Внимание уделяется всем показателям, оформлению, пользовательскому интерфейсу, функциональности. Даже небольшое расхождение – повод для штрафа разработчика, выдвижения ему требований немедленного устранения проблем.
#2 — исследование программной архитектуры и исходного кода
Исходный код – основа приложения, так что ему нужно уделить максимум внимания. Оценке подлежат несколько параметров:
- Общее качество. Отсутствие повторов, лаконичность кода, его соответствие нормам, правилам программирования;
- Безопасность, отсутствие уязвимостей, которыми пользуются хакеры для похищения личных данных, осуществления мошеннических действий;
- Соответствие актуальным принципам, в первую очередь – возможности упрощенной модернизации за счет добавления новых модулей, расширяющих исходные функциональные возможности;
- Стабильность, отсутствие багов, приводящих к программным сбоям, вылетам, ошибкам.
#3 — проверка функциональности
Специалисты должны убедиться, что фактический функционал приложения соответствует проектному. Тест направлен на установление следующего:
- Наличие всех функций, предусмотренных техническим заданием;
- Точность реализации функций, в первую очередь – математических;
- Стабильность, понятность, отзывчивость пользовательского интерфейса.
#4 — проверка быстродействия
Хорошее приложение – это оптимизированное приложение, эффективно взаимодействующее с аппаратной частью компьютера, его процессором, оперативной памятью, жестким диском. Эксперт определяет следующее:
- Общее быстродействие, время отклика на пользовательские действия, скорость выполнения расчетов, реализации базовых и вспомогательных функций;
- Способность приложения сохранять стабильность при максимальных нагрузках, одновременном взаимодействии с множеством пользователей;
- Эффективность взаимодействия с аппаратными компонентами, способность задействовать все ядра ЦПУ и ГПУ.
#5 — проверка безопасности
Безопасность – значимое качество любой утилиты, критически важное – если она используется для взаимодействия с конфиденциальной, коммерческой, личной информацией. Приложение может считаться безопасным при выполнении следующих условий:
- Строгое разграничение прав доступа, защита от несанкционированного входа;
- Поддержка алгоритмов шифрования информации, делающая ее перехват бессмысленным;
- Способность сопротивляться сетевым атакам, вирусам.
#6 — поиск ошибок
Эксперт должен определить не просто ошибку, но и причину, приведшую к ее появлению, например:
- Непрофессионализм разработчиков, изначально низкое качество кода, игнорирование положений технического задания;
- Игнорирование эксплуатационных инструкций пользователем;
- Внешние факторы, к примеру, некорректные настройки сети, использование слабой аппаратной части.
#7 — подсчет ущерба
Специалист может определить убытки, с которыми пришлось столкнуться заказчику из-за низкого качества ПО, понять, какая сумма потребуется для их устранения, совершенствования приложения, приведения его адаптация к ТЗ.
Как проводится экспертиза программного обеспечения?
Инициаторы экспертизы программного обеспечения – заинтересованные лица, потерпевшие, пострадавшие, истцы, ответчики, прокурорские ведомства, судебные органы власти. Если речь идет именно о судебной экспертизе, то задача судьи – подготовить список вопросов, на которые должен ответить специалист для открытия истинных обстоятельств дела. Для анализа эксперту нужно предоставить физический носитель с исследуемой программой, либо удаленный доступ, предварительно разместив ее в облачном хранилище.
Во время работы специалист пользуется различными аналитическими инструментами и приемами, клонированием, обратным проектированием, преобразованием. Итог экспертизы – письменное заключение с результатами, заверенное подписями и печатями. Документ должен состоять из нескольких частей:
- Вводная. Фиксирует сведения об эксперте, организации, которую он представляет, судебное постановление, согласно которому проводится исследование;
- Основная. Здесь закреплены методы анализа, основания, согласно которым специалист предпочел именно их, а не альтернативные решения;
- Резолютивная. В этой части специалист в подробностях отвечает на вопросы суда.
Заключение – это не просто письменный документ. Его нужно сопроводить материалами-доказательствами, которыми могут быть фотографии, технические задания, видеозаписи, демонстрирующие особенности работы исследуемого приложения.
Подведение итогов
Экспертиза, проведенная профессионально, с соблюдением нормативно-правовых актов, законов, отраслевых требований, позволяет судье определить точные обстоятельства дела, вынести корректное постановление, например:
- Признать автора программы виновным в пренебрежении условиями ТЗ и контракта, взыскать с него расходы, понесенные заказчиком;
- Потребовать у исполнителя устранения ошибок, сбоев ПО в определенные сроки;
- Отклонить требования в случае, если экспертиза показала профессиональное выполнение исполнителем взятых обязательств, отсутствие нарушений, соответствие результата техническому заданию.
Экспертиза – решение для постановки точки в судебном разбирательстве, определения виновных и пострадавших. Главное – доверить ее эксперту надлежащей квалификации, лицензированной компании, зарегистрированной, имеющей в распоряжении необходимое техническое оснащение.