CN105190548B - 用于自动分析软件风险的方法和系统 - Google Patents
用于自动分析软件风险的方法和系统 Download PDFInfo
- Publication number
- CN105190548B CN105190548B CN201480015247.9A CN201480015247A CN105190548B CN 105190548 B CN105190548 B CN 105190548B CN 201480015247 A CN201480015247 A CN 201480015247A CN 105190548 B CN105190548 B CN 105190548B
- Authority
- CN
- China
- Prior art keywords
- period
- software program
- logic
- software
- specified
- 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
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/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/008—Reliability or availability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
此处描述的技术能够执行对软件程序的自动风险分析。自动风险分析器可确定软件的二进制码和软件的源文件之间、源文件和软件的函数(即子例程)之间、对软件的源代码的改变和软件中的缺陷、新特征、和/或特征增强之间、在软件的各属性(例如,与对源代码的改变相关联的属性)之间等的相关性。自动风险分析器可将对应于第一时间实例的相关性和对应于第二时间实例的相关性作比较来确定与底层因素相关的各种时间关系中的任意一种,底层因素包括但不限于新特征、特征增强、缺陷、搅动率、代码覆盖、代码复杂度等。自动风险分析器可基于时间关系确定软件的风险。
Description
技术领域
本发明涉及计算机软件,更具体的,涉及软件风险的自动分析。
背景技术
软件的测试通常是与软件的开发同时进行的,以便改善软件在软件的生命周期的相对前期的质量。然而,软件中的缺陷普遍在缺陷被引入软件的开发周期之后进行的开发周期中被发现。在这种情况下,标识和分析缺陷可能相对具有挑战性。
随着软件开发从一个周期进展到另一周期,追踪缺陷到特定的开发周期允许对在特定周期中开发的软件中的特征的质量的评估和理解。不能这样做的困难之一是可能引入各种问题中的任意一种。例如,当导致缺陷的具体的软件代码改变未知时,风险评估和过程纠正可能变得相对困难。将用于解决该缺陷的资源转移到软件的正确组件和/或合适的工程团队可能变得相对困难。被采用供工程团队使用的对于进程的有效性的反馈可能变得相对有限。基于特定模式的缺陷的对于个人和他们的团队的反馈可能变得相对有限。对于软件质量的进行中的改善可能变得不切实际,因为如果引起缺陷的具体代码改变是未知的话,则对于现有缺陷的根本原因分析效果变得不太有效。
已进行了各种尝试来手动地解决这些问题。例如,诸如Visual 团队服务器(VSTS)或者Product StudioTM之类的追踪工具依赖于缺陷寻找者将缺陷链接到软件特征或软件开发周期的有效性。提交缺陷的人通常将附加信息与该缺陷相关联,从而将缺陷链接到之前发布的特征和/或之前的开发周期。使用这一信息,选择性的缺陷通常按分类来分析或单独的实践来分析,以创建对于链接到过去的开发周期的缺陷的手动报告。然而,找到缺陷的人可能不是在软件的开发周期期间测试该软件特征的人。如果找到缺陷的人不具有以上提及的信息,则这人可能不能准确地将缺陷链接到产品特征。此外,这样的手动技术传统来说是不可缩放的,这可能导致这类技术相对不太有效。
发明内容
在此描述了用于执行对软件的自动风险分析等的各种方法。例如,可在软件的开发期间自动对软件执行这一风险分析。风险分析的目的是确定软件程序的风险。风险是能够对软件程序的执行带来负面影响的因素。
描述了示例方法。根据这一方法、软件程序的多个源代码文件与包括在软件程序的经编译的表示中的二进制码相关以提供第一相关性。对于多个时间段中的每个时间段,在各个时间段期间发生的对于多个源代码文件中的源代码文件的改变被基于第一相关性而映射到软件程序的经编译的表示中的缺陷以提供缺陷映射。确定软件程序的属性。属性至少包括代码覆盖和/或代码复杂度。对于每个时间段,确定该时间段的缺陷映射和属性之间的中间关系。对应于第一时间段的中间关系被相关于对应于第二时间段的中间关系以提供时间关系。多个因素的各个子集将干扰软件程序的执行的可能性基于该时间关系来确定。
描述了一种示例系统,该系统包括相关逻辑、缺陷映射逻辑、属性确定逻辑、关系逻辑、时间分析逻辑、以及风险分析逻辑。相关逻辑被配置成将软件程序的多个源代码文件与包括在软件程序的经编译的表示中的二进制码相关以提供第一相关性。缺陷映射逻辑被配置成对于多个时间段中的每个时间段,基于第一相关性将在各个时间段期间发生的对于多个源代码文件中的源代码文件的改变映射到软件程序的经编译的表示中的缺陷以提供缺陷映射。属性确定逻辑被配置成确定软件程序的属性,属性至少包括代码覆盖和/或代码复杂度。关系逻辑被配置成对于每个时间段,确定该时间段的缺陷映射和属性之间的中间关系。时间分析逻辑被配置成将对应于第一时间段的中间关系与对应于第二时间段的中间关系相关以提供时间关系。风险确定逻辑被配置成基于时间关系来确定多个因素的各个子集将干扰软件程序的执行的可能性。
描述了一种包括计算机可读介质的计算机程序产品,所述计算机可读介质具有记录于其上的计算机程序逻辑,所述计算机程序逻辑用于使得基于处理器的系统能够执行对软件程序的自动风险分析。计算机程序产品包括第一程序逻辑模块、第二程序逻辑模块、第三程序逻辑模块、第四程序逻辑模块、第五程序逻辑模块、以及第六程序逻辑模块、。第一程序逻辑模块用于使得基于处理器的系统能够将软件程序的多个源代码文件与包括在软件程序的经编译的表示中的二进制码相关以提供第一相关性。第二程序逻辑模块用于使得基于处理器的系统能够对于多个时间段中的每个时间段,基于第一相关性将在各个时间段期间发生的对于多个源代码文件中的源代码文件的改变映射到软件程序的经编译的表示中的缺陷以提供缺陷映射。第三程序逻辑模块用于使得基于处理器的系统能够确定软件程序的属性,属性至少包括代码覆盖和/或代码复杂度。第四程序逻辑模块用于使得基于处理器的系统能够对于每个时间段,确定该时间段的缺陷映射和属性之间的中间关系。第五程序逻辑模块用于使得基于处理器的系统能够将对应于第一时间段的中间关系与对应于第二时间段的中间关系相关以提供时间关系。第六程序逻辑模块用于使得基于处理器的系统能够基于时间关系来确定多个因素的各个子集将干扰软件程序的执行的可能性。
提供概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念的选集。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。此外,注意到本发明不限于在详细描述和/或本文的其它章节中所述的特定实施例。本文呈现这些实施例仅用于说明性的用途。基于本文所包含的描述,其它实施例对于相关领域的技术人员将是显而易见的。
附图说明
本文结合的并且组成本说明书的一部分的附图示出了本发明的各实施例,并且还与本描述一起用于解释所涉及的原理以及使相关领域的技术人员能够实现和使用所公开的技术。
图1是根据一实施例的示例自动风险分析系统的框图。
图2描绘了根据一实施例的用于执行对软件程序的自动风险分析的示例方法的流程图。
图3是根据一实施例的自动风险分析器的示例实现的框图。
图4描绘了其中可实现各实施例的示例计算机。
通过下面的结合附图对本发明进行的详细说明,所公开的技术的特点和优点将变得更加显而易见,在附图中,类似的附图标记在整个说明书中标识对应的元素。在附图中,相同的参考标号一般指相同的、功能上相似的和/或结构上相似的元素。其中元素第一次出现的附图由对应的参考标号中最左侧的数字指示。
具体实施方式
I.序言
以下详细描述参考示出本发明的示例性实施例的附图。但是,本发明的范围不限于这些实施例,而是由所附权利要求书定义。因此,诸如所示实施例的修改版本之类的在附图所示之外的实施例仍然由本发明所包含。
本说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指的是所述实施例可包括特定的特征、结构或特点,但是每一实施例不一定包括该特定的特征、结构或特点。此外,这些短语不一定指相同的实施例。此外,当结合实施例描述具体特征、结构或特性时,应当理解在相关领域的技术人员的知识范围内能够结合其他实施例来实现具体特征、结构或特性,无论是否被显式地描述。
II.示例实施例
本文描述的示例实施例能够执行对软件程序的自动风险分析。例如,可在软件程序的开发期间自动对软件程序执行这一风险分析。风险分析的目的是确定软件程序的风险。风险是能够对软件程序的执行带来负面影响的因素。风险分析涉及多个操作,所有的操作可并行执行,所有的操作可依次执行,或者一些操作可并行执行而另一些可依次执行。
对于测试中的软件程序,可分析软件程序的二进制码和软件程序的每一个子例程(又称函数)的符号。软件程序的二进制码是软件程序的经编译的表示的组件。二进制码可与软件程序的源代码文件相关。源代码文件可与软件程序的函数相关。
对于对软件程序的源代码作出的任何改变,该改变可被分析并与由该改变导致的缺陷的列表相关。可维护具体的源代码改变和具体的缺陷之间的映射。术语“相关”和“映射”在此被互换地使用。如果对源代码的改变与软件程序的新功能和/或软件程序的现有特征的增强有关,则该改变可被分析并与该改变所导致的增强和/或增加的列表相关。可维护具体的源代码改变和具体的增强和/或增加之间的映射。可对对源代码作出的改变分析属性,属性包括但不限于作出该改变的开发者、作出该改变的日期和/或时间等。在一段时间上,以上提及的相关可被迭代地改善。软件程序的各个属性(例如质量度量)之间的关系可使用此处描述的相关中的任意一个来进行相关和/或通过将相关与其它属性映射来进行相关。
在两个时间段之间,可使用以上提及的相关性中的任意一个通过每个其它改变来重新分析对源代码的每个改变,以收集与各种相关性中的任意一个有关的信息,信息包括但不限于,代码增强与代码缺陷的相关性(例如,增强“abc”导致九个缺陷)、代码缺陷与代码缺陷的相关性(例如,修补缺陷“xyz”致使或引入十一个其它缺陷)、代码缺陷与代码搅动的相关性(例如从代码搅动的角度来说在特定时间修补缺陷“xyz”过于冒险)、代码覆盖与代码缺陷的相关性、代码覆盖与代码增强的相关性、代码复杂度与代码缺陷的相关性、代码复杂度与代码增强的相关性等等。如此处所使用的“代码搅动”(也称搅动率)指示软件程序中的函数在指定的时间段期间被改变的次数。“代码覆盖”指示由一个或多个软件测试所测试的软件程序的量。“代码复杂度”指示被包括在软件程序的开始点和软件程序的结束点之间的路径数量。将会领会,这样的重新分析可使用过滤器基于软件程序的软件开发生命周期期间所延续下来的各个进程来执行。
软件程序的风险可基于观测到的相关模式(诸如以上所讨论的)来确定。
与用于执行分析软件程序的风险的常规技术相比,在此描述的示例性技术具有多种益处。例如,各示例技术可能能够通过分析来自各种(例如所有)相关组件的输入来自动地将软件程序中的缺陷链接到引入该缺陷的原始的源代码改变,相关组件包括但不限于缺陷追踪工具(例如,Product StudioTM、Visual团队服务器(VSTS)等)、源控制系统(例如,Source DepoTM、VSTS等)以及软件程序的二进制码和/或符号。这类技术可连续地执行,并且结果可被保持对之前的开发周期中的任意一个可用。
确定将缺陷引入软件程序的代码改变可促成对软件程序的风险评估以及在软件程序的开发期间的过程纠正。这一确定可促成将用于解决该缺陷的资源转移到软件程序的正确组件和/或合适的工程团队。这一确定可促进提供关于进程的有效性的反馈供工程团队采用。这一确定可促进提供基于特定模式的缺陷的关于个人和他们的团队的反馈。使用该示例技术,对于软件程序的质量的进行中的改进可以相对更可预期。该示例技术可比传统技术更可缩放得多。
图1是根据一实施例的示例自动风险分析系统100的框图。一般来说,自动风险分析系统100操作来响应于从用户(例如,软件工程师、应用开发者等)接收的请求(例如超文本传输协议(HTTP)请求)向所述用户提供信息。信息可包括文档(例如网页、图像、视频文件等等)、可执行程序的输出、和/或任何其他合适类型的信息。根据本文所描述的示例实施例,自动风险分析系统100执行对软件的自动风险分析。关于对软件的自动风险分析的技术的细节在以下讨论中提供。
如图1所示,自动风险分析系统100包括多个用户系统102A-102M、网络104、以及多个服务器106A-106N。用户系统102A-102M与服务器106A-106N之间的通信是使用公知的网络通信协议通过网络104实施的。网络104可以是广域网(如因特网)、局域网(LAN)、另一类型的网络、或它们的组合。
用户系统102A-102M是能够与服务器106A-106N通信的处理系统。处理系统的示例是包括能够根据指令集操纵数据的至少一个处理器的系统。例如,处理系统可以是计算机、个人数字助理等。用户系统102A-102M被配置成向服务器106A-106N提供用于请求存储在服务器106A-106N上(或可通过其他方式访问的)的信息的请求。例如,用户可使用用户所拥有的或以其他方式用户可访问的用户系统102上部署的客户端(如web浏览器、web爬行器、或其他类型的客户端)来发起执行计算机程序的请求。根据一些示例实施例,用户系统102A-102M能够访问由服务器104A-104N托管(host)的域(如网站),使得用户系统102A-102M可访问通过所述域可用的信息。这样的域可包括网页,所述网页可作为超文本标记语言(HTML)文档和在其中被链接的对象(如文件)来提供。
将认识到,任何一个或多个用户系统102A-102M都可与任何一个或多个服务器106A-106N通信。尽管图1中用户系统102A-102M被描绘为台式计算机,但是相关领域的技术人员将理解用户系统102A-102M可包括任何启用客户端的系统或设备,包括但不限于台式计算机、膝上型计算机、平板计算机、个人数字助理、蜂窝电话等等。
服务器106A-106N是能够与用户系统102A-102M通信的处理系统。服务器106A-106N被配置成执行响应于从用户接收到请求而向用户提供信息的计算机程序。例如,信息可包括文档(如网页、图像、视频文件等等)、可执行程序的输出、或任何其他合适类型的信息。根据某些示例实施例,服务器106A-106N被配置成托管各个网站,使得网站可由自动风险分析系统100的用户访问。
可由一个或多个服务器106A-106N执行的一种示例类型的计算机程序是开发者工具。开发者工具是一种可执行关于程序代码的诊断操作(例如,标识问题源、调试、剖析、控制等)的计算机程序。开发者工具的示例包括但不限于:web开发平台(例如,Windows AzureAmazon WebGoogle AppForce.等)以及集成开发环境(例如,Microsoft VisualEclipse PlatformTM等)。应该意识到,在此描述的示例技术可使用开发者工具来实现。
出于说明性目的,第一服务器106A被示为包括自动风险分析器108。自动风险分析器108被配置执行对软件的自动风险分析。例如,可在软件的开发期间自动对软件执行这一风险分析。例如,自动风险分析器108可确定软件的二进制码和软件的源文件之间、源文件和软件的函数(即子例程)之间、对软件的源代码的改变和软件的缺陷之间、对源代码的改变和被添加到软件的新特征之间、对源代码的改变和对软件的现有特征的增强之间、在软件的各属性(例如,与对软件代码的改变相关联的属性)之间等的相关性。这样的相关性可在多个时间实例(例如,周期间隔)处被确定。
自动风险分析器108可将对应于第一时间实例的相关性和对应于第二时间实例的相关性作比较来确定与底层因素有关的各种时间关系中的任意一种。底层因素的示例包括但不限于软件的新特征、软件的现有特征的增强、软件中的缺陷、软件中的函数的搅动率、软件的代码覆盖、软件的代码复杂度等。
自动风险分析器108可基于时间关系来确定软件的风险。每个风险可指示底层因素中的一个或多个将要干扰软件的执行的可能性。例如,每个风险可指示一个或多个底层因素可能干扰执行的程度。
将会认识到,自动风险分析器108可以是开发者工具(或可被包括在开发者工具中),尽管示例实施例的范围在这一方面不受限制。用于执行对软件的自动风险分析的示例技术在以下结合图2和3来更详细地讨论。
自动风险分析器108可以按各种方式被实现为执行对软件的自动风险分析,包括用硬件、软件、固件或其组合来实现。例如,自动风险分析器108可以被实现为被配置成在一个或多个处理器中执行的计算机程序代码。在另一示例中,自动风险分析器108可被实现为硬件逻辑/电子电路。在一实施例中,自动风险分析器108可被实现在片上系统(SoC)中。每个SoC可包括集成电路芯片,该集成电路芯片包括以下一个或多个:处理器(如微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多个通信接口、和/或用于执行其功能的进一步的电路和/或嵌入式固件。
出于说明的目的而不旨在为限制,自动风险分析器108被示为容纳在第一服务器106A中。将会认识到,自动风险分析器108(或其任一部分)可被并入任何一个或多个用户系统102A-102M中。例如,自动风险分析器108的客户端侧方面可被并入一个或多个用户系统102A-102M中,而自动风险分析器108的服务器侧方面可被并入第一服务器106A中。在另一示例中,自动风险分析器108可被分布在用户系统102A-102M中。在又一示例中,自动风险分析器108可被并入用户系统102A-102M中的单个用户系统中。在另一示例中,自动风险分析器108可被分布在服务器106A-106N中。在又一示例中,自动风险分析器108可被并入服务器106A-106N中的单个服务器中。
图2描绘了根据一实施例的用于执行对软件程序的自动风险分析的示例方法200的流程图。流程图200可由例如图1中显示的自动风险分析器108来执行。为了说明的目的,根据一实施例参考图3中示出的自动风险分析器300描述了流程图200,自动风险分析器300是自动风险分析器108的示例。如图3中所示,自动风险分析器300包括中间分析逻辑302、时间分析逻辑304、风险确定逻辑306、报告逻辑308、SDLC逻辑324、属性逻辑326、源控制存储328、软件组件存储330、以及缺陷存储332。中间分析逻辑302包括更新确定逻辑310、选择逻辑312、相关逻辑314、缺陷映射逻辑316、属性确定逻辑318、关系逻辑320、以及属性逻辑322。基于有关流程图200的讨论,其他结构及操作的实施例对于相关领域的技术人员将是显而易见的。
如图2所示,流程图200的方法在步骤202处开始。在步骤202、软件程序的多个源代码文件与包括在软件程序的经编译的表示中的二进制码相关以提供第一相关性。例如,二进制码可指示软件程序的版本。根据这一示例,多个源代码文件可基于二进制码所指示的软件程序的版本来标识。在一个示例实现中,源控制存储328存储软件程序的源代码文件334,而软件组件存储330存储软件程序的二进制码336。根据这一实现,相关逻辑314将源代码文件334与二进制码336相关以提供第一相关性,该第一相关性被包括在相关性344中。
在步骤204,对于多个时间段中的每个时间段,在各个时间段期间发生的对于多个源代码文件中的源代码文件的改变被基于第一相关性而映射到软件程序的经编译的表示中的缺陷以提供缺陷映射。可对于源代码文件发生的改变的示例包括但不限于对源代码文件添加子例程、从源代码文件中删除子例程、将源代码文件中的子例程替换为另一子例程、修改源代码文件(例如,其中的子例程)等。该缺陷映射可根据可扩展标记语义(XML)方案来提供,当然示例实施例在这一方面不受限制。
在示例实现中,缺陷存储332存储缺陷338,缺陷338包括关于软件程序中的缺陷的信息(例如,元数据)。关于缺陷的信息可指示软件程序的包括各个缺陷的部分、由软件程序生成的图形表示的受缺陷影响的部分(例如,右面板、左面板、上面板、下面板等)等等。软件程序的一部分的示例包括但不限于软件程序的源代码文件、软件程序的子例程、与软件程序相关联的目录、对于软件程序的特定特征的路径映射等。根据这一实现,对于每个时间段,缺陷映射逻辑316基于第一相关性将在各个时间段期间发生的对于源代码文件334中包括的源代码文件的改变映射到缺陷以提供缺陷映射346。
在步骤206,确定软件程序的属性。属性至少包括代码覆盖和/或代码复杂度。代码覆盖指示由软件测试所测试的软件程序的量。软件程序的量可以是软件程序的比例、包括在软件程序中的函数(即子例程)的数量、包括在软件程序中的函数的比例等。代码复杂度指示被包括在软件程序的开始点和软件程序的结束点之间的路径数量。代码复杂度可以直接与软件程序中的缺陷的数量有关,虽然示例实施例的范围在这一方面不受限制。将会认识到,步骤202、204和206中的任何两个或更多个可并行地执行。
在一示例实现中,属性确定逻辑318确定软件程序的属性348。例如,属性确定逻辑318可基于与从属性逻辑326接收的属性348有关的信息来确定属性348。根据这一示例,属性逻辑326可分析软件程序以确定这一信息。属性逻辑326可存储和/或生成这一信息供属性确定逻辑318检索。
在步骤208,对于每个时间段,确定该时间段的缺陷映射和属性之间的中间关系。在一示例实现中,关系逻辑320从缺陷映射逻辑316接收缺陷映射346,以及从属性确定逻辑318接收属性348。缺陷映射346包括该缺陷映射,属性348包括该属性。根据这一实现,对于每个时间段,关系逻辑320确定该时间段的缺陷映射和属性之间的中间关系350。
在步骤210,对应于第一时间段的中间关系被相关于对应于第二时间段的中间关系以提供时间关系。第一时间段可对应于软件程序的第一版本或发布,第二时间段可对应于软件程序的与第一版本或发布不同的第二版本或发布,尽管示例实施例的范围不在这一方面受限制。在一示例实现中,时间分析逻辑304从关系逻辑320接收中间关系350。根据这一实现,时间分析逻辑304将中间关系350的对应于第一时间段的子集与中间关系350的对应于第二时间段的子集相关以提供时间关系352。
在步骤212,多个因素的各个子集将干扰软件程序的执行的可能性基于该时间关系来确定。在一示例实现中,风险确定逻辑306从时间分析逻辑304接收时间关系352。根据这一实现,分析确定逻辑306基于该时间关系352来确定多个因素的各个子集将干扰软件程序的执行的可能性。例如,分析确定逻辑306可将多个因素中能够对软件程序的执行产生负面影响的子集标识为风险354。风险354可包括指示多个因素中的哪些具有相对高的可能性会干扰软件程序的执行的信息。
本领域技术人员将会认识到,以上描述的任何一个或多个步骤可被自动执行。在一些示例实施例中,可以不执行流程图200的一个或多个步骤202、204、206、208、210和/或212。此外,可以执行除步骤202、204、206、208、210和/或212以外的或代替这些步骤的步骤。例如,在示例实施例中,流程图200包括基于指定因素会干扰执行的指定可能性达到阈值而生成指示多个因素中的指定的因素相对可能干扰软件程序的执行的报告。在示例实现中,报告逻辑308生成报告356,该报告指示指定因素相对可能干扰软件程序的执行。例如,报告逻辑308可基于从风险确定逻辑306收到风险354而生成报告356。
在一个示例中,报告可指示指定因素具有相对高的可能性会干扰执行并且具有未达到阈值的可能性的因素具有相对低的可能性会干扰执行。在另一示例中,报告可标识指定的因素,并且可不标识具有未达到阈值(或者小于以上提到的阈值的第二阈值)的可能性的因素。
为了解说报告的一个合适使用,假设风险确定逻辑306确定未配置任何测试来测试软件程序的指定部分(例如,子例程、行等)。不具有被配置成对软件程序的指定部分进行测试的测试是该软件程序的风险的一个示例。进一步假设软件程序的该指定部分包括缺陷。在这一场景中,报告可基于以上提到的确定来推荐提供一个被配置成对软件程序的该指定部分进行测试的测试。
在其它场景中,报告可指示哪个(些)开发者倾向于编写复杂的代码,在开发的哪一阶段容易发生错误等。
在另一示例实施例中,步骤206包括针对多个时间段中的指定时间段确定作出了该改变的开发者。根据这一实施例,流程图200包括基于以下来确定缺陷中的至少一个归因于(例如由其引起的)开发者的子集:确定对于指定时间段中的至少一个时间段,中间关系中的至少一个位于缺陷映射中的至少一个和开发者的子集中的至少一个开发者之间。在一示例实现中,属性逻辑322确定缺陷中的至少一个归因于该开发者的子集。例如,属性逻辑322可基于从属性确定逻辑318接收的属性348来确定缺陷中的至少一个归因于该开发者的子集。根据这一示例,属性348可针对指定时间段标识作出了该改变的开发者。
在又一示例实施例中,步骤206包括确定发生了各个改变的时间实例。根据这一实施例,流程图200包括基于以下来确定缺陷中的至少一个是在指定时间实例处被引入软件程序中的:确定对于多个时间段中的至少一个时间段,中间关系中的至少一个位于缺陷映射中的至少一个和指定的时间实例之间。在一示例实现中,属性逻辑322确定发生了各个改变的时间实例。例如,属性逻辑322可基于从属性确定逻辑318接收的属性348来确定发生了各个改变的时间实例。根据这一示例,属性348可标识发生了各个改变的时间实例。
在又一示例实施例中,流程图200包括将源代码文件与软件程序的多个函数相关以提供第二相关性。多个函数中的每个函数对应于软件程序的一个相应子例程。根据这一实施例,步骤204处提供的缺陷映射进一步基于该第二相关性。在一示例实现中,相关逻辑314将源代码文件与多个函数相关以提供该第二相关性。相关逻辑314可将该第二相关性包括在相关性344中。根据这一实现,缺陷映射逻辑316基于第二相关性将每一时间段的改变映射到缺陷以提供缺陷映射。
在以上提到的实施例的一个方面,步骤206可包括确定多个函数中的每个函数的搅动率。每个搅动率指示相应函数在指定的时间段期间被改变的次数。在一示例实现中,属性确定逻辑318确定多个函数中每个函数的搅动率。
在这一实施例的另一方面,流程图200可包括从软件程序的函数库中选择多个函数。以此方式选择多个函数可被称为对函数库进行过滤。根据这一负面,函数库包括该多个函数以及至少一个未被选择的函数。未被选择的函数是没有被选择包含在该多个函数中的函数。例如,被包括在软件程序的测试版本中的函数库中的一个或多个函数可能未被包括在软件程序的发布版本中。根据这一示例,执行对于一个或多个函数的自动风险分析可导致对资源和时间的不必要消耗。进一步根据这一方面,将多个源代码文件与多个函数相关以提供第二相关性是响应于从函数库中选择多个函数而执行的。
在一个示例实现中,选择逻辑312从函数库中选择多个函数。选择逻辑312可生成函数标识符342,函数标识符342指定该多个函数。根据这一实现,相关逻辑314响应于从选择逻辑312接收函数标识符342而将多个源代码文件与该多个函数相关。
根据另一示例实施例,流程图200包括确定第一时间段的改变中的指定的改变与被添加到软件程序的指定的新功能有关。根据这一实施例,流程图200进一步包括将指定的改变与指定的改变所带来的一个或多个新功能相关以提供一个或多个相应的第二相关性。一个或多个新功能包括指定的新功能。进一步根据这一实施例,步骤208包括对于第一时间段,确定该第一时间段的缺陷映射、属性、以及第二相关性之间的中间关系。
在一示例实现中,更新确定逻辑310确定指定的改变与指定的新功能有关。更新确定逻辑310可生成更新信息340,更新信息340指示该指定的改变与指定的新功能有关。根据这一实现,相关逻辑314将指定的改变与该指定的改变带来的一个或多个新功能相关以提供一个或多个相应的第二相关性。例如,相关逻辑314可基于接收到更新信息340而将指定的改变与该指定的改变带来的一个或多个新功能相关。进一步根据这一实现,对于第一时间段,关系逻辑320确定该第一时间段的缺陷映射、属性、以及第二相关性之间的中间关系。
在又一示例实施例中,流程图200包括确定第一时间段的改变中的指定的改变与对软件程序的现有功能的指定的增强有关。根据这一实施例,流程图200进一步包括将指定的改变与该指定的改变所带来的增强相关以提供相应的第二相关性。增强包括指定的增强。进一步根据这一实施例,步骤208包括对于第一时间段,确定该第一时间段的缺陷映射、属性、以及第二相关性之间的中间关系。
在一示例实现中,更新确定逻辑310确定指定的改变与对于软件程序的现有功能的指定的增强有关。更新确定逻辑310可生成更新信息340,更新信息340指示该指定的改变与指定的增强有关。根据这一实现,相关逻辑314将指定的改变与该指定的改变所带来的增强相关以提供相应的第二相关性。例如,相关逻辑314可基于接收到更新信息340而将指定的改变与该指定的改变带来的增强相关联。进一步根据这一实现,对于第一时间段,关系逻辑320确定该第一时间段的缺陷映射、属性、以及第二相关性之间的中间关系。
SDLC逻辑324生成关于软件程序的系统开发生命周期(SDLC)信息。这一信息可适用于任何合适的方法,方法包括但不限于“瀑布法”、“螺旋法”、“敏捷软件开发”、“快速原型”、“增量式”、和/或“同步和稳定”。中间分析逻辑302能够处理适用于方法的任何合适的组合的SDLC信息。例如,中间分析逻辑302能够处理来自分开的进程和具有此处描述的各种相关性的数据源的信息,以提供中间关系350供时间分析逻辑304的进一步处理。
将会认识到,自动风险分析器300可不包括中间分析逻辑302、时间分析逻辑304、风险确定逻辑306、报告逻辑308、更新确定逻辑310、选择逻辑312、相关逻辑314、缺陷映射逻辑316、属性确定逻辑318、关系逻辑320、属性逻辑322、SDLC逻辑324、属性逻辑326、源控制存储328、软件组件存储330、和/或缺陷存储332中的一个或多个。此外,自动风险分析器300可包括作为中间分析逻辑302、时间分析逻辑304、风险确定逻辑306、报告逻辑308、更新确定逻辑310、选择逻辑312、相关逻辑314、缺陷映射逻辑316、属性确定逻辑318、关系逻辑320、属性逻辑322、SDLC逻辑324、属性逻辑326、源控制存储328、软件组件存储330、和/或缺陷存储332的补充或替代的组件。
用户系统102A-102M中的任意一个或多个、服务器106A-106N中的任意一个或多个、自动风险额分析器108、中间分析逻辑302、时间分析逻辑304、风险确定逻辑306、报告逻辑308、更新确定逻辑310、选择逻辑312、相关逻辑314、缺陷映射逻辑316、属性确定逻辑318、关系逻辑320、属性逻辑322、SDLC逻辑324、属性逻辑326、源控制存储328、软件组件存储330、和/或缺陷存储332和/或流程图200可以硬件、软件、固件、或以上的任意组合的形式来实现。
例如,用户系统102A-102M中的任意一个或多个、服务器106A-106N中的任意一个或多个、自动风险分析器108、中间分析逻辑302、时间分析逻辑304、风险确定逻辑306、报告逻辑308、更新确定逻辑310、选择逻辑312、相关逻辑314、缺陷映射逻辑316、属性确定逻辑318、关系逻辑320、属性逻辑322、SDLC逻辑324、属性逻辑326、源控制存储328、软件组件存储330、缺陷存储332和/或流程图200可以配置成在一个或多个处理器中执行的计算机程序代码的形式来实现。
在另一实例中,用户系统102A-102M中的任意一个或多个、服务器106A-106N中的任意一个或多个、自动风险分析器108、中间分析逻辑302、时间分析逻辑304、风险确定逻辑306、报告逻辑308、更新确定逻辑310、选择逻辑312、相关逻辑314、缺陷映射逻辑316、属性确定逻辑318、关系逻辑320、属性逻辑322、SDLC逻辑324、属性逻辑326、源控制存储328、软件组件存储330、缺陷存储332和/或流程图200可被实现为硬件逻辑/电气电路。
例如,在一个实施例中,用户系统102A-102M中的任意一个或多个、服务器106A-106N中的任意一个或多个、自动风险分析器108、中间分析逻辑302、时间分析逻辑304、风险确定逻辑306、报告逻辑308、更新确定逻辑310、选择逻辑312、相关逻辑314、缺陷映射逻辑316、属性确定逻辑318、关系逻辑320、属性逻辑322、SDLC逻辑324、属性逻辑326、源控制存储328、软件组件存储330、缺陷存储332和/或流程图200可被实现片上系统(SoC)。SoC可包括集成电路芯片,该集成电路芯片包括以下一个或多个:处理器(如微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多个通信接口、和/或用于执行其功能的更多的电路和/或嵌入的固件。
III.示例计算机系统实现
图4描绘其中可实现各实施例的示例计算机400。图1中所示的用户系统102A-102M中的任何一个或多个和/或服务器106A-106N中的任何一个或多个可使用计算机400来实现,包括计算机400的一个或多个特征和/或替代特征。计算机400可以是例如常规个人计算机、移动计算机或工作站形式的通用计算设备,或者计算机400可以是专用计算设备。此处所提供的对计算机400的描述只是为了说明,并不是限制性的。实施例也可以在相关领域的技术人员所知的更多类型的计算机系统中实现。
如图4所示,计算机400包括处理单元402、系统存储器404和总线406,总线404将包括系统存储器402在内的各种系统组件耦合到处理单元402。总线406表示若干类型的总线结构中的任何一种总线结构的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及处理器或使用各种总线体系结构中的任何一种的局部总线。系统存储器404包括只读存储器(ROM)408和随机存取存储器(RAM)410。基本输入/输出系统412(BIOS)储存在ROM408中。
计算机400还具有一个或多个以下驱动器:用于读写硬盘的硬盘驱动器414、用于读或写可移动磁盘416的磁盘驱动器418、以及用于读或写诸如CD ROM、DVD ROM或其他光介质之类的可移动光盘420的光盘驱动器422。硬盘驱动器414、磁盘驱动器416,以及光驱动器420分别通过硬盘驱动器接口424、磁盘驱动器接口426,以及光学驱动器接口428连接到总线406。驱动器以及它们相关联的计算机可读介质为计算机提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述了硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等等之类的其他类型的计算机可读存储介质来储存数据。
数个程序模块可被储存在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统430、一个或多个应用程序432、其他程序模块434以及程序数据436。应用程序432或程序模块434可包括例如用于实现此处所描述的自动风险分析器108、中间分析逻辑302、时间分析逻辑304、风险确定逻辑306、报告逻辑308、更新确定逻辑310、选择逻辑312、相关逻辑314、缺陷映射逻辑316、属性确定逻辑318、关系逻辑320、属性逻辑322、SDLC逻辑324、属性逻辑326、源控制存储328、软件组件存储330、缺陷存储332、和/或流程图200(包括流程图200的任何步骤)中的任何一个或多个的计算机程序逻辑。
用户可以通过诸如键盘438和定点设备440之类的输入设备向计算机400中输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、触敏屏、相机、加速度计、陀螺仪等等。这些及其他输入设备常常通过耦合到总线406的串行端口接口442连接到处理单元402,但是,也可以通过其他接口,诸如并行端口、游戏端口或通用串行总线(USB),来进行连接。
显示设备444(例如监视器)也通过诸如视频适配器446之类的接口连接到总线406。除了显示设备444之外,计算机400还可包括其他外围输出设备(未示出),如扬声器和打印机。
计算机400通过网络接口或适配器448、调制解调器450、或用于通过网络建立通信的其他装置连接到网络452(例如,因特网)。调制解调器452(可以是内置的或外置的)通过串行端口接口442连接到总线406。
如此处所用的,术语“计算机程序介质”、“计算机可读介质”以及“计算机可读存储介质”被用于泛指介质,诸如与硬盘驱动器414相关联的硬盘、可移动磁盘418、可移动光盘422,以及其他介质,诸如闪存卡、数字视频盘、随机读取存储器(RAM)、只读存储器(ROM)等。这些计算机可读存储介质与通信介质相区别且不重叠(不包括通信介质)。通信介质通常将计算机可读指令、数据结构、程序模块或者其它数据包含在已调制数据信号中,如载波。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如声学、RF、红外线的无线介质和其它无线介质。各个示例实施例也针对这些通信介质。
如上文所指示的,计算机程序和模块(包括应用程序432及其他程序模块434)可被储存在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程序也可以通过网络接口450或串行端口接口442来接收。这些计算机程序在由应用程序执行或加载时使得计算机400能够实现此处所讨论的实施例的特征。相应地,这样的计算机程序表示计算机400的控制器。
示例实施例还涉及包括存储在任何计算机可用介质上的软件(例如计算机可读指令)的计算机程序产品。这样的软件,当在一个或多个数据处理设备中执行时,使数据处理设备如此处所描述的那样操作。实施例可使用现在已知或将来知晓的任何计算机可使用或计算机可读介质。计算机可读介质的示例包括,但不仅限于,诸如RAM、硬盘驱动器、软盘、CDROM、DVD ROM、zip磁盘、磁带、磁存储设备、光存储设备、基于MEMS的存储设备、基于纳米技术的存储设备等等之类的存储设备。
IV.结语
虽然以上描述了不同的实施例,但应当理解的是它们只是作为示例而非限制。对于相关领域的技术人员显而易见的是,可以对其做出各种改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。
Claims (10)
1.一种用于自动分析软件风险的方法,包括:
将软件程序的多个源代码文件与包括在所述软件程序的经编译的表示中的多个二进制码相关以提供多个第一相关性;
对于多个时间段中的每个时间段,基于所述多个第一相关性将在各个时间段期间发生的对于所述多个源代码文件中的一个或多个源代码文件的一个或多个改变映射到所述软件程序的经编译的表示中的一个或多个缺陷以提供一个或多个缺陷映射;
确定所述软件程序的一个或多个属性,所述软件程序的所述一个或多个属性包括代码覆盖或代码复杂度中的至少一个,所述代码覆盖指示所述软件程序由一个或多个软件测试所测试的量,所述代码复杂度指示被包括在所述软件程序的开始点和所述软件程序的结束点之间的路径的数目;
对于所述多个时间段中的每个时间段,确定该时间段的一个或多个缺陷映射和所述一个或多个属性之间的一个或多个中间关系;
将对应于所述多个时间段中的第一时间段的一个或多个中间关系与对应于所述多个时间段中的第二时间段的一个或多个中间关系相关以提供一个或多个时间关系;以及
基于所述一个或多个时间关系来确定多个因素的一个或多个相应子集将干扰所述软件程序的执行的一个或多个可能性。
2.如权利要求1所述的方法,其特征在于,进一步包括:
将所述多个源代码文件与所述软件程序的多个函数相关以提供多个第二相关性,每个函数对应于所述软件程序的一个相应的子例程;
其中映射每个时间段的一个或多个改变包括:
进一步基于所述多个第二相关性来将每个时间段的一个或多个改变映射到所述一个或多个缺陷以提供所述一个或多个缺陷映射。
3.如权利要求2所述的方法,其特征在于,确定所述一个或多个属性包括:
确定所述多个函数中的每个函数的搅动率,每个搅动率指示在指定的时间段期间相应函数被改变的次数。
4.如权利要求2所述的方法,其特征在于,进一步包括:
从所述软件程序的函数库中选择所述多个函数,所述函数库包括所述多个函数和至少一个未被选择的函数;
其中将所述多个源代码文件与所述多个函数相关包括:
响应于从所述函数库中选择所述多个函数来将所述多个源代码文件与所述多个函数相关以提供所述多个第二相关性。
5.如权利要求1所述的方法,其特征在于,进一步包括:
确定所述第一时间段的一个或多个改变中的指定的改变与被添加到所述软件程序的指定的新功能有关;以及
将所述指定的改变与所述指定的改变带来的一个或多个新功能相关以提供一个或多个相应的第二相关性,所述一个或多个新功能包括所述指定的新功能;
其中确定每个时间段的一个或多个中间关系包括:
对于第一时间段,确定所述第一时间段的一个或多个缺陷映射、所述一个或多个属性、以及所述一个或多个第二相关性之间的一个或多个中间关系。
6.一种用于自动分析软件风险的系统,包括:
被配置成将软件程序的多个源代码文件与包括在所述软件程序的经编译的表示中的多个二进制码相关以提供多个第一相关性的相关逻辑;
被配置成对于多个时间段中的每个时间段,基于所述多个第一相关性将在各个时间段期间发生的对于所述多个源代码文件中的一个或多个源代码文件的一个或多个改变映射到所述软件程序的经编译的表示中的一个或多个缺陷以提供一个或多个缺陷映射的缺陷映射逻辑;
被配置成确定所述软件程序的一个或多个属性的属性确定逻辑,所述软件程序的所述一个或多个属性包括代码覆盖或代码复杂度中的至少一个,所述代码覆盖指示所述软件程序由一个或多个软件测试所测试的量,所述代码复杂度指示被包括在所述软件程序的开始点和所述软件程序的结束点之间的路径的数目;
被配置成对于所述多个时间段中的每个时间段,确定该时间段的一个或多个缺陷映射和所述一个或多个属性之间的一个或多个中间关系的关系逻辑;
被配置成将对应于所述多个时间段中的第一时间段的一个或多个中间关系与对应于所述多个时间段中的第二时间段的一个或多个中间关系相关以提供一个或多个时间关系的时间分析逻辑;以及
被配置成基于所述一个或多个时间关系来确定多个因素的一个或多个相应子集将干扰所述软件程序的执行的一个或多个可能性的风险确定逻辑。
7.如权利要求6所述的系统,其特征在于,所述一个或多个属性的子集标识作出了所述多个时间段的一个或多个指定的时间段的一个或多个改变的一个或多个开发者;以及
其中所述系统还包括:
属性逻辑,所述属性逻辑被配置成基于对于所述一个或多个指定的时间段中的至少一个时间段,所述一个或多个中间关系中的至少一个是否位于所述一个或多个缺陷映射中的至少一个和所述一个或多个开发者的子集中的至少一个开发者之间来确定所述一个或多个缺陷中的至少一个是否归因于所述一个或多个开发者的子集。
8.如权利要求6所述的系统,其特征在于,所述一个或多个属性的子集标识发生了所述一个或多个相应改变的一个或多个时间实例;以及
其中所述系统还包括:
属性逻辑,所述属性逻辑被配置成基于对于所述多个指定的时间段中的至少一个,所述一个或多个中间关系中的至少一个是否位于所述一个或多个缺陷映射中的至少一个和所述一个或多个指定的时间实例之间来确定所述一个或多个缺陷中的至少一个是否在所述一个或多个时间实例中的指定的时间实例中被引入所述软件程序。
9.如权利要求6所述的系统,其特征在于,进一步包括:
被配置成确定所述第一时间段的一个或多个改变中的指定的改变是否与对于所述软件程序的现有功能的指定的增强有关的更新确定逻辑;
其中所述相关逻辑被配置成响应于所述指定的改变将所述指定的增强与所述现有功能相关来将所述指定的改变与所述指定的改变带来的一个或多个增强相关以提供一个或多个相应的第二相关性,所述一个或多个增强包括所述指定的增强;以及
其中所述关系逻辑被配置成对于所述第一时间段,响应于所述指定的改变将所述指定的增强与所述现有功能相关来确定所述第一时间段的一个或多个缺陷映射、所述一个或多个属性、以及所述一个或多个第二相关性之间的一个或多个中间关系。
10.一种用于自动分析软件风险的系统,包括:
用于将软件程序的多个源代码文件与包括在所述软件程序的经编译的表示中的多个二进制码相关以提供多个第一相关性的装置;
用于对于多个时间段中的每个时间段,基于所述多个第一相关性将在各个时间段期间发生的对于所述多个源代码文件中的一个或多个源代码文件的一个或多个改变映射到所述软件程序的经编译的表示中的一个或多个缺陷以提供一个或多个缺陷映射的装置;
用于确定所述软件程序的一个或多个属性的装置,所述软件程序的所述一个或多个属性包括代码覆盖或代码复杂度中的至少一个,所述代码覆盖指示所述软件程序由一个或多个软件测试所测试的量,所述代码复杂度指示被包括在所述软件程序的开始点和所述软件程序的结束点之间的路径的数目;
用于对于所述多个时间段中的每个时间段,确定该时间段的一个或多个缺陷映射和所述一个或多个属性之间的一个或多个中间关系的装置;
用于将对应于所述多个时间段中的第一时间段的一个或多个中间关系与对应于所述多个时间段中的第二时间段的一个或多个中间关系相关以提供一个或多个时间关系的装置;以及
用于基于所述一个或多个时间关系来确定多个因素的一个或多个相应子集将干扰所述软件程序的执行的一个或多个可能性的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/826,433 | 2013-03-14 | ||
US13/826,433 US9448792B2 (en) | 2013-03-14 | 2013-03-14 | Automatic risk analysis of software |
PCT/US2014/021454 WO2014149903A1 (en) | 2013-03-14 | 2014-03-07 | Automatic risk analysis of software |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105190548A CN105190548A (zh) | 2015-12-23 |
CN105190548B true CN105190548B (zh) | 2019-06-04 |
Family
ID=50442624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480015247.9A Active CN105190548B (zh) | 2013-03-14 | 2014-03-07 | 用于自动分析软件风险的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (3) | US9448792B2 (zh) |
EP (1) | EP2972805A1 (zh) |
CN (1) | CN105190548B (zh) |
WO (1) | WO2014149903A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9448792B2 (en) * | 2013-03-14 | 2016-09-20 | Microsoft Technology Licensing, Llc | Automatic risk analysis of software |
US9448787B2 (en) * | 2013-04-18 | 2016-09-20 | Express Scripts, Inc. | Methods and systems for analyzing software development risks |
US8984485B2 (en) * | 2013-05-01 | 2015-03-17 | International Business Machines Corporation | Analysis of source code changes |
US9146838B2 (en) * | 2013-06-03 | 2015-09-29 | The Mathworks, Inc. | Code and model coverage as a time series |
US9348585B2 (en) * | 2013-08-20 | 2016-05-24 | Red Hat, Inc. | System and method for estimating impact of software updates |
EP3063634A4 (en) * | 2013-10-30 | 2017-06-28 | Hewlett-Packard Enterprise Development LP | Software commit risk level |
US20150278526A1 (en) * | 2014-03-25 | 2015-10-01 | Wipro Limited | Computerized systems and methods for presenting security defects |
US10789563B2 (en) * | 2014-04-11 | 2020-09-29 | International Business Machines Corporation | Building confidence of system administrator in productivity tools and incremental expansion of adoption |
US10275333B2 (en) * | 2014-06-16 | 2019-04-30 | Toyota Jidosha Kabushiki Kaisha | Risk analysis of codebase using static analysis and performance data |
US10102105B2 (en) * | 2014-06-24 | 2018-10-16 | Entit Software Llc | Determining code complexity scores |
US10552302B2 (en) * | 2014-07-03 | 2020-02-04 | Opshub, Inc. | System and method for analyzing risks present in a software program code |
US10127142B2 (en) * | 2014-10-09 | 2018-11-13 | Hcl Technologies Ltd. | Defect classification and association in a software development environment |
US20160246698A1 (en) * | 2015-02-21 | 2016-08-25 | Hcl Technologies Limited | Change based testing of a javascript software application |
US9626277B2 (en) * | 2015-04-01 | 2017-04-18 | Microsoft Technology Licensing, Llc | Anomaly analysis for software distribution |
JP6748307B2 (ja) | 2017-02-01 | 2020-08-26 | ジーメンス インダストリー ソフトウェア エヌ・フェーSiemens Industry Software NV | ソフトウェアプログラムを検証するための方法およびシステム |
US10867128B2 (en) * | 2017-09-12 | 2020-12-15 | Microsoft Technology Licensing, Llc | Intelligently updating a collaboration site or template |
CN109508981A (zh) * | 2017-09-15 | 2019-03-22 | 富士通株式会社 | 用于测试智能合约的方法和装置 |
US10742500B2 (en) | 2017-09-20 | 2020-08-11 | Microsoft Technology Licensing, Llc | Iteratively updating a collaboration site or template |
CN108897678B (zh) * | 2018-06-20 | 2021-10-15 | 中国联合网络通信集团有限公司 | 静态代码检测方法和静态代码检测系统、存储设备 |
US10977156B2 (en) * | 2018-10-10 | 2021-04-13 | International Business Machines Corporation | Linking source code with compliance requirements |
US11347629B2 (en) * | 2018-10-31 | 2022-05-31 | Dell Products L.P. | Forecasting a quality of a software release using machine learning |
US10282248B1 (en) * | 2018-11-27 | 2019-05-07 | Capital One Services, Llc | Technology system auto-recovery and optimality engine and techniques |
US10275331B1 (en) | 2018-11-27 | 2019-04-30 | Capital One Services, Llc | Techniques and system for optimization driven by dynamic resilience |
US20200257523A1 (en) * | 2019-02-11 | 2020-08-13 | International Business Machines Corporation | Application feature change detection |
US10686645B1 (en) | 2019-10-09 | 2020-06-16 | Capital One Services, Llc | Scalable subscriptions for virtual collaborative workspaces |
US11436001B2 (en) | 2020-11-24 | 2022-09-06 | Red Hat, Inc. | Mitigating software-update risks for end users |
CN112925709A (zh) * | 2021-02-26 | 2021-06-08 | 西安交通大学 | 基于多源特征空间的微服务可维护性评估方法 |
US11645188B1 (en) | 2021-11-16 | 2023-05-09 | International Business Machines Corporation | Pull request risk prediction for bug-introducing changes |
CN113986602B (zh) * | 2021-12-27 | 2022-04-15 | 广州锦行网络科技有限公司 | 软件识别方法、装置、存储介质和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102096632A (zh) * | 2009-12-10 | 2011-06-15 | Sap股份公司 | 代码变化与测试之间的桥接 |
US8276123B1 (en) * | 2008-07-22 | 2012-09-25 | Juniper Networks, Inc. | Adaptive regression test selection within testing environments |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558413A (en) * | 1983-11-21 | 1985-12-10 | Xerox Corporation | Software version management system |
DE69230452T2 (de) * | 1991-08-19 | 2000-08-24 | Sun Microsystems, Inc. | Verfahren und Vorrichtung zur Änderungskontrolle in mehreren Entwicklungsumgebungen |
EP0786725A1 (en) | 1995-10-30 | 1997-07-30 | Texas Instruments Incorporated | Improvements in or relating to the prediction of product defects |
US6513154B1 (en) * | 1996-10-21 | 2003-01-28 | John R. Porterfield | System and method for testing of computer programs in programming effort |
US5978587A (en) * | 1997-11-13 | 1999-11-02 | Unisys Corp. | Method for propagating source code locations into objects in a compiler |
US6895578B1 (en) * | 1999-01-06 | 2005-05-17 | Parasoft Corporation | Modularizing a computer program for testing and debugging |
US6298317B1 (en) * | 1999-01-25 | 2001-10-02 | Hewlett-Packard Company | Enhanced functional testing through the filtration of non-subtle mutations |
US7757097B2 (en) * | 1999-09-03 | 2010-07-13 | Purdue Research Foundation | Method and system for tamperproofing software |
US7146608B1 (en) * | 1999-09-28 | 2006-12-05 | Cisco Technology, Inc. | Method and system for a software release process |
US6748584B1 (en) * | 1999-12-29 | 2004-06-08 | Veritas Operating Corporation | Method for determining the degree to which changed code has been exercised |
US20030009740A1 (en) | 2001-06-11 | 2003-01-09 | Esoftbank (Beijing) Software Systems Co., Ltd. | Dual & parallel software development model |
US7401322B1 (en) * | 2001-09-25 | 2008-07-15 | Emc Corporation | Software debugging tool |
US7222138B2 (en) * | 2002-02-20 | 2007-05-22 | Sun Microsystems, Inc. | Versioning application programming interface and method for using versioning functionality |
US7028290B2 (en) * | 2002-04-29 | 2006-04-11 | Microsoft Corporation | Method and apparatus for prioritizing software tests |
US7089552B2 (en) * | 2002-08-29 | 2006-08-08 | Sun Microsystems, Inc. | System and method for verifying installed software |
US7334219B2 (en) * | 2002-09-30 | 2008-02-19 | Ensco, Inc. | Method and system for object level software testing |
US8225302B2 (en) * | 2003-02-13 | 2012-07-17 | Lawrence Taylor Waugh | System and method for managing source code and acquiring metrics in software development |
US20040260678A1 (en) * | 2003-06-18 | 2004-12-23 | Microsoft Corporation | State based configuration failure detection using checkpoint comparison |
US7496904B2 (en) * | 2003-06-26 | 2009-02-24 | Microsoft Corporation | Mining dependencies for testing and risk management |
US7603653B2 (en) | 2004-03-15 | 2009-10-13 | Ramco Systems Limited | System for measuring, controlling, and validating software development projects |
US20060190922A1 (en) | 2005-02-24 | 2006-08-24 | Franz Chen | Method and system for managing and tracking software development lifecycles |
US7840944B2 (en) * | 2005-06-30 | 2010-11-23 | Sap Ag | Analytical regression testing on a software build |
US7614043B2 (en) * | 2005-08-26 | 2009-11-03 | Microsoft Corporation | Automated product defects analysis and reporting |
US7694181B2 (en) | 2005-12-12 | 2010-04-06 | Archivas, Inc. | Automated software testing framework |
US20070226546A1 (en) | 2005-12-22 | 2007-09-27 | Lucent Technologies Inc. | Method for determining field software reliability metrics |
US7617415B1 (en) * | 2006-07-31 | 2009-11-10 | Sun Microsystems, Inc. | Code coverage quality estimator |
US8276126B2 (en) * | 2006-11-08 | 2012-09-25 | Oracle America, Inc. | Determining causes of software regressions based on regression and delta information |
US8713532B2 (en) * | 2007-01-19 | 2014-04-29 | Microsoft Corporation | Debugging using code analysis |
US8375361B2 (en) * | 2007-05-29 | 2013-02-12 | International Business Machines Corporation | Identifying changes in source code |
US8166463B2 (en) * | 2007-09-28 | 2012-04-24 | International Business Machines Corporation | Method of code coverage utilizing efficient dynamic mutation of logic (EDML) |
US8627287B2 (en) * | 2007-11-29 | 2014-01-07 | Microsoft Corporation | Prioritizing quality improvements to source code |
US7506312B1 (en) * | 2008-01-31 | 2009-03-17 | International Business Machines Corporation | Method and system for automatically determining risk areas to retest |
US8166464B2 (en) * | 2008-06-27 | 2012-04-24 | Microsoft Corporation | Analysis and detection of soft hang responsiveness program errors |
US8271961B1 (en) * | 2008-08-13 | 2012-09-18 | Intuit Inc. | Method and system for predictive software system quality measurement |
US8312430B2 (en) * | 2008-08-27 | 2012-11-13 | International Business Machines Corporation | Guarding code check-in with test case execution results |
US8171458B2 (en) * | 2008-10-10 | 2012-05-01 | International Business Machines Corporation | Method for source-related risk detection and alert generation |
US8195983B2 (en) * | 2008-10-22 | 2012-06-05 | International Business Machines Corporation | Method and system for evaluating software quality |
US8572093B2 (en) * | 2009-01-13 | 2013-10-29 | Emc Corporation | System and method for providing a license description syntax in a software due diligence system |
US8479161B2 (en) * | 2009-03-18 | 2013-07-02 | Oracle International Corporation | System and method for performing software due diligence using a binary scan engine and parallel pattern matching |
US8307351B2 (en) * | 2009-03-18 | 2012-11-06 | Oracle International Corporation | System and method for performing code provenance review in a software due diligence system |
US8413108B2 (en) * | 2009-05-12 | 2013-04-02 | Microsoft Corporation | Architectural data metrics overlay |
US8539282B1 (en) * | 2009-06-30 | 2013-09-17 | Emc Corporation | Managing quality testing |
US8495583B2 (en) | 2009-09-11 | 2013-07-23 | International Business Machines Corporation | System and method to determine defect risks in software solutions |
US20110161938A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Including defect content in source code and producing quality reports from the same |
US8453117B2 (en) * | 2010-03-09 | 2013-05-28 | Fujitsu Limited | Providing software validation as a service |
US8776007B2 (en) * | 2010-05-07 | 2014-07-08 | Accenture Global Services Limited | Assessment of software code development |
US8533537B2 (en) * | 2010-05-13 | 2013-09-10 | Bank Of America Corporation | Technology infrastructure failure probability predictor |
US8230268B2 (en) * | 2010-05-13 | 2012-07-24 | Bank Of America Corporation | Technology infrastructure failure predictor |
US8387018B2 (en) * | 2010-09-01 | 2013-02-26 | International Business Machines Corporation | Fault localization using directed test generation |
US9542160B2 (en) | 2010-10-29 | 2017-01-10 | Hewlett Packard Enterprise Development Lp | System and method for software development report generation |
CA2774575A1 (en) * | 2011-04-19 | 2012-10-19 | Monoidics Ltd. | System and method for display of software quality |
US9542176B2 (en) * | 2012-08-20 | 2017-01-10 | Microsoft Technology Licensing, Llc | Predicting software build errors |
US10108526B2 (en) * | 2012-11-27 | 2018-10-23 | Purdue Research Foundation | Bug localization using version history |
US9448792B2 (en) * | 2013-03-14 | 2016-09-20 | Microsoft Technology Licensing, Llc | Automatic risk analysis of software |
US9594549B2 (en) * | 2013-03-15 | 2017-03-14 | International Business Machines Corporation | Automated patch generation |
-
2013
- 2013-03-14 US US13/826,433 patent/US9448792B2/en active Active
-
2014
- 2014-03-07 EP EP14716079.0A patent/EP2972805A1/en not_active Withdrawn
- 2014-03-07 CN CN201480015247.9A patent/CN105190548B/zh active Active
- 2014-03-07 WO PCT/US2014/021454 patent/WO2014149903A1/en active Application Filing
-
2016
- 2016-08-06 US US15/230,379 patent/US9864678B2/en active Active
-
2017
- 2017-12-05 US US15/831,959 patent/US10747652B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8276123B1 (en) * | 2008-07-22 | 2012-09-25 | Juniper Networks, Inc. | Adaptive regression test selection within testing environments |
CN102096632A (zh) * | 2009-12-10 | 2011-06-15 | Sap股份公司 | 代码变化与测试之间的桥接 |
Also Published As
Publication number | Publication date |
---|---|
EP2972805A1 (en) | 2016-01-20 |
CN105190548A (zh) | 2015-12-23 |
US20160342503A1 (en) | 2016-11-24 |
US20140282406A1 (en) | 2014-09-18 |
WO2014149903A1 (en) | 2014-09-25 |
US20180196740A1 (en) | 2018-07-12 |
US9864678B2 (en) | 2018-01-09 |
US9448792B2 (en) | 2016-09-20 |
US10747652B2 (en) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105190548B (zh) | 用于自动分析软件风险的方法和系统 | |
EP3433732B1 (en) | Converting visual diagrams into code | |
CN105190597B (zh) | 基于社交的信息推荐系统 | |
US9021428B2 (en) | Troubleshooting visuals and transient expressions in executing applications | |
CN106471476B (zh) | 用于对经优化代码的编辑并继续以及增强的经优化调试的技术 | |
US9336023B2 (en) | Visual generation of mobile applications based on data models | |
Moran et al. | Detecting and summarizing GUI changes in evolving mobile apps | |
US8826240B1 (en) | Application validation through object level hierarchy analysis | |
US20110173589A1 (en) | Cross-Browser Interactivity Testing | |
US20130326467A1 (en) | Application quality parameter measurement-based development | |
Silva et al. | A survey on the tool support for the automatic evaluation of mobile accessibility | |
US20130326465A1 (en) | Portable Device Application Quality Parameter Measurement-Based Ratings | |
US20110191676A1 (en) | Cross-Browser Interactivity Recording, Playback, and Editing | |
WO2020033071A1 (en) | Recommending development tool extensions based on usage context telemetry | |
JP2009093521A (ja) | アクセシビリティ情報を得る方法、コンピュータ・プログラム及びアクセシビリティ情報装置 | |
CN105743736A (zh) | 自动化测试方法及系统 | |
Annuzzi et al. | Advanced Android application development | |
Kinsbruner | AA Frontend Web Developer’s Guide to Testing: Explore leading web test automation frameworks and their future driven by low-code and AI | |
Minelli | Software analytics for mobile applications | |
CN107077365A (zh) | 有选择地加载预编译的头部和/或其部分 | |
US20150185986A1 (en) | Method for integrated provision of electronic books | |
Montane et al. | Learning Android Application Development | |
Lemos et al. | Visualization, analysis, and testing of Java and Aspectj programs with multi-level system graphs | |
Campesato | Angular and Deep Learning Pocket Primer | |
Friesel | PhantomJS Cookbook |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |