问题标签 [safety-critical]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
standards - 安全关键软件开发的差异
在使用某些质量标准(例如 IEC 61508 或 DO 178-C)开发安全关键型软件时,开发人员必须关心很多事情。我知道每个开发步骤中的验证都非常耗时且昂贵。此外,我知道使用了一些简化的编程语言。
但我对“正常”软件开发过程的具体区别感兴趣。我的意思是在标准 V-Model 中,验证和测试也应该是每个开发步骤的一部分。我必须考虑什么才能找到要求?在软件设计中我必须考虑什么?
dynamic-allocation - Alternatives to dynamic allocations in safety critical projects (C)
Safety critical projects do not recommend any dynamic allocations or freeing allocated memory. Only during elaboration/initialization phase of the program execution, it is allowed.
I know most of you will argue to implement SW in terms where it should do all static allocations only or do some justification in the code that dynamic allocations will not harm the overall program,etc but still, Is there any alternative to this problem? Is there any way or any example to kind of allocate some (heap) memory during program initialization/elaboration and allocate/deallocate memory from over there? Or any solutions/alternatives to this problem if we really want dynamic allocations in the (safety critical) project?
safety-critical - SIL# 规范中 R 和 HR 之间的差异
SIL 规范定义了必须应用于代码的不同规则(即:圈复杂度等)
这些规则由“NA - 不适用”、“R - 推荐”和“HR - 高度推荐”定义。
我知道这种欣赏取决于定义软件的人。
我在遵循“HR”规则中的“R”规则时受到多大的限制?第一个是推荐的,第二个是强制性的吗?
c - 编译器输出代码
现实世界中是否存在 C 编译器生成的目标代码与所描述的源代码功能几乎相同的情况,但最终证明优化变成(或可能变成)灾难性的?
machine-learning - 是否可以为安全关键系统验证基于 AI 的解决方案?
首先,我读了这个。但我想扩大。总结一下:
在设计安全关键系统时,设计人员必须评估一些指标,以获得系统将按预期工作的信心。它是一种数学证明,具有足够低的复杂性以供人类使用。它与问责制、可靠性、可审计性等有关...
另一方面,在这一点上,AI 是一个看起来工作得很好的黑匣子,但大多数时候我们没有证明它的正确性(主要是因为盒子里发生的事情太复杂了分析),它更像是一种统计确定性: 我们训练了系统并且系统在所有测试中都表现良好。
那么,一些问题?
Q1。这两个模糊的想法在今天有意义吗?
Q2。是否可以将 AI 用于安全关键系统并确保其性能?我们能确定人工智能的确定性行为吗?有什么参考吗?
Q3。例如,我想已经有一些公司在汽车领域销售基于人工智能的安全关键系统。他们如何设法为这样一个限制性市场证明他们的产品?
编辑
关于 Q1:感谢 Peter,我意识到,例如,对于汽车示例,没有关于完全确定性的要求。ASIL D 级别是汽车系统最严格的级别,只需要故障概率的上限。其他 ISO26262 标准和级别也是如此。我会细化这个问题:
Q1。系统设计、任何级别/子组件、任何领域/领域中是否有任何安全标准需要完全确定?
关于 Q2:尽管不需要完全确定,但问题仍然存在。
关于 Q3:现在我了解他们如何能够获得认证。无论如何,任何参考都将非常受欢迎。
c - 为什么不将任务上下文置于中断中
这是故事。
它是一个安全关键项目,需要以 20KHz 运行时间关键功能例程。现在的设计是将功能程序放在一个20KHz的FIQ中断中,同时安全中断也放在FIQ中。那是系统中仅有的两个 FIQ。(当然MCU中启用了几个IRQ)
我知道将任务上下文放在中断 ISR 中是不好的,这是设置标记并在 OS 任务中运行的正确方法。但似乎当前的设计不会伤害任何人。
该例程大约需要 10us(主时钟 300MHz),所以基本上它不会阻塞 IRQ/FIQ 到不可接受的时间。与使用 OS 任务运行功能例程相比,它甚至可以节省额外的上下文切换时间。对我来说,目前感觉这个设计违背了大学教科书上写的每一条原则,却找不到拒绝的理由。
我如何说服自己将功能例程从 ISR 转移到 OS?我是不是该?
validation - How to certify a compiler for functional safety?
We are ISO-13485 and do development for medical devices. We currently use the IAR certified compiler, but we are thinking to switch to gcc because it is cross platform and the build can be automated with plain Makefile which is not possible with IAR.
I am trying to understand what should we do to get arm-none-eabi-gcc
certified for medical development.
Neither the ISO-13485, ISO-26262, ISO-62304 or ISO-61508 give me a hint of what I should do to validate my compiler.
Am I stuck to IAR or do I have alternatives?
I guess this question can be extended to space/automotive too.
opengl-es - VX 与 Opengl SC 一起工作的模拟器
是否有任何可用的 VXworks 模拟器,我可以在其中构建我的 Opengl ES 或 SC 应用程序并运行它?我是 opengl 平台的新手,我的项目涉及安全关键系统的显示开发。我想在 VXworks 上模拟一个基本的 opengl sc 代码。我的目标嵌入式平台尚未确定。任何指导或建议都会有所帮助。
c++ - 在安全关键系统中测试 C++17
我目前正在考虑安全关键软件(DO-178C DAL-D)中的 C++ 和编码标准的定义。我在看 MISRA C++,它又有 10 年的历史了,它错过了所有 C++11…17 的特性。
虽然在安全方面保持保守通常不是一个坏主意,但新的语言功能可能对安全有益。
在审查期间,您必须争论您做出某些决定的原因。人们总是会争辩说,新的语言特性使代码更清晰……因此关于误解的错误更少;特别是如果编译器能够测试和验证您的假设。
但是很难找到比“让事情更清楚”更突出安全方面的语言特征。现代 C++ 的哪些方面真正有助于安全?
我正在建立一个小型练习项目来测试这些想法,目前完全专注于“让编译器检查你的假设”。比如我们刚开始使用[[nodiscard]]
,第一个小时就发现了至少两个这样的bug。但是现代 c++ 的哪些方面是在设计和使用时应考虑到安全性的?
exception-handling - 安全关键嵌入式系统中的 Ada 异常
我开始学习 Ada 是因为它在安全关键的嵌入式设备中的潜在用途。到目前为止,我真的很喜欢它。然而,在我对嵌入式编程的研究中,我遇到了一个热门话题,即是否在嵌入式系统中使用异常处理。我想我理解为什么有些人似乎避免它:
- 根据其实现,它可以引入运行时开销或更大的代码大小(在“实现”下提到)
- 执行异常所需的时间可能是不确定的(我看到的几个来源之一)
现在我的问题是,Ada 语言或 GNAT 编译器是否解决了这些问题?我对安全关键代码的理解是,不确定的代码大小和执行时间通常是不可接受的。
尽职调查:我在确定 Ada 异常的确切程度时遇到了一些麻烦,但我的理解是它们的原始实现需要更多的运行时开销以换取减少代码大小的影响(以上第一个链接明确提到了 Ada)。除了上面的第一个链接之外,我还查看了提到代码确定性的配置文件,例如 Ravenscar 配置文件和这篇论文,但似乎没有提到异常处理确定性。公平地说,我可能找错地方了,因为这个话题似乎很深。