用于验证软件程序的方法和系统与流程

文档序号:19418557发布日期:2019-12-14 01:11阅读:325来源:国知局
用于验证软件程序的方法和系统与流程

本公开一般地涉及模型驱动软件开发的领域,并且更具体地涉及用于在集成开发环境中验证软件程序的方法和系统。

集成开发环境(ide)是软件应用,其向软件工程师提供用于软件开发的综合设施。一些集成开发环境使能使用正式的结构化、自上而下的开发方法(诸如模型驱动软件开发)来开发软件。基于模型驱动软件开发方法,软件工程师可以使用集成开发环境来使用统一建模语言(uml)图按照规范对软件进行建模。示例性统一建模语言图可以包括顺序图,该顺序图以响应于外部事件构成系统的各种元素之间的交互的时间顺序来指定系统的行为。软件工程师使用顺序图来开发软件程序。同行评审者可以检查软件程序的源代码并确认软件程序符合规范。

通常,软件程序是使用过程编程语言(诸如‘c’编程语言)来开发的。在这样的情况下,软件工程师理解顺序图并以‘c’编程语言将期望的行为实现为软件程序。然而,软件程序可能没有与顺序图的一对一的对应关系。因此,对同行评审者来说,检查软件程序的源代码并确认符合顺序图变成耗时且麻烦的任务。

公开了用于在集成开发环境中验证软件程序的方法和系统。在一个方面中,一种在集成开发环境中验证软件程序的计算机实现的方法,包括由数据处理系统基于软件程序的规范生成包括日志记录语句的软件程序的源代码。该方法包括执行具有日志记录语句的源代码;以及基于日志记录语句在源代码的执行期间生成一个或多个日志文件。该方法包括使用一个或多个日志文件以建模语言生成源代码的表示。此外,该方法包括使用以建模语言的源代码的表示来验证软件程序的源代码。

在另一方面中,一种数据处理系统,包括:处理单元;以及存储器,其耦合到处理单元。存储器包括以机器可读指令的形式存储并且可由处理单元执行的模型驱动开发模块。模型驱动开发模块被配置成基于软件程序的规范来生成包括日志记录语句的软件程序的源代码。模型驱动开发模块被配置成执行具有日志记录语句的源代码,以及基于日志记录语句在源代码的执行期间生成一个或多个日志文件。此外,模型驱动开发模块被配置成使用一个或多个日志文件以建模语言来生成源代码的表示。

在又一方面中,一种非暂时性计算机可读存储介质,其具有存储在其中的指令,所述指令在由数据处理系统执行时,使得数据处理系统执行在上述集成开发环境中验证软件程序的方法。

提供该

技术实现要素:
来以简化的形式引入以下在随后的描述中进一步描述的概念的选择。其不旨在标识所要求保护的主题的特征或必要特征。另外,所要求保护的主题不限于解决在本公开的任何部分中指出的任何或全部缺点的实现。

本公开及其许多的伴随方面的更完整理解将容易地获得,因为在结合附图考虑时通过参考以下描述,本公开及其许多的伴随方面的更完整理解变得更好理解:

图1图示了其中可以实现实施例的数据处理系统的框图;

图2是图示根据实施例的图1的模型驱动开发模块的各种模块的框图;

图3图示了根据实施例的在集成开发环境中验证软件程序的示例性方法的过程流程图;以及

图4图示了其中可以实现实施例的另一数据处理系统的框图。

图5是示例性顺序图的示意性表示,该顺序图是基于在针对票务系统的c代码的执行期间日志记录的信息生成的。

公开了用于在集成开发环境中验证软件程序的方法和系统。参考附图描述各种实施例,其中相同的参考标号自始至终被用于指代相同的元素。在以下描述中,阐述多个具体细节以便提供对本公开的实施例的透彻理解。对于本领域技术人员将显而易见的是,不需要采用这些具体细节来实施本公开的实施例。在其他实例中,尚未详细描述公知的材料或方法以便避免不必要地模糊本公开的实施例。虽然本公开容许(susceptible)各种修改和替代形式,但其具体实施例通过示例的方式在附图中示出,并且将在本文中被详细描述。然而,应当理解的是,不存在将本公开限制到所公开的特定形式的意图,而是相反,本公开要覆盖落在本公开的精神和范围内的所有修改、等同物和替代物。

图1图示了其中实施例可以例如被实现为特别地由软件配置或以其他方式来执行如在本文中描述的过程的数据处理系统的数据处理系统100的框图。数据处理系统100可以是个人计算机、膝上型计算机、平板计算机、智能电话以及诸如此类。在图1中,数据处理系统100包括处理单元102、可访问存储器104、存储单元106、输入单元108、输出单元110和总线112。

如本文中使用的处理单元102意指任何类型的计算电路,诸如但不限于微处理器单元、微控制器、复杂指令集计算微处理器单元、精简指令集计算微处理器单元、超长指令字微处理器单元、显式并行指令计算微处理器单元、图形处理单元、数字信号处理单元或任何其他类型的处理电路。处理单元102还可以包括嵌入式控制器,诸如通用或可编程逻辑器件或阵列、专用集成电路、单芯片计算机以及诸如此类。

存储器104可以是非暂时性易失性存储器和非易失性存储器。存储器104可以被耦合以用于与处理单元102通信,诸如是计算机可读存储介质。处理单元102可以执行存储在存储器104中的机器可读指令和/或源代码。各种机器可读指令可以被存储在存储器104中并从存储器104访问。存储器104可以包括用于存储数据和机器可读指令的任何合适的元素,诸如只读存储器、随机存取存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器、硬盘驱动器、用于处置压缩盘、数字视频盘、软盘、磁带盒、存储器卡的可移动介质驱动器以及诸如此类。在本实施例中,存储器104包括集成开发环境(ide)113。ide113包括以机器可读指令的形式存储在上述存储介质中的任何存储介质上的模型驱动开发模块114,并且可以与处理单元102通信并由处理单元102执行。

当由处理单元102执行时,模型驱动开发模块114使得处理单元102使用软件程序的规范生成包括日志记录语句的软件程序的源代码。软件程序的规范以建模语言来表示。例如,使用域特定语言(dsl)来表示软件程序的规范。例如,可以为系统(例如,汽车)的嵌入式系统(例如,巡航控制系统)开发软件程序。软件程序在部署时将使得系统能够执行期望的功能(例如,在汽车中使能自动巡航模式)。模型驱动开发模块114使得处理单元102基于日志记录语句在源代码的执行期间生成日志文件,并使用日志文件以建模语言生成源代码的表示。此外,模型驱动开发模块114通过将以建模语言的源代码的表示与以建模语言的规范进行比较,使得处理单元102验证源代码与规范的符合性。模型驱动开发模块114使得处理单元102基于验证的结果来更改软件程序的源代码。在图3中更详细地描述了由处理单元102执行以实现上述功能的方法步骤。

存储单元106可以是存储规范数据库116和日志文件数据库118的非暂时性存储介质。规范数据库116存储软件程序的规范。例如,使用统一建模语言图(诸如顺序图)来表示软件程序的规范。日志文件数据库118存储在软件程序的源代码的执行期间生成的日志文件。每个日志文件包含表示使用软件程序操作的系统(例如,汽车)的元素(即,组件和/或对象)之间的交互的时间顺序的信息。

输入单元108可以包括能够接收一个或多个输入信号的输入设备键盘、触敏显示器、照相机(诸如接收基于手势的输入的照相机)等,所述输入信号诸如用于在ide113中生成和验证软件程序的用户命令。输出单元110可以是用于显示图形用户接口的显示单元,该图形用户接口可视化以建模语言的源代码的表示和源代码的验证的结果。输出单元110还提供图形用户接口,其使得用户能够与ide113交互。例如,图形用户接口使得用户能够更改源代码,使得源代码符合规范。总线112充当处理单元102、存储器104、存储单元106、输入单元108和输出单元110之间的互连。

本领域普通技术人员将理解,图1中描绘的硬件可以针对特定实现而变化。例如,附加地或代替所描绘的硬件,还可以使用其他外围设备,诸如光盘驱动器以及诸如此类、局域网(lan)、广域网(wan)、无线(例如wi-fi)适配器、图形适配器、磁盘控制器、输入/输出(i/o)适配器。所描绘的示例仅出于解释的目的而提供,并且不意味着暗示关于本公开的架构限制。

根据本公开的实施例的数据处理系统包括采用图形用户接口的操作系统。操作系统准许多个显示窗口同时被呈现在图形用户接口中,其中每个显示窗口为不同应用或为相同应用的不同实例提供接口。图形用户接口中的光标可以由用户通过定点设备来操纵。光标的位置可以被改变和/或诸如点击鼠标按钮之类的事件被生成以致动期望的响应。

如果适当修改,可以采用各种商业操作系统之一,诸如microsoftwindows™的版本,位于华盛顿雷德蒙德的microsoft公司的产品。根据如所描述的本公开来修改或创建操作系统。

所公开的实施例提供了在集成开发环境中验证软件程序的系统和方法。特别地,所公开的技术可以生成具有日志记录语句的软件程序的源代码,基于日志记录语句在源代码的执行期间生成日志文件,基于日志文件以建模语言生成源代码的表示,并使用以建模语言的源代码的表示来验证源代码。

本领域技术人员将认识到,为了简单和清楚起见,本文中未描绘或描述适用于与本公开一起使用的所有数据处理系统的完整结构和操作。代之以,仅描绘和描述了如对于本公开而言是唯一的或者对于本公开的理解是必要的那么多的数据处理系统。数据处理系统100的构造和操作的其余部分可以符合本领域中已知的各种当前实现和实施中的任何实现和实施。

图2是图示根据实施例的图1的模型驱动开发模块114的各种模块的框图。模型驱动开发模块114包括模型生成模块202、元数据标记模块204、代码生成器206、代码执行模块208、顺序图生成器210和验证模块212。

模型生成模块202被配置成生成软件程序的规范的统一建模语言(uml)图。在一些实施例中,模型生成模块202被配置成生成表示要开发的软件程序的规范的顺序图。顺序图以将由软件程序驱动的系统的不同元素(例如,组件和/或对象)之间的交互的时间顺序指定系统的行为。例如,要开发的软件程序是用于嵌入式系统的软件。元数据标记模块204被配置成标记规范的uml图中的元数据。元数据被标记到uml图中的系统的一个或多个元素(即,组件或组件的对象),以使得能够以建模语言(例如,uml)来表示源代码。软件工程师可以在生成规范的顺序图时期间将元数据标记到一个或多个元素。

代码生成器206被配置成使用uml图生成包括日志记录语句的软件程序的源代码。在示例性实现中,代码生成器206被配置成以诸如c的过程编程语言生成软件程序的源。在源代码的生成期间,代码生成器206被配置成基于标记到规范的uml图的元数据在源代码中的一个或多个位置处附加日志记录语句。日志记录语句被插入源代码中,以在源代码的执行期间日志记录系统的各个元素之间的交互。针对在uml图中被标记的元素日志记录交互。

代码执行模块208被配置成执行具有日志记录语句的源代码。代码生成器模块208还被配置成基于日志记录语句在源代码的执行期间生成日志文件。在一些实施例中,代码生成器208被配置成在源代码的执行期间基于日志记录语句来确定系统的元素之间的交互。在这些实施例中,代码生成器208被配置成以时间顺序将系统的元素之间的交互日志记录在日志文件中。

顺序图生成器210被配置成基于在源代码的执行期间日志记录在日志文件中的交互来以建模语言生成源代码的表示。在一些实施例中,顺序图生成器210被配置成基于日志记录在日志文件中的交互来生成uml图。例如,顺序图生成器210被配置成以时间顺序生成指示系统的元素之间的交互的顺序图。元素之间的交互指示当源代码被实时执行时系统的行为。

验证模块212被配置成基于由顺序图生成器210生成的uml图来验证软件程序的源代码。在一些实施例中,验证模块212被配置成将使用日志文件生成的uml图与规范的uml图进行比较。基于该比较,验证模块212被配置成确定源代码是否符合软件程序的规范。也就是说,验证模块212被配置成确定根据使用日志文件生成的uml图的系统的行为是否与根据规范的uml图的系统的行为相同。在发现源代码不符合规范的情况下,验证模块212被配置成以源代码符合规范的这样的方式在适当的位置处更改源代码。

图3图示了根据实施例的在集成开发环境中验证软件程序的示例性方法的过程流程图300。在步骤302处,使用软件程序的规范以过程编程语言生成软件程序的源代码。例如,使用‘c’编程语言生成源代码。使用顺序图表示软件程序的规范。

在步骤304处,基于在软件程序的规范中标记的元数据(即,规范的顺序图),将日志记录语句附加在软件程序的源代码中的一个或多个位置处。日志记录语句被插入在源代码中的适当位置处,使得在源代码的执行期间系统的各个元素之间的交互被日志记录在日志文件中。对应于顺序图中标记的元素(例如,组件和/或组件的对象)的交互被日志记录。日志记录语句是以检测代码的形式的,其包括具有适当名称的标记组件和方法。

考虑为票务系统编写软件程序。例如,软件程序可以被用于在经由卡成功授权支付时自动发行票证。用户开发规范,用于使用以组件(票务系统)、对象(票务服务器、自助服务终端(kiosk)、支付网关、卡授权、票务柜台等)的形式的卡支付和使用域特定语言的对象之间的交互经由自助服务终端发行票证。使用自动代码生成器来生成对应于规范的c代码。对应于标记组件、对象和规范中的对象之间的交互的日志记录语句被添加在c代码中的适当位置处。在附录‘a’中示出了用于票务系统的具有日志记录语句的示例性c代码。

在步骤306处,执行具有日志记录语句的源代码。例如,执行对应于测试用例的源代码。测试用例复制由顺序图定义的用例。在步骤308处,在源代码的执行期间,基于日志记录语句生成一个或多个日志文件。对应于日志记录语句的检测代码将信息日志记录在一个或多个日志文件中。该信息包含表示将以如在源代码的执行期间捕获的时间顺序由软件程序控制的系统的元素之间的交互的顺序。该信息以组件(或类)的运行对象信息、标记方法和组件的细节、方法调用信息(诸如方法调用如何发生、哪个组件或组件的哪个对象发起了方法调用)等的形式被捕获。在附录‘b’中提供了表示以扩展标记语言(xml)格式的票务系统的元素之间的交互的示例性日志信息。在步骤310处,基于日志记录在一个或多个日志文件中的信息以建模语言(例如,统一建模语言)生成源代码的表示。例如,使用日志文件生成指定在源的执行期间捕获的系统的元素之间的交互的顺序图。基于票务系统的日志信息生成的示例性顺序图500在图5中描绘。顺序图描绘了在具有日志记录语句的c代码的执行期间日志记录在日志文件中的票务系统中的组件、组件的对象以及对象之间的交互。

在步骤312处,使用以建模语言的源代码的表示来验证软件程序的源代码。换句话说,在步骤310处生成的顺序图与表示软件程序的规范的顺序图进行比较。基于该比较,确定所生成的顺序图是否与规范的顺序图匹配。这有助于确定软件程序的源代码是否符合软件程序的规范。如果生成的顺序图与规范的顺序图不匹配,则这意味着如从源代码的执行确定的系统的行为与由规范定义的系统的期望行为不同。在这样的情况下,源代码以如下这样的方式在源代码中的适当位置处被更改:更改的源代码符合软件程序的规范。然后,执行具有日志记录语句的更改的源代码,并且通过执行更改的源代码生成指示系统的元素之间的交互的日志文件。因此,使用日志文件生成uml图,并使用生成的uml图验证更改的源代码。执行上述步骤直到更改的源代码符合规范。以这种方式,在集成开发环境中验证软件程序。

图4图示了其中可以实现实施例的另一数据处理系统400的框图。特别地,数据处理系统400包括服务器402和多个客户端设备406a-n。客户端设备406a-n中的每个经由网络404(例如,局域网(lan)、广域网(wan)、wi-fi等)被连接到服务器402。数据处理系统400是图1的数据处理系统100的另一实现,其中模型驱动开发模块114驻留在服务器402中并且由客户端设备406a-n经由网络404访问。

服务器402包括模型驱动开发模块114、规范数据库116和日志文件数据库118。服务器402还可以包括处理单元、存储器和存储单元。模型驱动开发模块114可以以机器可读指令的形式被存储在存储器上并且可由处理单元执行。规范数据库116和日志文件数据库118可以被存储在存储单元中。服务器402还可以包括通信接口,用于经由网络404使能与客户端设备406a-n的通信。

当执行机器可读指令时,模型驱动开发模块114使得服务器402生成包括日志记录语句的软件程序的源代码,在源代码的执行期间生成日志文件,使用日志文件以建模语言生成源代码的表示,并且使用以建模语言的源代码的表示来验证源代码。在图2和3中更详细地描述了由服务器402执行以实现上述功能的方法步骤。客户端设备406a-n包括集成开发环境(ide)113,其使得软件工程师能够访问服务器402中的模块驱动开发模块114,以便以上述方式生成和验证软件程序。

可以设想,模型驱动开发模块114可以驻留在云计算环境中的云服务器中,其中经由云网络连接的客户端设备406a-n可以访问模型驱动开发模块114以使用建模语言图生成和验证软件程序。

在各种实施例中,图1至图4中图示的方法和系统使得能够通过将基于源代码的执行而生成的顺序图与软件程序的规范的顺序图进行比较来验证软件程序。该方法和系统可以验证大型和复杂源代码与规范的符合性。

要理解,本文中描述的系统和方法可以以各种形式的硬件、软件、固件、专用处理单元或其组合来实现。本实施例中的一个或多个可以采用计算机程序产品的形式,包括可从存储程序代码的计算机可用或计算机可读介质访问的程序模块,该程序代码供一个或多个计算机、处理单元或指令执行系统使用或与一个或多个计算机、处理单元或指令执行系统结合使用。出于本说明书的目的,计算机可用或计算机可读介质可以是可以包含、存储、通信、传播或传输以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的程序的任何装置。介质可以是电子、磁、光、电磁、红外或半导体系统(或装置或设备)或者不被包括在物理计算机可读介质的定义中的作为信号载体的在它们本身中的或它们本身的传播介质,物理计算机可读介质包括半导体或固态存储器、磁带、可移动计算机软盘、随机存取存储器(ram)、只读存储器(rom)、刚性磁盘和光盘,诸如压缩盘只读存储器(cd-rom)、压缩盘读/写和数字通用盘(dvd)。用于实现本技术的每个方面的处理单元和程序代码两者可以是集中式的或分布式的(或其组合),如本领域技术人员所知。

虽然已经参考某些实施例详细描述了本公开,但是应当理解,本公开不限于那些实施例。鉴于本公开,在不脱离如本文中描述的本公开的各种实施例的范围的情况下,许多修改和变化本身将被呈现给本领域技术人员。因此,本公开的范围由以下权利要求而不是由前述描述来指示。进入权利要求的等同物的含义和范围内的所有改变、修改和变化都将被视为在其范围内。

附录‘α’

附录‘β’

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1