计算机系统中软件模块的运行期动态联编系统的制作方法

文档序号:6407100阅读:188来源:国知局

专利名称::计算机系统中软件模块的运行期动态联编系统的制作方法
技术领域
:本发明涉及软件的修改,尤其是在一个运行的计算机系统中置换软件,在该计算机中共同存在着所修改的软件的新、老版本且两者可同时在其中执行。本发明的系统是一种在计算系统运行期间动态联编(binding)分离但同时可执行的软件版本使软件能透明、不中断地更新的连接过程调用机构,从把软件的修改与运行的计算机系统结合起来这样一个更大的问题的角度来考虑,能够最好地理解本发明的系统。计算机软件的一个方面在于为了不断向用户提供适当的功能使软件最佳化和纠正该软件的整个生命期中产生的错误和偏差,必须周期性地用修改、添加和/或删除来更新它。当新的特性被加给软件时,为了将该新的软件特性提供给用户希望尽可能早和方便地用新的版本替换旧的软件。在某些类型的计算系统中,如独立或批处理系统,软件从一个版本变化到另一版本存在的障碍不多。通常,计算机系统只在一天中使用不多的这段时间里关机,维修人员可用以进行维护工作。然后,旧的软件简单地移离而用更新的软件版本来替代。此后,该计算系统重新起动而全部未来数据处理用新的软件版本来进行。当然,该过程假定新的软件已在脱机系统上经过适当的测试和排错且调试到软件人员和操作管理人员确信它将能恰当地完成它要完成的功能而不会过分地要求整个计算系统因暂停和再起动而中断。在其它一些类型的计算系统中,如现代存贮程序控制(SPC)电信通信交换系统(通常工业上简称为交换机(“Switches”)),无论是软件的新版本的测试或改变系统中的软件都没有像在独立、批处理系统中那样容易,例如,新的软件版本没有放入实际操作处理调用是不能被有效地测试的。该软件必须在操作中测试,以便确定该软件在当前操作条件下其功能是否恰当,还需确定该新的部分与运行中的SPC交换系统的所有其它软件块是否有适当的接口。另外,电信交换系统事实上是不允许停止运行的。理想的情况下,这些系统将永不间断地运行,因为某个地区内需要不断的通信服务而不能中断。这就是说,即使在白天或晚上的通信空闲时间,系统也处理着连续不断的电信通话流、并且交换操作中的任何中断都会造成电信通话的崩溃。这样的崩溃会极大地损害系统的运行和它的有效性,这样的系统也不能为用户或顾客接受。这些电信交换变化的实时性要求对改进了的软件版本的测试,或其包含新的或改进的功能部分提出了严格的限制,对于将具有错误校正或“故障定位”(“bugfixes”)的软件在交换系统中进行替换而不破坏正由该交换系统处理的电信通话流也提出了同样的限制。因此,使用传统的“编辑-编译-连接-装载-运行”(“edit-com-pile-link-load-run”)方式将软件的组成部分或单元的新版本装入系统是不理想的。最理想的方法是,当系统处于运行中能修改或扩展软件而不需停机进行。人们已在致力于解决把新软件运行中的计算机系统结合起来的问题。例如,当前使用的某些不按独立的或批处理方式工作的改进的在线操作系统,以明显不同于独立的或批处理系统的方法来解决替换旧软件的问题。然而,这种系统虽然比独立系统更透明,但还是需要用户个人或用户组主动地选择是否要使用新的或修改的软件版本进行处理因而仍然是人工进行软件置换。这种选择可以是用户通过修改由他们个人用户标识(user-id)操作的进程所使用的级联软件来决定。这种选择通常在数星期或数日的固定期间内仍适用于用户,在这期间,在每个先前级成功地运行之后,软件在这种级联结构中可向上移动几级,而不会有任何不一致性。当达到级联的最高级后,该软件可宣告为“可操作”的,且老的版本不再用于系统的用户。将新软件插入系统,及它在各级向上移动将由一个配置管理(configurationmanagement)过程进行控制-这是一种报告、批准、跟踪每个等级上的软件版本和执行所批准的改变的人工过程(man-ualprocess)。如用批或独立系统上所用的更新软件的方法,众所周知,对于把新的或修改过的软件和系统结合起来这样一种修改方式必定会存在诸多障碍。这是一种人工劳动强度很大的既复杂又费时的系统。不论是对于完全不用逐步修改的软件,只是进行严格的,在线的使用,因而不会使错误扩散的用户,还是对立即会影响所有正在进行的操作的用户,当系统将用某种新的软件进行操作时,都需要进行控制。控制对新的或修改的软件的访问的方法直接连接和限制各个用户正在执行的软件。在目前应用的典型的电信系统中,改变软件或部分软件的问题甚至更为严厉。虽然这样的系统不能合适地称为批或独立的系统,但要改变软件它们的运行也必须暂停。然后装入新软件并将数据及老的软件转移给新软件。在这种转移发生期间,该系统完全停止运行。这期间能持续一小时,这就必须把软件的改变安排在运行的非高峰时间。即便如此,在电信交换系统中一个小时的中断也是太长和代价太大,这是因为在这段时间内不能处理呼叫也不能为任何紧急通信提供服务。在一个计算系统中,当全部或部分软件需连接时,这种执行期间改变软件的问题将变得更为复杂。通常,在这样的系统中,软件的各部分必须被开发且各自再编译。然后所有部分相互配合重新连接才能运行。也必须建立和维护为整个软件使用的所有外部符号提供信息的各符号表。连接进程产生存贮在表中的这种信息并且识别任何未标识的引用。部分软件被修改时,不管什么原因,符号信息多半也发生变化。因此,保留在存贮器中的任何符号信息必须消除,否则它将由不正确的符号引用引起处理中的错误。在尼森等人(Nilsson)的题为“计算机运行期间改变软件”的且已转让给TelefonaktiebolaqetLMEricsson的美国专利申请中所揭示的一个系统,这里结合作为参考,它描述了克服软件在“飞行中”(onthefly)进行修改的某些限制的方法。该系统提供了将新软件安装进电信系统的存贮器中与老软件并存。在这种系统中,计算机系统中当前的通话最初由老软件处理,而测试通话通过处理开关转向由新软件处理。此后,如果新软件处理测试通话成功,则实际的当前通话的一部分可选择地转向通过新软件进行,当前通话的剩余部分仍由老软件处理。一旦抽样通话由新软件顺利执行,则全部通话转换到新软件上。一旦由老软件处理的所有呼叫处理完毕,则系统不再使用老软件并且可将其移去。所揭示的系统对新的或修改的软件提供了平滑的验证。它允许数据逐步地受控地流经新的软件,仍然作为当前操作着的系统的一部分。由于开始时转向新的软件的数据只是由系统产生的测试数据,所以系统提供的早期的出错和不一致性检测对于电信交换系统的实际操作的影响很小或没有影响。如果在处理测试数据中电信系统检测到一个错误,进一步的通话就不引向新软件,即使新软件已经处理过实际数据,因此对整个系统的通话的干扰减至最小。该揭示的系统也能以逐渐的方式将通话从老的软件导向新的软件。所揭示的系统包括能够用老软件开始处理的事务仅用老软件使它的处理完成。只有在新软件安装之后开始的事务将由新软件处理。所揭示系统的这种情况只有在从某个老软件到它被新软件置换或扩充的过渡阶段才对用户产生最小的干扰。而且,这种情况使需变换和/或转移到一套不同的软件的数据量比最初处理的数据量来减为最少。试图至少解决与运行的计算机系统中更新软件关联的某些问题的其它努力已集中到仅代表整个问题一部分的若干个不同方面,尤其是连接问题,例如,在申请号为No.734456、申请日为1991年7月19日的美国专利申请中包含着由AndersAbrahamsson和LarsHolmqvist的发明,且已转让给TelefonaktiebolagetLMEricsson,那里揭示了一种在运行期间动态连接软件的系统。然而,该系统包括一个需使用特殊的或扩展的操作系统和/或专门的编译器的间接寻址的复杂的系统。该系统有几个其它的限制,包括需要非标准的操作系统。而且,这种系统不能用标准的应用软件进行工作。其它相关的已有技术已在各种刊物中作了讨论。例如,在“字节杂志”(BYTEMAGAZINE)上刊登的题为“未来文件”(FutureDocuments)的文章涉及到连接和嵌入目标,而Stevenson等人的美国专利No.4791550涉及连接指针,和Freeman等人的美国专利No.4667546涉及侵入无保护存贮区(unguardedregionsofmemory)的问题。这些参考文献没有揭示解决上面讨论的问题的方法。因此,在电信工业中能在各个装入计算机系统中的程序单元之间实行有效的动态运行时间连接(链连)将是非常有用的。本发明的系统提供了这样一种方法。本发明的系统涉及在两个或多个各自可装入的软件应用之间对软件模块进行动态联编(binding)的系统。本发明系统的这方面具体体现在将一个连接过程调用机构与在各自可装入计算系统中的程序单元之间进行动态运行时间联编的能力相结合。一方面,本发明的系统包含一个连接过程调用机构,它在操作系统内核中配备了一个交换器(trader),可用作不同的软件单元之间的接口。这种连接过程调用机构也用于完成老的和新的软件在运行期间的相互连接和联编。在本发明的系统中采用这种连接过程调用机构中,使用本发明系统的另一个方面是建立必要的接口说明。这是指一种称为面向目标的接口说明语言(ELIN)的特定语言,如Lundin等人的已转让给TelefonaktiebolaqetLMEricsson的美国专利申请中所揭示的,这里结合作为参考。这种语言包含专门为开发本发明的系统的连接过程调用方面的接口而设计的特定结构。由于这些接口说明包含由面向目标范例(paradigm)支持的属性(at-tributes),所以具有公共的库(base)接口说明的目标的同素异构(polymorphism)和动态联编能很容易地获得。另一方面,本发明的系统包含一个程序单元可由其构成的机构,并且在后来的运行系统中可分别地修改这些程序单元而不会对计算或其运行的电信系统的当前运行产生任何干扰。按照这方面,使用一种语言-独立的接口说明,分别构成程序单元并对其进行编译。只要接口保持不变,这方面允许程序单元独立地被修改和变化。本发明的系统的这方面所提供的附加优点是不需要为连接而存贮符号信息,这是因为这种联编发生在运行时间。本发明的系统的还有一个方面是,连接过程调用(LPC)目标以类似于面向目标范例中的局部类(localclasses)的目标的方式产生和受控。连接过程调用机构的这方面对系统的编程人员是透明的。在本发明系统的这方面透明性是通过自动产生按照接口说明执行运行时间联编的编码而获得的。本发明这方面所提供的优点是标准语言编译器不需要任何扩展和修改LPC模型就可应用。本发明的还有一方面是,本发明的系统包含一套方向点(directionpoints)用于在运行系统中对于新的或老的修改过的软件单元的版本进行动态地指向事务处理(也称为“线索”或“事件链”(“threads”or“chainsofevents”)。该系统通过一些装置完成动态指向,包括由功能标题寻址的消息分析,这样就能够将消息导向执行软件单元的新版本的进程或导向执行老版本的进程。另一类型的方向点是软件单元间的动态运行时间的联编(例如,联接程序调用),它能在一个进程中执行软件单元的新的或老的版本。正如该特定
技术领域
中的普通技术人员很容易理解的那样,本发明所揭示的各个方面和原理除了电信交换系统外还可用来改进各种计算机应用中的软件的运行时间变换。为了理解本发明及其进一步的目的和优点,现在结合附图参照下面的描述。图1A-1B图示说明已有技术将新的或修改的软件控制引入运行的软件系统;图2图示表示按照上面涉及的共同待批申请的发明,软件块可动态连接的方法;图3是图示说明按照上面涉及的共同待批申请题为“计算机运行期间改变软件”的发明的改变运行期间软件的进程的流程图;图4是图示说明本发明系统的软件中寻址目标操作方法的方框图;图5是图示说明本发明的系统中寻址软件方法的方框图;图6是图示说明本发明的系统中利用交换器(trader)能够寻址软件的方法的方框图;图7是用面向目标的接口说明语言构成本发明系统的方法的说明图;和图8是图示说明本发明系统的某些方面的图表。本发明的系统,在某些方面,使用了面向目标的编程原理。面向目标编程主要包含四个元素(elements)类(classec),目标,实例变量(instancevariable)(或C++中执行的数据元(datamembers))和方法(或C++中的元功能(memberfunctions)。一个类简单地说是用于定义目标的一种模板(template),它是由构成该类的实例组成的。类有两类组成实例变量和方法。实例变量用作数据元(dataelemeuts)而方法用作功能(functions),即它们定义一个目标的行为(behavior)。实例变量和方法能在执行期间结合于一个共同的目标中。这就是说,一个目标包封着一个能由使用所结合的方法控制的实例变量。因此,编程将集中于目标而不是集中于要完成的功能或任务。已有技术中周知的某些面向目标的编程技术被结合进本发明的系统中,用编程语言C++较佳地构成本发明的系统。这种技术包括继承(inheritance),同素异构(polymorphism)和封闭(encapsulation)。继承能从存在的类导出新的类以便编码容易再利用,结果是数据和编码能加给类或类的行为能被改变而不必改变存在的类。同素异构是这样一种特性,即有能力将同样的方法用于不同的目标类因为它们分享一个公共的接口,它能以同样的方式使用不同类型的目标。接口的继承具有这样的特性,即它能由共同的分母(denom-intor)导出其它目标类。最后,封闭是一种把数据和处理这些数据所需要的操作都放在同一个“屋顶”下的技术。它进一步能防止对数据过度或不必要的访问和隐蔽数据结构的细节。首先参看图1A,它图示了已有技术系统中使用的软件控制方案,该方案管理着将新的或修改的软件引入一个运行的软件系统。图1A表明分层的一套软件等级,每一级的内容由检查委员会的成员(themembersofareviewboard)控制。软件的所有改变必须由该委员会先于这种改变在系统中执行之前对其批准。直到检查委员会做出该软件是需要的,它已被适当地测试,和它不可能损害或中断系统的正式决定之前,该软件是不会加入系统的。等级的分层系统可由个人用户将几个分离的层连在一起组成,该用户有访问和需要这些级或软件“库”完成他的功能。在层1的顶部是实时运行软件,通常该软件以最大限度被使用且受到最严格的控制(“AB.D”)。该级下面是改变库2,它由在后面附加字母C指定(“AB.DC”)。该层中更低的运行软件级属于系统中的不同用户组,并且它们将受到那些级的检查委员会的控制。新的或修改的实时软件在批准后,在最低的适当改变级上即如在2和3上用字母C结尾的级上进入系统。一旦新的或修改的软件进入系统,它停留在进入的级上直到通过规定的时间和该软件不再产生检测错误为止。然后它将移入下一个最高级。在某些情况中,需要由规定的检查委员会进一步批准;在其它情况下,转移将自动进行,作为有规律制定的系统活动的一部分。这种转移对用户是透明的,且该软件将直接按照转移被使用或进入用户已构成他们的包含新的或改变的软件库中的访问软件的软件级联的层中。图1A还表明,同样的过程可重复且同时产生驻留在同一系统中的非实时工程型软件。在这种情况下,唯一的差别在于控制进程由一个不同组的人管理,且该进程不可能如通常用于整个系统作为临界进程(criticalprocesses)的运行软件那样严格。然而,对这种工程软件,软件的累积以与运行软件相同的方式出现。新的或修改的软件、如在4上,进入如在尾部的最后的字母用一个C标明的最低的适当的改变级的层中。然后,它在整个时间上向上转移、直到它到达该层的顶5为止。对于工程或运行软件,一旦它移到下一个级,它不再驻留在较低的级上。是否利用新的或修改的软件进入系统的分层库中留给个人用户或用户组去决定。用户可选择系统在级联软件中所使用的库的等级作为他们的应用。他们可选择越过一段较低的软件级或他们可简单选择避开包含最新和最后测试的软件的最低改变级。当然,分层的每部分的最高级包含大块的可用的运行软件。图1B图示表明为了保持对基线(baseline)和在某个日期(adailybasis)上引入系统的新的或修改过的软件两者的控制而施加于图1A中表明的软件库分层的配置控制的人工进程(humanprocess)。如上所述,新软件在由检查委员会批准后进入最低适当改变级的分层中。如果新软件产生出错或不一致,则该软件从分层中移出并返回以便在6上进行附加软件维修工作。一旦问题校正且该软件重新被测试,它可以再一次经委员会批准在最低改变级上进入系统。如果在允许设定的期间内没有检测到问题,除非下一个级在7上需要另一个委员会的批准,否则软件将自动移到下一个级。要不然,它在适当的批准后移到一个固定的计划表(fixedschedule)上。该进程将继续重复直到该软件到达那分层部分的最高级为止,此时它将被肯定宣告为运行软件。下面参看图2,那里显示了按照先前揭示的发明在模块软件系统中转移软件信号信息的图形表示。一个模块软件11的块,称为块A,它包含多个部分程序编码列表部分12、信号分配表13和软件信号发送表14。另外,一个作业缓冲区15包含多个暂时存贮软件信号的寄存器16,这些信号等待中央处理器的处理,必须将那些信号送给如软件的请求块。另一软件块、块B17,也包括一个程序编码列表部分18和一个信号分配表19。该发明所表示的实施例也包括一个全局信号分配表20,其中保持一个用于存放装在本系统中的每个软件块中的特定信号的全部局部信号号码的列表。按照上面的简单讨论,全局信号分配表20是一个保持不同软件模块之间地址连接的基本元件。该全局信号分配表20在对应于从一个模块或块发送到另一模块的特定信号的全局信号编号和对应于系统中每个单独块中的每一个那些信号的全局信号编号之间保持交叉引用。当一个软件块装入系统时,全局信号分配表20的对应于那个块的部分被重写,以便对包含在那个软件块中的每个信号的局部信号编号后放入。传统的做法是通过一个异进程(exclusive-orprocess)或某种其它组合技术,将那个特定信号的全局信号编号与包含那个信号的软件块的块编号相组合。于是,当一个软件块从系统中被移走,被修改或以某种在块中对各个信号产生改变的方式被增强功能时,软件信号分配表的那部分必须重写以反映该块中信号的新内容和对于该块中每个那些信号的局部信号编号的新计算。作为图2的进一步说明,一个软件信号S1从块A1发送到块B17。块B17称为接收块,而块A11称为发送块。该接收块的块编号也称为BNR。该系统发送所需要的信号S1给接收块。首先利用包含块A11的程序起始地址(PSAA)的它的地址加上信号发送指针(SSP)的值通过访问块A11的信号发送表14而获得信号S1的全局信号编号。一旦获得S1的全局信号编号,它直接被装入作业缓冲器15中的寄存器16,并且按照中央处理单元的优先权协议和该优先权转让给要传送的特定信号,等待传送到块B。在这期间,信息以S1的全局信号编号和接收块的块编号的形式被保留,一旦信号传送操作已达到足够执行传送的优先权等级,则系统访问全局信号分配表20以便获得块B17中的S1的局部信号编号。取全局信号编号并与块编号BNR的值进行异操作来找到地址,按照这一地址进入全局信号分配表20从而完成这一信号传送。在该表中的那个地址上就可找到接收块B17中的S1的局部信号编号。一旦获得块B17中的S1的局部信号编号,那么系统通过确定块B17中信号应进入的指令地址IA21而进入块B17。由取块B17的程序起动地址(PSAB)减去块B17中的局部信号编号从而读出指令地址21,通过获得块B17的信号分配表19完成上述过程。一旦获得指令地址21,则信号S1进入块B17并完成传送。此后,指令定位在IA21上开始执行。有一点要注意,这就是与该揭示的系统的应用相关联,当修改编码影响块中的信号进入点时,必须注意如果修改了数据结构,则那新的或修改过的编码的调用可能达到老的参数值,如,信号数据伴随着包含地址的作业缓冲区中的信号和/或修改前使用的数据结构格式的数据。然而,另一方面,如果块在重新装入新修改的软件块时已返回地址。则局部信号编号在已修改的返回地址栈上在老的和新的版本之间由操作系统对其更新。下面参看图3,那里显示了一个图示说明从一个老(旧)软件版本到一个新软件版本过渡的平滑的修改方法。尤其是,该系统预先假定当前的软件正有效地在系统中运行,在30上开始把新版本软件装入存贮器。在32上,系统复制新版本中具有变化的数据并将它与新软件连接。在34上,系统开始用新软件运行测试调用(calls)而正常的通话继续用旧(老)软件和旧的数据在系统中运行。在36上,系统询问“新软件工作在测试通话上吗?”如果不是,系统转到38,在这点上,新软件和数据库从系统移走且过程结束在40上。如果新软件在36上工作在测试通话上,则系统移到42,在这点上,它用新软件运行实际通话的样例,同时保持正常通话的其余部分依旧沿用旧软件和旧数据。接着到44,系统再一次询问新软件是否工作在样例通话上。如果不是,系统转移到38,且新软件和数据库移到进程的结束。然而,如果新软件在44上成功地处理着样例通话,则系统在46上转移到用新软件和数据运行所有未来的调用。因此,在48上,系统再一次询问新软件是否正在工作,如果不是,转到38移掉新软件并在40结束。如果新软件在48上工作运行在正常通话上,系统在50上询问所有旧的调用是否已在系统中完成,如果没有,在54上询问改变的时限是否届满,如果没有届满,则继续到(1)用新软件运行所有新调用,和(2)在46上用旧软件运行所有旧的调用直到在50上接收到yes或在54上时限届满为止。如果在54上时限届满,则系统在56上中止或将所有剩余调用传送到新软件并转到52。因此,系统移到52且旧软件及旧数据被移开,而系统在运行期间已完成一个从旧软件到新软件的转换而不会过分地危及或延误电信交换中当前的通话。在实现各个调用到软件的不同块的连接中,例如在一个样例中,新的电信处理软件如果在正常调用从旧软件改道到新软件之前已用测试调用先进行了测试,则本发明系统可看作包含一个调用识别(ID)类(aCallIdentification(ID)category)和一个指针ID类(aPointerIDcategory)。对于系统中每个测试调用地址,给出一个新软件的指针,同时对于包含一个正常识别的所有调用IDs,给旧软件一个指针。这种指针的使用解释了本发明系统能够把普通的现有通话和测试通话两者适当地导向适当的软件版本的方法。然而,这是本发明系统中对新、老软件寻址方法的一般的简单解释,事实上,详细的连接过程调用机构用来产生在各装入的程序单元之间的动态运行时间联编。换言之,当在上面讨论的样例中置换一个程序单元时,软件的老的和新的版本共同存在一段时间,直至新版本能被证实是正确的且在老版本中执行的活动能如上所述结束时为止。本发明系统用作为通过接口经连接过程调用访问软件的交换装置。在装载时间中,所有能进入连接过程调用的接口对核内的交换器功能(traderfunction)是公开的。每个接口公开它的识别码(identity)和涉及产生来自接口的目标的方法的地址。软件版本之间的联编在运行时进行,并且每次为规定的接口产生一个目标,为寻址产生方法,一个请求引向交换器,然后,该方法被调用并向产生的目标返回一个目标指针。下面参看图4,这里图示说明了对类X60的一个目标每个操作间接通过如下步骤中的目标被调用(1)目标指针66寻址目标的数据区域;(2)在从目标区域的起始部的一个预定的偏移上能找到操作表68的地址62(该表68对某个类型的所有目标是共用的);(3)操作的程序码起动的地址能在操作表68中在对应于所选操作的偏移量上找到。由于目标数据和命令(order)中的操作表中的地址存贮于其中的操作表地址存贮单元是固定和已知的,所以操作能被调用而不用交换器的支援。一个能被调用而不用交换器的接口中的这种操作是一种删除所产生的目标的操作。使用这些操作表提供了获得同素异构(polymorphism)的能力,一种能应用如编程语言C++和它的虚拟表(virtualtables)结构的概念。同素异构,意思是“许多形状”(“maryshapes”)。它是一种能由不同目标共享的一种组成部分的行为能被改变的技术。换言之,一个组成部分可相同地出现在所有情况中,但是它可具有以与相关联的不同目标有关的稍有(somewhat)不同的方式去执行的本领。同素异构在允许建立相关的同族目标方面是有用的,即,它们有一共同的源或库(orignorbase),但它们在不同的情况中执行不同。这使得虽然每个目标的方法的实际码可有很大差别。但一族中的每个目标有同一名称的方法和功能。本发明的系统利用了同素异构及其它面向目标的编程原理。然而,本发明系统为了获得动态、透明、交互连接运行期间的不同软件版本、以崭新的和更有应用价值的方法运用和扩展了这些原理。下面参见图5,这里图示了这样一种情况,本发明中应用的连接过程调用机构具体化为包含在内核82中的交换器80,它能构成一对软件单元84和86之间的接口关系,这对软件分别包含目标90的用户类(clientclass)88和服务类(serverclass)。图5详细说明了为了产生如图4中所示系统中的目标所需要的步骤。目标是类的运行时的实例,它们把定义数据和功能放在一个包或单元中。由于它们能包含数据和编码,所以它们可作为小型的独立的程序。因此,它们能用作产生更复杂程序中的积木块而不必再开发那些功能所需要的编码。由于它们能被保持且能独立地被修改,所以使程序的维护和修改简化了。一个类是一块用于定义一个目标的模板(template),而一个目标是一个类的实例。一个类包含两个组成类型,实例变量(instancevariables)或数据构件和方法(datamembersandmethods)或构件功能(memberfunctions)。为了支援编程人员开发在计算机系统中起用户角色的程序,则通过使用接口说明自动地产生用户类。所产生的用户类为服务类(server-class)担任某种代理人(agent)。系统的用户为了确保调用传送到驻留在服务类中的软件实行(softwareimplementation)则调用来自用户类目标的操作。因此,所有涉及动态联编功能的编码在用户类中可找到。类说明(classdeclarations)控制着编译器(compiler)将地址存入目标数据(objects-data)的方法,并控制着在什么命令中获得操作表中的地址。某些类说明由系统自动产生。当一个目标在系统中产生,它的“产生方法”能通过对位于内核(Kernel)82的操作系统的交换器80部分的请求确定。交换器80包含全由连接过程调用访问系统中的类的全部接口信息,即,它包含着可为其它目标访问,也可访问其它目标的每个目标的信息。图6说明了运行中的一个进程能由连接过程调用将其连接到应用一个新的或旧的软件单元的方法。内核82中的交换器80能将软件单元100的运行导向旧软件单元102或新软件单元104。当进行置换时,来自旧的和新的版本的两服务类,每个在交换器80中有它们的公开接口。交换器80包含进入每一项的两个地址,一个用于旧软件单元102而另一个用于新软件单元104。置换前产生的进程将继续使用旧软件单元102和它的服务类,而置换期间和之后产生的进程可引向使用新软件单元104和它的服务类。在置换已完成之后且旧软件单元102中的活动已结束,旧软件单元102能从存贮器中移走,且由旧软件单元102中的服务类公开的接口可撤走。如果旧软件单元中的所有进程运行结束前企图撤走存贮器中的这些服务类,则系统从内核82产生一个异常调用。系统中的一个异常处理进程使未完成的进程有机会重引自己并使用新软件单元104,否则将中止。本发明使用存贮包含在软件单元中的可执行程序编码的共享存贮器,这使得处理器中的所有进程能执行该共享存贮器中的程序码。这意味着处理器中不同进程中的活动当进行运行时联编时不必复制和再定位程序码。因此,动态运行时联编(或连接过程调用)是一种很快和具有实时性效果的机构,因为在运行时不需要程序的再定位或拷贝。将交换器机构用于动态运行时联编的优点之一在于当包含在另一软件模块中的服务部分改变时不必修改包含接口的用户部分的软件模块。这就是说,对于服务部分的引用不必改变只要接口说明不变。当用接口说明语言ELIN定义一个单独的接口说明时,如下所述,为了那个接口与其它接口分开而在脱机情况下产生唯一的编号。通过服务部分在交换器中公开一个接口并通过交换机构由用户部分在动态运行时联编将该编号用于实时。使用这一编号代替包含单一接口名的一字符串使得一个接口找到服务部分的算法更实时有效。在交换器机构中找到服务部分的算法例如能使用散列技术(hashtechnic)或索引表,这使得它几乎与编码的静态联编一样有效,但确具有能使软件模块以平滑的方式改变而不会干扰使用旧软件的当前活动的优点。在使用本发明的连接过程调用机构中,用面向目标的接口说明语言(ELIN)写接口说明。在这种语言中,有一特殊结构(ADT),它专门针对连接过程调用接口的说明的。ELIN语言中的一个ADT是由某些类型的目标所提供的接口说明。如果使用面向目标的编程语言,则这些目标很适合作为类实例来执行。用ELIN语言的连接过程调用接口的说明包含如下信息(a)说明的名称;(b)作为一个库(base)用于这名称的其它接口;(c)一个或多个结构(用于产生实例);和(d)零个或多个方法说明,其中每一个由一个方法名、自变量(arguments)、返回类型和异常组成。下面以编码形式说明了一个接口说明的例子、该接口说明能用作这种连接过程调用机构的一部分并且描述了与一种称为栈的目标的接口ADTStackISBASETelecomObject;METHODSCONSTRUCTOR(INSizeInt);push(INdataInt);pop()RETURNSInt;ENDADTStack;1992TelefonaktiebolagetLMEricsson这种接口说明定义一个ADT命名的栈,这库ADT称为“电信目标”(“Telecomobject”)。这种ADT目标能接收来自列表功能构件(thelistedfunctionmembers)的进程或信息调用。具有识别这种ADT的一个库(abase)表明存在另一个称为电信目标的这种类型的ADT的说明。那个库ADT也已确实规定了当前的ADT作为库ADT的实例将要继承的方法。功能构件或上面ADT定义中规定的方法加到在库ADT中规定的那些功能构件和方法中。大体上,上面的编码包含能在系统中产生的一种类型的接口说明的ADT说明。一个接口能从另一个称做为该被导出的接口的库接口的接口导出。一些接口能从比一个其它接口多的接口中导出,被导出的接口继承它的每一个库接口的操作。另外,虽然它不可以定义具有与从库接口继承的那些相同名的操作,但该被导出的接口可以说明它自已的附加操作。很清楚继承仅仅影响接口的等级而不影响执行的等级。如图7所示,本发明系统也包括一个桩编码(stub-code)产生工具112,该工具用来证实通过接口运行时动态连接在一起的用户和服务之间的协调性。该接口用一种独立形式的语言而不用面向目标的范例来规定。桩编码产生进程确保获得对于几个编程语言之一的变换且在随后的部分中,有一个关于这样的C++表示的变换是怎样能执行的简短说明。参看图7,那里图示说明了一种一个接口说明110使用与一套本发明系统中产生的文件相关联的桩产生工具112的方式。图7特别说明了以那种语言执行的C++变换的整个结构。用本发明系统中使用的语言(ELIN)写的一个接口说明类似于以编程语言C++使用的一个类定义。同样,通过目标访问操作的机构类同于编程语言C++处理虚拟功能(virtualfunctions)的方法。因此,图7中表明的关于C++变换对于本发明系统的这方面的操作是指示性的。桩产生工具112为用户方和服务方两者产生两个文件。一个文件具有后缀“.h”(标题)而另一个具有后缀“.CC”(编码)。对于用户,该“.h”或标题文件包含两个类定义。一个类是服务的“.h”或标题文件中的对应类的精确复制。这确保用户和服务之间的兼容性并且使得用户能够调用由服务产生的目标。然而,这类的建造者是专有的,所以这种类不能用来在堆栈上产生自动目标。第二个类是用于用户的,它起代理人的作用,通过它能访问服务产生的目标。对于服务方,对应的两个“.h”(标题)和“.cc”(编码)文件由桩产生工具112产生。“.h”文件的内容包含一个确保与用户兼容的类定义。这是用作执行基础的类。执行能直接以产生的类为基础或所产生的类能用作导出其它类的基础。“.cc”文件包含“产生方法”(“createmethod”)的框架和一个带有每个连接过程调用接口的一个入口的产生的表格、它的产生方法的地址应登记在交换器中。产生方法的主体的职责是产生一个与所产生的类兼容的目标并如图4所示也把一个指针返回到新产生的目标。存在着为用户和服务两方产生不相同的可兼容的类定义而不是一个共享类定义的几个原因。首先,它为用户和服务中的构件(members)提供不同等级的可见度。例如,一个建造者对服务是公开的,但是他如果驻留在用户中就不一定要公开。其次,用户和服务程序能连接在一起以完成测试,如果使用不同的类就不会遇到名称冲突的问题。下面参看图8,这里显示了图示说明本发明系统中采用的某些典型编码框和它们的相互关系的某种图表结构。图8表示了某些产生的文件和书写的说明的逻辑结构,它们可在本发明系统中执行。在最高级上,公共接口说明120定义一个ADT“X”和方法或可访问那ADT的目标的操作。在下一级定义上,逻辑上从属于这个ADT的是一个接口说明120的用户单元122的说明和一个公共接口说明120的提供者(provider)单元124的说明。用户单元说明122定义公共接口ADTX的一个用户。提供者单元说明124定义ADTX的一个服务。在单元说明122和124以下的逻辑级上是为用户和提供者分别产生的类定义。为X用户(XUSer)126产生的类定义表明为公开和专有(pubicandprivate)应用两者定义的某些用户类。为X提供者(XProvider)128产生的类定义表明为提供者数据和功能的某些公开和专有的定义。如上所述,本发明的系统能在实时运行中以某种方式将一个进程连接到新软件或旧软件,这种方式能够在电信网络和交换系统中进行有效的实时测试和平滑而透明的替换而不会扰乱网络中的电信通话。前面的描述清楚地说明了本发明的操作和结构。当作为较佳实施例已描述了所示方法装置和系统时,则可在不脱离如下面权利要求书所限定的本发明精神范围内显然可作出种种变化和修改。权利要求1.一种动态联编分别设置在第一和第二软件应用中的第一和第二模块的方法,所述方法包含步骤为提供一个包括合作的交换器和内核部分的连接过程调用机构;和使所述连接过程调用机构(1)使用在所述第一和第二模块之间的专用接口,和(2)在运行期间在所述第一和第二模块之间建立一个互连和联编。2.如权利要求1所述方法,其特征在于,所述接口使用一个面向目标的接口说明语言来产生。3.如权利要求1所述方法,其特征在于,所述第一模块包括一个目标的用户类,而所述第二模块包括一个目标的服务类。4.如权利要求1所述方法,其特征在于,存在所述第二模块的两个版本,每个版本包含相同的一套目标的服务,所述交换器部分位于所述内核部分中和,所述交换器部分包括所述第二模块的两版本的目标的服务类的公开的地址,并能使一个进程接收指向第二模块和它的相应应用的所述版本之一的地址。5.如权利要求4所述的方法,其特征在于,所述第二模块的两个版本在不同时间上产生,所述第二模块的老版本位于在第一时间上产生的软件应用中而所述第二模块的新版本位于在第二后续时间上产生的软件应用中。6.如权利要求5所述的方法,其特征在于,所述第二时间前产生的一个进程继续从交换器接收指向第二模块的所述老版本的一个地址,而所述第二时间后产生的一个进程从交换器接收指向第二模块的所述新版本的一个地址。7.如权利要求2所述的方法,其特征在于,所述连接过程调用接口包含一个接口说明名称;用作所述接口说明的一个库(abase)的其它接口说明;至少一个产生说明所述接口的目标实例的建造者;和至少一个包括一个方法名、自变量、返回类型和异常的方法说明。8.如权利要求7所述方法,其特征在于,其中所述其它接口说明用作所述接口说明的一个库,所述接口说明继承在该库说明中规定的方法。9.如权利要求1所述的方法,其特征在于,所述模块包括在动态运行时连接在一起的目标的用户和服务类,且其中由脱机的桩产生工具确保用户和服务目标之间的配合。10.如权利要求9所述的方法,其特征在于,以使用面向目标的范例的语言独立的形式来说明接口。11.如权利要求9所述的方法,其特征在于,所述桩产生工具为用户和服务侧产生分离的文件。12.如权利要求11所述的方法,其特征在于,为用户侧产生所述文件之一包含两个类定义。13.如权利要求12所述的方法,其特征在于,所述定义的类之一是一个可与服务侧中对应类相兼容的类以确保用户和服务之间的兼容性,并且使用户能调用由服务产生的目标。14.一种动态联编分别配置在第一和第二软件应用中的第一和第二模块的装置,所述装置包含用于定义一个包括配合的交换器和内核部分的连接过程调用机构的第一装置;和第二装置使所述连接过程调用机构(1)使用所述第一和第二模块之间的专用接口,和(2)运行时在所述第一和第二模块之间产生互连和联编。15.如权利要求14所述的装置,其特征在于,使用面向目标的接口说明语言来说明所述接口。16.如权利要求14所述的装置,其特征在于,所述第一模块包括一个目标的用户类和所述第二模块包括一个目标的服务类。17.如权利要求14所述的装置,其特征在于,所述交换器部分位于所述内核部分中,所述第一和第二模块包括目标的服务类,和,所述交换器部分包括所述第一和第二模块之一的目标的服务类的公开的地址,并且能使一个进程接收指向所述模块之一及其关联的应用的地址。18.如权利要求17所述的装置,其特征在于,所述第一模块位于在第一时间上产生的一软件应用中,而所述第二模块位于在第二后续时间上产生的一软件应用中。19.如权利要求18所述装置,其特征在于,在所述第二时间前产生的一进程继续从交换器接收指向所述第一模块的一地址,而所述第二时间之后产生的一进程从交换器接收指向所述第二模块的一地址。20.如权利要求15所述的装置,其特征在于,所述连接过程调用包含一接口说明的名称;用作所述接口说明的一个库的其它接口;至少一个产生说明所述接口的目标实例的建造者;至少一个包括一方法名、自变量、返回类型和异常的方法说明。21.如权利要求20所述的装置,其特征在于,所述其它接口说明用作所述接口说明的一个库,所述接口说明继承该库说明中指明的方法。22.如权利要求1所述的装置,其特征在于,所述模块包括动态运行中连接在一起的目标的用户和服务类,且其中用户和服务目标之间的配合由一个脱机的桩产生工具得到保证。23.如权利要求22所述的装置,其特征在于,接口用使用面向目标的范例的语言独立形式来说明。24.如权利要求22所述的装置,其特征在于,所述桩产生工具为用户和服务两者产生分开的文件。25.如权利要求24所述的装置,其特征在于,所述用户产生的文件之一包含两个类定义。26.如权利要求25所述的装置,其特征在于,所述定义的类之一是一个与服务中的对应的类相兼容的类,以确保用户和服务之间的兼容性并使用户能调用由服务产生的目标。27.一种动态联编分别位于第一和第二软件应用中的第一和第二模块的方法,所述方法包含步骤为确定所述第一和第二软件模块在共享存贮器中的位置;提供一个交换器用于将软件模块中的专用接口的用户部分联编到一不同模块中的所述专用接口的服务员部分;用所述第一模块中的接口的服务部分的存贮器地址单元更新所述交换器使其能联编到所述第二模块;和在所述运行中的交换器中将所述第二模块中的用户部分与在所寻址的单元上第一模块中的服务部分动态相连接。28.如权利要求27所述的方法,其特征在于,多个不同的第二模块与所述第一模块存放入所述共享存贮器中;和所述第一模块中的所述服务部分运行时与多个所述第二模块的每一个的用户部分动态连接。29.如权利要求27所述的方法,其特征在于,所述交换器用位于所述第一模块中的多个不同接口的服务部分的地址更新;第一模块中的所述不同接口的至少一个所述服务部分运行时动态连接于第二模块中的一对应接口的用户部分。30.如权利要求27所述的方法,其特征在于,该方法还包含产生一个识别包含在所述第一和第二模块中的每个接口的唯一编号。31.如权利要求30所述的方法,其特征在于,用识别一个特定接口的唯一编号及所述第一应用中的那个接口的服务部分的存贮器地址单元更新所述交换器。全文摘要在电信交换系统中,新的或修改的软件要加入操作系统运行必须按照不扰乱系统当前活动的严格的规定进行。最好的途径是系统运行期间用新版本在飞行条件下能够替换软件模块。平滑的修改在所揭示的系统中通过在执行期间动态连接和联编软件模块能使得这种改变对当前活动影响最小。所揭示的系统是通过扩充的面向目标的编程技术和使用语言独立的接口说明来完成上述替换的,这种接口说明保持不变并且免除存贮下面修改变化的符号信息。文档编号G06F9/40GK1081006SQ93106449公开日1994年1月19日申请日期1993年5月26日优先权日1992年7月1日发明者肯尼思·伦丁申请人:L·M·埃利克逊电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1