Traitement en cours

Veuillez attendre...

Paramétrages

Paramétrages

Aller à Demande

1. WO2020107142 - PROCÉDÉ ET SYSTÈME DE MESURE DE QUALITÉ DE LOGICIEL

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   33   34  

附图

1   2 (R91)   3 (R91)   4   5   6  

说明书

发明名称 : 一种软件质量度量方法及系统

技术领域

[0001]
本发明涉及软件质量度量方法及系统,更具体地,涉及针对车用控制软件的软件质量度量方法及系统。

背景技术

[0002]
汽车的研发趋势是使得汽车能够越来越智能,能够为驾驶员提供越来越多的驾驶辅助功能,直至完全自动驾驶。这些附加功能的提供需要通过软件和硬件的配合来实现,其中软件方面的进步相对硬件而言是更显著的。相对于普通的软件(例如在个人电脑或智能手机上使用的软件),汽车上使用的软件在安全性、实时性、可靠性等方面的要求显然要高得多。为此,汽车行业针对汽车软件存在行业标准,例如ISO 26262-2011、GB/T 34590-2017、ASPICE 3.0(ASPICE:Automotive Software Process Improvement and Capacity dEtermination是由欧洲的主要汽车制造商共同策定的面向汽车行业的流程评估模型,旨在改善和评估汽车电子控制器的系统和软件开发质量)、MISRA C:2012(MISRA:The Motor Industry Software Reliability Association汽车工业软件可靠性联合会是位于英国的一个跨国汽车工业协会,该协会提出的MSIRA C系列规范已经成为国际汽车行业广泛认可并遵守的C编码规范)以及MAAB(MathWorks Automotive Advisory Board麦斯沃克汽车咨询委员会,该委员会提出的控制算法建模规范是汽车软件MBD(Model Based Development基于模型的软件开发)所必须遵守的规范)等等。
[0003]
然而,目前针对汽车软件的质量评估主要依赖于评估人员进行人工评估,这导致评估耗费的时间较长且成本较高,并且还不可避免地存在一定的主观性。此外,这些问题也不仅仅存在于车用软件,对于普通的软件的质量评估也存在类似的问题。因此,需要一种全新的能够自动对软件的质量进行度量的方法和系统。
[0004]
发明内容
[0005]
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
[0006]
根据本发明的一个实施例,提供了一种用于自动度量软件质量的方法,所述方法包括:获取待度量的软件的软件特性;基于所获取的软件特性选择质量度量属性;为所选择的质量度量属性中的每一个质量度量属性分配权重;获取软件开发过程质量数据以及软件运维过程质量数据;基于所获取的软件开发过程质量数据以及软件运维过程质量数据中的至少一者,为所述每一个质量度量属性计算质量属性度量值;基于所述质量属性度量值及其相应的权重,计算所述软件的加权质量度量值;以及基于所述加权质量度量值判定所述软件的质量。
[0007]
根据本发明的另一实施例,提供了一种用于自动度量软件质量的系统,所述系统包括:软件测试管理单元,用于生成和存储软件开发过程质量数据;软件运维数据管理单元,用于生成和存储软件运维过程质量数据;软件质量度量单元,用于基于从所述软件测试管理单元获取的软件开发过程质量数据和从所述软件运维数据管理单元获取的软件运维过程质量数据对待度量软件的质量进行度量;以及用户接口单元,用于为用户提供接口以与所述软件测试管理单元、所述软件运维数据管理单元、以及所述软件质量度量单元进行交互。
[0008]
根据本发明的又一实施例,提供了一种其上存储有计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在由计算机执行时如本发明中所描述的用于自动度量软件质量的方法。
[0009]
为了便于描述和理解,本发明以针对车用软件的软件质量度量为例来描述本发明的原理、实施例及具体的技术手段。然而,本领域技术人员应当理解,本发明的软件质量度量方法及系统不仅限于应用于车用软件,而是能够普遍应用于任何软件的质量度量,尤其适合于基于模型开发的软件的质量评估。
[0010]
与现有技术相比,本发明至少解决了以下几方面问题:
[0011]
一、软件的客观质量度量问题;
[0012]
二、采用基于模型开发的软件的质量度量问题;
[0013]
三、软件单元级质量的度量问题;
[0014]
四、软件全生命周期质量的度量问题;以及
[0015]
五、软件质量数据的自动化获取和质量度量自动化执行的问题。
[0016]
相应地,本发明获得了至少如下的技术效果:
[0017]
一、从质量度量方法广度看,本发明提供了针对基于模型开发的软件质量度量(特别是针对功能安全软件的质量度量)的方法和系统;
[0018]
二、从质量度量方法深度看,本发明提供了针对软件单元级质量度量的方法和系统,并且还实现了对软件全生命周期的质量度量;
[0019]
三、从质量度量模型设计看,本发明提供了考虑软件标准符合性的质量度量方法和系统。
[0020]
四、从质量度量数据来源看,本发明提供了结合软件测试管理单元和软件运维数据管理单元自动化获取软件质量数据进行质量度量的方法和系统。
[0021]
通过阅读下面的详细描述并参考相关联的附图,这些及其他特点和优点将变得显而易见。应该理解,前面的概括说明和下面的详细描述只是说明性的,不会对所要求保护的各方面形成限制。

附图说明

[0022]
为了能详细地理解本发明的上述特征所用的方式,可以参照各实施例来对以上简要概述的内容进行更具体的描述,其中一些方面在附图中示出。然而应该注意,附图仅示出了本发明的某些典型方面,故不应被认为限定其范围,因为该描述可以允许有其它等同有效的方面。
[0023]
图1是根据本发明的一个实施例的软件质量度量系统的结构框图。
[0024]
图2示出了根据本发明的一个实施例的示例性软件开发过程质量数据结构。
[0025]
图3示出了根据本发明的一个实施例的示例性软件开发过程质量属性。
[0026]
图4是根据本发明的一个实施例的用于生成软件开发过程质量数据的方法的流程图。
[0027]
图5是根据本发明的一个实施例的用于生成软件运维过程质量数据的方法的流程图。
[0028]
图6是根据本发明的一个实施例的用于执行软件质量度量的方法的流程图。

具体实施方式

[0029]
下面结合附图详细描述本发明,本发明的特点将在以下的具体描述中得到进一步的显现。
[0030]
图1是根据本发明的一个实施例的软件质量度量系统100的结构框图。如图1中所示,软件质量度量系统100可包括用户接口单元102、软件测试管理单元104、软件运维数据管理单元106、以及软件质量度量单元108。为了便于说明,在图1中,上述四个单元被示为相互独立的单元。然而,本领域技术人员应当能够理解,上述单元可根据需要任意组合和集成,也可根据需要和功能被进一步拆分。
[0031]
用户接口单元
[0032]
用户接口单元102可作为软件测试管理单元104、软件运维数据管理单元106和软件质量度量单元108的统一接口,用于为软件开发工程师、软件测试工程师、数据分析工程师和软件质量度量工程师提供接口,分别执行软件上传、测试请求发起、测试用例编写、测试触发、数据管理与分析、软件质量度量模型设计等工作。作为非限制性示例,接口可以被实现为软件客户端、基于web的用户界面、或者任何其它适合便于用户访问车用控制软件质量度量系统的用户界面。
[0033]
根据本发明的一个实施例,系统可被设计成针对不同的单元有不同的客户端。例如,可以设计成分别针对软件测试管理单元104、软件运维数据管理单元106和软件质量度量单元108的软件测试管理模块、软件运维数据管理模块、以及软件质量度量模块。不同的用户根据其不同的身份和工作职责可分别登录不同的模块。这种设计方式适合用于软件测试管理单元104、软件运维数据管理单元106和软件质量度量单元108被分布式地部署在相应场所的情形。在这种情况下,负责软件测试的用户只需要安装系统的与软件测试管理单元104有关的部分。
[0034]
替代地,系统也可被设计为具有统一的用户登录界面。这种设计方式适合用于软件测试管理单元104、软件运维数据管理单元106和软件质量度量单元108被集中部署在服务器/云端的情形。例如,当不同的用户通过统一的客户端或通过web访问系统时,在统一的登录界面下登录后,系统可根据其身份和工作职责自动跳转至相应的模块并呈现相应的用户界面。
[0035]
软件测试管理单元
[0036]
软件测试管理单元106主要用于生成软件开发过程质量数据。为此,根据本发明的一个实施例,软件测试管理单元可考虑和管理与软件的开发与测试有关的各种要素,要素包括但不限于:软件需求、待测软件、测试用例/配置、持续集成、以及测试工具链等。
[0037]
软件需求:来源于产品需求,在需求管理工具中进行管理,是软件开发和软件测试的依据。
[0038]
待测软件:软件开发工程师可根据软件需求开发软件,并将软件上传至软件测试管理单元106的文件管理系统(例如开放源代码的版本控制系统的管理工具Subversion,简称SVN)。
[0039]
测试用例:软件测试工程师可根据软件需求开发测试需求并编写测试用例,并将测试用例上传至软件测试管理单元106的文件管理系统。
[0040]
测试配置:软件测试工程师可对测试工具链的参数进行设置,对所需测试项目进行选择和排序,对所需测试用例进行选择,对用于构建闭环系统的被控对象模型进行选择,对所需测试报告模板进行选择,以及对接收测试结果邮件的相关人员进行选择。
[0041]
持续集成:软件测试管理单元106可以基于事件触发(例如待测软件或测试用例更新并上传时自动触发或自动定时触发)的方式,调用软件测试工具链进行软件测试,自动生成测试报告,并输出结构化的软件开发过程质量数据。
[0042]
测试工具链:可被软件测试管理单元调用的进行软件测试的工具,这些工具可包括如以下的表1所列的分类,并且包括但不限于每个分类所列出的示例工具。
[0043]
表1 测试工具链分类
[0044]
[0045]
[0046]
图2示出了根据本发明的一个实施例的示例性软件开发过程质量数据结构。本领域技术人员可理解的,软件开发过程质量数据可包括但不仅限于图2所列出的结构化信息。如图2中所示,数据结构可按照软件开发流程划分为架构、单元、模型静态验证、代码静态验证、模型测试、代码测试、PIL(Processor-in-Loop处理器在环)测试、需求验证等八个节点,每个节点下又可以设置有数量不等的子节点。例如,其中,单元节点可按软件实际单元数添加;任务子节点(例如上文提到的模型静态验证、代码静态验证、模型测试、代码测试、PIL测试、需求验证)可按软件实际任务数添加。需要注意的是,本领域技术人员可以理解,上述节点和结构化信息可以按照任何其它适合的形式进行分配、合并或增减,本发明并不受限于所例示的结构化信息的实际结构。前述软件开发过程质量数据结构中包含多种结构化信息,以下的表2给出了这些结构化信息值格式的示例。需要注意的是,本领域技术人员可以理解,本发明并不受限于所例示的结构化信息值的具体格式。表2 软件开发过程质量数据结构化信息值格式示例
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
上述结构化信息可以使用XML语言(但不限于XML语言)进行存储和管理。以XML语言为例,上述结构化信息名称对应XML语言中的元素(Element)或属性(Attribute),结构化信息值对应XML语言中的文本(Text)或属性值(Attr.Value)。
[0053]
软件运维数据管理单元
[0054]
软件运维数据管理单元106可存储和管理通过车载终端采集并上传的由车辆控制单元发出的车辆运行数据。这些车辆运行数据可被分析以获得结构化的软件运维过程质量数据。软件运维过程质量数据可主要包括但不限于以下的表3所列出的结构化信息。不同于软件开发阶段质量数据,软件运维阶段质量数据结构比较简单。同样,本领域技术人员可以理解,本发明不受限于表中所列出的结构化信息值的具体格式。这些信息可与软件开发阶段质量数据统一使用XML语言进行管理。
[0055]
表3 软件运维阶段质量数据结构
[0056]
[0057]
软件质量度量单元
[0058]
如上文中提到的,软件质量度量单元108可以通过网络与软件测试管理单元104和软件运维数据管理单元106通信,这意味着软件质量度量单元108既可以与软件测试管理单元104和软件运维数据管理单元106一同部署在同一局域网内,也可以分布式地部署在不同地点并通过互联网通信地耦合。无论采用 何种通信耦合方式,软件质量度量单元108可通过网络获取上述软件开发过程质量数据和软件运维过程质量数据。随后,软件质量度量单元108可采用质量数据处理函数对获取的数据进行处理,并分配一个或多个维度的质量度量属性。例如,可根据特定的软件质量评估标准分配标准符合性、功能符合性、性能符合性、可靠性、可维护性等五个维度的质量度量属性。针对每一个质量度量属性,可采用特定的质量度量算法并分配相应的质量度量权重,以便对软件从上述五个维度进行质量度量计算,并形成最终的软件质量度量结果,并自动生成软件质量度量报告。软件质量度量结果和报告可通过诸如邮件或网页等形式向相关用户进行展示。
[0059]
质量度量模型设计
[0060]
本领域技术人员可以理解,本发明所描述的软件质量度量平台和方法并不受限于车用控制软件的质量度量,而是可以适用于任何软件的质量度量。针对不同的软件质量度量需求,可以通过使用本发明所描述的质量度量平台的基本架构和方法以及设计相应的质量度量模型来实现自动化的针对软件的全生命周期的质量度量。作为一个示例,本发明提供了一种示例性的质量度量模型设计。
[0061]
根据本发明的一个实施例,质量度量模型可包括质量度量属性、质量数据处理函数、质量度量算法、质量度量权重、质量判定规则等要素。
[0062]
1、质量度量属性
[0063]
前述软件开发过程和软件运维过程质量数据,按照数据类别的不同,可分配到标准符合性、功能符合性、性能符合性、可靠性、可维护性等五个质量度量属性,它们的分配方法可如图3中所示。
[0064]
图3示出了根据本发明的一个实施例的示例性软件开发过程质量属性。在图3中,将软件质量度量属性分为五个级别,分别为一级属性、二级属性、三级属性、四级属性和五级属性,并使用格式为“i.j.k.l.m”的多级序号对每个质量度量属性进行唯一区分。需要注意的是,上述质量度量属性可以按其它形式进行组织和分配,本发明不受限于所列举的质量度量属性的分类方式。
[0065]
2、质量数据处理函数
[0066]
质量度量处理是指将不同类型不同格式的软件质量数据(原始值)通过特 定的质量数据处理函数处理成归一化的质量数据度量值。质量数据处理函数的自变量为质量数据原始值,因变量为质量数据度量值。不同类型的质量数据的处理函数形式不同,但它们应遵循以下共性规则:
[0067]
1)质量数据处理函数的值域应为[p,q]、[p,q)、(p,q]三者之一,p和q可任意指定,但一套质量度量模型中必须保持固定,为便于理解,可以取p=0,q=1,本申请的说明书的后续内容均以此为示例来描述;
[0068]
2)质量数据处理函数必须为单调函数,但不必为严格单调函数;
[0069]
3)函数的单调性应使得:软件质量越高,则质量数据度量值越大。
[0070]
不同类型质量数据的处理函数示例见以下的表4。需要注意的是,本发明不受限于所列举的质量数据处理函数,只需满足上述共性规则即可。
[0071]
表4 质量数据处理函数示例
[0072]
[0073]
注:a为参数
[0074]
3、质量度量算法
[0075]
质量度量算法是指根据前述质量数据度量值,采用线性加权方法,计算质量度量结果的方法。线性加权方法涉及到的度量权重在后一小节中将更详细地描述。软件质量度量算法主要受以下三方面的软件特性所影响。
[0076]
1)软件开发方式:基于模型,或基于手写代码,或两者兼而有之。不同开发方式对质量度量算法的影响举例如下:
[0077]
a)对于基于模型开发的软件,在质量度量时,可采用模型层面的质量数据(例如建模规范符合率数据),也可采用代码层面的质量数据(例如编码规范符合率数据),也可采用两个层面的质量数据;
[0078]
b)对于基于手写代码开发的软件,在质量度量时,只能采用代码层面的质量数据。
[0079]
2)软件所处过程:开发过程或运维过程,开发过程还可按“V”模型细分为更多的子过程,运维过程还可分为试运行过程和运维过程两个子过程。软件所处不同过程对质量度量算法的影响举例如下:
[0080]
a)对于处于软件开发过程的软件,只能采用软件开发过程质量数据;
[0081]
b)对于处于软件运维过程的软件,应采用开发过程和运维过程的质量数据。
[0082]
3)质量度量等级:为说明方便,以下以ISO26262标准所要求的汽车安全完整性等级ASIL为例,按照功能安全标准,不同ASIL等级对软件质量要求的严格程度是不同的。ASIL等级对质量度量算法的影响举例如下。
[0083]
a)对于ASIL等级为QM的软件,所有安全相关的质量数据都可不采用;
[0084]
b)对于ASIL等级为A、B、C的软件,可不采用MC/DC覆盖率数据,等等。
[0085]
对于采用确定的开发方式进行开发,处于某个确定过程,并具有确定ASIL等级的待度量软件。软件质量度量工程师可在充分理解上述软件特性的基础上,对诸如图3所示的质量度量属性进行裁剪,以形成满足待度量软件所需的特定质量度量属性子集。软件质量度量算法应基于此特定质量度量属性子集开展。本发明不受限于所列举的质量度量属性子集的具体裁剪方法。以下基于某个确 定的质量度量属性子集C,描述质量度量算法的一般原理。
[0086]
不失一般性,假设:
[0087]
1)质量度量属性子集C有x个一级属性;
[0088]
2)每个一级属性下有若干个二级属性,且序号为i的一级属性下有y i个二级属性(1≤i≤x);
[0089]
3)每个二级属性下有若干个三级属性,且序号为i.j的二级属性下有z j个三级属性(1≤j≤y i);
[0090]
4)每个三级属性下有若干个四级属性,且序号为i.j.k的三级属性下有u k个四级属性(1≤k≤z j);
[0091]
5)每个四级属性下有若干个五级属性,且序号为i.j.k.l的四级属性下有v l个五级属性(1≤l≤u k)
[0092]
则质量度量算法可分为以下五个步骤:
[0093]
第一步:基于五级属性的度量值分别对所属四级属性进行度量,其中序号为i.j.k.l的四级属性的度量值计算公式为:
[0094]
[0095]
其中:
[0096]
SQM ijkl——序号为i.j.k.l的四级属性的度量值;
[0097]
SQM ijkln——序号为i.j.k.l.n的五级属性的度量值;
[0098]
w ijkln——序号为i.j.k.l.n的五级属性的度量权重
[0099]
第二步:基于四级属性的度量值分别对所属三级属性进行度量,其中序号为i.j.k的三级属性的度量值计算公式为:
[0100]
[0101]
其中:
[0102]
SQM ijk——序号为i.j.k的三级属性的度量值;
[0103]
SQM ijkn——序号为i.j.k.n的四级属性的度量值;
[0104]
w ijkl——序号为i.j.k.n的四级属性的度量权重
[0105]
第三步:基于三级属性的度量值分别对所属二级属性进行度量,其中序号为i.j的二级属性的度量值计算公式为:
[0106]
[0107]
其中:
[0108]
SQM ij——序号为i.j的二级属性的度量值;
[0109]
SQM ijn——序号为i.j.n的三级属性的度量值;
[0110]
w ijn——序号为i.j.n的三级属性的度量权重
[0111]
第四步:基于二级属性的度量值分别对所属一级属性进行度量,其中序号为i的一级属性的度量值计算公式为:
[0112]
[0113]
其中:
[0114]
SQM i——序号为i的一级属性的度量值;
[0115]
SQM in——序号为i.n的二级属性的度量值;
[0116]
w in——序号为i.n的二级属性的度量权重
[0117]
第五步:基于x个一级属性的度量值计算最终质量度量值,计算公式为:
[0118]
[0119]
其中:
[0120]
SQM——最终质量度量值;
[0121]
SQM n——序号为n的一级属性的度量值;
[0122]
w n——序号为n的一级属性的度量权重
[0123]
需要注意的是:
[0124]
1)若实际质量度量子集的最高级别与上述质量度量子集C有所不同,则算法步骤也应做相应变化;
[0125]
2)若某个质量度量属性没有任何下级属性,则该质量度量属性的度量值 必然直接来源于质量度量函数,因此无需套用上述公式进行计算。
[0126]
4、质量度量权重
[0127]
对于上述的软件质量度量的多个维度,在不同标准或需求下可能存在不同的侧重。因此,可针对软件质量度量的每一个维度分配质量度量权重。权重分配可按照领域内常用的APH(Analytic Hierarchy Process)层次分析法进行,也可根据工程师经验人工进行,本发明不受限于具体的权重分配方案。然而,需要注意的是,质量度量权重分配优选地应考虑以下原则:
[0128]
1)质量度量权重分配应在确定了质量度量属性子集后进行;
[0129]
2)对于ASIL等级较高的软件,安全相关的质量度量属性的权重应酌情设高,反之亦然;
[0130]
3)某一度量属性的所有下级度量属性的权重之和应等于1。
[0131]
5、质量判定准则
[0132]
质量判定是指根据上述SQM值,判断软件质量度量结论SQC,本专利将SQ分为Good、Acceptable和Bad三个等级,因此相应设置了两个SQM阈值,分别为th和tl,作为软件质量判定准则。他们之间的关系如表5所示。需要注意的是,用于作为软件质量判定准则的SQM阈值可以根据需要做增减,本发明不限于所列举的具体SQM阈值数量和数值。
[0133]
表5 质量判定准则
[0134]
[0135]
软件质量度量流程设计
[0136]
与软件质量度量模型设计类似的,为了对软件质量进行度量,还需要进行合适的软件质量度量流程的设计。作为一个示例,本发明提供了一种示例性的质量度量流程设计。然而,本领域技术人员可以理解,在不背离本发明所描述 的本发明所描述的质量度量平台的基本架构和方法的情况下,可以针对不同的软件质量度量需求来设计具体的软件质量度量流程,以便实现自动化的针对软件的全生命周期的质量度量。
[0137]
根据本发明的一个实施例,软件质量度量流程可被设计为大致分为软件质量数据生成和软件质量度量两个阶段。
[0138]
对于软件质量数据生成,如之前提到的,又可以进一步分为软件开发过程质量数据生成和软件运维过程质量数据生成。
[0139]
图4是根据本发明的一个实施例的用于生成软件开发过程质量数据的方法400的流程图。如上文中描述的,软件开发过程质量数据的生成可由软件测试管理单元(例如,图1中的软件测试管理单元104)来执行。方法400开始于步骤402,在步骤402,软件测试管理单元可读取文件管理系统(例如SVN)。更具体地,软件测试管理单元可从文件管理系统中读取之前已上传至文件管理系统中的待测软件以及测试用例。
[0140]
随后,在步骤404,软件测试管理单元可检测是否发生了测试触发事件。如上文提到的,测试触发事件可包括例如待测软件或测试用例被更新并上传至软件测试管理单元的文件管理系统。替代地或附加地,测试触发事件还可包括自动测试定时来临。例如,可以设定每隔一固定时间间隔就固定对待测软件或测试用例进行测试。回到步骤404,如果软件测试管理单元未检测到测试触发事件,则流程返回至步骤402。如果在步骤404,软件测试管理单元检测到测试触发事件发生,则流程前进至步骤406。
[0141]
在步骤406,软件测试管理单元可进行软件测试。例如,软件测试管理单元104可通过调用软件测试工具链来对待测软件或测试用例进行软件测试。最后,在步骤408,软件测试管理单元可基于测试的结果生成软件开发过程质量数据。根据一个实施例,生成软件开发过程质量数据可包括自动生成测试包干,以及输出结构化的软件开发过程质量数据。根据一个实施例,软件开发过程质量数据可采用XML语言或其它任何适合的结构化语言来存储和管理。
[0142]
图5是根据本发明的一个实施例的用于生成软件运维过程质量数据的方法500的流程图。如上文中描述的,软件运维过程质量数据的生成可由软件运维数据管理单元(例如,图1中的软件运维数据管理单元106)来执行。方法500 开始于步骤502,在步骤502,读取软件运维数据。在待测软件是车用软件的上下文中,软件运维数据是车载终端数据。如之前描述的,车载终端数据可以是由车载终端从车辆控制单元采集并上传至软件运维数据管理单元的车辆运行数据。随后,在步骤504,读取的软件运维数据可被分析,并在步骤506,生成软件运维过程质量数据。如之前描述的,软件运维数据(例如车辆运行数据)可由数据分析工程师人工分析,也可由软件运维数据管理单元基于预定的数据分析规则和算法自动分析。生成的软件运维过程质量数据可采用结构化数据结构。这些数据可采用与软件开发阶段质量数据相同的结构化语言(例如XML语言)来进行存储和管理。图6是根据本发明的一个实施例的用于执行软件质量度量的方法600的流程图。如上文中描述的,软件运维过程质量数据的生成可由软件运维数据管理单元(例如,图1中的软件质量度量单元108)来执行。方法600开始于步骤602,在步骤602,获取待度量软件的软件特性。如之前提到的,软件特性可包括软件开发方式、软件所处过程以及质量度量等级(如ASIL等级)。随后,在步骤604,质量度量属性可被裁剪以形成满足待度量软件所需的特定质量度量属性子集。如之前在图3中呈现的,一个统一的质量度量平台可能设计采用包含有多个层级的数量相当大的度量属性,然而针对特定的测试需求,并不是所有的度量属性都需要被度量。因此,根据需要仅选择需要的属性作为度量属性子集将显著提升测试的效率并节省相关的资源。当然,如本领域技术人员可以理解的,裁剪质量度量属性子集这一步骤是可选的,直接将所设计的质量度量模型中的所有质量度量属性都作为要考虑的属性也是可行的,例如可在质量度量模型设计阶段就设计仅包含针对待测软件的特定需求所必须的度量属性。
[0143]
随后,在步骤606,可为所裁剪的质量属性子集中的每一个质量度量属性分配权重。如之前所提到的,本发明不受限于具体的权重分配方案。在特定情况下,不设权重(也即权重在所有的度量维度上等分)也是可以的。
[0144]
接着,在步骤606和608,分别获取软件开发过程质量数据以及软件运维过程质量数据。例如,软件开发过程质量数据可由软件质量度量单元108通过网络从软件测试管理单元104处接收,而软件运维过程质量数据可通过网络从软件运维数据管理单元106处接收。
[0145]
在接收了软件开发过程质量数据和软件运维过程质量数据之后,在步骤610,针对接收到的每一项数据,计算软件质量属性度量值。度量值的计算可基于之前描述的质量数据处理函数来进行。随后,在步骤612,根据计算出的软件质量属性度量值以及相应的权重,计算加权的软件质量度量值。最后,在步骤614,根据预先设置的质量判定准则,可对软件的质量进行判定,并给出判定结构,例如Good、Acceptable还是Bad。
[0146]
以上描述了本发明的用于车辆控制系统软件的客观质量度量的方法和系统。与现有技术相比,本发明提供的技术方案至少具有以下创新点及有益效果:
[0147]
(1)本发明提出的软件质量度量方法及系统参考汽车软件特殊标准增加了车用软件标准符合性的特殊度量属性,并考虑了不同ASIL等级对软件质量度量权重的影响。
[0148]
(2)本发明提出的软件质量度量方法及系统结合了软件测试管理单元和软件运维数据管理单元的生成的软件开发过程和软件运维过程质量数据,能够以自动化的方式获取软件质量数据并以自动化的方式对软件全生命周期质量进行客观度量。
[0149]
(3)本发明提出的软件质量度量方法及系统既适用于基于手写代码开发的车用控制软件,也特别适用于基于模型开发的车用控制软件。
[0150]
(4)本发明提出的软件质量度量方法及系统既能够对软件架构进行质量度量,也能对软件单元进行度量,有利于了对软件质量的全方面把握。
[0151]
基于上述创新点,本发明能够辅助企业对软件产品全生命周期的质量进行全面客观把握,有利于提升软件质量,减少批量问题,避免召回。
[0152]
以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。

权利要求书

[权利要求 1]
一种用于自动度量软件质量的方法,其特征在于,所述方法包括: 获取待度量的软件的软件特性; 基于所获取的软件特性选择质量度量属性; 为所选择的质量度量属性中的每一个质量度量属性分配权重; 获取软件开发过程质量数据以及软件运维过程质量数据; 基于所获取的软件开发过程质量数据以及软件运维过程质量数据中的至少一者,为所述每一个质量度量属性计算质量属性度量值; 基于所述质量属性度量值及其相应的权重,计算所述软件的加权质量度量值;以及 基于所述加权质量度量值判定所述软件的质量。
[权利要求 2]
如权利要求1所述的方法,其特征在于,所述软件特性包括以下中的至少之一: 软件开发方式; 软件所处过程;以及 质量度量等级。
[权利要求 3]
如权利要求1所述的方法,其特征在于,所述质量度量属性包括多个层级,并且每一层级可包括一个或多个质量度量属性。
[权利要求 4]
如权利要求3所述的方法,其特征在于,所述多个层级中的第一级的一个或多个质量度量属性中的每一个对应于软件度量的一个维度。
[权利要求 5]
如权利要求4所述的方法,其特征在于,所述维度包括以下中的至少一个: 标准符合性、功能符合性、性能符合性、可靠性、以及可维护性。
[权利要求 6]
如权利要求1所述的方法,其特征在于,所述基于所获取的软件特性选择质量度量属性进一步包括: 基于所获取的软件特性从多个质量度量属性中裁剪用于度量所述软件的质量的质量度量属性子集。
[权利要求 7]
如权利要求1所述的方法,其特征在于,所述权重基于以下原则中的至少一个来分配: 1)所述软件的质量度量等级越高,与安全相关的质量度量属性被分配的权重越高;以及 2)任何一个度量属性的所有下级度量属性的权重之和等于1。
[权利要求 8]
如权利要求1所述的方法,其特征在于,所述方法还包括生成软件开发过程质量数据,包括: 从文件管理系统中读取所述待度量软件或测试用例; 检测是否发生了测试触发事件; 响应于检测到测试触发事件的发生,对所述待度量软件或测试用例进行测试;以及 生成所述软件开发过程质量数据。
[权利要求 9]
如权利要求8所述的方法,其特征在于,所述测试触发事件包括: 所述待度量软件或测试用例被上传至所述文件管理系统; 所述待度量软件或测试用例被更新;以及 预定的测试定时来临。
[权利要求 10]
如权利要求1所述的方法,其特征在于,所述方法还包括生成软件运维过程质量数据,包括: 读取软件运维数据; 对读取的软件运维数据进行分析;以及 生成所述软件运维过程质量数据。
[权利要求 11]
如权利要求1所述的方法,其特征在于,所述软件开发过程质量数据和所述软件运维过程质量数据使用结构化语言来存储。
[权利要求 12]
如权利要求1所述的方法,其特征在于,为所述每一个质量度量属性计算质量属性度量值进一步包括: 基于与每一个所述质量度量属性相关联的质量数据处理函数来计算其每一个所述质量度量属性的质量属性度量值。
[权利要求 13]
如权利要求1所述的方法,其特征在于,所述软件的加权质量度量值是所选择的每一个质量度量属性的质量度量值的加权和。
[权利要求 14]
如权利要求3所述的方法,其特征在于,所述软件的加权质量度量值是所述多个层级中的第一级的每一个质量度量属性的质量度量值的加权和;并且 其中具有下级质量度量属性的质量度量属性的质量度量值是该质量度量属性的每一个下级质量度量属性的质量度量值的加权和,而不具有下级质量度量属性的质量度量属性的质量度量值是基于与该质量度量属性相关联的质量数据处理函数计算出的质量属性度量值。
[权利要求 15]
如权利要求1所述的方法,其特征在于,基于所述加权质量度量值判定所述软件的质量进一步包括: 基于一个或多个预先设定的阈值来确定所述软件的质量度量结果。
[权利要求 16]
如权利要求1所述的方法,其特征在于,进一步包括: 自动生成软件质量度量报告并呈现给用户。
[权利要求 17]
一种用于自动度量软件质量的系统,其特征在于,所述系统包括: 软件测试管理单元,用于生成和存储软件开发过程质量数据; 软件运维数据管理单元,用于生成和存储软件运维过程质量数据; 软件质量度量单元,用于基于从所述软件测试管理单元获取的软件开发过程质量数据和从所述软件运维数据管理单元获取的软件运维过程质量数据对待度量软件的质量进行度量;以及 用户接口单元,用于为用户提供接口以与所述软件测试管理单元、所述软件运维数据管理单元、以及所述软件质量度量单元进行交互。
[权利要求 18]
如权利要求17所述的系统,其特征在于,所述软件测试管理单元还包括文件管理系统,并且所述软件测试管理单元被配置成: 从所述文件管理系统中读取待度量软件或测试用例; 检测是否发生了测试触发事件; 响应于检测到测试触发事件的发生,对所述待度量软件或测试用例进行测试; 生成所述软件开发过程质量数据。
[权利要求 19]
如权利要求18所述的系统,其特征在于,所述测试触发事件包括: 所述待度量软件或测试用例被上传至所述文件管理系统; 所述待度量软件或测试用例被更新;以及 预定的测试定时来临。
[权利要求 20]
如权利要求17所述的系统,其特征在于,所述软件运维数据管理单元被配置成: 读取软件运维数据; 对读取的软件运维数据进行分析;以及 生成所述软件运维过程质量数据。
[权利要求 21]
如权利要求17所述的系统,其特征在于,软件质量度量单元被配置成: 获取待度量的软件的软件特性; 基于所获取的软件特性选择质量度量属性; 为所选择的质量度量属性中的每一个质量度量属性分配权重; 从所述软件测试管理单元获取所述软件开发过程质量数据; 从所述软件运维数据管理单元获取所述软件运维过程质量数据; 基于所获取的软件开发过程质量数据以及软件运维过程质量数据中的至少一者,为所述每一个质量度量属性计算质量属性度量值; 基于所述质量属性度量值及其相应的权重,计算所述软件的加权质量度量值;以及 基于所述加权质量度量值判定所述软件的质量。
[权利要求 22]
如权利要求21所述的系统,其特征在于,所述软件特性包括以下中的至少之一: 软件开发方式; 软件所处过程;以及 质量度量等级。
[权利要求 23]
如权利要求21所述的系统,其特征在于,所述质量度量属性包括多个层级,并且每一层级可包括一个或多个质量度量属性。
[权利要求 24]
如权利要求23所述的系统,其特征在于,所述多个层级中的第一级的一个或多个质量度量属性中的每一个对应于软件度量的一个维度。
[权利要求 25]
如权利要求24所述的系统,其特征在于,所述维度包括以下中的至少一个: 标准符合性、功能符合性、性能符合性、可靠性、以及可维护性。
[权利要求 26]
如权利要求21所述的系统,其特征在于,所述基于所获取的软件特性选择质量度量属性进一步包括: 基于所获取的软件特性从多个质量度量属性中裁剪用于度量所述软件的质量的质量度量属性子集。
[权利要求 27]
如权利要求21所述的系统,其特征在于,所述软件质量度量单元还被配置成基于以下原则中的至少一个来分配权重: 1)所述软件的质量度量等级越高,与安全相关的质量度量属性被分配的权重越高;以及 2)任何一个度量属性的所有下级度量属性的权重之和等于1。
[权利要求 28]
如权利要求17所述的系统,其特征在于,所述软件开发过程质量数据和所述软件运维过程质量数据使用结构化语言来存储。
[权利要求 29]
如权利要求21所述的系统,其特征在于,为所述每一个质量度量属性计算质量属性度量值进一步包括: 基于与每一个所述质量度量属性相关联的质量数据处理函数来计算其每一个所述质量度量属性的质量属性度量值。
[权利要求 30]
如权利要求21所述的系统,其特征在于,所述软件的加权质量度量值是所选择的每一个质量度量属性的质量度量值的加权和。
[权利要求 31]
如权利要求21所述的方法,其特征在于,所述软件的加权质量度量值是所述多个层级中的第一级的每一个质量度量属性的质量度量值的加权和;并且 其中具有下级质量度量属性的质量度量属性的质量度量值是该质量度量属性的每一个下级质量度量属性的质量度量值的加权和,而不具有下级质量度量属性的质量度量属性的质量度量值是基于与该质量度量属性相关联的质量数据处理函数计算出的质量属性度量值。
[权利要求 32]
如权利要求21所述的系统,其特征在于,基于所述加权质量度量值判定所述软件的质量进一步包括: 基于一个或多个预先设定的阈值来确定所述软件的质量度量结果。
[权利要求 33]
如权利要求21所述的系统,其特征在于,所述软件质量度量单元被进一步配置成: 自动生成软件质量度量报告并经由所述用户接口单元呈现给用户。
[权利要求 34]
一种其上存储有计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在由计算机执行时执行如权利要求1-16中的任意一项所述的方法。

附图

[ 图 1]
[ 图 2]   [根据细则91更正12.04.2019] 
[ 图 3]   [根据细则91更正12.04.2019] 
[ 图 4]
[ 图 5]
[ 图 6]