# [Functional safety for automotive software development](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/1e_implement_functional_safety/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/)
- [Why functional safety matters in software systems](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/1a_functional_safety/)
- [Understand functional safety risks](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/1b_purpose/)
- [Apply ISO 26262 and ASIL levels](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/1c_iso26262/)
- [Implement safety-critical isolation using safety island architecture](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/1d_safety_island_arch/)
- [Functional safety for automotive software development](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/1e_implement_functional_safety/)
- [How to use Data Distribution Service (DDS)](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/2_data_distribution_service/)
- [Deploy OpenAD Kit across multiple cloud instances](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/3_container_spliting/)
- [Run OpenAD Kit across distributed ROS 2 instances](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/4_multiinstance_executing/)
- [Next Steps](https://learn.arm.com/learning-paths/automotive/openadkit2_safetyisolation/_next-steps/)

## The software development lifecycle
Functional safety affects both hardware and software development, particularly in areas such as requirement changes, version control, and test validation. For example, in ASIL-D level applications, every code change must go through a full impact analysis and regression testing to ensure it doesn’t introduce new risks.

## Software development practices for functional safety
These practices ensure that software meets industry standards and can withstand system-level failures:
- **Defining requirements clearly**
  - Specifying safety-critical requirements and conduct formal risk assessments.
- **Following safety-oriented programming standards**
  - Using MISRA C or CERT C/C++ and static analysis tools to detect unsafe behavior.
- **Implementing fault-handling mechanisms**
  - Using redundancy, health monitoring, and fail-safe logic to manage faults gracefully.
- **Testing and verifying rigorously**
  - Using Hardware-in-the-Loop (HIL) testing to validate behavior under realistic conditions.
- **Tracking changes with version control and audits**
  - Using tools like Git, JIRA, or Polarion to manage revisions and maintain traceability for audits.
- **Building an ASIL-partitioned development environment and adopting SOAFEE technologies** to help improve software maintainability and ensure consistent compliance with functional safety standards.

**Note**  
This Learning Path builds on [Deploy Open AD Kit containerized autonomous driving simulation on Arm Neoverse](https://learn.arm.com/learning-paths/automotive/openadkit1_container/). It introduces functional safety practices from the earliest stages of software development.
