CN111679972B - 软件系统可靠性预计方法、装置、计算机设备和存储介质 - Google Patents
软件系统可靠性预计方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111679972B CN111679972B CN202010431680.8A CN202010431680A CN111679972B CN 111679972 B CN111679972 B CN 111679972B CN 202010431680 A CN202010431680 A CN 202010431680A CN 111679972 B CN111679972 B CN 111679972B
- Authority
- CN
- China
- Prior art keywords
- software
- reliability
- state
- module
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件系统可靠性预计方法,包括如下具体步骤:对软件进行功能分解,分解成软件模块;由软件模块的固有特性和开发过程特性提取影响软件模块可靠度的因素,并确定各个因素对软件可靠性的影响程度;建立模块可靠度预计模型,完成模块可靠度预计;建立软件可靠性预计模型,利用得到的模块可靠度,预计软件可靠性。一种软件可靠性预计方法、装置、计算机设备和存储介质用于软件可靠性早期预计,在软件开发过程中提高软件本身的可靠性,对于实现资源计划和质量预报有着重要的意义。
Description
技术领域
本发明涉及软件测试技术领域,更具体的说是涉及一种软件系统可靠性预计方法、装置、计算机设备和存储介质。
背景技术
软件可靠性预测有三要素:软件可靠性模型,参数的估计方法(算法) 和数据。自从1972年Jelinski和Moranda提出了“软件可靠性预测模型”以来,经过许多学者的研究,先后提出了几十个模型。软件可靠性预计和评估模型对软件可靠性的估计起到了非常重要的作用,但是这些软件可靠性模型都是在软件开发完成后,利用对软件运行、测试过程中所得到的失效数据进行可靠性预计,它只是对软件的可靠性指标进行了预计,并不能够对软件本身的可靠性提高产生作用。若要提高软件的可靠性,在软件的开发周期的开始,就要求对软件可靠性进行预计并提高软件的可靠性。但目前的软件可靠性模型并不能够在软件的开发早期使用,即不能在软件的开发早期对软件可靠性进行预计,因而需要建立软件早期可靠性预计模型。
软件在开发早期虽然软件产品本身并不存在,但它的功能需求、应用类型和计划开发的环境是已知的,因此可以利用这些已知的信息进行早期可靠性预测。
软件可靠性早期预计还处于初级发展阶段,国外自1986年开始研究,提出了一些模型、算法及研究方法。目前已公开发表的模型有以下几种:由 Gaffney和Davis提出的基于阶段的模型(phase-based model);由Agresti和 Evanco提出的预测Ada程序设计中软件缺陷的模型;美国ROME实验室提出的模型;Maryland大学的Carol Smidts等人提出的一种早期预计的方法。但这些方法中仍然有许多问题尚未解决,主要表现为:首先,没有考虑在软件开发过程中,特别是早期,存在许多模糊的因素;其次,许多方法在应用中难度较大,实现起来非常困难。
发明内容
有鉴于此,本发明提供了一种软件系统可靠性预计方法、装置、计算机设备和存储介质,提高装备软件可靠性,实现资源计划和质量预报有着重要的意义。
为了实现上述目的,本发明提供如下技术方案:
一种软件系统可靠性预计方法,包括如下具体步骤:
对软件进行功能分解,分解成软件模块;
由软件模块的固有特性和开发过程特性提取影响软件模块可靠度的因素,并确定各个因素对软件可靠性的影响程度;
建立模块可靠度预计模型,完成模块可靠度预计;
建立软件可靠性预计模型,利用得到的模块可靠度,预计软件可靠性。
在一个实施例中,对软件进行功能分解:
根据开发需求,确定软件的功能和软件的工作要求;同时识别软件的基本部件。
在一个实施例中,提取影响软件模块可靠性的因素:
软件模块可靠性可由模块的固有特性和开发过程特性得到。
软件模块固有可靠性特性的预计方法是,分析软件错误类型,将软件错误分为逻辑错误、接口错误、输入/输出错误、计算错误,将软件模块的固有特性分为结构特性、功能特征、任务特征、系统与输入特征四大类;
开发过程特性包括软件开发的基本活动、软件开发的支持活动和软件开发管理活动。
在一个实施例中,基于固有特性的模型可靠度计算方法如下:
步骤301、将提取出的影响软件模块可靠度的每一项固有特征进行编号,对四种软件可能出现的错误类型依次编号;
步骤302、在具有第i类固有特征的软件模块中,第j类错误数与错误总数的百分比用c(i,j)表示;其中,j=1,2,3,4,具体地,第1类错误指逻辑错误,第2类错误指接口错误,第3类错误指输入/输出错误,第4类错误指计算错误;
在一个实施例中,基于开发过程特性的模型可靠度计算方法如下:
其中a(i,j)是采用第i项措施后,第j类错误得以避免的概率,N是采用的避错特性总数;
步骤305、计算查错概率,用D(j)表示对第j类错误的查错概率:
其中d(i,j)是采用第i项措施后,第j类错误得以查出的概率,N表示查错措施的总数;
步骤306、计算软件模块可靠度预计值Rc:Rc=Ri+E(1-Ri);
其中,Ri表示软件模块的固有可靠度,由“成功执行与总的执行的比率”确定;
在一个实施例中,利用得到的软件模块可靠度,预计软件可靠性,具体步骤为:
步骤401、按照合适的粒度将整个软件系统划分为若干个模块,建立软件的体系结构模型;将软件划分为若干个模块之后,各个模块之间在软件中形成逻辑连接;
步骤402、将程序控制流图转化为Petri网模型,建立软件体系结构的Petri 网模型;对于软件体系结构中的模块,以Petri网中的库所来表示,模块之间的逻辑连接以Petri网中的变迁来表示,形成软件体系结构与Petri网模型之间的对应关系,并通过令牌在库所中的转移来描述系统的运行;
步骤403、利用Petri网模型完成软件的可靠性预计。
一种软件系统可靠性预计装置,包括:
系统分解模块,用于将软件系统进行分解,分解成软件模块;
影响因素确定模块,用于确定固有特性和开发过程特性中的影响因素;
可靠度计算模块,用于计算固有特性和开发过程特性的可靠度;
可靠预计模块,建立软件可靠性预计模型,预计可靠性。
一种计算机设备,包括存储器和处理器,所述存储器内存储有计算机程序,所述处理器执行所述计算机程序时实现所述方法的步骤:
对软件进行功能分解,分解成软件模块;
由软件模块的固有特性和开发过程特性提取影响软件模块可靠度的因素,并确定各个因素对软件可靠性的影响程度;
建立模块可靠度预计模型,完成模块可靠度预计;
建立软件可靠性预计模型,利用得到的模块可靠度,预计软件可靠性。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述方法的步骤:对软件进行功能分解,分解成软件模块;
由软件模块的固有特性和开发过程特性提取影响软件模块可靠度的因素,并确定各个因素对软件可靠性的影响程度;
建立模块可靠度预计模型,完成模块可靠度预计;
建立软件可靠性预计模型,利用得到的模块可靠度,预计软件可靠性。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种软件可靠性预计方法、装置、计算机设备和存储介质,面向的是软件开发过程中的信息及软件自身固有特征,通过软件开发过程中对软件固有特性及开发情况和相关信息进行收集、记录和分析,在此基础上进行面向任务的功能模块分解研究、建立概率转移矩阵等给出软件可靠性在一定置信度下的预计值;当软件的体系结构十分复杂时,引入分层模型,建立多层级的Petri网模型,来描述复杂软件的体系结构。一种软件可靠性预计方法、装置、计算机设备和存储介质用于软件可靠性早期预计,在软件开发过程中提高软件本身的可靠性,对于实现资源计划和质量预报有着重要的意义。
发明的技术效果在于:
(1)一种软件系统可靠性预计方法,利用Petri网能够很容易地描述软件系统组件间的各种结构关系;
(2)一种软件系统可靠性预计方法,能够用多层级Petri网模型描述复杂软件的体系结构;
(3)一种软件系统可靠性预计方法,能够对组件系统运行状态进行形式化的分析;
(4)一种软件系统可靠性预计方法,能够摆脱对测试数据的依赖;
(5)一种软件系统可靠性预计方法,能够有效提取模块中的信息;
(6)一种软件系统可靠性预计方法,能够有效提取影响软件模块可靠度的固有特性和开发过程特性;
(7)一种软件系统可靠性预计方法,能够在软件生命周期的早期进行,对软件可靠性的保障有很大的帮助。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明的软件系统可靠性预计方法的流程图;
图2为软件分解过程级别示意图;
图3为人工神经网络模型示意图;
图4为典型的Petri网结构图;
图5为多层级Petri网模型顶层模型;
图6为多层级Petri网模底层模型;
图7为某飞控软件纵向姿态调整Petri网结构图;
图8为某飞控系统可达状态图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例来源于某飞控系统中的纵向控制软件。
步骤一、对软件进行功能分解,将软件分解到模块级;
在软件的开发前分析需求,确定软件应具有哪些功能并要考虑如何使这些功能满足软件工作要求;识别构成软件产品的基本部件及其功能要求。
如图2所示,通过软件模块功能分解,识别构成软件产品的基本部件及其功能要求。对飞控系统中的纵向控制软件的软件功能进行分解,得到12个模块:控制增稳自动驾驶转换逻辑、纵向控制增稳初始化、俯仰自动配平、空中纵向控制增稳律计算、起飞/着落纵向控制增稳律计算、空中控制增稳固定数调参、起飞/着落纵向控制增稳控制律调参、纵向自动驾驶初始化、无线电高度低限拉起控制律、后舱飞行员操纵爬高控制状态控制律计算、后舱飞行员操纵俯冲控制状态控制律计算、俯仰姿态改平控制律计算,分别记为 S1-S12。
步骤二、由软件模块的固有特性和开发过程特性提取影响软件模块可靠度的因素。
软件模块固有可靠性特性的预计方法是,分析软件错误类型,将软件错误分为逻辑错误、接口错误、输入/输出错误、计算错误,将模块的固有特性分为结构特性、功能特征、任务特征、系统与输入特征四大类和若干个子类。
对于模块固有特性的分类与选取,模块的固有特性对软件的错误类型分布产生直接的影响,模块的固有特性类型见表1:
表1模块固有特性识别
在考虑其固有特性对模块可靠度的影响时,需要选择该模块是否具有某一项固有特性,如果具备该特性,则考虑该特性对模块可靠度的影响,如果不具备该特性,则不考虑该特性对模块可靠度的影响。
软件开发过程应在软件开发计划中描述,分为软件开发的基本活动、软件开发的支持活动和软件开发管理活动,针对具体的软件,可对这些活动进行裁剪。
GJB 2786A-2009《军用软件开发通用要求》对军用软件开发过程进行了定义,其中包括的活动如表2所示:
表2军用软件开发活动
其中C-N为软件开发的基本活动,O-T为软件开发的支持活动,其他为软件开发管理活动。软件开发过程在软件开发计划中给出。
软件可分解为六个级别:计算机软件配置项目(CSCI)级别、计算机软件部件(CSC)级别、单元(UNIT)级别、模块(MODULE)级别、指令 (INSTRUCTION)级别、操作对象(OPERANDS)级别。在软件开发的需求阶段可分解到CSC级;在初步设计阶段可分解到单元级;在详细设计阶段可分解到模块级。随着开发过程的深入,获得的信息愈多,应用此方法可得到越来越精确的结果。
软件功能分解应是模块的定义清晰,容易实现,模块间的关系流畅,耦合减少。在开发同一软件时,每个人的处理方法是不同的,为了达到最佳的实现,通常应由开发经验丰富的程序员和开发管理人员组成一个小组来实现软件的功能划分。
针对飞控系统中的纵向控制软件的每个模块,在考虑其固有特性对模块可靠度的影响时,需要选择该模块是否具有某一项固有特性,如果具备该特性,则考虑该特性对模块可靠度的影响,如果不具备该特性,则不考虑该特性对模块可靠度的影响。同时,针对前文提取得到的开发特性,首先要分析模块开发过程中,是否具备某一条开发特性,在具备这条开发特性的前提下,给出在软件开发过程中,该条开发特性所达到的水平,即在较差水平、一般水平和较好水平三种水平中选择其一,则不同的开发特性的不同水平,产生对模块可靠度的影响。
步骤三、建立模块可靠度预计模型,完成模块可靠度预计。
基于固有特性的模型可靠度计算方法如下:
步骤301、将提取出的影响模块可靠度的每一项固有特征进行编号,对四种软件可能出现的错误类型依次编号;
步骤302、在具有第i类固有特征的软件模块中,第j类错误数与错误总数的百分比用c(i,j)表示;其中,j=1,2,3,4,具体地,第1类错误指逻辑错误,第2类错误指接口错误,第3类错误指输入/输出错误,第4类错误指计算错误;
基于开发特性的模型可靠度计算方法如下:
其中a(i,j)是采用第i项措施后,第j类错误得以避免的概率,N是采用的避错特性总数;
步骤305、计算查错概率,用D(j)表示对第j类错误的查错概率:
其中d(i,j)是采用第i项措施后,第j类错误得以查出的概率,N表示查错措施的总数;
步骤306、计算软件模块可靠度预计值Rc:Rc=Ri+E(1-Ri);
其中,Ri表示软件模块的固有可靠度,由“成功执行与总的执行的比率”确定;
软件模块可靠度的预计模型,采用人工神经网络学习方法得到。根据各个模块固有特性和开发特性的输入,结合前文提出的计算公式,得到飞控系统中的纵向控制软件中各个模块的可靠性如表3所示。
表3飞控系统的纵向控制软件模块可靠度
步骤四、建立软件可靠性预计模型,利用得到的模块可靠度,预计软件可靠性。
基于Petri网的软件可靠性预计方法如下:
步骤401、按照合适的粒度将整个软件系统划分为若干个模块,建立软件的体系结构模型。
将软件划分为若干个模块之后,各个模块之间在软件中以一定的形式形成逻辑连接,这种模块以及模块之间的连接关系,就形成了软件的体系结构。
步骤402、将程序控制流图转化为Petri网模型,建立软件体系结构的Petri 网模型。
对于软件体系结构中的模块,以Petri网中的库所来表示,模块之间的逻辑连接以Petri网中的变迁来表示,这样就形成了软件体系结构与Petri网模型之间的对应关系,并通过令牌在库所中的转移来描述系统的运行。
典型Petri网模型如图4所示,其中:
P={p1,p2,...,pn}是有限库所集合;
T={t1,t2,...,tm}是有限变迁集合(P∪T≠φ,P∩T=φ);
F∈(P×T)∪(T×P)为流关系;
M0是网的初始标识,petri网的标识是库所集上的多重集,M0代表系统在最开始状态时令牌在各个库所中的分布情况。
当软件的体系结构十分复杂时,需要引入分层模型,建立多层级的Petri 网模型,来描述复杂软件的体系结构。
多层级的Petri网模型中,顶层模型如图5所示,其中,S1、S2、S10为软件体系结构中的模块,S3为一个包,其中包含了若干个模块及其连接关系,在顶层中,软件的体系结构为一个标准的分支结构,在进行分析时,根据分支结构的特点进行分析。而S3打开后,其中包含的模块及其连接关系如图6所示,其表示的是底层模型,底层模型为冗余结构模型,由模块S4、S5、S6、S7、S8、 S9组成,其中S4→S5→S7→S9为正常执行的路径,S4→S6→S8→S9为冗余的执行路径,在实际执行过程中,若在顶层结构中,执行路径S1→S2→S10,则直接正常执行即可,若执行路径S1→S3→S10,则在包S3中执行时,执行底层模型的冗余结构模型。
步骤403、利用Petri网模型完成软件的可靠性预计。
在获得了软件中各个模块的可靠度后,需要建立计算可靠性的模型。首先需要获得软件运行状态的可靠度与模块可靠度之间的关系。在软件实际运行时,一个软件状态的运行可能需要不止一个模块来支持。因此对于软件的运行状态,如果软件中有n个模块,可定义一个n维向量Mi=(s1,s2,...,sn)来描述软件的运行状态,如果在一个运行状态下,第i个模块处于运行状态,则si的值为1,否则其值为0。对于状态可靠度与模块可靠度之间的关系,将采用如下方法进行计算:
1)如果当且仅当所有的组件都正常运行时该状态才能正常运行,则为串联状态,该状态的可靠度为所有组件可靠度与变迁可靠度相应的乘积;
2)如果只要某一个组件能够正常运行该状态便可以正常运行下去,则为并联状态(例如前文提到的冗余结构)该状态的失效率为所有组件失效率的乘积,可靠度则为1减去失效率;
3)如果系统既有串联运行状态也有并联运行状态,则为混联运行状态。此时的可靠性计算可以采用递归的方法:每次依据串联或者并联的形式,进行逐层分解,直到分解所得的每一部分均含有单纯串联或者并联状态为止,再利用上述串/并联状态可靠性计算方法逐层回溯,最终得到该状态的可靠度。
在得到了软件运行过程中每一个状态的可靠度之后,就可以建立运行状态转移矩阵,假设系统由n个可达状态构成,即{M1,M2,...,Mn},其中M1为初始状态,Mn为终止状态,每个状态的可靠度用Ri来表示,用pij表示软件正常从状态i运行到状态j的概率。矩阵中第i行第j列表示状态i不发生失效并正确转移到状态j的概率,即Ripij,则可以得到如下矩阵:
对现有状态空间进行扩充,加入两个吸收状态S和F,其中S代表软件正确完成并结束的概率,该状态只能由最终状态Mn转移得到,F为软件某一状态发生失效,可以由任意状态获得,这样状态空间扩充为{S,F,M1,M2,...,Mn},扩展的状态转移矩阵如下所示:
可以看出,矩阵M′为M增加了前两列,其中第一列为各状态转移到状态 S的概率,即软件正常执行的概率,第二列为各可达状态转移到状态F的转移概率,即发生失效的概率。在矩阵M中,最后一行元素为0,而在矩阵M′中,最后一行元素和仍为0,这意味着终止状态Mn只能转移到S或F状态。 Mk(i,j)代表状态i经过k步转移,到达状态j的概率,因此Mk(1,n)为软件初始状态,经过k步转移,到达终止状态n的概率。可得到下式:
其中I为单位矩阵,E为(I-M)矩阵中删除第n行和第1列后的矩阵。
则软件的可靠性为:
在软件的每一个运行状态下,可能有多个模块参与其中,完成软件的可靠性预计,即要探究软件运行状态可靠性与模块可靠度之间的关系,对于软件执行过程中的每个状态,利用马尔科夫过程计算软件可靠性。
根据飞控系统在纵向姿态调整过程中的执行流程,建立其软件体系结构的Petri网模型如图7所示。飞控系统可达状态图如图8所示。
标识每一个可达状态。如系统中有12个模块,定义一个12个元素的向量表示,当模块在该状态运行时则其值为1,否则为0,系统每个状态的含义以及向量表示如表4所示。
表4可达状态标识含义及向量表示
对于状态可靠度与模块可靠度之间的关系,将采用如下方法进行计算:
1)如果当且仅当所有的组件都正常运行时该状态才能正常运行,则为串联状态,该状态的可靠度为所有组件可靠度与变迁可靠度相应的乘积;
2)如果只要某一个组件能够正常运行该状态便可以正常运行下去,则为并联状态(例如前文提到的冗余结构)该状态的失效率为所有组件失效率的乘积,可靠度则为1减去失效率;
3)如果系统既有串联运行状态也有并联运行状态,则为混联运行状态。此时的可靠性计算可以采用递归的方法:每次依据串联或者并联的形式,进行逐层分解,直到分解所得的每一部分均含有单纯串联或者并联状态为止,再利用上述串/并联状态可靠性计算方法逐层回溯,最终得到该状态的可靠度。
在得到了软件运行过程中每一个状态的可靠度之后,就可以建立运行状态转移矩阵,从而计算出软件的可靠性。
如:包含的变迁执行概率分别为:
t1=0.7,t2=0.3,t4=0.8,ts=0.2,t10=0.5,t11=0.5,t3=0.2,t′3=1-t3=0.8,t9= 0.2,t′9=1-t9=0.8;
对于可达状态转移图中,没有分支存在的变迁,其转移概率为1。
则根据模块可靠度信息,以及建立的Petri网模型和可达状态转移模型,得到软件的可达状态转移矩阵为:
根据上述可达状态转移矩阵,结合前文提出的公式,得到软件的可靠性为:
R=0.9634
步骤五、软件可靠性预计方法实施效果分析
从实施例执行结果可看出:根据测试收集的失效数据得出该软件的“真实”可靠度为0.9698,因此针对基于Petri网的软件可靠性分析方法,有相对误差 0.660%,在可接受范围内(要求小于1%)。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (7)
1.一种软件系统可靠性预计方法,其特征在于,包括如下具体步骤:
对软件进行功能分解,分解成软件模块;
由软件模块的固有特性和开发过程特性提取影响软件模块可靠度的因素,并确定各个因素对软件可靠性的影响程度;
建立模块可靠度预计模型,完成模块可靠度预计;
建立软件可靠性预计模型,利用得到的模块可靠度,预计软件可靠性;
当软件的体系结构复杂引入分层模型,建立多层级的Petri网模型,来描述复杂软件的体系结构;
多层级的Petri网模型中,顶层模型中,S1、S2、S10为软件体系结构中的模块,S3为一个包,其中包含了若干个模块及其连接关系,在顶层中,软件的体系结构为一个标准的分支结构,在进行分析时,根据分支结构的特点进行分析;而S3打开后,其中包含的模块及其连接关系表示的是底层模型,底层模型为冗余结构模型,由模块S4、S5、S6、S7、S8、S9组成,其中S4→S5→S7→S9为正常执行的路径,S4→S6→S8→S9为冗余的执行路径,在实际执行过程中,若在顶层结构中,执行路径S1→S2→S10,则直接正常执行即可,若执行路径S1→S3→S10,则在包S3中执行时,执行底层模型的冗余结构模型;
对软件进行功能分解:
根据开发需求,确定软件的功能和软件的工作要求;同时识别软件的基本部件,具体的,软件分解为六个级别:计算机软件配置项目级别、计算机软件部件级别、单元级别、模块级别、指令级别、操作对象级别;
提取影响软件模块可靠性的因素:
软件模块可靠性由模块的固有特性和开发过程特性得到;
软件模块固有可靠性特性的预计方法是,分析软件错误类型,将软件错误分为逻辑错误、接口错误、输入/输出错误、计算错误,将软件模块的固有特性分为结构特性、功能特征、任务特征、系统与输入特征四大类;
对于模块固有特性的分类与选取,模块的固有特性对软件的错误类型分布产生直接的影响;
在考虑其固有特性对模块可靠度的影响时,需要选择该模块是否具有某一项固有特性,如果具备该特性,则考虑该特性对模块可靠度的影响,如果不具备该特性,则不考虑该特性对模块可靠度的影响;
开发过程特性包括软件开发的基本活动、软件开发的支持活动和软件开发管理活动。
4.根据权利要求1所述的一种软件系统可靠性预计方法,其特征在于,利用得到的软件模块可靠度,预计软件可靠性,具体步骤为:
步骤401、按照合适的粒度将整个软件系统划分为若干个模块,建立软件的体系结构模型;将软件划分为若干个模块之后,各个模块之间在软件中形成逻辑连接;
步骤402、将程序控制流图转化为Petri网模型,建立软件体系结构的Petri网模型;对于软件体系结构中的模块,以Petri网中的库所来表示,模块之间的逻辑连接以Petri网中的变迁来表示,形成软件体系结构与Petri网模型之间的对应关系,并通过令牌在库所中的转移来描述系统的运行;
典型Petri网模型中:
P={p1,p2,...,pn}是有限库所集合;
T={t1,t2,...,tm}是有限变迁集合(P∪T≠φ,P∩T=φ);
F∈(P×T)∪(T×P)为流关系;
M0是网的初始标识,petri网的标识是库所集上的多重集,M0代表系统在最开始状态时令牌在各个库所中的分布情况;
当软件的体系结构复杂引入分层模型,建立多层级的Petri网模型,来描述复杂软件的体系结构;
多层级的Petri网模型中,顶层模型中,S1、S2、S10为软件体系结构中的模块,S3为一个包,其中包含了若干个模块及其连接关系,在顶层中,软件的体系结构为一个标准的分支结构,在进行分析时,根据分支结构的特点进行分析;而S3打开后,其中包含的模块及其连接关系表示的是底层模型,底层模型为冗余结构模型,由模块S4、S5、S6、S7、S8、S9组成,其中S4→S5→S7→S9为正常执行的路径,S4→S6→S8→S9为冗余的执行路径,在实际执行过程中,若在顶层结构中,执行路径S1→S2→S10,则直接正常执行即可,若执行路径S1→S3→S10,则在包S3中执行时,执行底层模型的冗余结构模型;
步骤403、利用Petri网模型完成软件的可靠性预计;
在获得软件中各个模块的可靠度后,建立计算可靠性的模型;首先获得软件运行状态的可靠度与模块可靠度之间的关系;在软件实际运行时,对于软件的运行状态,软件中有n个模块,定义一个n维向量Mi=(s1,s2,...,sn)来描述软件的运行状态,如果在一个运行状态下,第i个模块处于运行状态,则si的值为1,否则其值为0;对于状态可靠度与模块可靠度之间的关系,将采用如下方法进行计算:
1)如果当且仅当所有的组件都正常运行时该状态才能正常运行,则为串联状态,该状态的可靠度为所有组件可靠度与变迁可靠度相应的乘积;
2)如果只要某一个组件能够正常运行该状态便可以正常运行下去,则为并联状态该状态的失效率为所有组件失效率的乘积,可靠度则为1减去失效率;
3)如果系统既有串联运行状态也有并联运行状态,则为混联运行状态;此时的可靠性计算可以采用递归的方法:每次依据串联或者并联的形式,进行逐层分解,直到分解所得的每一部分均含有单纯串联或者并联状态为止,再利用上述串/并联状态可靠性计算方法逐层回溯,最终得到该状态的可靠度;
在得到软件运行过程中每一个状态的可靠度之后,建立运行状态转移矩阵,假设系统由n个可达状态构成,即{M1,M2,...,Mn),其中M1为初始状态,Mn为终止状态,每个状态的可靠度用Ri来表示,用pij表示软件正常从状态i运行到状态j的概率;矩阵中第i行第j列表示状态i不发生失效并正确转移到状态j的概率,即Ripij,则可以得到如下矩阵:
对现有状态空间进行扩充,加入两个吸收状态S和F,其中S代表软件正确完成并结束的概率,该状态只能由最终状态Mn转移得到,F为软件某一状态发生失效,可以由任意状态获得,这样状态空间扩充为{S,F,M1,M2,...,Mn},扩展的状态转移矩阵如下所示:
看出,矩阵M′为M增加了前两列,其中第一列为各状态转移到状态S的概率,即软件正常执行的概率,第二列为各可达状态转移到状态F的转移概率,即发生失效的概率;在矩阵M中,最后一行元素为0,而在矩阵M′中,最后一行元素和仍为0,这意味着终止状态Mn只能转移到S或F状态;Mk(i,j)代表状态i经过k步转移,到达状态j的概率,因此Mk(1,n)为软件初始状态,经过k步转移,到达终止状态n的概率,得到叠加矩阵T:
其中I为单位矩阵,E为(I-M)矩阵中删除第n行和第1列后的矩阵,则软件的可靠性为:
5.一种软件系统可靠性预计装置,其特征在于,包括:
系统分解模块,用于将软件系统进行分解,分解成软件模块;
影响因素确定模块,用于确定固有特性和开发过程特性中的影响因素;
可靠度计算模块,用于计算固有特性和开发过程特性的可靠度;
可靠预计模块,建立软件可靠性预计模型,预计可靠性;
当软件的体系结构复杂引入分层模型,建立多层级的Petri网模型,来描述复杂软件的体系结构;
多层级的Petri网模型中,顶层模型中,S1、S2、S10为软件体系结构中的模块,S3为一个包,其中包含了若干个模块及其连接关系,在顶层中,软件的体系结构为一个标准的分支结构,在进行分析时,根据分支结构的特点进行分析;而S3打开后,其中包含的模块及其连接关系表示的是底层模型,底层模型为冗余结构模型,由模块S4、S5、S6、S7、S8、S9组成,其中S4→S5→S7→S9为正常执行的路径,S4→S6→S8→S9为冗余的执行路径,在实际执行过程中,若在顶层结构中,执行路径S1→S2→S10,则直接正常执行即可,若执行路径S1→S3→S10,则在包S3中执行时,执行底层模型的冗余结构模型。
6.一种计算机设备,包括存储器和处理器,所述存储器内存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-4任一项所述方法的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,处理器执行所述计算机程序时实现权利要求1-4任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010431680.8A CN111679972B (zh) | 2020-05-20 | 2020-05-20 | 软件系统可靠性预计方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010431680.8A CN111679972B (zh) | 2020-05-20 | 2020-05-20 | 软件系统可靠性预计方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111679972A CN111679972A (zh) | 2020-09-18 |
CN111679972B true CN111679972B (zh) | 2022-08-09 |
Family
ID=72433762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010431680.8A Active CN111679972B (zh) | 2020-05-20 | 2020-05-20 | 软件系统可靠性预计方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111679972B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112558927B (zh) * | 2020-12-09 | 2024-02-20 | 中国电子科技集团公司第十五研究所 | 基于逐层分解方法的软件可靠性指标分配方法及装置 |
CN113220548B (zh) * | 2021-03-25 | 2024-02-09 | 中国航天系统科学与工程研究院 | 一种基于可靠性框图的软件可靠性指标分配方法、介质及设备 |
CN113589780B (zh) * | 2021-06-30 | 2022-12-20 | 国网电力科学研究院武汉能效测评有限公司 | 基于组件架构的用能控制系统的可靠性分析系统及方法 |
CN116225949B (zh) * | 2023-03-08 | 2023-11-10 | 安徽省软件评测中心 | 软件可靠性验收风险评估方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933737A (zh) * | 2017-01-19 | 2017-07-07 | 北京航空航天大学 | 一种基于时间扩展petri网的嵌入式软件可靠性评估方法 |
CN107491389A (zh) * | 2017-08-11 | 2017-12-19 | 北京航空航天大学 | 一种基于时间扩展petri网的嵌入式软件可靠性评估系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9886190B2 (en) * | 2014-09-26 | 2018-02-06 | The Florida International University Board Of Trustees | Gesture discernment and processing system |
-
2020
- 2020-05-20 CN CN202010431680.8A patent/CN111679972B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933737A (zh) * | 2017-01-19 | 2017-07-07 | 北京航空航天大学 | 一种基于时间扩展petri网的嵌入式软件可靠性评估方法 |
CN107491389A (zh) * | 2017-08-11 | 2017-12-19 | 北京航空航天大学 | 一种基于时间扩展petri网的嵌入式软件可靠性评估系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111679972A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111679972B (zh) | 软件系统可靠性预计方法、装置、计算机设备和存储介质 | |
CN107576920B (zh) | 一种基于模糊多属性评价的卫星电源健康度计算方法 | |
CN106933737A (zh) | 一种基于时间扩展petri网的嵌入式软件可靠性评估方法 | |
CN113722985B (zh) | 航空发动机健康状态评估和剩余寿命预测方法及系统 | |
CN104484548B (zh) | 一种改进的序贯故障诊断策略优化方法 | |
CN113762486B (zh) | 换流阀故障诊断模型的构建方法、装置和计算机设备 | |
US10867098B1 (en) | System and method for ESL modeling of machine learning | |
Gaier et al. | Aerodynamic design exploration through surrogate-assisted illumination | |
CN113076938A (zh) | 一种结合嵌入式硬件信息的深度学习目标检测方法 | |
US5675521A (en) | Multichip module analyzer | |
CN112541584A (zh) | 深度神经网络模型并行模式选择方法 | |
Lippi et al. | Enabling visual action planning for object manipulation through latent space roadmap | |
CN113566831B (zh) | 基于人机交互的无人机集群导航方法、装置和设备 | |
CN113989550A (zh) | 基于cnn和lstm混合网络的电动汽车充电桩运行状态预测方法 | |
CN113869655A (zh) | 快速响应运火箭作战试验指标的确定方法和装置 | |
CN107918358A (zh) | 数控装备故障分析方法和装置 | |
CN115184055B (zh) | 一种分级测试性优化的测试集确定方法及系统 | |
CN111652269A (zh) | 一种基于群智交互的主动机器学习方法及装置 | |
CN115081856A (zh) | 一种企业知识管理绩效评价装置及方法 | |
CN115734274A (zh) | 一种基于深度学习和知识图谱的蜂窝网络故障诊断方法 | |
CN112667591A (zh) | 一种基于海量日志的数据中心任务干扰预测方法 | |
CN113705080A (zh) | 一种基于dematel-anp的深海载人潜水器可靠性指标的分析方法 | |
CN115620807B (zh) | 靶点蛋白分子与药物分子之间相互作用强度的预测方法 | |
Kusari | Assessing and accelerating coverage in deep reinforcement learning | |
CN112650770B (zh) | 基于query workload分析的MySQL参数推荐方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |