Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

Билет 10

Теоретический вопрос

Почему в C/C++ строка #include <openssl/ssl.h> не является доказательством зависимости от OpenSSL? Объясните разрыв между тем, что видит препроцессор (заголовок в include-путях), и тем, что реально попадает в продукт (слинкованная библиотека с конкретной версией). Перечислите случаи, когда #include есть, а зависимости нет (header-only, неиспользуемый код, заглушка) и когда зависимость есть, а явного #include не видно (транзитивная линковка, вшитый статический код). Почему полнота состава достигается на этапе сборки, а не чтением исходников?

Практический вопрос

Мини-кейс Аудитор видит в исходниках 12 разных #include сторонних библиотек и предлагает занести все 12 в SBOM. Объясните, почему это породит и ложные записи, и пропуски. Опишите, какой артефакт сборки (build evidence — лог компиляции/линковки, перехват вызовов компилятора) превращает «видимый заголовок» в доказанный факт зависимости с версией.

# заголовок виден — но это ещё не факт линковки:
grep -r "#include <openssl" src/
# факт даёт только сборка с перехватом вызовов компилятора/линкера

Что должен показать ответ

Опорные материалы