Разработчик должен принимать участие в анализе требований к системе. Если систему разрабатывают для нескольких различных построений, ее требования не могут быть полностью определены до завершения конечного построения. В этом случае разработчик должен идентифицировать подмножество требований системы, которые будут определены в каждом построении, и подмножество, которое будет реализовано в каждом из построений. Анализ требований к системе для данного построения следует интерпретировать так, чтобы определять требования к системе, идентифицированные для данного построения.
5.3.1 Анализ информации о потребностях пользователя
Разработчик должен принимать участие в анализе обеспечиваемой заказчиком информации, необходимой для достижения понимания потребностей пользователя. Эта информация может быть представлена в форме предложений, обзоров, сообщений о дефектах/изменениях, обратной связи к прототипам, интервью о потребностях пользователя или любой другой форме.
5.3.2 Эксплуатационная концепция
Разработчик должен принимать участие в определении и документировании эксплуатационной концепции для системы. Результат данной работы должен быть представлен в качестве документа «Описание эксплуатационной концепции» (12.32).
5.3.3 Требования к системе
Разработчик должен принимать участие в определении и документировании требований, которым должна удовлетворять система, и методов, которые необходимо использовать в целях гарантирования выполнения каждого требования. Результат данной работы должен быть представлен в качестве документа «Спецификация системы/подсистемы» (12.12). В зависимости от условий контракта требования относительно интерфейсов системы могут быть включены в Спецификацию системы/подсистемы или в Спецификацию требований к интерфейсу (12.14).
Если система состоит из подсистем, то предполагают, что работы, указанные в 5.3.3, будут выполнены итеративно с работами, указанными в 5.4 (проектирование системы) для определения требований к системе, проектирования системы и идентификации ее подсистем, определения требований к этим подсистемам, проектировании подсистем, идентификации их компонентов и т. д.
5.3.4 Модифицируемое пользователем ПО. ПО с возможностью выбора вариантов. Коммерчески доступное ПО.
Если системные требования предусматривают возможность модификации, осуществляемой пользователем, то пользователи могут изменять ПО в заданном диапазоне без рассмотрения, осуществляемого сертифицирующей организацией. В этом случае системные требования должны определить механизмы, которые устраняют влияние на безопасность системы осуществляемой пользователем модификации независимо от того, как она выполнена. ПО, обеспечивающее защиту, должно иметь уровень, такой как у функции, которую оно защищает от ошибок в модифицируемом компоненте. При проведении модификации пользователем последний должен нести ответственность за все аспекты модифицируемого им ПО, например управление конфигурацией, обеспечение качества и верификацию.
Системные требования к ПО с возможностью выбора вариантов должны определить средства для гарантии того, что не может быть сделан несанкционированный выбор.
Коммерчески доступное ПО, включаемое в состав системы, должно удовлетворять требованиям данного документа. Если существуют несоответствия в документах жизненного цикла коммерчески доступного ПО, то информация, представленная в них, должна быть расширена, чтобы удовлетворить требования данного документа.
5.3.5 Системные требования для ПО, загружаемого в полевых условиях
Загружаемое в полевых условиях прикладное ПО — программный продукт или таблицы данных, которые могут быть загружены без демонтажа системы или оборудования. Требования, определяемые безопасностью, связанные с функцией загрузки данных ПО, являются частью системных требований. Если нечеткое представление функции загрузки данных ПО может вызвать отказную ситуацию в системе, то требования, связанные с обеспечением безопасности для функции загрузки ПО, должны быть определены в системных требованиях. Требования обеспечения безопасности системы для ПО, загружаемого в полевых условиях, следующие:
— обнаружение разрушенного или частично загруженного ПО;
— обнаружение загрузки несоответствующей конфигурации ПО;
— совместимость аппаратных и программных средств;
— совместимость компонентов ПО;
— совместимость типа объекта и ПО;
— отображение потери или искажения идентификации конфигурации ПО.
Требования к ПО, загружаемому в полевых условиях:
— если процессом оценки безопасности системы не определено специально, то механизму обнаружения разрушенного или частично загруженного ПО должна быть установлена такая же категория отказной ситуации или уровень ПО, как наиболее серьезной отказной ситуации или наиболее высокому уровню ПО, связанному с функцией, которая использует загрузку ПО;
— если для системы определен режим, заданный по умолчанию, в случае, когда загружено несоответствующее ПО или данные, то для каждого выделенного компонента системы должны быть указаны требования по обеспечению безопасности, определяющие действия в этом режиме;
— механизм загрузки ПО должен включать в себя программные и/или аппаратные средства для обнаружения некорректно загруженного ПО и обеспечивать защиту, определяемую отказной ситуацией;
— если ПО представляет собой часть встроенного бортового механизма отображения, являющегося средством гарантии того, что объект соответствует сертифицированной конфигурации, то такое ПО должно быть либо разработано как ПО с самым высоким уровнем из того, которое должно быть загружено, либо процесс оценки обеспечения безопасности системы должен подтверждать целостность конфигурации ПО.
5.3.6 Анализ системных требований при верификации ПО
Системные требования разрабатывают на основе эксплуатационных требований к системе и требований, связанных с обеспечением безопасности, которые являются выходным результатом процесса оценки безопасности системы.
В системных требованиях для прикладного ПО устанавливают следующие характеристики ПО:
— ПО должно выполнять специфицированные функции, как определено системными требованиями;
— ПО не должно проявлять аномального поведения, не определяемого процессом оценки безопасности системы. Должны быть сформулированы дополнительные системные требования для обработки возможного аномального поведения.
Системные требования должны быть переработаны затем в требования верхнего уровня к ПО, которые проверяются работами процесса верификации ПО.
5.3.7 Анализ ПО при верификации системы
Требования по выполнению верификации системы выходят за область применения настоящего стандарта. Однако процессы жизненного цикла ПО поддерживают процесс верификации системы и взаимодействуют с ним. Детали проектирования ПО, касающиеся функциональных возможностей системы, должны быть доступными при выполнении верификации системы. Верификация системы может обеспечивать значительное покрытие структуры кода. Для достижения критериев тестового покрытия, описанных в Плане верификации ПО, может быть использован анализ покрытия ПО тестами верификации системы.
5.4 Проектирование системы
Разработчик должен принимать участие в проектировании системы. Если систему разрабатывают для нескольких различных построений, то ее проект не может быть полностью определен до завершения всех построений. Разработчик должен идентифицировать части проекта системы, которые будут определены в каждом построении.
5.4.1 Проектные решения системного уровня
Разработчик должен принимать участие в определении и документировании проектных решений системного уровня (таких, как решения, относящиеся к проектированию режимов работы системы, и решения, влияющие на выбор и проектирование компонентов системы).
Результаты должны быть включены в раздел проектных решений системного уровня документа «Описание проекта системы/подсистемы» (12.15). В зависимости от условий контракта часть проекта, имеющая отношение к интерфейсам, может быть включена в Описание проекта системы/подсистемы или в Описание проекта интерфейса (12.17), а часть проекта, имеющая отношение к базам данных, — в Описание проекта системы/подсистемы или в Описание проекта базы данных (12.18).
Примечание — Проектные решения являются прерогативой разработчика, если они формально не преобразованы в требования в процессе выполнения контракта. Разработчик ответствен за выполнение всех требований и демонстрацию этого выполнения посредством квалификационного тестирования (8.5.4). Реализация проектных решений, действующих как «внутренние требования» разработчика, должна быть подтверждена внутренним тестированием разработчика, выполнение которого нет необходимости демонстрировать заказчику.
5.4.2 Проектирование архитектуры системы
Разработчик должен участвовать в определении и документировании проекта архитектуры системы (идентификации компонентов системы, их интерфейсов и концепции их совместного выполнения) и прослеживании соответствия между компонентами системы и системными требованиями. Результат этих работ должен быть включен в документ «Описание проекта системы/подсистемы» (12.15). В зависимости от условий контракта часть проекта, имеющая отношение к интерфейсам, может быть включена в Описание проекта системы/подсистемы или в Описание проекта интерфейса (12.17).
5.5 Стратегии архитектурного проектирования системы
В процессе оценки безопасности системы устанавливают, как архитектурное проектирование системы предотвращает аномальное поведение ПО при появлении отказных ситуаций для системы. Уровень ПО назначают в соответствии с наиболее серьезной категорией возможных отказных ситуаций. Далее описаны некоторые архитектурные стратегии, которые позволяют ограничивать воздействие ошибок, обнаруживать ошибки и обеспечивать приемлемую реакцию системы для устранения их воздействия. Эти архитектурные стратегии не следует рассматривать как предпочтительные или обязательные.
5.5.1 Разбиение
Стратегию разбиения применяют для обеспечения изоляции между функционально независимыми компонентами ПО, чтобы предотвратить и/или изолировать дефекты и потенциально уменьшить трудозатраты процесса верификации ПО. Если с помощью разбиения обеспечивают защиту от ошибок, то уровень ПО для каждого полученного при разбиении компонента следует назначать в соответствии с наиболее серьезной категорией отказной ситуации, связанной с этим компонентом.
5.5.2 Многоверсионное неидентичное ПО
Многоверсионное неидентичное ПО является стратегией проектирования, которая предусматривает создание двух или более компонентов ПО для реализации одной и той же функции способами, исключающими источники общих ошибок в нескольких компонентах. Вместо термина многоверсионное неидентичное ПО могут быть использованы также термины многоверсионное ПО, неидентичное ПО, N-версионное ПО или разнесенная разработка ПО.
Конфигурация аппаратуры, которая обеспечивает выполнение многоверсионного неидентичного ПО, должна быть определена в системных требованиях. Степень неидентичности и, следовательно, степень защиты обычно не измеряют.
5.5.3 Мониторинг безопасности
Мониторинг безопасности применяют как средство защиты от конкретных отказных ситуаций с помощью прямого мониторинга функций, которые могут привести к отказной ситуации. Функции мониторинга могут быть реализованы аппаратными средствами, программными средствами или комбинацией аппаратных и программных средств.
Использование методов мониторинга безопасности может понизить уровень ПО, выполняющего функцию контроля, до уровня, связанного с потерей реализуемой данным ПО функции системы. Существуют три важных параметра мониторинга, которые должны быть определены, чтобы обеспечить снижение уровня:
— уровень ПО: ПО, которое осуществляет мониторинг безопасности, предписывается уровень, связанный с наиболее серьезной категорией отказной ситуации для контролируемой функции;
— покрытие отказов системы: оценка покрытия отказов системы с помощью мониторинга безопасности гарантирует, что проект монитора и его реализация таковы, что отказы, которые предполагается обнаружить, будут обнаружены при всех возможных условиях;
— независимость функции и монитора: монитор и защитный механизм не должны активизироваться теми же самыми отказными ситуациями, которые вызывают опасность.