Лекция 3. Конспект лекций

### Лекция 3. Сертификация программного обеспечения

3.1. Порядок проведения сертификации программного обеспечения
3.2 Перечень информации предоставляемой заявителем для прохождения процедуры сертификации
3.3 Требования к программному обеспечению
3.4 Сертификационные испытания программных средств
3.5 Приемка и эксплуатация программного обеспечения
3.6 Организационные процессы жизненного цикла

### 3.1. Порядок проведения сертификации программного обеспечения

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

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

Порядок проведения сертификации программного обеспечения средств измерений, информационно-измерительных систем и аппаратно-программных комплексов определен такими методиками как МИ 2891-2004 "ГСИ. Общие требования к программному обеспечению средств измерений" и МИ 2955-2005 "Типовая методика аттестации программного обеспечения средств измерений и порядок ее проведения".

Кроме того, в настоящее время в связи с принятием 11 июня 2008 г. новой редакции Закона РФ "Об обеспечении единства измерений", где в статье 9, п. 1 говорится о том, что "в состав обязательных требований к средствам измерений …в необходимых случаях включаются также требования к … программному обеспечению", ФГУП ВНИИМС приступил к разработке национального стандарта ГОСТ Р "ГСИ. Требования к программному обеспечению средств измерений и информационно-измерительных систем".

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

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

Результатом сертификации является возможность приобрести программный продукт в Российской Федерации с соответствующей поддержкой от производителя или его официального представителя.

В результате проведенной сертификации производитель ПО получает:

- Экспертное заключение;
- Свидетельство о сертификации;
- Право использовать логотип «Проверено IT Expert».

Сертификация выгодна и для покупателей соответствующего программного обеспечения. Покупатель получит:

- Предметную оценку функционала программного обеспечения;
- Возможность сравнения продуктов между собой;
- Возможность самостоятельной оценки продуктов по своим критериям.

### 3.2 Перечень информации предоставляемой заявителем для прохождения процедуры сертификации

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

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

### 3.3 Требования к программному обеспечению

Анализ требований к программному обеспечению предполагает определение следующих характеристик для каждого компонента ПО:

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

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

Проектирование архитектуры ПО включает задачи (для каждого компонента ПО):

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

Архитектура компонентов ПО должна соответствовать требованиям, предъявляемым к ним, а также принятым проектным стандартам и методам.

Детальное проектирование ПО включает следующие задачи:

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

Кодирование и тестирование ПО охватывает задачи:

- разработку и документирование каждого компонента ПО и базы данных а также совокупности тестовых процедур и данных для их тестирования;
- тестирование каждого компонента ПО и базы данных на соответствие предъявляемых к ним требованиям. Результаты тестирования компонентов должны быть документированы;
- обновление (при необходимости) пользовательской документации;
- обновление плана интеграции ПО.

### 3.4 Сертификационные испытания программных средств

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

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

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

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

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

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

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

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

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

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

В соответствии с "Положением о сертификации.." по результатам сертификационных испытаний оформляется акт, а разработчику выдается сертификат, заверенный в Гостехкомиссии России и дающий право на использование и распространение этих средств как защищенных.

Разработанные программные средства после их приемки представляются для регистрации в специализированный фонд Государственного фонда алгоритмов и программ.

### 3.5 Приемка и эксплуатация программного обеспечения

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

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

Процесс эксплуатации охватывает действия и задачи оператора-организации, эксплуатирующей систему и включает действия:

Управление конфигурацией позволяет организовать, систематически учитывать и контролировать внесение изменений в ПО на всех стадиях его жизненного цикла. Общие принципы и рекомендации по управлению конфигурацией ПО отражены в проекте стандарта ISO/IEC 12207-2: 1995 “Information TechnologySoftware Life Cycle Processes. Part2. Configuration Management for Software”.

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

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

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

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

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

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

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

Процесс совместной оценки включает действия:

- подготовительную работу;
- оценку управления проектом;
- техническую оценку.

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

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

### 3.6 Организационные процессы жизненного цикла

В организационные процессы жизненного цикла ПО входят:

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

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

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

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

4. Процесс обучения охватывает первоначальное обучение и последующее постоянное повышение квалификации персонала.

Процессы жизненного цикла программного обеспечения, регламентированные стандартом ISO/IEC 12207, могут использоваться различными организациями в конкретных проектах самым различным образом.

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

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

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