CN107479866B - 基于重构技术实现开放终端应用数据与功能的方法 - Google Patents

基于重构技术实现开放终端应用数据与功能的方法 Download PDF

Info

Publication number
CN107479866B
CN107479866B CN201610772875.2A CN201610772875A CN107479866B CN 107479866 B CN107479866 B CN 107479866B CN 201610772875 A CN201610772875 A CN 201610772875A CN 107479866 B CN107479866 B CN 107479866B
Authority
CN
China
Prior art keywords
application
control flow
data
function
functions
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
Application number
CN201610772875.2A
Other languages
English (en)
Other versions
CN107479866A (zh
Inventor
张颖
蔡华谦
黄罡
姚伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peking University
Original Assignee
Peking University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Peking University filed Critical Peking University
Publication of CN107479866A publication Critical patent/CN107479866A/zh
Application granted granted Critical
Publication of CN107479866B publication Critical patent/CN107479866B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于重构技术实现开放终端应用数据与功能的方法。其核心思想是通过修改应用的运行时环境,获取用户在使用应用相应功能、数据时的应用运行时控制流信息,并对原有控制流进行重构。本方法通过程序化分析运行时控制流和应用静态代码,剥离与应用的功能、数据无关的子控制流,保留与应用功能、数据直接相关的一组子控制流及其上下文环境。在特定的上下文环境下,重现这组子控制流,从而实现应用相应功能、获取应用数据。本发明可用于开放基于Java、C#和JavaScript实现的不同类型的终端应用中的功能与数据。对于需要开放应用数据,同时却面临着开发文档缺失、开发人员缺位的应用所有者,本发明具有十分重要的意义。

Description

基于重构技术实现开放终端应用数据与功能的方法
技术领域
本发明是一种利用程序分析与重构技术实现将现有终端应用的数据和功能转化为可由外部调用的应用编程接口(Application Programming Interface,API),从而实现将终端应用数据与功能开放的方法,属于软件技术领域,适用于软件维护。
背景技术
应用编程接口经济是新兴的推动力量,能够帮助企业领导者实现企业转型,构建新的生态系统,实现核心资产货币化,以应对当今数字转型过程中的市场挑战。终端应用中的数据和功能潜藏了巨大的价值,亟需进一步开发,以实现其潜在价值。然而,开放应用的数据和功能需要开发人员对原系统进行手工的修改与重构。对于大量的企业和政府单位,他们往往是通过第三方开发团队定制应用,如企业的办公应用、政府的智慧城市应用等。这些企业、政府所拥有的应用虽然有着非常重要的数据和功能,却因为这些应用的所有者往往缺少相应的开发团队,导致他们在开放应用的数据和功能时需要重新联系原有的第三方开发团队,会遇到开发成本高、开发周期长等问题。
综上所述,需要一种支持将现有终端应用的数据和功能转换为应用编程接口的方法。它可以帮助应用所有者在开发文档缺失、开发人员缺位的情况下,快速地将现有应用的数据和功能对外开放。应用所有者利用本发明提出的一种程序控制流捕捉与重构方法,可以高效地复用原有应用代码,从而实现快速将现有应用的数据与功能生成相应的应用编程接口。
发明内容
本发明的目的是将现有应用的数据和功能对外以接口的方式提供服务。其核心思想是通过修改应用的运行时环境,获取用户在使用应用相应功能、数据时的应用运行时控制流信息,并对原有控制流进行重构。本方法通过程序化分析运行时控制流和应用静态代码,剥离与应用的功能、数据无关的子控制流,例如,实现用户接口(User Interface,UI)的子控制流;保留与应用功能、数据直接相关的一组子控制流及其上下文环境。在特定的上下文环境下,重现这组子控制流,即可实现应用相应功能、获取应用数据。本方法通过应用运行环境级别的监控,实现获取用户在使用应用特定功能、获取应用特定数据时的运行时的控制流;通过结合控制流分析与静态代码分析,剥离与应用的功能、数据无关的子控制流提升生成的对外接口的效率;通过在应用运行环境级别重现特定的上下文环境、复用原应用代码以保证应用功能、获取应用数据的正确性。
本发明采用的技术方案如下:
一种基于重构技术实现开放终端应用数据与功能的方法,其步骤包括:
1)由应用所有者指定终端应用中欲对外提供接口的数据与功能;
2)利用应用运行环境级别的控制流获取方法,获取在使用步骤1)中指定的功能、数据的运行时的一组控制流及其运行时上下文;
3)对步骤2)获取的控制流及运行时上下文进行程序化分析,生成控制流中每个函数的上下文依赖及这组控制流之间的唤醒关系;
4)通过步骤3)获取的分析结果,重构步骤2)中获取的应用的控制流,生成一组外部可调用的应用编程接口(Application Programming Interface,API);
5)通过调用步骤4)中生成的API可使用应用的原有功能、数据,实现开放应用的功能、数据。
进一步地,步骤2)所述的应用运行环境级别的控制流为一组有序的函数调用。
进一步地,步骤2)所述的运行时上下文包括控制流中每个函数调用的参数,和每个函数在内存所读取、写入的数据。
进一步地,步骤2)所述的应用运行环境级别的控制流获取方法包括:
a)修改应用运行环境的内存管理部分,使其支持运行时对内存中的数据(即上下文)进行序列化;
b)修改应用运行环境的实现函数调用相关模块,使其支持记录运行时函数调用次序(即控制流);
c)在上述a)、b)步骤实现的应用运行环境中运行相应的应用,即可获取使用指定的功能、数据时的运行时控制流及其序列化后的上下文信息。
进一步地,步骤3)中的程序化分析方法包括:
a)以应用字节码或代码作为输入,利用静态分析方法,分析每个函数的数据依赖,并结合运行时的上下文信息,将静态分析结果映射至控制流中的每个函数,生成控制流中每个函数调用与上下文的数据依赖关系;
b)以控制流中与控制流切换相关的函数作为输入,分析各个控制流之间的切换,生成控制流之间的唤醒关系,从而构造出跨多个线程的控制流。
进一步地,步骤4)中的重构应用的控制流的方法是:
a)根据函数的对外产生的行为将控制流中的函数分为三类:1.用户界面相关;2.计算逻辑相关;3.其他输入、输出相关;
b)通过程序分析,将每个控制流切分为用户界面相关、计算逻辑相关和其他输入输出相关三个部分的子控制流,同时给出每个子控制流起始的上下文示例,即子控制流函数调用时的函数的参数,及其所依赖的内存中的数据;
c)开发人员根据上述步骤b)给出的示例,选择合适的子控制流,将应用中的功能、数据实现为一组外部可调用的应用编程接口。
本发明提出了一种将现有应用的数据和功能转化为对外以接口的方式提供服务的方法,可以在文档缺失、开发人员缺位的情况下,通过程序自动获取控制流及运行时上下文,并对原控制流进行重构。本发明结合了现有技术的优点,创新性地结合控制流分析与静态代码分析,剥离与应用的功能、数据无关的子控制流以提升生成的对外接口的效率;同时又通过在应用运行环境级别重现特定的上下文环境、复用原应用代码以保证应用功能、获取应用数据的正确性。
附图说明
图1是获取的原始控制流示例。
图2是补充了函数的数据依赖及控制流之间唤醒关系的控制流示例。
图3(a)、图3(b)和图3(c)是控制流重构方法示例,其中图3(a)为应用的原始控制流,图3(b)为生成效率驱动的重构后控制流,图3(c)为执行效率驱动的重构后控制流。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图,对本发明做进一步说明。
本发明提供了一种将现有应用的数据和功能转化为对外以接口的方式提供服务的方法。该方法包含三部分内容:1、实现应用运行时控制流及其上下文获取方法;2、控制流中数据依赖关系及控制流唤醒关系;3、应用控制流重构方法。其核心思想是通过修改应用的原有的控制流,保留应用功能核心处理逻辑,达到将现有应用的数据和功能正确并高效地转化为对外以接口的方式提供服务的目的。
本发明的具体技术方案如下:
(1)应用运行时控制流及运行时上下文获取方法。
应用运行时的控制流为一组有序的函数调用。通过修改应用运行环境的帧(Frame)结构,可使其支持记录运行时函数调用次序(即控制流)。这组控制流中的每个函数调用都有与其对应的运行时上下文。运行时上下文包括两部分:1.每个函数调用时的参数;2.全局所有函数共享的堆中的数据。为获取上述上下文,可通过修改应用运行环境的栈(Stack)、堆(Heap)结构,使其支持在运行时对栈、堆结构中的数据(即上下文)进行序列化。通过在进行以上修改后的应用运行环境中运行相应的应用,即可获取使用指定的功能、数据时的运行时控制流及其序列化后的上下文信息。
(2)应用控制流关系及函数数据依赖关系生成方法
除了基本的控制流以外,还需要控制流中每个函数的数据依赖关系及控制流唤醒关系,以便开发人员理解完整控制流,并重现控制流上下文。我们以应用字节码或代码作为输入,利用静态分析方法,分析每个函数的数据依赖,并结合运行时的上下文信息,生成控制流中每个函数调用与内存中数据的依赖关系。
其次,我们以控制流中与线程唤醒相关的函数作为输入,分析各个控制流之间的唤醒关系,从而构造出跨多个线程的控制流。
(3)应用控制流重构方法
控制流可分为用户界面相关、计算逻辑相关和文件、网络等其他输入、输出相关的三个部分。利用(2)中构造的控制流,开发人员可以以不同的目标对原始控制流进行重构。
一方面,开发人员可以以应用编程接口生成效率为目标,对原始控制流进行重构。应用中与用户界面相关的部分往往是读取输入、呈现输出,不仅便于开发人阅读、而且便于理解。因此,以原始控制流为基础,增加对用户界面的读取、写入,即可快速实现将所需的数据与功能封装为应用编程接口。以这种方式生成的应用编程接口由于需要执行用户界面渲染等计算较复杂的,在部分场景下,会导致在执行效率低下,难以满足高并发量的API调用需求。
另一方面,开发人员还可以以应用编程接口执行效率为目标,对原始控制流进行重构。本质上,用户界面相关的函数在整个控制流中仅是提供输入和输出接口的作用,可以完全去除;与输入输出相关的函数往往必须保留(除了部分日志类型输出)。一个可行的控制流重构方案为保留了不可去除的函数及部分计算逻辑相关的函数。不同的的控制流重构方案所需的上下文信息有所区别,以所需的上下文复杂程度作为指标,开发人员可找出一组可行的、高效的控制流重构方案。
实施例:
本节给出开放安卓应用中功能、数据的实现。下面以一个查询数据功能为例,介绍重构过程示例和重构后的运行时体系结构示例。
通过修改安卓应用的运行环境,安卓运行时(Android Runtime),使其支持获取上述的应用运行时控制流和上下文。特别地,安卓运行时的内存数据是以对象为单位,保存在一个堆数据结构中。在该修改后的安卓运行时上使用该应用的查询功能,即可得到该查询功能所对应的控制流,如图1所示。图1中带字母的圆角矩形表示函数调用;函数调用上下相叠表示函数之间的调用关系,如B函数中调用了C函数(即产生了C函数调用);六边形表示运行时的对象;对象与函数调用之间的虚线表示该函数调用以该对象作为参数。图1中的控制流为用户通过界面点击查询触发主线程调用A函数,A函数通过获取用户界面上的输入(对象1),唤醒后台线程,调用B函数对输入数据进行进一步整理;随即,主线进入休眠状态;随后由B函数调用C函数构造出相应的数据查询语句(对象2),并唤醒数据查询线程调用D函数发起查询;此时后台线程再次进入休眠状态;D函数调用E函数得到查询结果,重新唤醒后台线程;F函数整理E的输出结果(对象3)并唤醒主线程调用。一方面,上述获取的控制流信息缺少函数调用的数据依赖,例如读、写静态字段(Static Field)等,这将会导致开发人员难以重现完整的运行时上下文环境,导致无法生成正确的应用编程接口。另一方面,上述获取的控制流信息还缺少线程之间的唤醒关系,这会导致上述图中将会对应为五个控制流,而不是一个完整的控制流。
为此,我们以安卓应用的Dalvik格式的字节码作为输入,通过静态程序分析,分析出每个函数的数据依赖,并结合运行时的上下文,更精确地描述获取的控制流中的函数调用的数据依赖。其次,我们以控制流中与线程唤醒相关的函数作为输入,构造各个控制流之间的唤醒关系。最终,得出补充了函数数据依赖关系及线程之间唤醒关系的控制流,如图2所示。开发人员可对此控制流开始行进重构。
如上述具体实现方案所述,我们将控制流分为用户界面相关、计算逻辑相关和文件、网络等其他输入、输出相关的三个部分,控制流可简化为如图3(a)所示。
一种以应用编程接口生成效率为目标的控制流重构方案如图3(b)所示。该重构方案以原始控制流为基础,增加对用户界面元素的读取、写入操作(H函数),即完成所需的应用编程接口。
一种以应用编程接口执行效率为目标的控制流重构方案如图3(c)所示。该重构方案完全去除用户界面相关的函数调用(A函数和G函数)和部分输入数据处理逻辑(B函数和C函数),保留核心的数据库查询逻辑(D函数和E函数)和输出结果处理逻辑(F函数),开发人员根据获取的原始控制流的上下文信息,构造这三个函数执行所需的上下文环境(对象2),即可实现将该查询功能封装为一个对外可调用的应用编程接口。
特别地,如果开发人员选取的函数依赖数据复杂,例如会通过运行时动态链接库调用原生C/C++代码,并在C/C++代码中依赖安卓运行时(Android Runtime)中的数据,则可实现为在服务器端以虚拟化的方式运行安卓虚拟机,以实现复杂的上下文环境的重现,保证重构后控制流的正确性。
以上实施例针对是对安卓应用及安卓运行时(Android Runtime)进行的实施。本方法也可针对不同的字节码、中间代码和源代码及其运行时环境,例如.Net framework应用及其运行时;Java应用及Java虚拟机;Javascript应用及其JS解释器等进行相应实施。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

Claims (7)

1.一种基于重构技术实现开放终端应用数据与功能的方法,其特征在于,包括以下步骤:
1)由应用所有者指定终端应用中欲对外提供接口的数据与功能;
2)利用应用运行环境级别的控制流获取方法,获取在使用步骤1)中指定的功能、数据的运行时的一组控制流及其运行时上下文;
3)对步骤2)获取的控制流及运行时上下文进行程序化分析,生成控制流中每个函数的上下文依赖及这组控制流之间的唤醒关系;所述程序化分析包括:
a)以应用字节码或代码作为输入,利用静态分析方法分析每个函数的数据依赖,并结合运行时的上下文信息,将静态分析结果映射至控制流中的每个函数,生成控制流中每个函数调用与上下文的数据依赖关系;
b)以控制流中与控制流切换相关的函数作为输入,分析各个控制流之间的切换,生成控制流之间的唤醒关系,从而构造出跨多个线程的控制流;
4)通过步骤3)获取的分析结果,重构步骤2)中获取的应用的控制流,生成一组外部可调用的应用编程接口;
5)通过调用步骤4)中生成的应用编程接口使用应用的原有数据和功能,从而将应用的数据和功能对外开放。
2.如权利要求1所述的方法,其特征在于:步骤2)所述的应用运行环境级别的控制流为一组有序的函数调用。
3.如权利要求1所述的方法,其特征在于:步骤2)所述的运行时上下文包括控制流中每个函数调用的参数,和每个函数在内存所读取、写入的数据。
4.如权利要求1所述的方法,其特征在于:步骤2)所述应用运行环境级别的控制流获取方法包括:
a)修改应用运行环境的内存管理部分,使其支持运行时对内存中的数据进行序列化;
b)修改应用运行环境的实现函数调用相关模块,使其支持记录运行时函数调用次序;
c)在步骤a)、b)实现的应用运行环境中运行相应的应用,即可获取使用指定的功能、数据时的运行时控制流及其序列化后的上下文信息。
5.如权利要求4所述的方法,其特征在于:步骤2)通过修改应用运行环境的帧结构,使其支持记录运行时函数调用次序,即控制流;通过修改应用运行环境的栈、堆结构,使其支持在运行时对栈、堆结构中的数据即上下文进行序列化。
6.如权利要求1所述的方法,其特征在于,步骤4)中重构应用的控制流的方法是:
a)根据函数的对外产生的行为将控制流中的函数分为三类:用户界面相关;计算逻辑相关;其他输入输出相关;
b)通过程序分析,将每个控制流切分为用户界面相关、计算逻辑相关和其他输入输出相关三个部分的子控制流,同时给出每个子控制流起始的上下文示例,即子控制流函数调用时的函数的参数,及其所依赖的内存中的数据;
c)开发人员根据上述步骤b)给出的示例,选择合适的子控制流,将应用中的功能、数据实现为一组外部可调用的应用编程接口。
7.如权利要求6所述的方法,其特征在于,步骤4)中开发人员以应用编程接口生成效率为目标,对原始控制流进行重构;或者开发人员以应用编程接口执行效率为目标,对原始控制流进行重构。
CN201610772875.2A 2016-08-12 2016-08-30 基于重构技术实现开放终端应用数据与功能的方法 Active CN107479866B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610663995 2016-08-12
CN2016106639959 2016-08-12

Publications (2)

Publication Number Publication Date
CN107479866A CN107479866A (zh) 2017-12-15
CN107479866B true CN107479866B (zh) 2020-11-06

Family

ID=60593766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610772875.2A Active CN107479866B (zh) 2016-08-12 2016-08-30 基于重构技术实现开放终端应用数据与功能的方法

Country Status (3)

Country Link
US (1) US10496423B2 (zh)
CN (1) CN107479866B (zh)
WO (1) WO2018028027A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107479866B (zh) * 2016-08-12 2020-11-06 北京大学 基于重构技术实现开放终端应用数据与功能的方法
CN108845996A (zh) * 2018-04-02 2018-11-20 北京大学 一种聚合安卓应用程序内部搜索功能的元搜索引擎实现方法和总控系统
CN109101271A (zh) * 2018-07-27 2018-12-28 郑州云海信息技术有限公司 一种程序扩展方法及相关装置
CN109491708A (zh) * 2018-11-21 2019-03-19 北京锐安科技有限公司 文档生成方法、系统、设备和介质
CN111367512B (zh) * 2020-03-16 2021-05-28 北京五八信息技术有限公司 一种应用程序开发中创建Android库模块依赖关系的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620536A (zh) * 2009-08-17 2010-01-06 用友软件股份有限公司 一种调用功能函数的方法和装置
CN101847100A (zh) * 2010-06-08 2010-09-29 用友软件股份有限公司 扩展软件应用的方法和装置
CN104636256A (zh) * 2015-02-17 2015-05-20 中国农业银行股份有限公司 一种内存访问异常的检测方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3167284A (en) * 1962-08-24 1965-01-26 Lynch James Fishing rod carrier for a bicycle
CN101650648A (zh) * 2008-08-14 2010-02-17 鸿富锦精密工业(深圳)有限公司 动态调用功能模块的系统及方法
CN102750144A (zh) * 2012-05-31 2012-10-24 华亚微电子(上海)有限公司 功能模块的生成工具
CN105303122B (zh) * 2015-10-13 2018-02-09 北京大学 基于重构技术实现敏感数据云端锁定的方法
CN107479866B (zh) * 2016-08-12 2020-11-06 北京大学 基于重构技术实现开放终端应用数据与功能的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620536A (zh) * 2009-08-17 2010-01-06 用友软件股份有限公司 一种调用功能函数的方法和装置
CN101847100A (zh) * 2010-06-08 2010-09-29 用友软件股份有限公司 扩展软件应用的方法和装置
CN104636256A (zh) * 2015-02-17 2015-05-20 中国农业银行股份有限公司 一种内存访问异常的检测方法及装置

Also Published As

Publication number Publication date
WO2018028027A1 (zh) 2018-02-15
US20190155628A1 (en) 2019-05-23
US10496423B2 (en) 2019-12-03
CN107479866A (zh) 2017-12-15

Similar Documents

Publication Publication Date Title
CN107479866B (zh) 基于重构技术实现开放终端应用数据与功能的方法
CN111090433B (zh) 一种数据处理的方法、装置和存储介质
Miles et al. Prime: A methodology for developing provenance-aware applications
US8719784B2 (en) Assigning runtime artifacts to software components
CN108280023B (zh) 任务执行方法、装置和服务器
US20110225565A1 (en) Optimal incremental workflow execution allowing meta-programming
Manner et al. Troubleshooting serverless functions: a combined monitoring and debugging approach
Torgo An infra-structure for performance estimation and experimental comparison of predictive models in r
CN110955410A (zh) 一种代码自动生成方法、装置、设备及介质
US7216337B2 (en) Automatic determination of invalid call sequences in software components
CN110895718A (zh) 用于训练机器学习模型的方法及系统
CN109344083B (zh) 一种程序调试方法、装置、设备及可读存储介质
US20200293309A1 (en) Diagram model for a program
CN112783791B (zh) 接口测试案例的生成方法及装置
CN104731900A (zh) 一种Hive调度方法及装置
CN113885844A (zh) 一种业务服务编排方法及相关装置
Weyprecht et al. Model-driven development of simulation solution based on SysML starting with the simulation core.
US20160299786A1 (en) Code examination by scheduler timeline manipulation
Kumar et al. An empirical study of bad smell in code on maintenance effort
US20140244539A1 (en) Business process management, configuration and execution
Szvetits et al. Architectural design decisions for systems supporting model-based analysis of runtime events: a qualitative multi-method study
CN113867714B (zh) 一种适配多语言的自动代码生成方法
US11327778B2 (en) Application deployment using reduced overhead bytecode
CN115904973A (zh) 一种基于数据驱动的测试方法及装置
CN111708526B (zh) 一种api撰写方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant