软件可靠性综述_第1页
软件可靠性综述_第2页
软件可靠性综述_第3页
软件可靠性综述_第4页
软件可靠性综述_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件可靠性综述作者:徐振洋谢萍武孟来源:计算机与网络2021年第18期针对大型复杂软件可靠性低、重大任务运行过程中出现软件故障的问题,从软件的全生命 周期角度研究软件可靠性设计方法,从软件架构设计、软件冗余设计、软件健壮性设计、软件 测试设计、软件可读性设计、软件重用设计、数据存储设计、软件错误恢复设计等方面研究软 件可靠性设计方法,涵盖了软件需求、概要设计、详细设计、测试设计等不同阶段,最后以实 例进行验证。软件是各个系统的必要组成部分,也是各系统的核心功能所在,随着SDN/NFV的出现, 软件的地位和作用越来越突出。同时软件直接面向各级各类运维人员,是网络整体运行状态的 呈现者,为大型任务

2、网可靠高效运行保驾护航,为重大任务的顺利完成提供技术支撑,因此研 制高可靠性高质量的软件势在必行,研究软件可靠性设计是非常有意义的课题。本文从软件生 命周期的角度,研究软件可靠性的各个环节,从软件需求、软件体系架构、软件界面、软件测 试等方面进行研究。软件可靠性设计从软件体系架构设计、软件冗余设计、软件健壮性设计、软件测试设计、软件可读性设计 和软件重用设计方面进行详细研究。软件架构设计软件体系架构设计主要从软件体系设计、模块化设计、服务化设计等方面进行设计。体系化设计:软件系统越来越复杂,可靠性高的软件要求采用层次结构设计,层与层之 间单向依赖,减少复杂性,提高可靠性,是否进行层次结构设计是

3、关注的重点;模块化设计:是否采用层次结构与模块化设计相结合的方法,是否进行模块化设计,模 块化设计是否高内聚、低耦合,模块之间接口是否清晰明确简洁,上述都是软件设计的关注重 点;为降低软件的复杂度,采用层级结构和模块化设计相结合的思想,将软件分层,层与层之 间只存在单向德依赖关系,在此基础上分解为若干个功能独立的模块。各模块相互交互,实现 软件的相关功能。但是,随着软件模块的数量增加,软件模块间的信息交互势必大幅增多,增 加了软件的复杂度。因此,软件模块的划分需要考虑软件模块的功能单一性(即软件模块尽量 小)和软件模块间信息交互少的原则。服务化设计:将独立功能的软件模块进行了服务化封装,服务之

4、间的通信是否简单明 确,服务是否进行了注册、发布、共享,该项目的服务是全新设计还是基于已有项目的设计; 是否最大限度重用了服务库中的服务,重用服务占整个软件项目服务设计的百分比是多少;因 为成熟的入库服务,均已经经过测试部署使用,其可靠性比较高,直接应用于新项目中既可以 缩短开发日寺间,又可以提高可靠性。软件冗余设计主备热备设计:对于可靠性要求极高的软件,如航天系统相关软件,一定要采用主备热 备、双机热备模式,确保系统故障时的零切换和数据的实时存储备份。重要模块备份设计:针对系统功能强大复杂,软件模块众多的系统的,要重点设计关键 硬件、关键模块备份模式,冷热备份根据实际需求选择。信息冗余设计:

5、针对大型复杂系统,数据库是重要的信息存储方式,数据库的选型,选 择达梦、金仓国产化数据库,数据高效存储和读取。软件健壮性设计软件健壮性设计包括界面设计、数据设计和软件操作防护设计:在界面设计中:对输入数据的有效性及合理性进行设计,数据输入范围设计。数据健壮性设计:对输入数据的格式和存储方式进行设计。软件误删除防护设计:针对软件的删除设计做防范操作,首先进行删除提示和确认操作 设计,同时针对删除的数据做短时间备份存储,以便出现误操作删除时进行撤销和数据恢复操 作。软件测试设计在软件测试设计中,主要关注如下方法:需求阶段:是否有详尽的需求说明和设计文档(重点关注是否与用户进行透彻沟通交 流),需求

6、不透彻的话,可能会导致整个系统重新设计翻盘代价甚大。概要和详细阶段:进行体系架构设计,软件模块划分设计,软件流程设计和函数设计, 能指导软件编码;测试阶段:设计测试用例、测试策略,黑盒测试和白盒测试,进行软件正常运行,超负 荷运行检测并采取手段。软件可读性设计软件编程风格是否统一、合理,对增加软件代码可读性、提高软件可靠性、便于软件的维 护等方面有重要影响。要求每一个软件模块标准功能、作用、包含函数。要求软件代码注释率 不低于15 %。针对不同的编程语言分别制定了相应的编程规范,建立了专门编程规范执行制度来约束编 码人员按编程规范编写代码。统一、合理的软件编程风格在一定程度上减少了软件的问题,

7、方 便软件问题的排查和后期维护。软件重用设计软件重用的所有资料都是经过严格筛选,按照规定要求录入的,被证明是合格、准确和可 靠的。数据存储设计随着业务的多样化、网络的复杂化,网络运行过程中所产生的数据越来越多,数据种类越 来越多,除了结构化数据之外,非结构化数据也越来越多,传统的oracle数据库存在存取速度 慢、存取效率低的弊端越来越难以满足要求。由于待存储流量信息巨大,因此采用分级分布式 的云计算数据中心结构,每级数据中心的核心存储平台采用HADOOP平台的HDFS分布式存 储集群,具有分布式存取、容灾性强、安全性高等特点。由于网络带宽资源和存储资源有限, 从系统可靠性的角度出发构建分布式

8、NameNode集群,根据集群的负载和网络状况进行数据的 安全存储和安全访问,从而保证云存储数据中心的安全和负载平衡。软件错误恢复设计系统软件在运行过程中由于软件运行环境故障、人员操作异常、软件自身错误等原因造成 软件出错故障。如何在软件发生错误后尽快的恢复过来、继续正常运行是软件可靠性设计考虑 的重点。日志机制:系统软件设计采用日志管理设计,提供安全日志、操作日志、登录日志等各 种日志的实时记录和存储备份功能,在软件发生故障后,可以查看日志记录查找故障原因,快 速恢复软件。状态恢复机制:系统总部级网管中心软件采用主备双机热备备份,在主用发生故障后, 备用能迅速启用,状态转化为主用。数据恢复机

9、制:系统软件采取自动保存、数据备份等手段,确保软件发生故障后,网络 管理数据的可恢复性,提高软件的可靠性。实例验证以某平台网管软件为例,进行可靠性设计实例验证。该软件实现对多个厂商多个型号设备的统一管理,具有软件规模大、前后台交互信息量 大、频繁存取数据、适合各级各类操作人员、可视化易操作的特点。首先进行软件需求设计,详细分解细化需求,提取出软件功能(五大功能)、性能(7 项性能指标)、接 口(SNMPv2/ SNMPv3/TELNET/SSH/SYSLOG/NETFLOW)、运行环境(中标麒麟服务器和客户端操作系统、达梦数据库)要求。进行软件架构设计,分析得知,需要基于B/S软件架构设计,检

10、索软件重用库,获取 B/S软件架构相关指导手册,软件源代码,同时基于重用库中的软件界面集成框架进行设计, 大量节省时间,同时软件架构的可靠性和可用性都是经过验证的。进行软件模块化、服务化设计,根据需求中规定的五大功能,详细分解为高内聚、松耦 合的软件模块,每个软件模块尽量完成独立的软件功能,同时基于标准化接口进行服务化封 装,服务化模块之间基于标准的消息进行信息传输。进行软件界面设计,基于软件重用库中的软件界面集成框架进行设计,为了增加软件界 面的可视化,减少复杂性和操作盲目性,在每一个界面元中都丢界面元素的名称、含义数据输 入范围)进行tip框提示,同时采用能用下拉列表框尽量用下拉列表框的设

11、计思路,减少用户 输入。软件测试设计,进行模块设计、合格性测试设计、集成测试设计,同时从软件安装、卸 载、运行负荷、安全性、可靠性等方面也设计相应的测试用例,针对每一个测试用例,都从测 试用例设计和编写要从正常值、边界值、异常值等多个维度进行设计。测试前要确定测试标 准、规范,设计测试用例要尽可能遍历所有的测试项目,测试要尽可能详尽,测试要强化输 入,正常值、边界值、异常值都要测试,尽可能多的发现软件错误剔除软件错误。容错设计:针对软件删除,进行删除确认提示,同时提供一个月内的数据删除备份手 段;在软件服务器方面,采取主备备份机制,主备软件同时热备运行,任何一方出现问题都可 以即日寺接管。通过上述的软件可靠性设计,相比于未采取本文论述的系列可靠性手段,大大提高了该软 件的可靠性,缩短了研制周期。软件在各系统中的占比越来越大,地位越来越重要,核心功能越来越突出。因此做好软件 首

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论