软件可靠性综述

来源 :计算机与网络 | 被引量 : 0次 | 上传用户:luoshibo
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  针对大型复杂软件可靠性低、重大任务运行过程中出现软件故障的问题,从软件的全生命周期角度研究软件可靠性设计方法,从软件架构设计、软件冗余设计、软件健壮性设计、软件测试设计、软件可读性设计、软件重用设计、数据存储设计、软件错误恢复设计等方面研究软件可靠性设计方法,涵盖了软件需求、概要设计、详细设计、测试设计等不同阶段,最后以实例进行验证。
  软件是各个系统的必要组成部分,也是各系统的核心功能所在,随着SDN/NFV的出现,软件的地位和作用越来越突出。同时软件直接面向各级各类运维人员,是网络整体运行状态的呈现者,为大型任务网可靠高效运行保驾护航,为重大任务的顺利完成提供技术支撑,因此研制高可靠性高质量的软件势在必行,研究软件可靠性设计是非常有意义的课题。本文从软件生命周期的角度,研究软件可靠性的各个环节,从软件需求、软件体系架构、软件界面、软件测试等方面进行研究。
  软件可靠性设计
  从软件体系架构设计、软件冗余设计、软件健壮性设计、软件测试设计、软件可读性设计和软件重用设计方面进行详细研究。
  软件架构设计
  软件体系架构设计主要从软件体系设计、模块化设计、服务化设计等方面进行设计。
  ①体系化设计:软件系统越来越复杂,可靠性高的软件要求采用层次结构设计,层与层之间单向依赖,减少复杂性,提高可靠性,是否进行层次结构设计是关注的重点;
  ②模块化设计:是否采用层次结构与模块化设计相结合的方法,是否进行模块化设计,模块化设计是否高内聚、低耦合,模块之间接口是否清晰明确简洁,上述都是软件设计的关注重点;为降低软件的复杂度,采用层级结构和模块化设计相结合的思想,将软件分层,层与层之间只存在单向德依赖关系,在此基础上分解为若干个功能独立的模块。各模块相互交互,实现软件的相关功能。但是,随着软件模块的数量增加,软件模块间的信息交互势必大幅增多,增加了软件的复杂度。因此,软件模块的划分需要考虑软件模块的功能单一性(即软件模块尽量小)和软件模块间信息交互少的原则。
  ③服务化设计:将独立功能的软件模块进行了服务化封装,服务之间的通信是否简单明确,服务是否进行了注册、发布、共享,该项目的服务是全新设计还是基于已有项目的设计;是否最大限度重用了服务库中的服务,重用服务占整个软件项目服务设计的百分比是多少;因为成熟的入库服务,均已经经过测试部署使用,其可靠性比较高,直接应用于新项目中既可以缩短开发时间,又可以提高可靠性。
  软件冗余设计
  ①主备热备设计:对于可靠性要求极高的软件,如航天系统相关软件,一定要采用主备热备、双机热备模式,确保系统故障时的零切换和数据的实时存储备份。
  ②重要模块备份设计:针对系统功能强大复杂,软件模块众多的系统的,要重点设计关键硬件、关键模块备份模式,冷热备份根据实际需求选择。
  ③信息冗余设计:针对大型复杂系统,数据库是重要的信息存储方式,数据库的选型,选择达梦、金仓国产化数据库,数据高效存储和读取。
  软件健壮性设计
  软件健壮性设计包括界面设计、数据设计和软件操作防护设计:
  ①在界面设计中:对输入数据的有效性及合理性进行设计,数据输入范围设计。
  ②数据健壮性设计:对输入数据的格式和存储方式进行设计。
  ③软件误删除防护设计:针对软件的删除设计做防范操作,首先进行删除提示和确认操作设计,同时针对删除的数据做短时间备份存储,以便出现误操作删除时进行撤销和数据恢复操作。
  软件测试设计
  在软件测试设计中,主要关注如下方法:
  ①需求阶段:是否有详尽的需求说明和设计文档(重点关注是否与用户进行透彻沟通交流),需求不透彻的话,可能会导致整个系统重新设计翻盘代价甚大。
  ②概要和详细阶段:进行体系架构设计,软件模块划分设计,软件流程设计和函数设计,能指导软件编码;



  ③测试阶段:设计测试用例、测试策略,黑盒测试和白盒测试,进行软件正常运行,超负荷运行检测并采取手段。
  软件可读性设计
  軟件编程风格是否统一、合理,对增加软件代码可读性、提高软件可靠性、便于软件的维护等方面有重要影响。要求每一个软件模块标准功能、作用、包含函数。要求软件代码注释率不低于15 %。
  针对不同的编程语言分别制定了相应的编程规范,建立了专门编程规范执行制度来约束编码人员按编程规范编写代码。统一、合理的软件编程风格在一定程度上减少了软件的问题,方便软件问题的排查和后期维护。
  软件重用设计
  软件重用的所有资料都是经过严格筛选,按照规定要求录入的,被证明是合格、准确和可靠的。
  数据存储设计
  随着业务的多样化、网络的复杂化,网络运行过程中所产生的数据越来越多,数据种类越来越多,除了结构化数据之外,非结构化数据也越来越多,传统的oracle数据库存在存取速度慢、存取效率低的弊端越来越难以满足要求。由于待存储流量信息巨大,因此采用分级分布式的云计算数据中心结构,每级数据中心的核心存储平台采用HADOOP平台的HDFS分布式存储集群,具有分布式存取、容灾性强、安全性高等特点。由于网络带宽资源和存储资源有限,从系统可靠性的角度出发构建分布式NameNode集群,根据集群的负载和网络状况进行数据的安全存储和安全访问,从而保证云存储数据中心的安全和负载平衡。
  软件错误恢复设计
  系统软件在运行过程中由于软件运行环境故障、人员操作异常、软件自身错误等原因造成软件出错故障。如何在软件发生错误后尽快的恢复过来、继续正常运行是软件可靠性设计考虑的重点。   ①日志机制:系统软件设计采用日志管理设计,提供安全日志、操作日志、登录日志等各种日志的实时记录和存储备份功能,在软件发生故障后,可以查看日志记录查找故障原因,快速恢复软件。
  ②状态恢复机制:系统总部级网管中心软件采用主备双机热备备份,在主用发生故障后,备用能迅速启用,状态转化为主用。
  ③数据恢复机制:系统软件采取自动保存、数据备份等手段,确保软件发生故障后,网络管理数据的可恢复性,提高软件的可靠性。
  实例验证
  以某平台网管软件为例,进行可靠性设计实例验证。
  该软件实现对多个厂商多个型号设备的统一管理,具有软件规模大、前后台交互信息量大、频繁存取数据、适合各级各类操作人员、可视化易操作的特点。
  ①首先进行软件需求设计,详细分解细化需求,提取出软件功能(五大功能)、性能(7项性能指标)、接口(SNMPv2/ SNMPv3/TELNET/SSH/SYSLOG/NETFLOW)、运行环境(中标麒麟服务器和客户端操作系统、达梦数据库)要求。
  ②进行软件架构设计,分析得知,需要基于B/S软件架构设计,检索软件重用库,获取B/S软件架构相关指导手册,软件源代码,同时基于重用库中的软件界面集成框架进行设计,大量节省时间,同时软件架构的可靠性和可用性都是经过验证的。
  ③进行软件模块化、服务化设计,根据需求中规定的五大功能,详细分解为高内聚、松耦合的软件模块,每个软件模块尽量完成独立的软件功能,同时基于标准化接口进行服务化封装,服务化模块之间基于标准的消息进行信息传输。
  ④进行软件界面设计,基于软件重用库中的软件界面集成框架进行设计,为了增加软件界面的可视化,减少复杂性和操作盲目性,在每一个界面元中都丢界面元素的名称、含义数据输入范围)进行tip框提示,同时采用能用下拉列表框尽量用下拉列表框的设计思路,减少用户输入。
  ⑤软件测试设计,进行模块设计、合格性测试设计、集成测试设计,同时从软件安装、卸载、运行负荷、安全性、可靠性等方面也设计相应的测试用例,针对每一个测试用例,都从测试用例设计和编写要从正常值、边界值、异常值等多个维度进行设计。测试前要确定测试标准、规范,设计测试用例要尽可能遍历所有的测试项目,测试要尽可能详尽,测试要强化输入,正常值、边界值、异常值都要测试,尽可能多的发现软件错误剔除软件错误。
  ⑥容错设计:針对软件删除,进行删除确认提示,同时提供一个月内的数据删除备份手段;在软件服务器方面,采取主备备份机制,主备软件同时热备运行,任何一方出现问题都可以即时接管。
  通过上述的软件可靠性设计,相比于未采取本文论述的系列可靠性手段,大大提高了该软件的可靠性,缩短了研制周期。
  软件在各系统中的占比越来越大,地位越来越重要,核心功能越来越突出。因此做好软件首先要对软件各个环节的可靠性进行设计。只有在软件生命周期的每一个环节和节点充分重视和严格执行软件可靠性设计的规定要求,充分收集并利用各测试阶段的可靠性数据,才能设计出高可靠性的软件。
  随着软件定义网络,软件定义一切的理念和技术深入发展,软件越来越成为整个系统的灵魂所在,因此其可靠与否直接影响整个系统,所以有必要深入研究软件定义网络后的新型软件可靠性。
其他文献
目前基于LeNet5网络结构的车牌图形识别算法存在识别误差大、效率低等缺点。本文对原算法进行了改进,具体做法是转化车牌图像大小、删除LeNet5网络中的C5层、修改输出层的神经元数量等。经验证,算法在识别率和时间效率上均得到有效提高。LeNet-5卷积神经网络原理LeNet-5卷积神经网络算法广泛应用于阿拉伯数字识别、图像识别领域。LeNet5网络结构是7层构成,分别为:输入层、卷积层、池化层和输
期刊
电脑存了太多文件,硬盘空间严重不足?那就是时候给硬盘来个大扫除了。但是怎样才能快速的找到占用磁盘空间的大文件呢?  WizTree  WizTree是一个高效的磁盘空间分析软件,可以帮助用户扫描硬盘,并用方块图方式显示硬盘分区中存储的各个文件的大小。  WizTree的使用很简单,用户只需要选择需要分析的硬盘分区,稍等几秒,WizTree就会完成分析,分析完后,WizTree將显示该硬盘分区的文件
期刊
很多喜爱游戏的大学生对于游戏本的需求也比较简单,就是打游戏爽即可,接下来就给大家推荐一款配置硬核的游戏本———惠普的VICTUS光影精靈7。  以前我们总说火车跑得快全凭车头带,如今动车出现才知道火车跑得快,每节车厢都需要提供动力才可以。  放到游戏本上也是同样的道理,在以往我们都认为游戏流畅是显卡的事情,其他配置只要不太拖后腿即可,但如今的各类3D游戏大作可没有这么好对付,就比如现在的《GTA5
期刊
计算机文字录入作为在日常生活中越来越常见的一种技能,可以有效地提高工作效率。但是人们在使用计算机文字录入时还需要经过科学的训练,这样才可以真正提升录入的效率。  文字录入是学习计算机应用的基础,科学的文字录入方法可以在进行信息处理的同时,提升学习和工作的效率。因此如何训练才能使计算机文字录入更有效、更有针对性地调动学习者的兴趣显得尤为重要。  训练中注重时间的安排  计算机文字录入技能的学习,在需
期刊
由聚获网络自研自发的美少女机甲射击手游《终末阵线:伊诺贝塔》,即将在2021年10月12日,开启一次限号2万人的删档不计费测试———变革测试。游戏内,研发团队“爆肝”4个月,力争让产品的美术、战斗表现力上趋于完美;游戏外,官方携手6名顶流coser,深度诠释这些美少女战姬绝美瞬间!变革者是时候前往官网预约游戏,与美少女战姬们一起守护这世界最后的阵线了!  时间轮转,骑士重聚,终于又快到了能够与变革
期刊
在人机交互的界面软件中经常要使用各类图形,如点、直线、曲线、多边形和圆,软件设计人员通过编写程序将图形按需要的方式呈现给使用者。所有图形最终是以像素为基本单位显示到屏幕,当一条直线,不在水平或垂直方向时,放大它的显示结果,可以观察到直线呈现锯齿状,效果看起来不自然。本文结合实际的软件开发过程,探讨使用Opengl反走样优化图形的显示方法。  Opengl(Open Graphics Library
期刊
智能云时代,对中职学校会计信息化人才能力有了新的需求,因此中职会计专业的人才培养模式也要创新。本文对智能云时代企业会计人才能力需求进行了分析,认为智能云时代会计信息化人才需要具有专业核心技能和职业核心能力的双核能力。针对企业在智能云时代对会计信息化人才能力的新需求,以及中职学校目前会计信息化人才培养现状,提出了新的人才培养模式:理实虚一体化教学、企业运营流程认知教学、用信息化智能学习平台进行教学以
期刊
Windows11开始菜单最让人不习惯的地方,就是取消了Jumplist和左侧程序栏。之前动动滚轮就能完成的操作,现在总要多点一次按钮。此外诸如拖拽应用固定开始菜单、右击程序打开常用文档这类操作,现在也统统失效了。不得不说,对于一个使用Windows多年的老用户来说,这一次的调整真的大了些。  好在这样的煎熬并没有持续很久。全球著名“开始菜单美化公司”Stardock再一次出手了。和以前一样,此次
期刊
安卓是Google发起的,但现在安卓的一些行径,连Google也看不下去了。近日,Google发起了一项针对安卓的调查———Google认为很多OEM安卓机厂商,推行的安卓系统存在严重的杀后台问题,App难以在后台存活。  Google认为,现今很多OEM的安卓系统都违背了Google的政策,令App无法在后台持续运行。虽然大多数安卓应用并不需要在后台保留进程,但也有部分类别的确有此类需求,例如《
期刊
企业专用蜂窝网络(5G局域网)的出现和创新,为企业提供了一个重大机遇,可以提供全新水平的确定性无线服务。这些私有移动网络通常由企业IT部门或内部网络人员部署、运营和管理。  尽管如此,IT人员在引入5G局域网时可能面临的最大挑战之一是,如何处理大量不同的客户端设备访问和验证这种新型企业移动网络。对于企业IT人员来说,蜂窝网络本身就比传统的无线局域网(WLAN)更安全,而且通过正确的方法,用户和IT
期刊