嵌入式检测对象的制作方法

文档序号:6650315阅读:139来源:国知局
专利名称:嵌入式检测对象的制作方法
背景技术
计算装置,例如具有处理器和存储资源的装置,被用做“网络装置”,以在智能网络(INs)中执行不同的作用和任务。计算装置包括操作系统层和应用程序层。该操作系统层包括一个“内核”。该内核是运行该计算装置的主控程序。该内核除了其他功能之外,还提供诸如任务管理,装置管理,以及数据管理之类的功能。该应用层包括执行特定任务的软件程序(诸如在电信网络中所使用的业务逻辑程序(SLPs))。所述应用层被称为“用户空间”,同时所述操作系统层可以被称为“内核空间”。如本文中所使用的,“用户空间”的意思是一个代码层,该代码层的权限低于操作系统层或“内核空间”中代码层的权限。该用户空间代码在这里也被称为“用户类”代码。可以通过用户所执行的例行程序进行存取的数据,被称为“用户类”数据。
为了创建软件程序,软件开发者以诸如C/C++,Java等程序设计语言编写源代码。随后,编译该源代码,从而创建一个已完成的程序。编译器是将程序设计语言的语句(例如,以C/C++,Java等编写的)转换为较低级表示的软件。例如,源文件通过适当的编译器产生目标代码文件,以将该目标代码文件输出至链接器实用程序(linkerutility)。从该源代码和“头”文件或“包含”文件中,适当的编译器“编译”或生成目标模块或文件。在成功创建目标文件之后,链接器实用程序“链接”或组合目标文件与标准程序库(例如,图形,I/O例行程序,启动代码等等),从而生成可执行程序模块。链接器实用程序,是一个以一个或多个目标文件作为输入,并从中建立二进制码即机器语言的工具。这样,“链接器”将所有所需的机器语言模块组合为一个能够在计算机内运行的可执行程序。
存在这样的情况,其中C++程序可能会错误的改写目标文件的内容,这将导致不可预知的结果。由于程序的逻辑错误,指令堆栈恶化等可能导致用户类对象的偶然恶化。例如,如果程序逻辑的编写超出已知数据区的边界,一般将出现用户类对象的恶化,该数据区在存储器中与将恶化的对象相邻,或在用户的对象类中。这种错误的改写很难被检测到。此外,在检测发生的用户类对象恶化时要消除更多实际发生的恶化事件,调试一个程序,变得更加困难。


附图1是适合于实现本发明的实施例的计算机系统的模块图。
附图2A描述了包括本发明的程序实施例的对象建模的实例。
附图2B描述了具有与类定义相关的嵌入式检测对象的实施例。
附图3A是适合于创建这里所描述的程序实施例的软件开发系统的模块图。
附图3B是描述从附图3A中的开发环境到客户环境中实际使用的程序生命周期的持续时间的流程图。
附图4是上述用于无线电信网络的一个实例系统的图例,示出了多个网络函数(function)和业务函数之间的相互作用,其中包括这里所描述的程序实施例。
具体实施例方式
本发明的多个实施例,覆盖了包括具有与程序中的类定义相关的嵌入式检测对象的面向对象程序的网络和装置。该检测对象含有一个预定义数据串,当一个对象被破坏时,可以测试该预定义数据串,以检测接近于恶化事件出现的对象恶化。本领域普通技术人员将会认识到这与使用的模块化程序设计破坏存储器相关。这里所使用的破坏存储器,意思是指在读取时丢失其内容的存储器。现有的各种刷新操作,能够在读取操作之后再次产生所述内容。这里所使用的“对象破坏”,指的是当不再使用一个对象,或该对象不再存在于所使用的程序中时,从存储器中删除该对象的行为。
附图1是适合于实现本发明实施例的计算机系统110的模块图。计算机系统110包括至少一个处理器114,其通过总线子系统112与多个其他的计算组件进行通信。这些其他的计算组件可以包括具有存储器子系统126和文件存储子系统128的存储子系统124,用户接口输入装置122,用户接口输出装置120,以及网络接口子系统116,从而命名一些,与本领域普通技术人员所认识到的相同的组件。网络接口子系统116提供连接至外部网络的接口,包括连接至网络118(例如,除其他网络之外的局域网(LAN),广域网(WAN),互联网,和/或无线网络),并且通过网络118耦合至其他计算机系统中的相应接口装置。总线子系统112提供用于使计算机系统110的各种组件和子系统彼此之间相互通信的机制。这里所说明的程序实施例,能够在附图1所描述的计算装置或系统上执行。
这里所讨论的程序实施例与面向对象的程序设计相关。一种流行的程序设计类型,是模块化程序设计,例如,面向对象的程序设计,其将一个程序的设计分为能够独立编程并测试的多个独立的组件(模块)。面向对象的程序设计,是一种具有更多形式规则的模块化程序设计的形式,该形式允许软件的各个段在程序之间重复利用和相互交换。面向对象的程序设计概念包括封装,继承和多形性。封装是含有数据和处理过程(数据结构和处理那些数据的函数)的独立(self-sufficient)的模块的创建。这些用户定义的,或抽象的数据类型被称为“类”。类中的一个实例,被称为“对象”。例如,在工资管理系统中,一个类可以定义为经理,Pat和Jan,实际的对象,都是该类的实例。在分层结构中创建类。继承允许将一个类中的知识传递到下一层次。这意味着当向复杂的系统中添加函数时,需要较少的程序设计。如果在一个层次的底部添加一个步骤,那么只需要添加与那个唯一的步骤相关的处理过程和数据。与该步骤相关的其他的每一个步骤都将被继承。
附图2A提供了对象建模的一个实例的图例。在早期的程序设计中,即使由于软件使计算机对数据进行处理,而很自然的使该数据和所述处理相关,程序数据依然将在与处理例行程序分开的独立数据库中。在对象技术中,使用含有数据和处理(“属性”和“方法”)的构造模块。例如,在无线电信程序中,客户对象将含有客户数据,例如,姓名,帐单地址等,并且含有在客户发出一个呼叫时发生的处理的种类。
在附图2A中,示出了客户类202以及多个子类204-1,204-2,……,204-N(分别被标记为类型1客户类,类型2客户类,和类型N客户类)。术语“客户”以及类型1,类型2和类型N均是用于类和子类的示范性标记,例如,可以与无线电信程序一起使用的。标识符“N”用于表示可存在于特定类下的多个子类。附图2A描述了与对象建模一起的继承和封装的能力。换句话说,取代在分离的表格中构造具有客户信息和无线特权存取信息的客户表,以客户的类型为模型。该客户类包括用于所有客户的数据和处理。每一个子类,例如,类型1,类型2,类型N等,含有该客户类型特有的数据和处理,例如,漫游权,可用时间等。可以整体或个别的进行变更。面向对象的程序设计,允许直到运行时间之前,关于所要创建的对象的过程的准确类型,是未知的。
根据本发明的实施例,在面向对象的程序中,将检测对象嵌入到类定义中。所嵌入的检测对象和类定义,被描述为与客户类202相关的203,且被描述为与类型1客户类,类型2客户类,以及类型N客户类相关的205-1,205-2和205-N。正如将结合附图3A和3B更加详细说明的,本发明的实施例包括编写源代码以创建程序的软件开发者,该程序具有嵌入有类对象的类定义的检测对象。正如读者将意识到的,类定义是与类对象相关的数据,也就是定义类对象的数据。换句话说,在用于软件开发者所编写的每个程序模块的模块化程序设计中,开发者将以数据说明定义每一个类对象,这被称为“类定义”,以识别,标记和/或描述特定的类对象。正如以下结合附图2B所讨论的,检测对象是一个预定义的位串,软件开发者使其与每一个类定义相关。
附图2B描述了在一个给定程序中嵌入,即与用于类对象,例如,202,204-1,204-2,……,204-N,的类定义210相关的检测对象208和212的一个实施例。如附图2B所示,该检测对象作为预定义位串,208和212,它们与类定义210嵌在一起。例如,所述检测对象208被表示为比特串。在附图2B的典型实施例中,由于如果程序逻辑的编写超出已知数据区的边界,则一般将发生恶化,该数据区与将恶化的对象相邻,所以,在类定义的开头208和结尾212,像一个标记一样放置该检测对象。在类定义的开头208和结尾212放置检测对象,将捕获对类定义的已知数据区的任一边界的恶化。
根据本发明的实施例,程序指令可存储在存储器中,且可通过一个处理器来执行(如附图1中所述),从而检查检测对象208和212,并确定类对象,202,204-1,204-2,……204-N,的完整性,例如,一个对象是否已经被恶化。在至少一个实施例中,当对象被破坏,也就是从存储器中删除该对象时,执行程序指令以检查检测对象208和212。通过将预定义数据串208和212,与一个基准数据串,例如,存储在存储器中(诸如附图1中所示的存储器)的数据串相比较,执行程序指令以测试所嵌入的检测对象。从阅读所公开的内容,本领域普通技术人员中的任意一个,都将意识到该方式,其中编写一个程序,使其包括执行以实现将用户类定义210中嵌入的预定义数据串208和212,与位于存储器中的基准数据串相比较的程序指令。
在一些实施例中,预定义数据串和基准数据串的比较(在下文中称为“比校”)在每一个用户数据存取时应用比在对象被破坏时应用更为有效。如本文中所使用的,“用户数据存取”,指的是程序中一个例行程序的执行,其中,通过该例行程序,存取“用户类”数据。因此,在上述实施例中,每次执行例行程序,例如,程序中的计算机可执行指令以存取“用户类”数据时,出现该对比,且不只是在对象被破坏时才出现。与“用户类”对象,例如,由计算机用户执行的例行程序进行的可存取的对象相关的类定义,在下文中指的是“用户类定义”。
与附图3A和3B相关的将进行详细的讨论,当预定义数据串和基准数据串不匹配时,程序实施例包括可执行其以使程序断言失败的指令。所断言的失败,给予该用户迅速的指示,说明一个对象类已经恶化。之前,用户直到当累积了足够的,可能是一个很大的数字的,已恶化对象,以使用户察觉对程序性能的影响之后的某一时刻,才能够得到说明一个对象类已经恶化的该指示。在通知用户之前代码中累积的已恶化对象越多,越难以调试该代码以校正所产生的情况。如读者所意识到的,在用户开始从表面上注意到程序中的故障之前,产生一个巨大数目的代码恶化。因此,通过在每次对象类被破坏时,检查恶化的对象类,并使程序断言失败,该用户能够获得该代码错误的较早的通知,例如,靠近对象类恶化出现的时间,而不是在等待用户察觉程序性能的恶化。这将进一步帮助代码恶化的累积的减少。
在一些实施例中,执行程序指令,使正在运行的程序中断已恶化对象的检测,从而使用户立即找到该情况,并更直接的避免代码中已恶化对象的累积。
如读者所意识到的,无论每次对象被破坏时或每个用户数据存取时是否执行了该对比,且无论该检测是否导致断言失败或程序中断,该用户将在程序代码中接收到潜在的较麻烦的问题的较早的指示,而不是如果用户信任程序性能中所检测的可察觉的恶化,才出现相应的提示。除非另有说明,本发明的实施例在靠近对象类恶化出现的时间将对象恶化的说明提供给程序用户。
附图3A描述了面向对象的程序设计的一个实例。如前所述,C++和Java都是面向对象的程序设计语言的实例。软件开发者在电信领域使用面向对象的程序设计语言,从而提供在业务逻辑执行环境(SLEE)中可使用的业务逻辑程序(SLPs)。本领域普通技术人员中的任意一个,都将在阅读所公开的内容之后,明确术语SLP和SLEE。这里并未提供更多的讨论,以免混淆以下所讨论的本发明的特征。
附图3A是适合于这里所描述的创建具有嵌入式检测对象的程序的软件开发系统300的模块图。附图3A描述了该开发环境,其中程序开发者能够编写一个程序,以包括嵌入在用于类对象的类定义中的检测对象,能够创建程序指令,执行该程序指令以比较用预定义位串表示的该检测对象和基准数据串,并且能够创建程序指令,执行该程序指令以在该检测对象和该基准数据串不匹配时,产生失败的断言,或使程序中断。如附图3A的典型实施例中示出的,该开发者编写用于程序,例如,用于SLP程序的源代码。一旦该开发者编写了该代码,则通过接口310,将其提供给编译器320和链接器实用程序350。此外,接口310包括命令行驱动313和集成开发环境(IDE)311接口。前者通过命令行参数,接收用户指令。后者提供它相应的等效菜单。该IDE作为一个GUI接口,包括主菜单,工具栏,客户区(用于编辑源程序清单),以及一个状态行等。从源代码301以及头文件和包含文件330中,与本领域普通技术人员中的任意一个所知道并理解的相同,该编译器320“编译”或产生目标模块或文件303。如同所示,该编译处理可包括调试和浏览信息;特别是,在目标模块303中存储源程序清单的符号(例如,行数目)的明确基准。如附图3A的实施例中所示,通过浏览器380(例如,通过接口310)参考该调试和浏览信息。
在对象文件的成功创建之后,链接器350接下来“链接”或合并对象文件303和标准库360(例如,图形,I/O例行程序,启动代码等等),从而生成可执行程序305,其可通过目标处理器(例如,附图1的处理器114)执行。除标准库360之外,开发系统300还提供类库365,例如,C++库。
如附图3A所示,为了测试程序309,可执行程序305可被连接至测试控制器306和正在测试的系统(SUT)307。随着程序的开发,在工作负荷,例如,SUT,下对程序进行测试,以确保程序具有所预期的功能。将可执行程序305提供给用于消除源代码列表301中的错误的调试模块370。本领域普通技术人员中的任意一个,将能够意识到调试模块370与SUT307和测试控制器306协同工作能产生用于可执行程序305的诊断记录380的方式。该调试模块370作为软件指令集,与SUT307和测试控制器306一起执行,以产生用于可执行程序305的诊断记录380(例如,包括失败断言的记录)。
如本领域中所公知的,断言能够作为上述测试一部分进行检查。断言是用于在软件中检测错误的一种技术。在软件开发领域中,断言是有目的的在软件编写时安排在源代码中的。随着程序被编译和/或测试,对断言进行检查,以校验一直所信任的条件是正确的。开发者安排的运行时间测试,将检查断言是否失败。在这种方式下,断言给出代码中潜在问题的早期的线索,以便尽早停止和调试,而不是在问题出现之后再做努力,从而避免代码中的误操作。这样,断言将帮助捕获故障,并检测程序中执行的有效状态。断言包括运行时间断言,编译时间断言,以及与硬件和电路相关的断言。
根据不同的实施例。开发者能够在调试阶段嵌入具有类对象的类定义的检测对象。本领域普通技术人员中的任意一个,在阅读所公开的内容之后,将意识到该方式,其中,开发者能够编写包括指令的程序,执行该指令,可嵌入具有类定义的检测对象。如一个实施例中,开发者在调试阶段使用用户接口310的IDE311,以嵌入具有类定义的检测对象。
附图3B是描述从附图3A中的开发环境到客户环境中实际使用(也称为“运行时间”环境)的程序生命周期的持续时间的流程图。附图3B的该开发环境部分,反映了附图3A中提出的讨论。如附图3B中所示,一旦开发环境处理结束,则能够将可执行程序(例如,产品)载入到一个装置上,从而销售给一个客户。同样,该产品能够在磁盘上运输给客户,且该客户能够将该程序载入至他们的系统。
附图3B对描述具有嵌入式检测对象的程序的运行是有用的,该程序如本文中所述,载入至运行时间环境中的客户系统。如附图3B所描述,一个系统用户,例如,系统管理员,能够使用如系统用户接口371和客户“系统文件”372(其也含有软件程序,以在正在执行的程序373上执行例行程序的调试)之类的工具,与客户系统上一个正在执行的程序373进行交互。
根据与附图2A和2B相关的上述实施例,能够提供程序指令,执行该程序指令以测试正在执行的程序373中的该嵌入式检测对象。当与类定义相关的嵌入式对象与该基准位串不匹配时,将执行程序实施例,以产生失败的断言。如附图3B中所示,能够以断言报告374的形式,向一个程序用户报告该失败断言。这将更及时的提示该程序用户程序中已经出现了恶化。如上所述,在一些实施例中,该失败的对比,也将使该程序中断。然后,该用户将在系统文件373中使用调试程序,以寻址并校正之前出现的该代码故障,且过大的代码出现恶化,可能使调试无法运行。
附图4是描述系统网络,例如,无线电信网络,的一个实例,示出了多个网络函数和业务函数之间的相互作用,其中包括具有与这里所描述的相同的嵌入式检测对象的程序实施例(这里以业务逻辑程序(SLPs)为例)。附图4是多个网络函数和业务函数之间的相互作用的实例的图例。在附图4中,在网络400中的多个函数,与通过业务控制点(SCP)436所提供的多个业务相互作用。网络函数,例如,归属位置寄存器(HLR)414,访问者位置寄存器(VLR)424,网关移动交换中心/控制器(GMSC)412,业务移动交换中心/控制器(SMSC)426,记帐单422,以及其它函数438,能够使用SLPs传送包括数据请求的业务请求,装置或网络之间的通信等。由诸如智能网络应用部(INAP),移动电话应用部(MAP),移动网络增强型逻辑的客户化应用(CAMEL),和能力集(CS)协议等多个不同协议提供这些业务请求和对上述请求的响应。这些请求,通过事务能力应用部(TCAP)消息440,直接传送至SCP 436,从而在SLEE442中,与SLP443-1,443-2,443-3,……,443-M创建一个对话,例如,消息交换。标识符“M”用于描述能够创建的多个上述SLPs。该SLEE是创建SLP实例的环境。SLEE 442在SCP 436上提供业务控制函数(SCF)441的作用。
给定的SLP,通过通信链接444,与多个业务应用程序446之一和/或业务数据448相连,以满足业务需求。在一些实施例中,业务应用具有不同的类型,且能够基于所提供的业务的类型进行分组。例如,如本领域普通技术人员的任意一个可理解的那样,使用增值业务应用,或其他上述业务应用组。
虽然本文中描述并说明了具体的实施例,但本领域普通技术人员将会意识到,可以以目的在于取得相同技术的装置,取代所示出的具体实施例。所公开的内容,是要覆盖本发明不同实施例的各种改编或变动。不言而喻,上述说明,是以示意性方式出现,而不是以限定方式出现。上述实施例,以及本文中并未说明的其他实施例的结合,在本领域技术人员回顾上述说明之后,将更为显而易见。本发明不同实施例的范围,包括使用上述结构和方法的其他应用。因此,本发明不同实施例的范围,应该根据所附权利要求书进行确定,其等价物的全部范围与上述权利要求书所享有的范围相同。
在上述详细说明中,为了简化所公开的内容,不同的特征被分组为一个单独的实施例。所公开的方法,不能被解释为反映了一个发明,即本发明的实施例需要比每一个权利要求中明确引用的更多的特征。而是,如下列权利要求所反映的,发明的主题在于少于所公开的一个单独的实施例的所有特征。这样,下列权利要求在此与详细说明部分结合,使每个权利要求在其自身的基础上,成为一个单独的实施例。
权利要求
1.一种网络装置,包括处理器114;耦合至该处理器的存储器124;以及可存储在存储器中并可由处理器执行的程序指令,处理器执行该指令以在一个对象被破坏时,测试程序305,373中所包括的,被定义为类对象203,205-1,205-2,……,205-N的嵌入式检测对象208,212;以及当检测对象的测试失败时,中断374该程序。
2.如权利要求1所述的装置,其中该嵌入式检测对象212包括数据串208,且其中可以执行该程序指令以比较该检测对象数据串208和可存储在存储器124中的基准数据串;以及当该检测对象数据串和该基准数据串不匹配时,使程序断言失败374。
3.如权利要求2所述的装置,其中可以执行该程序指令以在每个用户数据存取时,比较该检测对象208数据串和该基准数据串。
4.如权利要求1所述的装置,其中可以执行该程序指令以测试一个嵌入式检测对象,该嵌入式检测对象位于程序305,373中一个用户类定义210的开头208和结尾212。
5.如权利要求1所述的装置,其中该检测对象208,212包括一个检测对象,该检测对象嵌入在程序305,373中一个C++用户类定义的开头208和结尾212。
6.如权利要求1所述的装置,其中该检测对象208,212包括一个检测对象,该检测对象使用面向对象的程序设计语言301嵌入,以将该检测对象定义为一个类对象203,205-1,205-2,……,205-N。
7.如权利要求1所述的装置,其中该程序是能够在一个业务逻辑执行环境(SLEE)442中执行的一个业务逻辑程序(SLP)443-1,443-2,443-3,……,443-N,其中,该检测对象在该对象被破坏373时,能够在一个运行时间环境中进行测试。
8.如权利要求7所述的装置,其中该SLEE442包括在一个多SLEE环境中。
全文摘要
提供用于在程序305,373中检测对象恶化的程序,方法和装置。一个实施例包括具有处理器114和耦合至该处理器的存储器124的计算装置110。该存储器124包括一程序,该程序具有与该程序中的类定义210相关的嵌入式检测对象208和212。该检测对象含有在一个对象被破坏373时,能够被测试的预定义数据串208。
文档编号G06F9/44GK1770101SQ200510118648
公开日2006年5月10日 申请日期2005年11月1日 优先权日2004年11月1日
发明者R·L·里夫斯, M·S·埃文斯, A·L·格尔哈德特, W·L·海恩斯, R·M·帕克, P·D·谢珀斯 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1