Введение
В области разработки программного обеспечения, обеспечение безопасности программных систем направлено на оптимизацию безопасности системы на этапах проектирования, разработки, эксплуатации и обслуживания программных систем, а также их интеграции с аппаратно-техническими системами, критически важными для безопасности, в рабочей среде.
Обзор
Безопасность программных систем является частью системной безопасности и системной инженерии и является синонимом аспектов программной инженерии функциональной безопасности. В рамках общей программы обеспечения безопасности и разработки программного обеспечения недопустимо, чтобы программное обеспечение функционировало изолированно от общей работы. Как простые, так и высокоинтегрированные системы демонстрируют значительный рост использования компьютеров и программного обеспечения для мониторинга и/или управления подсистемами или функциями, критически важными для безопасности. Ошибка в спецификации программного обеспечения, дефект проектирования или отсутствие общих требований к безопасности могут привести к сбою системы или ошибочному решению, принимаемому человеком. Для достижения приемлемого уровня безопасности программного обеспечения, используемого в критически важных приложениях, инженерная безопасность программных систем должна быть приоритетной задачей на ранних этапах определения требований и концептуального проектирования системы. Программное обеспечение, критически важное для безопасности, должно затем постоянно подвергаться управленческому контролю и инженерному анализу на протяжении всего жизненного цикла разработки и эксплуатации системы. Программное обеспечение с функциями, критически важными для безопасности, должно быть тщательно верифицировано с помощью объективного анализа. Функциональный анализ опасностей (ФАО) часто проводится на ранней стадии параллельно или как часть функционального анализа системной инженерии для определения функций, критически важных для безопасности (ФКБ), систем для дальнейшего анализа и верификации. Безопасность программных систем напрямую связана с наиболее важными аспектами проектирования и атрибутами безопасности в программном обеспечении и функциональности системы, в то время как атрибуты качества программного обеспечения принципиально отличаются и требуют стандартного контроля и строгости разработки. Уровни обеспечения разработки (DAL) и соответствующий уровень строгости (LOR) представляют собой градированный подход к обеспечению качества программного обеспечения и гарантии проектирования программного обеспечения как предварительного условия для применения подходящего процесса разработки программного обеспечения для обеспечения уверенности. Концепции и стандарты LOR, такие как DO 178C, НЕ являются заменой безопасности программного обеспечения. Безопасность программного обеспечения в соответствии с IEEE STD 1228 и MIL STD 882E направлена на обеспечение выполнения и верификацию четких требований безопасности с использованием функциональных подходов с точки зрения анализа требований безопасности и тестирования. Анализ опасностей для безопасности программного обеспечения, необходимый для более сложных систем, где программное обеспечение управляет критическими функциями, обычно проводится в следующих последовательных категориях и поэтапно в рамках процесса обеспечения безопасности или системной безопасности: анализ требований к безопасности программного обеспечения; анализ проектирования безопасности программного обеспечения (на верхнем, детальном и уровне кода); анализ тестирования безопасности программного обеспечения и анализ изменений безопасности программного обеспечения. После завершения анализа "функциональной" безопасности программного обеспечения команда разработчиков программного обеспечения будет знать, где следует уделять особое внимание безопасности и на какие функциональные потоки, пути, области и границы следует сосредоточиться при проектировании атрибутов безопасности программного обеспечения для обеспечения правильной функциональности и обнаружения неисправностей, сбоев, ошибок, а также для реализации множества стратегий смягчения последствий для контроля опасностей. Безопасность программного обеспечения и различные технологии защиты программного обеспечения аналогичны атрибутам безопасности программного обеспечения в проектировании для смягчения различных типов угроз, уязвимостей и рисков. При проектировании стремятся к детерминированному программному обеспечению путем верификации корректного и предсказуемого поведения на системном уровне.
objective analysis. Functional Hazard Analyses (FHA) are often conducted early on in parallel with or as part of system engineering Functional Analyses to determine the safety critical functions (SCF) of the systems for further analyses and verification. Software system safety is directly related to the more critical design aspects and safety attributes in software and system functionality, whereas software quality attributes are inherently different and require standard scrutiny and development rigor. Development Assurance levels (DAL) and associated Level of Rigor (LOR) is a graded approach to software quality and software design assurance as a pre requisite that a suitable software process is followed for confidence. LOR concepts and standards such as DO 178C are NOT a substitute for software safety. Software safety per IEEE STD 1228 and MIL STD 882E focuses on ensuring explicit safety requirements are met and verified using functional approaches from a safety requirements analysis and test perspective. Software safety hazard analysis required for more complex systems where software is controlling critical functions generally are in the following sequential categories and are conducted in phases as part of the system safety or safety engineering process: software safety requirements analysis; software safety design analyses (top level, detailed design and code level); software safety test analysis, and software safety change analysis. Once these "functional" software safety analyses are completed the software engineering team will know where to place safety emphasis and what functional threads, functional paths, domains and boundaries to focus on when designing in software safety attributes to ensure correct functionality and to detect malfunctions, failures, faults and to implement a host of mitigation strategies to control hazards. Software security and various software protection technologies are similar to software safety attributes in the design to mitigate various types of threats vulnerability and risks. Deterministic software is sought in the design by verifying correct and predictable behavior at the system level.