
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
可靠性是大多数Java编程开发程序员在开发软件的时候需要满足的一个编程开发需求,而本文我们就通过案例分析来简单了解一下,可靠性软件开发注意事项。
1、避错设计
避错设计体现了以预防为主的思想,是软件可靠性设计的要方法。避错设计涉及到软件研发的各个环节,理论上把软件工程理论全部搬过来也是合理的,这里重点就讲讲“七项避错设计原理”。
原理:越越好,包括结构、关系、算法、语句等,“抽象与逐步求精”和“封装与信息隐藏”是两种简化系统的手段,当然也要注意模块规模适中,对接口复杂度和圈复杂度也要有限制(避免过犹不及,这是一个平衡的问题);
同型原理:保持形式一样,包括需求建模方法统一、设计描述方法统一、编程风格统一等,形成统一的规范和标准;
对称原理:保持形式对称,包括软件的体系结构、逻辑控制、条件判断、状态处理等形式都力求对称,例如有“是”就应该有“非”、有“范围内”就应该有“范围外”、有“正常处理”就应该有“异常处理”,如果不对称,就应该重点检查是否存在遗漏;
层次原理:保持形式上和结构上的层次分明,包括需求功能的分层、程序设计的分层等;
线型原理:程序结构好是线型的(顺序结构),多是矩形的(判断或者循环),避免交叉型的复杂结构,例如函数的逆向调用(你中有我、我中有你),Goto语句,多重嵌套的判断或者循环等;
易证原理:保证程序逻辑清晰并且易于证明,软件的形式化验证是易证原理的一种应用,在航空航天、核工业、铁路等行业的高安全领域有很多应用(如果希望通过数学方法证明程序的正确性,那么前提是通过规范的形式化语言去精确的描述软件的需求规格、逻辑设计、推理验证等等,这需要扎实的数学功底以及分析建模能力,对于我这个仅用过一点儿正则表达式的小白,真是心力皆有不足啊);
安全原理:保证程序必然稳妥,例如不遗漏可能出现的状态、不遗漏应该执行的操作、充分考虑人为失误和通信错误等。
2、容错设计
容错的关键思想是冗余,通过增加多余的资源获得高可靠性。那么可以对哪些资源进行冗余呢?
时间冗余
时间冗余的基本思想是“失败后重做”,包括两种基本形式:
指令复执:正在执行的指令出错后,重复执行该条指令;
程序卷回:运行过程中出现故障后,返回至起始点或离故障点近的预设恢复点重试。
结构冗余
结构冗余是基于软件相异性设计的原理,即基于相同的需求,采用不同的人员、设计方法、开发工具、编程语言、实现算法、测试与审核,开发满足需求的模块或软件。包括两种实现方法:
恢复块(RB)法:模块处理结束时检验运算结果,如发生故障,则通过代替模块再次运算,直至可以正常输出;
N版本程序(NVP)法:多个版本模块/软件同时运行,通过表决判定和输出结果。
信息冗余
信息冗余通过在信息中增加部分信息码以便检测和纠正数据偏差,或将信息分块存放在多个内存单元,或将信息进行备份存储等方式实现冗余。
3、查错设计
查错设计可以使程序在运行中自动查找所存在的错误,是容错设计和改错设计的前提。
被动式错误检测
被动式错误检测是在程序的若干部位设置检测点,等待错误征兆的出现。包括以下两个原则:
相互怀疑原则:设计任何单元/模块时,假设其它单元/模块会出现错误;
立即检测原则:错误征兆出现后尽快查明,限制错误损害并降低排错难度。
主动式错误检测
主动式错误检测是主动检查程序状态,例如软件BIT。
4、改错设计
改错设计可以使程序自我改正错误、减少错误危害程度。
改错和容错的前提都是查错,区别在于容错设计通过冗余的方法使系统具备了自我恢复的能力,而改错设计是要求系统去自动改正错误?(为什么不让能改bug的机器人一开始就把代码也写了,那世界就都清静了)这显然是很困难的。
因此改错设计的主要思路是减少错误的危害程度、限制错误的影响范围。具体的方式涉及到各种隔离,包括用户隔离、业务隔离、数据隔离、硬件隔离等等,目的都是隔离错误、防止蔓延。这些隔离措施与软件的安全保密性措施是很类似的,咱们放到以后的专题再介绍。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。