ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВСТРОЕННЫХ СИСТЕМ. Общие требования к разработке и документированию — страница 8 из 22

В процессе кодирования ПО на основании архитектуры ПО и требований нижнего уровня создают исходный код.

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

7.3.1 Цели процесса кодирования ПО

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

7.3.2 Состав работ, выполняемых в процессе кодирования ПО

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

— исходный код должен реализовать требования нижнего уровня и соответствовать архитектуре ПО;

— исходный код должен соответствовать стандартам кодирования ПО;

— исходный код должен быть трассируемым к описанию проекта;

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

7.4 Процесс интеграции

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

7.4.1 Цели процесса интеграции

Цели процесса интеграции состоят в получении интегрированной системы.

7.4.2 Состав работ, выполняемых в процессе интеграции

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

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

— исполняемый объектный код должен быть генерирован на основе исходного кода и информации о редактировании связей и загрузке;

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

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

7.4.3 Дополнительные задачи интеграции

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

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

— должны быть использованы методы работы с отключенным кодом в соответствии с планами ПО;

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

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

7.5 Трассируемость

Требования трассируем ости включают в себя обеспечение соответствия:

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

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

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

8 Процесс верификации ПО

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

Таблицы А.З — А.7 содержат резюме целей и результатов верификации в зависимости от уровня ПО.

Примечание — Чем ниже уровень ПО, тем меньше внимания уделяют:

— верификации требований нижнего уровня;

— верификации архитектуры ПО;

— полноте покрытия тестами;

— контролю процедур верификации;

— независимости работ процесса верификации ПО;

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

— тестированию отказоустойчивости;

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

8.1 Цели верификации ПО

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

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

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

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

— исполняемый объектный код удовлетворяет требованиям к ПО;

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

8.2 Состав работ, выполняемых в процессе верификации ПО

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

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

Выходные результаты верификации ПО должны быть включены в документы «Процедуры верификации ПО» (12.21), «Результаты верификации ПО» (12.23), «Описание квалификационного тестирования ПО» (12.22), «Отчет о квалификационном тестировании ПО» (12.24).

8.3 Просмотры и анализы ПО

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

8.3.1 Просмотры и анализы требований верхнего уровня

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

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

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

в) совместимость с объектным компьютером: гарантировать, что не существует никаких противоречий между требованиями верхнего уровня и возможностями аппаратных/программных средств объектного вычислителя, особенно такими, как время реакции системы и аппаратура ввода/вывода;

г) верифицируемость: гарантировать, что каждое требование верхнего уровня может быть верифицировано;

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

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

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

8.3.2 Просмотры и анализы архитектуры ПО

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

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

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

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

г) верифицируемость: гарантировать, что архитектура ПО может быть верифицирована, например не существует неограниченных рекурсивных алгоритмов;

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

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

8.3.3 Просмотры и анализы требований нижнего уровня

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

а) согласованность с требованиями верхнего уровня: гарантировать, что требования нижнего уровня к ПО удовлетворяют требованиям верхнего уровня к ПО, что формируемые требования правильно определены и обоснована их необходимость;

б) точность и непротиворечивость: гарантировать, что каждое требование нижнего уровня является точным, однозначным и достаточно детализированным и что требования нижнего уровня не противоречат друг другу;

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

г) верифицируемость: гарантировать, что каждое требование нижнего уровня может быть верифицировано;

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

е) трассируемость: гарантировать, что требования верхнего уровня и производные требования были реализованы в требованиях нижнего уровня;

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

8.3.4 Просмотры и анализы исходного кода

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

а) согласованность с требованиями нижнего уровня: гарантировать, что исходный код является корректным, полным и соответствует требованиям нижнего уровня, а также то, что исходный код не содержит неописанных функций;

б) согласованность с архитектурой ПО: гарантировать, что исходный код соответствует потоку данных и потоку управления, которые определены архитектурой ПО;

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

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

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

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

8.3.5 Просмотры и анализы выходных результатов процесса интеграции

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

— неправильные аппаратные адреса;

— перекрытия памяти;

— отсутствующие компоненты ПО.

8.3.6 Просмотры и анализы тестовых вариантов, процедур и результатов

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

а) тестовые варианты: верификация тестовых вариантов представлена в 8.4.4;

б) тестовые процедуры: проверить, что тестовые варианты правильно представлены в процедурах тестирования и ожидаемых результатах;

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

8.4 Цели и методы тестирования ПО