Therac-25!
Therac-25项目的开发人员对X射线治疗机中UI和与界面相关的问题之间的时间安排很有信心。
他们不应该这样。
您可以通过以下网址了解有关这一著名的生死软件灾难的更多信息:
http://www.youtube.com/watch?v=izGSOsAGIVQ
要么
http://en.wikipedia.org/wiki/塞拉克25
您的应用程序对故障的敏感性可能不如医疗设备。一种有用的方法是将风险暴露评估为所有可能生产的产品在产品生命周期中的发生可能性和发生成本的乘积。
如果您选择构建代码以使代码持久(听起来像您已经做到了),则应考虑摩尔定律,因为随着系统内部或外部计算机的速度越来越快,摩尔定律可以轻松地每隔几年舍弃几个零。如果寄出数千份,则放弃更多的零。如果用户连续数年每天(或每月)执行此操作,则需要多花一些时间。如果在有Google光纤的地方使用它,那该怎么办?如果UI垃圾收集了GUI中途操作,这会影响比赛吗?您是在GUI后面使用开放源代码还是Windows库?那里的更新会影响时间吗?
信号量,锁,互斥量,屏障同步是在线程之间同步活动的方法之一。如果您不使用它们,则可能由另一个维护您的程序的人,然后很快就会对线程之间的关系进行假设,并且有关竞争条件的计算可能会失效。
我建议您显式同步,因为虽然您可能从未看到过同步问题,但客户可能会同步。此外,即使您的种族状况从未发生,如果您或您的组织被要求为您的代码辩护,也会发生什么(因为丰田几年前与普锐斯(Prius)息息相关)。您的方法学越全面,您的票价就会越高。说“我们谨防这种不太可能的情况……”比说“我们知道我们的代码将失败,但我们写下该等式表明它在我们的一生中不会发生。”可能更好。 ”
听起来概率计算来自其他人。他们是否了解您的代码,并且您足够了解他们以至于不会犯任何错误吗?如果我为某事计算出99.99997%的可靠性,我可能还会回想我的大学统计课,并记住我并不总是获得100%的收益,而根据我自己的个人可靠性估计却退缩了相当多的百分比。