标签: reliability

高可靠性/可用性/安全性的编码 - 我读什么标准?

我听说汽车行业有一种名为MISRA C的东西.

其他高可靠性/可用性/安全性行业的相关标准是什么,例如

  • 空间
  • 飞机
  • 银行/金融
  • 汽车
  • 国防/军事
  • ???

-亚当

security coding-style reliability

12
推荐指数
1
解决办法
1116
查看次数

计划任务或服务的容错和可靠性的最佳实践

我一直在处理许多作为Windows服务或计划任务运行的应用程序.

现在,我想确保这些应用程序具有容错性和可靠性.例如; 我有一个每小时运行一次的服务.如果服务在其运行或运行时崩溃,则id就像应用程序在同一时间段内再次运行(这涉及到包括数据处理事务在内的几件事),以避免数据丢失.而且,id就像报告错误的程序一样.我的目标是避免数据丢失,并且不会因为运行程序而落后.

我已经构建了一个用户可以导入到项目中的类库.库应该保存程序运行实例的信息,即.程序读写运行间隔,运行状态等信息.该数据存储在数据库中.

我很好奇,如果有一些最佳实践可以使计划任务/ Windows服务具有容错性和可靠性.

编辑:我在谈论在不同服务器上的独立任务或服务.我的目标是确保服务继续运行,报告任何故障并从中恢复.

.net c# fault-tolerance reliability

12
推荐指数
1
解决办法
2290
查看次数

S3高可用性+备份可靠性

我对此做了一些研究,但未能找到任何实质性的答案,所以转向StackOverflow.

亚马逊S3在高可用性和可靠性方面的可靠性如何?我意识到它有SLA,但是如果AWS中的可用区(AZ)或整个区域出现故障怎么办?

我检查了亚马逊关于如何设置S3的文档.当您尝试创建存储桶时,它会说:"创建存储桶时,您可以选择一个区域来优化延迟,最小化成本或满足法规要求."

亚马逊也表示这一点(来源):"存储在任何给定的Amazon S3存储桶中的数据将在一个地理区域内的多个数据中心内复制."

因此,看起来S3数据分布在多个AZ中,但在一个区域内.

如果一个地区倒塌(以前发生过这种情况)怎么办?S3不可用吗?如果是这样,当AWS区域出现故障时,S3不是可靠的恢复备份机制,是吗?

backup high-availability reliability amazon-s3

12
推荐指数
1
解决办法
8052
查看次数

什么是允许在嵌入式系统中进行安全软件升级的技术

升级嵌入式设备的软件通常有可能"堵塞"设备,例如,如果在将软件写入FLASH的过程中电源应该发生故障.两个问题:

  1. 实施升级机制的最佳实践是什么,以最大限度地降低设备被"砖砌"的可能性?
  2. 使升级过程成为故障安全的最佳实践有哪些,以便在将软件安装到FLASH时发生电源故障等事件可以从中恢复?

embedded reliability

11
推荐指数
1
解决办法
3211
查看次数

基于Qt的UI是否足够可靠,可用于医疗设备?

我在一家小公司工作,开发具有丰富UI的复杂医疗设备.我们目前处于设计的早期阶段.该应用程序针对Windows(仅限桌面),最好只能用C++编写.

经过一些研究,我们倾向于选择Qt来开发UI.它似乎满足了我们所有的需求,即可以开发具有现代外观和高响应性的UI,开发速度相当快(熟悉后),内存使用在某种程度上是合理的,免费用于商业用途(对我们来说是奖金).

我的问题是:它对于医疗设备是否足够可靠?我们绝对不能接受考试中的任何崩溃.我知道首先它当然取决于我们编写的代码的质量,但我仍然想知道是否有人遇到任何特别难以解决的与崩溃相关的神秘问题.特别是当使用作为脚本语言的QML时,它自然会导致难以预测和解释的错误.

在生产中遇到这样一个问题的成本对我们来说非常高,所以在我们选择任何特定的包之前,我们非常需要做出正确的决定.如果您知道在我们的特定环境中可能出现的任何其他与Qt相关的问题(我承认无法进行非常广泛的包测试),我也非常感谢您提及它.

c++ windows user-interface qt reliability

11
推荐指数
1
解决办法
2435
查看次数

还有人试过亚麻吗?

我不是在谈论健康爱好者吃的东西,而是基于Xapian的开源搜索/索引软件.

我的公司目前正在雇用某人来实施它,他们希望我在我正在进行的项目中使用它的功能,但是我几乎没有听说过它,并且我很谨慎地设置一个链接到我通常尝试过的经过测试的可靠代码库.

亚麻实现中是否存在可能导致构建的其他区域出现问题的问题?例如,难以与已经使用的标准数据库解决方案同步,或者它发回的数据是否以不可靠或臃肿的格式出现(XML表示臃肿的例子[在本例中为XML粉丝])

干杯,艾德

c# reliability

10
推荐指数
1
解决办法
993
查看次数

.NET流功能 - CanXXX测试安全吗?

.NET中使用了一种相当常见的模式来测试类的功能.这里我将使用Stream类作为示例,但该问题适用于使用此模式的所有类.

该模式是提供一个名为CanXXX的布尔属性,以指示该类上的功能XXX可用.例如,Stream类具有CanRead,CanWrite和CanSeek属性,以指示可以调用Read,Write和Seek方法.如果属性值为false,则调用相应的方法将导致抛出NotSupportedException.

从流类的MSDN文档:

根据底层数据源或存储库,流可能仅支持其中一些功能.应用程序可以使用CanRead,CanWrite和CanSeek属性查询流的功能.

和CanRead属性的文档:

在派生类中重写时,获取一个值,指示当前流是否支持读取.

如果从Stream派生的类不支持读取,则对Read,ReadByte和BeginRead方法的调用会抛出NotSupportedException.

我看到很多代码都是按照以下方式编写的:

if (stream.CanRead)
{
    stream.Read(…)
}
Run Code Online (Sandbox Code Playgroud)

请注意,没有同步代码,例如,以任何方式锁定流对象 - 其他线程可能正在访问它或它引用的对象.也没有捕获NotSupportedException的代码.

MSDN文档未声明属性值不能随时间更改.实际上,当流关闭时,CanSeek属性会更改为false,从而演示这些属性的动态特性.因此,没有合同保证在上面的代码片段中调用Read()不会抛出NotSupportedException.

我希望有很多代码可以解决这个潜在的问题.我想知道那些发现这个问题的人是如何解决它的.这里适合哪些设计模式?

我也很感激评论这种模式的有效性(CanXXX,XXX()对).对我来说,至少在Stream类的情况下,这代表了一个试图做太多的类/接口,应该分成更基本的部分.缺乏紧密的,有文件记录的合同使测试变得不可能,实施更加困难!

.net design-patterns stream reliability

10
推荐指数
1
解决办法
1093
查看次数

CA2000在C#中将对象引用传递给基础构造函数

当我通过Visual Studio的代码分析实用程序运行一些代码时,我收到一个警告,我不确定如何解决.也许这里的某个人遇到了类似的问题,解决了这个问题,并愿意分享他们的见解.

我正在编写DataGridView控件中使用的自定义绘制单元格.代码类似于:

public class DataGridViewMyCustomColumn : DataGridViewColumn
{
    public DataGridViewMyCustomColumn() : base(new DataGridViewMyCustomCell())
    {
    }
Run Code Online (Sandbox Code Playgroud)

它会生成以下警告:

CA2000:Microsoft.Reliability:在方法'DataGridViewMyCustomColumn.DataGridViewMyCustomColumn()'中,在对所有引用超出范围之前,对对象'new DataGridViewMyCustomCell()'调用System.IDisposable.Dispose.

我知道它警告我DataGridViewMyCustomCell(或它继承自的类)实现了IDisposable接口,并且应该调用Dispose()方法来清理DataGridViewMyCustomCell声明的任何资源.

我在互联网上看到的示例建议使用块来限制对象的生命周期并让系统自动处理它,但是当移动到构造函数的主体中时无法识别base,因此我无法编写使用阻止它...我不确定我还想要做什么,因为不会指示运行时释放仍然可以在以后在基类中使用的对象?

我的问题是,代码是否正常?或者,如何重构以解决警告?除非确实合适,否则我不想压制警告.

c# constructor code-analysis reliability ca2000

10
推荐指数
1
解决办法
2160
查看次数

Qemu 裸机仿真 - 如何查看 UART 输出?

问题:

如何从使用 Qemu 运行的裸机程序获取 UART 输出?

背景

这是我一直在使用的命令行调用:

qemu-system-arm -M xilinx-zynq-a9 -cpu cortex-a9 -nographic -kernel $BUILD_DIR/mm.elf -m 512M -s -S
Run Code Online (Sandbox Code Playgroud)
  • 使用机器xilinx-zynq-a9
  • 处理器cortex-a9
  • 由于这是裸机,因此可执行文件是一个自包含的 ELF 文件
  • -m 512M表示平台有 512 MiB RAM
  • -s是一个快捷方式-gdb tcp::1234
  • -S意味着启动时冻结CPU

我使用的ELF文件(mm.elf)执行一个简单的矩阵乘法运算,然后打印它是成功还是失败,以及运行了多长时间。ELF 是使用 Xilinx ARM 工具链编译的。我用它来进行软件故障注入。目前我使用 GDB 来询问应该打印的变量的值。然而,由于在故障注入的情况下打印可能会出现很多问题,因此最好看看通过 UART 实际发送的内容。

相关回答:

将 QEMU 窗口输出重定向到运行 qemu 的终端

这有一些我尝试过的建议,但它不适用,因为问题是关于在主机终端窗口中获​​取 Linux 启动消息。

如何在没有操作系统的情况下运行程序?

这是一个不太相关的问题,因为它仍然假设用户拥有某种引导加载程序。虽然从技术上讲必须有一个引导加载程序才能运行应用程序,但 Xilinx 在boot.S等文件中提供了此系统代码,然后将其编译到 ELF 文件中,作为之前运行的代码main

我尝试过的事情:

我尝试将这些添加到当前 Qemu 命令的末尾。结果遵循尝试的参数。

  • -serial mon:stdio
    • 没有什么
  • -serial null …

arm qemu reliability bare-metal uart

10
推荐指数
1
解决办法
1万
查看次数

安全地现场更新嵌入式Linux的推荐技术

基于嵌入式Linux的设备通常需要一种机制来更新应用程序和系统文件.例如,带有USB端口的(非联网)实验室仪器可以从USB记忆棒获得软件更新.

运行脚本将文件复制到设备内部闪存上的位置是一件简单的事情.但是,存在设备在更新过程中断电并最终失效的危险.

应用程序文件的情况稍微容易一些,因为有空间复制应用程序目录,更新一个副本,并快速交换新旧目录,最大限度地减少故障窗口.

对于内核和系统文件来说,事情更为复杂,因为它们遍布整个文件系统.

我们在文件系统中使用了硬链接和软链接来识别关键文件.我们在文件和存档上使用哈希来验证文件完整性.我们已经考虑在内核中使用紧急ramfs,以便在从更新的文件系统启动失败时提供回退.

你对这个要求有什么方法?

linux embedded maintenance reliability

9
推荐指数
0
解决办法
3454
查看次数