软件问题:风险与责任解析
1. 软件相关定义
软件在开发阶段,即便广泛使用数学技术进行开发测试,也无法确保代码无错。将代码验证重点放在底层算法和基本计算上,同样不能消除所有错误,因为并非所有错误都存在于这些方面,所以仅靠测试无法根除所有漏洞。
1.1 验证与确认(V&V)
验证与确认过程结合了静态形式化数学技术(如正确性证明)和动态技术(如测试),以确保代码与初始基本规范保持一致。该过程从软件规范出发,设计测试来发现待审查软件的缺陷。测试用例随机选取,但随着编程向机器代码层面深入,软件漏洞愈发难以检测,再多的 V&V 也难以防止漏洞漏网。
1.2 可靠性
与硬件产品不同,软件可靠性无法通过磨损或生产数量衡量。软件可能因意外输入序列而无法输出预期结果。软件可靠性可定义为软件不遇到导致故障的输入序列的概率。一个可靠的软件应能在众多不可预测的输入序列下持续运行。代码中的错误数量也可作为可靠性的衡量指标,但这并非可靠的衡量标准,因为错误少的程序不一定比错误多的程序更可靠。由于没有系统能保证无错,软件系统也不例外,因此存在并将继续存在系统达不到可靠性标准的情况。
例如,丹佛国际机场行李系统,该市委托一家自动化行李公司设计和建造该系统,但交付后所有初始测试均失败,最终不得不聘请另一家公司,建议采用一个较小、较便宜但能运行的手动系统与自动化系统并行。机场开通时,因该系统延误导致超预算 20 亿美元。
1.3 安全性
随着计算机技术的进步,我们对其依赖增加,安全问题也日益凸显。软件是计算机系统的重要组成部分,系统安全更多依赖软件而非硬件。相比硬件,通过软件“漏洞”进行的
超级会员免费看
订阅专栏 解锁全文
966

被折叠的 条评论
为什么被折叠?



