如何通过分析来检验软件的可靠性?
如何分析软件的可靠性?如何检查任何应用程序或产品的可靠性?
How can we analyze the software reliability? How to check the reliabilty of any application or product?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
首先尝试定义“软件可靠性”以及量化它的方法。
如果您完成此任务,您将可能能够“检查”此特征。
First try to define "software reliability" and the way to quantify it.
If you accomplish this task, you will probably be able to "check" this characteristic.
检查可靠性的最有效方法是运行软件并收集其实际可靠性的统计数据。无论是在硬件还是软件层面,都有太多的变量在起作用,无法在执行之前实际分析可靠性,但像 NASA 这样拥有大量资源的组织可能除外。
The most effective way to check reliability is going to be to run your software and gather statistics on its actual reliability. There are too many variables in play, both at the hardware and software levels, to realistically analyze reliability prior to execution, with the possible exception of groups with massive resources like NASA.
有多种方法可以确定一个软件是否满足规范,但大多数真正有效的方法都是通过构造来实现的,即通过限制软件的编写方式,以便可以轻松地证明它是正确的。查看 VDM、Z 和 B 工具包,了解执行此类操作的方案。请注意,如果您不在安全关键的系统环境中,这些编程方法往往成本高昂。
证明规范本身的正确性确实很重要!
There are various methods for determining whether a piece of software meets a specification, but most of the really productive ones do this by construction, i.e., by constraining the way in which the software is written so that it can be easily shown to be correct. Check out VDM, Z and the B toolkit for schemes for doing this sort of thing. Note that these tend to be expensive ways to program if you're not in a safety-critical systems environment.
Proving the correctness of the specification itself is really non-trivial!
可靠性是指正确服务的连续性。
评估软件可靠性的最佳方法是动态分析,换句话说:测试。
为了减少测试时间,您可能需要应用与操作配置文件不同的输入配置文件。
应用各种输入分布,测量软件无故障运行的时间。然后找出您的输入分布与操作配置文件的差距,并得出关于软件在操作配置文件下运行多长时间的结论。
这涉及建模技术,例如马尔可夫链或随机 Petri 网。
为了进一步挖掘,有用的关键字是:故障预测和统计测试。
Reliability is about continuity of correct service.
The best approach to assess reliability of a software is by dynamic analysis, in other words: testing.
In order to reduce your testing time you may want to apply input profiles different from operational one.
Apply various input distributions, measure how much time your software runs without failure. Then find out how far your input distributions are from operational profile and draw your conclusion about how much time the software would have run with operational profile.
This involves modeling techniques such as Markov chains or stochastic Petri nets.
For further digging, useful keywords are: fault forecasting and statistical testing.