The invention provides a method for acquiring runtime software architecture for client-oriented applications, which includes: (1) preprocessing all classes in source code of client applications: recording the location of the currently created object and the created object when the active object is found to be created; (2) object conversion: synchronously constructing an object using proxy mode; Proxy objects, which are equivalent to source objects, access target objects through proxy objects; _: obtain runtime information: create proxy classes for all runtime objects through proxy mode; intercept all runtime classes by interceptor, and then determine the relationship between objects by recording the function and data structure of call paths, and record runtime information. The invention obtains runtime software architecture by reliable means, provides a way to monitor and adjust the system in the way of reading and writing architecture, and provides a basis for online upgrade and evolution of the system.
【技术实现步骤摘要】
面向客户端应用程序的获取运行时软件体系结构的方法
本专利技术属于软件
,尤其涉及一种面向客户端应用程序的获取运行时软件体系结构的方法。
技术介绍
运行时软件体系结构是系统运行时刻的一个动态、结构化的抽象,描述系统当前的组成成分、各成分的状态和配置以及不同成分之间的关系。运行时体系结构与目标系统间具有动态的因果关联,即系统的变化及时体现在体系结构上,而对体系结构的修改及时影响当前系统。运行时体系结构允许开发者以读写体系结构的方式实现系统的监测和调整,是体系结构层次系统动态适应与在线演化的基础。现如今,随着互联网的发展,出现了大量的客户端应用程序,并且数量仍然在快速增长,这些应用程序更新换代的速度也越来越快,然而它们的更新速度仍然远远不及硬件的发展速度,为了能加快应用软件的更新和演化,产生了能在客户端程序运行时,实时看到系统运行时的软件体系结构的迫切需求,目前,在现有技术当中,尚无较为可靠和成体系的具备普适性的获取运行时软件体系结构的方法。
技术实现思路
本专利技术目的在于提出一种面向客户端应用程序的获取运行时软件体系结构的方法,有利于研究人员熟悉系统,同时也能大大 ...
【技术保护点】
1.一种面向客户端应用程序的获取运行时软件体系结构的方法,其特征在于,包括以下步骤:步骤S1:对客户端应用程序的源程序代码中的所有类进行预处理:当发现有源对象被创建时,记录当前创建的对象与创建对象的位置;步骤S2:进行对象的转换:采用代理模式,同步构造一个与源对象等价的代理对象,通过代理对象访问目标对象;步骤S3:获取运行时的信息:通过代理模式,为所有运行时的对象创建代理类;通过拦截器拦截所有运行时使用的类,然后通过记录调用路径的函数及数据结构来确定对象间的关系,并记录下运行时的信息。
【技术特征摘要】
1.一种面向客户端应用程序的获取运行时软件体系结构的方法,其特征在于,包括以下步骤:步骤S1:对客户端应用程序的源程序代码中的所有类进行预处理:当发现有源对象被创建时,记录当前创建的对象与创建对象的位置;步骤S2:进行对象的转换:采用代理模式,同步构造一个与源对象等价的代理对象,通过代理对象访问目标对象;步骤S3:获取运行时的信息:通过代理模式,为所有运行时的对象创建代理类;通过拦截器拦截所有运行时使用的类,然后通过记录调用路径的函数及数据结构来确定对象间的关系,并记录下运行时的信息。2.根据权利要求1所述的面向客户端应用程序的获取运行时软件体系结构的方法,其特征在于:所述源程序代码采用java编程;所述源对象和代理对象的关系定义为:P=<Object,Proxy>(1)其中,proxy为代理对象,object为源对象;创建对象的位置和被创建的对象的关系定义为:ObjectId=<Pos,Object>(2)其中,pos为创建对象的位置,object为被创建的源对象;对象声明路径定义为:P=<Method1,Method2,…,Methodn>(3)Methodi为函数;对象调用关系定义为:G=<Object,Invoke>(4)Invoke为对象所调用的函数;函数的参数列表定义为:Para=<Parameter1,Parameter2,…,Parametern>(5)其中,Parameteri=<Value,Type>为第i个参数,参数值为Value,参数类型为Type;步骤S1具体包括以下步骤:步骤S11:扫描客户端应用程序的源程序代码,在每个主函数的开头加入以下代码:StringcurrentName=Thread.currentThread().getStackTrace()[1].getClassName()+'.'+Thread.currentThread().getStackTrace()[1].getMethodName();currentObject.push(currentName);步骤S12:在源程序代码的每个函数开头加入以下代码:StringcurrentName=Thread.currentThread().getStackTrace()[1].getClassName()+'.'+Thread.currentThread().getStackTrace()[1].getMethodName();步骤S13:在每个对象创建后加入一行函数调用,如对于对象A有:ObjectA=newObject();A=(Object)CglibFactory.getProxyInstance(A,currentName);。...
【专利技术属性】
技术研发人员:陈星,郭莹楠,胡传淑敏,陈佳晴,张祖文,
申请(专利权)人:福州大学,
类型:发明
国别省市:福建,35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。