В последнее время,  всё чаще обсуждается международная (национальная) сертификация программного обеспечения (ПО) от разных источников как на официальных совещаниях, так и на уровне определенных экспертных групп министерств и ведомств Кыргызстана. В связи с чем хотелось бы поделиться информацией по вопросу сертификации ПО. Приведенная информация доступна на официальном сайте Международного конcорциума по сертификации.

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

Примерно так выглядит процесс сертификации:

pr sert

 

Этап заявки на сертификацию заключается в выборе заявителем органа по сертификации, способного провести оценку соответствия интересующего его объекта. Это определяется областью аккредитации органа по сертификации. Если данную работу могут провести несколько органов по сертификации, то заявитель может обратиться в любой из них. Заявка направляется по установленной в системе сертификации форме. Орган по сертификации рассматривает ее и сообщает заявителю решениеРешение по заявке также имеет определенную форму. В ней указываются все основные условия сертификации, в том числе схема сертификации, наименование испытательной лаборатории для проведения испытаний (если они предусмотрены схемой сертификации) или их перечень для выбора заявителем, номенклатура нормативных документов, на соответствие которым будет проведена сертификация.
В заявке должны быть указаны определенные стандарты качества, на соответствие которым проходит процесс сертификации. 

Типы соответствия могут быть различными:
• Количественное
• Качественное
• Соответствие стандартам
• Эксплуатационная надежность
• другое

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

Сертификация ПО

Сертификация ПО является частным случаем сертификации. Особенностью выступают объекты, которые могут быть выбраны для сертификации и стандарты, которым они должны соответствовать.

В качестве объектов могут выступать:

• Документация
• Код
• Физические компоненты системы (то есть аппаратная часть комплексного решения)
• Процесс обработки данных (процессинг)

При рассмотрении вопроса сертификации ПО также необходимо ознакомиться с двумя терминами: верификация и валидация.

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

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

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

Надежность ПО также зависит от надежности системного ПО лежащего в основе (ОС, драйверов, компилятора и т.д.) Большинство процессов верификации ПО делают упор на оценке верхнего слоя программы, а не на банальном поиске ошибок внутри кода, потому что программы изначально рассчитаны на определённые сценарии использования и исправление всех ошибок на уровне кода довольно сложная задача. Такой метод верификации ПО называется метод оценки модели.

Положительное заключение о сертификации обычно формулируется следующим образом:

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


Резюме:

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


Заключение:

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