CN102947791B - 用户增强的反向工程 - Google Patents

用户增强的反向工程 Download PDF

Info

Publication number
CN102947791B
CN102947791B CN201180029767.1A CN201180029767A CN102947791B CN 102947791 B CN102947791 B CN 102947791B CN 201180029767 A CN201180029767 A CN 201180029767A CN 102947791 B CN102947791 B CN 102947791B
Authority
CN
China
Prior art keywords
code library
user
generation
boundary condition
input
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
CN201180029767.1A
Other languages
English (en)
Other versions
CN102947791A (zh
Inventor
S·杜塔
T·特里温
A·拜恩
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102947791A publication Critical patent/CN102947791A/zh
Application granted granted Critical
Publication of CN102947791B publication Critical patent/CN102947791B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本文中公开的是用户增强的反向工程,其中在一个实施例中,在代码库、数据库、二进制等的图形表示的生成期间,可向用户提供用于“聚焦”的选项。例如,在大代码库的图形生成期间,用户可选择一个或多个物以限制图形表示生成的范围。在另一个实施例中,图形生成可遇到一个或多个预定的边界条件。在遇到边界条件后,图形表示的生成可确定在没有附加指令的情况下它不能在预定的一组要求内完成图形生成。因此,图形生成可完成然后向用户提示它已经遇到的任意边界条件的解,或者该生成可在每次遇到边界条件时暂停,并向用户提示对边界条件的解。

Description

用户增强的反向工程
技术领域
以下一般涉及代码库、二进制代码和数据库反向工程及代码库、二进制代码和数据库的视觉表示的领域。
背景技术
通常说来,图像具有数千字。对于试图在预先存在的代码库上工作或以其它方式创建代码库二进制代码或反向工程数据库的视觉表示的人而言,这种说法尤其正确。随着计算机硬件和软件功能性的进步,代码库已经变得越来越大且复杂。通常,很多不同的程序员将利用单个代码库或项目。这些人可能不熟悉代码库的所有元素,因此可能需要代码库的总“图”,或者他们可能需要关于代码库内的特定结构的信息。为了帮助具有该问题的人,已经开发出多种程序,其以流程图、运行图、时序图、树等方式提供代码库的图形表示。
通常可将提供代码库的图形表示的这些程序分成两组:静态分析制图程序和运行时间分析制图程序。静态分析程序更加普遍,但它们在很多方面受到限制。经历静态分析的代码库可能具有很多静态分析不能解决的“边界”。此外,静态分析不能确定代码库的实际功能,且它们可能不能定位错误和类似物。此外,静态代码库可能不能聚焦在代码库的概览以及特定类、函数、调用、算法、元素、值、参数、序列、分量、活动等。
类似,运行时间表示具有一系列问题。如果系统具有错误或差错,使得运行不能完成,则运行时间表示可能失败。此外,该运行仅可跟随动作的特定过程,且可能不会提供全部表示。其它问题可与静态和动态表示的任一个或两者相关联。
因此,需要克服静态和运行时间代码库图中的问题的系统和方法。
发明内容
在一实施例中,为了克服与代码库、数据库模式、二进制数据库等的静态和运行时间图形表示相关联的限制,可向用户提供在代码库、数据库模式、二进制数据库等的处理期间“聚焦”图形表示的生成的选项。例如,在大代码库的图形生成期间,用户可选择一个或多个类、项、算法、值、项、协议、序列、分量、活动、使用案例、进程等以限制图形表示生成的范围。例如,在代码库的图形表示的生成期间,用户可暂停图形生成,提供去除或选择图形生成的一个或多个元素的输入,这可将生成的剩余部分限制在仅与期望元素有关的那些子元素。
在另一个实施例中,图形生成可遇到一个或多个预定的边界条件。在遇到边界条件后,图形表示的生成可确定在没有附加指令的情况下它不能在预定的一组要求内完成图形生成。因此,生成可继续而不完成边界条件,直到生成已经创建它能创建的每个元素的表示,或者生成可在遇到边界条件时暂停并在继续生成的剩余部分之前请求用户输入。
可按各种方式定义边界条件。在一个实施例中,缺少存储器可能是边界条件。在另一个实施例中,关于生成将花费特定时间量的确定是边界条件。在又一个实施例中,关于代码的一个或多个部分需要来自外部数据库或源的输入的确定可以是边界条件。在另一个实施例中,当有代码库、数据库模式、二进制数据库等的可向函数、进程、调用等提供解的多个部分时,系统可向用户提示可能的解且用户然后可选择期望的解。此外,用户可向反向工程提供指令,使得生成将特定限制视为边界条件。换言之,边界条件也可以是用户定义的。本领域的技术人员将意识到以上不是边界条件的穷尽列表,而是仅仅提供几个示例以便一般地描述用户增强的反向工程。
在另一个实施例中,用户增强的反向工程可包括在图形表示的生成期间实时接收来自用户的输入的可能性并且还可包括检测一个或多个预定边界条件并向用户提供用于输入边界条件相关信息的界面的能力。因此,在图形表示的生成期间,用户可向系统提供输入以完成先前不可能的生成,并且用户还可在生成本身期间指导图形生成,因此聚焦在代码库、数据库模式、二进制数据库等的与用户有关的部分上。
在另一个实施例中,可在代码库等的静态生成期间和/或在代码库等的运行时间生成期间提供上述实施例中的任一种。在任意类型的生成期间,构想到可提供用于信息输入的用户界面以便允许用户聚焦代码库、数据库模式、二进制数据库等或允许用户满足对预先确定的边界条件的解的请求。
附图说明
图1描绘了其中可实现所公开的主题的示例计算机系统。
图2描绘用户增强的反向工程的各方面的操作的流程图。
图3描绘在用户增强的反向工程中的边界条件的各方面的操作的流程图。
图4描绘代码库、数据库模式、二进制数据库等的采样图形表示,其中代码库、数据库模式、二进制数据库等具有边界条件。
图5(a)-(b)描绘代码库、数据库模式、二进制数据库等的采样图形表示,其中已经从图形生成中排除代码库、数据库模式、二进制数据库等的一部分。
图6描绘克服代码库、数据库模式、二进制数据库等中的边界条件的示例方法的流程图。
图7描绘利用活动环境来指导代码库、数据库模式、二进制数据库等的图形表示的生成的方法的一个实施例的流程图。
图8描绘具有用于用户增强的反向工程的指令的计算机可读介质的一个实施例的流程图。
具体实施方式
尽管在不包括所有其它选项的情况下在以下说明书中一般地引用“代码库”,然而应理解本文公开的实施例包括任何其它类的代码库、计算机可读介质上实现的指令、数据库模式、二进制模式、数据库、代码数据库、代码等。
在一个实施例中,用户增强的反向工程包括用于创建代码库、数据库模式、二进制数据库等的图形表示的计算机实现的交互式方法。该方法包括生成代码库、数据库模式、二进制数据库等的第一部分的图形表示;确定存在预定的边界条件;向用户提示与边界条件有关的输入;接收关于边界条件的用户输入;以及生成所述代码库、数据库模式、二进制数据库等的第二部分的图形表示。
在另一个实施例中,用户增强反向工程包括用于创建代码库的图形表示的计算机实现的交互式方法。该方法包括审阅代码库的第一部分;生成代码库的第一部分的图形表示;在显示器上显示代码库的第一部分的图形表示;在该图形表示的第一部分的生成期间接收输入,其中该输入包括所述图形表示的生成的中断;以及恢复图形表示的生成,其中所述恢复的生成从图形表示中排除代码库的第二部分。
在另一个实施例中,用户增强的反向工程包括其上存储指令的计算机可读存储介质,所述指令用于在处理器上执行。这些指令包括用于进行以下操作的指令:审阅代码库的第一部分;生成代码库的第一部分的图形表示;接收输入,其中该输入改变图形表示的范围;审阅代码库的第二部分;生成代码库的第二部分的图形表示;以及显示代码库的图形表示。
用于增强的反向工程的各实施例可以在一个或多个计算机系统上执行。图1及以下讨论旨在提供可在其中实现所公开的主题的合适计算环境的简要概括描述。
贯穿本说明书使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“电路”还可包括微处理器、专用集成电路、和/或一个或多个逻辑处理器,例如由固件和/或软件配置的多核通用处理单元的一个或多个核。逻辑处理器可由指令来配置,指令具体化可用于执行从例如RAM、ROM、固件和/或大容量存储等存储器加载的功能的逻辑。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。
现在参考图1,描绘了示例性计算系统100。计算机系统100可包括逻辑处理器102,例如,执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图1所示,各种计算机可读存储介质110可由一个或多个系统总线互联,系统总线将各种系统组件耦合到逻辑处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM)104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪速RAM或ROM)、以及可移动存储设备118(例如CD-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、和/或数字视频盘。
计算机可读存储介质110可提供对计算机100的处理器可执行指令122、数据结构、程序模块和其他数据的非易失性和易失性存储。基本输入/输出系统(BIOS)120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。若干个程序可被存储在固件108、存储设备106、RAM104和/或可移动存储设备118上,并且可由逻辑处理器102来执行,包括操作系统和/或应用程序。
命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其它输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其它输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理单元112的一部分或可连接到图形处理器单元112的接口来连接到系统总线。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还可包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。
计算机系统100可以使用至一个或多个远程计算机的逻辑连接在联网环境中工作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。
当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡(NIC)114连接至LAN或WAN。NIC114(可以是内部的或外部的)可被连接到系统总线。在联网环境中,相对于计算机系统100或其部分所描述的程序模块可以被存储在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。此外,尽管可想到的是可实现的所公开的主题的许多实施例尤其适用于计算机化的系统,但是在本文档中不意味着将所公开的主题限于这些实施例。
图2描绘逻辑流程图200的一种可能,描绘用户增强的反向工程的实现。图2描绘基于输入201在202发起图形生成。在202发起的图形生成包括本领域已知的代码库的任何视觉表示。因此,在一个实施例中,图形生成可以是例如流程图、运行图、时序图、时序图表、树图或图表、曲线图、图像或表示代码库或代码库的功能性的任何其它方式。
在202发起的图形生成的结构也可以是本领域中已知的任何结构。图形生成可以例如跟踪代码库的一个或多个特定方面。图形表示可以是任何上述图形表示,该图形表示可绘制特定进程、值、元素、类、序列、分量、时间帧、活动、使用案例、参数、功能性、子进程、元素、输入、输出、项、算法等,且它可表示输入、输出、进程、序列、元素、值、参数、功能性、子进程、项等的时序,且还可基于存储器、内部关系、外部关系或以本领域中已知的任何其它方式来构造。
在实施例中,在202发起图形生成之前,可提供一个或多个输入201以指导用户实现的反向工程程序的一个或多个方面。例如,一个或多个输入可用于在发起生成之前将图形表示的生成聚焦在特定元素上。输入201可以是可缩小、指导、聚焦或以其它方式改变图形表示的生成的任何值。作为另一个示例,对用户增强的反向工程的输入201可以是用户期望的图形表示的类型的选择,例如,时序图或流程图。此外,输入201可限定图形生成的结构。
在一个实施例中,用户可提供一个或多个输入201以建立图形生成的边界条件。例如,一个或多个边界条件可以是预先确定的。在这一实施例中,对图形生成的输入可导致用户增强的反向工程增加边界条件。作为另一个实施例,可利用输入201来改变先前设定的边界条件。作为一个非限定的特定示例,用户可在系统将确定其已经到达边界条件之前选择分配给图形生成的时间量。在这一示例中,用户可指定5分钟的时间限制,其中当确定图形生成会花费多于边界条件中分配的时间时,用户增强的反向工程向用户提供界面,该界面允许他们以一种或多种方式指导图形表示的生成。
在一个实施例中,无论图形生成的结构、图形表示的类型、预先选择的边界条件及任何其它最初输入201如何,在202发起图形生成。在发起202之后,图形生成可包括用户界面204。
用户界面204允许对图形生成的信息输入。用户可在生成期间和/或生成完成之后输入对图形生成的输入。用户界面204可通过从本领域中已知的用户、程序或系统接收输入的任何方式来实现。例如,用户界面可允许经由鼠标点击、键盘、操纵杆中的一个或多个、通过语音激活、触摸垫或触摸屏、有线或无线连接或本领域的技术人员已知的任何其它方式输入信息。
在图形表示的生成期间,可在显示器205上显示生成的已完成部分。例如,每当用户增强的反向工程程序确定例如流程图中的下一步,该步可显示在输出设备上,205。输出设备可以是本领域中已知的用于向用户显示视觉信息的任何设备。在一个实施例中,输出被显示在屏幕上或被投影,使得可看到图形生成。
被显示的图形生成的部分(205)可与用户界面(204)相关联。例如,在一个实施例中,对于图形表示中显示的每个元素,输入可与该元素相关联。例如,如果已经构建流程图,且已经显示流程图中的5步,则用户可在五步中的任一个上移动鼠标并点击,由此提供与流程图的所选图形元素相关联的输入。该特定元素的选择可提供关于该特定元素的来自用户的全部输入,或者它可用于限制用户的可能输入。
作为用户界面204的另一个非限制性示例,可提供单个用户界面204,不管图形表示上显示的元素的数量如何。例如,可以存在供用户在任意时间暂停图形生成的选项。在暂停之后,可提供附加的用户输入,以引导、聚焦或以其它方式提供对图形生成的输入。
因此,当运行用户增强的反向工程200时,其配置成在206接收任意上述输入。如果在206没有接收到输入,则生成过程可继续。然而,如果在206接收到输入,则输入可具有与其相关联的图形生成的中断208。作为另一个示例,输入可被配置成中断图形生成208。图形生成的中断208可以是导致系统暂停审阅代码库并且还可使其停止向图形显示增加图形元素的中断。尽管可在208中断图形生成,但用户增强的反向工程可在中断点之前保持与图形生成相关联的信息。
在图形生成的中断208之后,用户增强的反向工程可从用户请求附加输入,或者从用户界面提供的输入204可足以发起恢复的图形生成210。例如在206接收的输入可仅包括中断208。在这一示例中,可提示用户提供附加输入以指导生成。
然而,在另一个实施例中,中断输入还可被配置成指导在210处恢复的图形表示的生成。例如,如果用户通过点击它选择流程图的单个元素,则系统可中断图形表示的最初生成,然后恢复图形生成,其中经恢复的生成聚焦在流程图的被点击的方面。
因此,在接收足以恢复图形生成的用户输入之后,可向用户提供在210处恢复图形生成的选项,或者,作为另一个示例,图形生成可在210处自动恢复。在任一情况下,生成可恢复,且在用户期望包括附加输入的情况下将再次向用户提供上述用户界面。
在图形表示生成期间的任何时间,用户增强的反向工程可遇到212处的预先确定的边界条件。在一个实施例中,预先确定的边界条件可以是生成不能完成图形表示的任何情况。例如,如果经历图形生成的代码库需要不可用于代码库的外部输入,则图形生成可确定有边界条件212。作为另一个示例,如果在代码库内,有对调用、问题、算法等的若干可能解,则系统可确定有边界条件212。防止图形表示完成的任何其它限制将是本领域的技术人员已知的,且这些限制被包含于此。
在附加实施例中,可基于其它因素预先确定边界条件,诸如提供图形表示花费的时间或存储器的量或显示器上的空间。例如,如果完成生成的一部分(包括但不限于全部)的时间量超过预先确定的量,则用户增强的反向工程可确定有边界条件212。
在确定有边界条件212之后,可向用户提示解214。作为一个示例,界面可开启、弹出、变为活动等,在生成恢复之前它需要用户输入信息。
作为提示解214的一个示例,图形生成可运行,且用户增强的反向工程200可确定在代码库中存在对调用、元素、进程、算法等的有限数量的可用解。作为第一示例,可向用户提供多个可能的解,并要求用户选择哪个是适当解。在这一示例中,用户的输入被仅限于在代码库的背景内“有意义”的那些解。
在提示解214的另一个实施例中,可按一种或多种方式限制来自用户的输入。例如,输入的类型可仅限于数字解或具有与其关联的串、函数、进程、元素、值等的解。一般而言,可按可降低来自用户的不适当输入的可能性的任何方式来限制对用户的提示。
在提示解214的附加实施例中,对可能的输入没有设置任何限制。在这一示例中,用户可提供可用于它们的任何响应。
在214处提示解并且通过用户输入之后,在216处接收输入。如果可能,则图形表示的生成将继续216。作为示例,如果在214处的解足以继续生成216,则在提供用户界面之前生成将继续,并且生成将继续直到接收用户输入或在212处遇到另一个边界条件,或者如果没有附加用户输入或没有遇到边界条件,则在218处生成将完成。在216处接收的解可按本领域已知的任何方式影响生成前进。
应注意,图2描绘用户增强的反向工程的一个示例。在另一个实施例中,可不提供在204处的用户界面,且生成将继续,除非遇到边界条件。在另一个实施例中,生成在预先确定的边界条件处将不会暂停,且将仅包括可中断并影响该生成的用户界面204。对图2描绘的元素的其它增加、或去除或重新排序被视为在用于增强的反向工程的范围内,且对图2的元素的其它布置可由本领域的技术人员理解。
图3描绘具有不同于以上参考图2描述的逻辑的用户增强的反向工程的另一个实施例。例如,在一个实施例中,可在254利用输入252发起图形生成。如上所指出的,输入252可限制生成等的范围,它们可确定图形输出的类型且它们可限定系统的边界条件。用于用户增强的反向工程的任何其它输入可被包含在输入252中。
在接收输入252并在254发起图形生成之后,系统然后可执行图形生成256。在256处的图形生成期间,可到达一个或两个或十个或任一其它数量的边界条件。在一个实施例中,在每次确定有边界条件时,图形生成可不暂停。相反,可仅在生成已经满足输入的要求或者已经以其它方式对代码的第一部分执行尽可能多的图形生成之后暂停图形生成。在一个实施例中,执行尽可能多的生成而没有使用户输入对边界条件作出响应可减少用户输入不适当信息的可能性。
在图形生成256之后,用户增强的反向工程可提供图形表示,示出该生成和代码库中的边界条件258的一个或多个实例。在一个实施例中,可通过本领域中已知的任意方式在显示器上标识每个边界条件258。在标识边界条件258之后,可提示用户检查边界条件260。在一个实施例中,每个界面可提供对每个边界条件的访问并允许通过用户的输入。可参考图2以上述方式中的任一种限制通过用户的输入。用户可选择以满足图形生成突出显示的每个边界条件或者他们可选择地提供对边界条件的解。因此,用户可选择地提供对于任意数量的边界条件的输入。
当用户响应于在260处的提示输入对边界条件的解时,在262,用户增强的反向工程可接收解。在接收所有的解之后,或者基于来自用户的输入,用户增强的反向工程可在具有对边界条件的解的部分上执行代码库的图形生成。在生成262中,可发现新的边界条件。在260,可再次向用户进行提示,以满足那些边界条件。换言之,进程可继续直到没有更多的边界条件或直到用户已经对他希望的所有的边界条件提供输入,在那时将完成图形生成264。
图4描绘系统不能确定代码库中的调用的解的边界条件的示例。在图4中,进程的图形生成300发生,且图4的流程图可以是例如代码库的进程的图形表示300。生成可确定进程的开始点302。从开始点302,生成接下来可确定进程300已经与进程A相关联,304。进程A可基于在304处对进程A的“是”或“否”解,在306输出值1和在312输出值2。306处的值1和312处的值2可由308处的算法B和316处的算法A利用。然而,在该点,生成可确定它需要来自外部数据库1的值,310。如果在310来自外部数据库1的信息不可用于生成,则生成可确定它不能完成图形表示300。在这种情况下,用户增强的反向工程可提示用户在320处输入以便完成图形生成。
图4描绘由于在310处外部数据库1中包含的信息不可用于用户增强的反向工程而不能完成图形生成的实施例。如上所述,这仅为一个边界条件,且该图不旨在限制可能出现的各种类型的边界条件。如上所述,用户、程序员等可选择任意条件并预先确定所选的条件具有与之相关联的边界条件。此外,本领域的技术人员将意识到用户增强的反向工程可被配置成将诸如时间、存储器、丢失元素、一组可能元素等的任意条件纳入作为预先确定的边界条件。
图5(a)-图5(b)描绘基于来自用户的输入聚焦图形生成的结果的示例实施例。图5(a)-(b)表示进程中的图形生成的显示,其中图形生成包括开始点402。如上参考图2所指出的,当图形生成开始202时,可提供用于输入的界面。尽管图5(a)-(b)中未描绘,但当创建图5(a)-(b)中的图时,应理解向用户提供用于输入的界面。在404,可审阅代码库的第一层,并且显示可包括示出若干进程的图形生成。在图5(a)的示例中,描绘了进程A-YY。在图5(a),在404处的层1的图形生成之后,用户增强的反向工程接下来可转到层2,406,并且开始该层的图形生成。层2可包括代码库的任意元素且可按本领域中已知的任何方式来表示。然而,参考图5(a),基于最初进程的数量,并且假设对于404处层1中的每个进程406处的层2中至少有两个或三个元素,图形显示已经变大且笨重。
图5(b)描绘用户已经提供输入之后的图形表示。在图5(b),在408,用户选择层1的进程B。因此,对于生成余下部分,排除404处层1和406处层2的剩余部分。事实上,如图5(b)所描绘的,在408选择进程B可排除所有的层3或与进程A或进程C至进程YY中的任一个有关的其它函数。因此,通过向用户提供界面以中断图形生成并提供输入并基于该输入排除一部分代码库,可极大地降低图形生成的复杂性、时间和混乱。
图6描绘用于在用户增强的反向工程期间对边界条件进行响应的示例实施例的流程。在步骤502,用户增强的反向工程可生成代码库的第一部分的图形表示。生成代码库的第一部分502可包括接收用户输入以设置图形表示的类型并设立或实现用户界面以设置或改变边界条件以聚焦生成等。生成还可包括审阅代码,其中该审阅是静态分析或运行时间分析,以及创建可在显示器上显示的代码的图形表示。
在步骤504,用户增强的反向工程可确定预定的边界条件。边界条件可由用户或程序员限定,或者它们可出现在代码本身内。在一个实施例中,边界条件涉及存储器或时间。在另一个实施例中,边界条件涉及代码本身内的多个可能的解,和/或边界条件可涉及不能从诸如数据库、程序等外部源获得信息。其它边界条件是可能的,且本领域的技术人员将理解上述不是限制性的而是仅提供边界条件的几个示例。
步骤504调用边界条件。应理解,在一个实施例中,发现存在多个边界条件。用户增强的反向工程可在解决边界条件之前完成图形表示的生成的任意部分。因此,在一个实施例中,如果在提示用户提供对边界条件的解之前发生全静态生成,则用户输入较不可能出错。
在步骤506,可提示用户提供与在504发现存在的边界条件有关的输入。对用户的提示可以在图形显示器上。提示可具有用户可从中进行选择的有限数量的选项,或者它可以是对输入的开放请求。提示也可被限于一种类型的输入,诸如特定长度的数字、字母、串或任意其它类型的输入。本领域的技术人员将意识到以上不限于提示是什么或用户可被提示做什么,相反仅仅提供与提示有关的一系列示例。
在508,可接收来自用户的输入。可按本领域中已知的任何方式提供用户输入,例如,经由键盘或鼠标、触摸垫或触摸屏、语音激活、有线或无线连接或任何其它方式。该输入可与边界条件有关且可按一种或多种方式影响图形生成。例如,接收对边界条件的解可允许用户增强的反向工程构建出代码库的新部分的表示,或者它可聚焦生成,或者它可缩小图形表示的范围。
在图6的510,在一个实施例中可恢复图形生成。在另一个实施例中,它可以不同的参数重新开始,或者它可保持先前生成的一部分并发起代码库的另一部分的新生成。第二部分可按任意方式缩小的再生成,经历更广阔的生成或聚焦。如上所述,可以有单个满足的边界条件,或者可满足多个边界条件。因此,生成的第二部分可与单个边界条件的解有关,或者它可与多个边界条件的解有关。
图7描绘用于用户提供输入以影响图形生成的用户增强的反向工程的示例实施例的流程图。在步骤602,用户增强的反向工程可生成代码库的第一部分的图形表示。生成代码库的第一部分602可包括接收用户输入以设置图形表示的类型,以设置或改变边界条件,以设立或实现用户界面,以聚焦生成等。生成还可包括审阅代码,其中该审阅是静态分析或运行时间分析,以及创建可在显示器上显示的代码的图形表示。
在步骤604,用户增强的反向工程可包括显示代码库的第一部分的图形表示604。该显示可以是向用户显示信息的任何装置或方式,诸如屏幕、投影、声音等。该显示可以是实时地或大致实时的显示,使得当用户增强的反向工程确定代码库的一个或多个元素应被包含在图形生成中时,它们被显示。在604,这可经由显示器以及时的方式向用户提供信息。
在图7的步骤606,可向用户提供界面,其中该界面被配置成接收与图形生成有关的输入。该界面能够以本领域中已知的任意方式接收输入。例如,鼠标点击、键盘输入、有线或无线连接、触摸垫或触摸屏等可被配置成与界面一起使用。该界面也可与图形生成的状态相关联。例如,当生成增加元素时,每个元素可变为交互式,或可以其它方式被包含在界面中,使得用户可选择或以其它方式与生成的元素交互。界面606可包括对图形生成的任意元素的解、增加或从中减去的输入。输入可按本领域中已知的任意方式影响图形生成,包括聚焦生成、缩小生成或扩张生成的范围。
在步骤608,用户增强的反向工程可在图形表示的第一部分的生成期间经由界面接收输入,其中该输入包括图形表示的生成的中断。因此,在图形表示本身的生成期间,用户可按任何方式提供输入并影响生成。输入将中断生成并允许生成的影响。该生成可被缩小、改变、扩张,元素可被排除或聚焦等。在一个实施例中,输入根本不改变生成。以上充当几个示例,且不限制输入具有的影响的范围。输入还可改变边界条件等。本领域的技术人员将认识到输入对图形表示的生成的影响的其它可能。
在步骤610,图形表示的生成可在中断后恢复。经恢复的生成可排除一部分代码库,因此缩小生成的范围。这可以是聚焦的或缩小的结果。
图8描绘用户增强的反向工程的示例实施例的流程图。在步骤702,审阅代码库的第一部分。该审阅可包括确定代码库的元素的功能性或时序或任意其它方面。在审阅期间,图形表示可与被审阅的代码库的元素相关联。
在步骤704,可构建代码库的第一部分的图形表示。生成代码库的第一部分702可包括接收用户输入以设置图形表示的类型,以设置或改变边界条件,以设立或实现用户界面,以聚焦生成等。生成还可包括审阅代码,其中该审阅是静态分析或运行时间分析,以及创建可在显示器上显示的代码的图形表示。
在步骤706,可接收对用户增强的反向工程的输入,其中输入改变图形表示的范围。例如,输入可以是鼠标点击、键盘输入、有线或无线连接、触摸垫或触摸屏等可被配置成用作输入。输入可包括中断且可按本领域中已知的方式影响生成的范围。该生成可被缩小、改变、扩张,元素可被排除或聚焦等。在一个实施例中,输入根本不改变生成。以上充当几个示例,且不限制输入具有的影响的范围。输入还可改变边界条件等。在一个实施例中,对输入的请求是对确定存在边界条件的响应。因此,输入可以是对边界条件的解。本领域的技术人员将认识到输入对图形表示的生成的影响的其它可能。
在步骤708,可审阅代码库的第二部分。该审阅可包括确定代码库的元素的功能性或时序或任意其它方面。在审阅期间,图形表示可与被审阅的代码库的元素相关联。代码库的第二部分可以是代码库中被输入影响的任意部分。它可以是较小的部分、新部分、相同部分或其任意组合。第二部分可以是相同类型的图形表示,或者它可按一种或多种方式不同。第二部分可涉及该生成本身期间的边界条件或输入。在710,该第二部分然后可经历图形表示的生成。这可包括关联元素并在712准备用于显示,其中显示是如上所述本领域中已知的任意显示。
应该理解,此处所述的配置和/或方法在本质上是示例性的,且这些具体实施例或示例不被认为是限制性的。此处所述的具体例程或方法可表示任何数量的处理策略中的一个或多个。由此,所示出的各个动作可以按所示顺序执行、按其他顺序执行、并行地执行等等。同样,可以改变上述过程的次序。
另外,本发明的主题包括各种过程、系统和配置的组合和子组合、和此处所公开的其他特征、功能、动作、和/或特性、以及其任何和全部等效物。

Claims (13)

1.一种用于创建代码库的图形表示的计算机执行的交互式方法,包括:
生成所述代码库的第一部分的图形表示;
在生成所述第一部分的图形表示时确定一个或多个预定边界条件存在于所述代码库的所述第一部分内,其中确定所述一个或多个预定边界条件存在包括:确定没有足够的计算资源来生成所述代码库的图形表示、外部数据为所述代码库所需,或所述代码库的第二部分的图形表示具有多个可能的解;
提示用户与所述一个或多个边界条件有关的输入;
接收关于所述一个或多个边界条件的用户输入;以及
生成所述代码库的受一个或多个边界条件限制的第二部分的图形表示,其中生成包括所述代码库的所述第二部分的静态分析或运行时分析,并创建所述代码库的显示在显示器上第二部分的图形表示。
2.如权利要求1所述的方法,其特征在于,还包括向用户提示用于所述一个或多个边界条件中的每一个的多个选项,所述多个选项限制所述输入。
3.如权利要求2所述的方法,其特征在于,还包括基于对所述一个或多个边界条件中的每一个的可能解来选择所述多个选项。
4.一种用于创建代码库的图形表示的计算机执行的交互式方法,包括:
生成所述代码库的第一部分的图形表示;
显示所述代码库的第一部分的图形表示;
通过至少确定没有足够的计算资源来生成所述代码库的图形表示、外部数据为所述代码库所需、或所述代码库的第二部分的图形表示具有多个可能的解来确定预定边界条件存在;
向用户提供界面,所述界面配置成接收与所述代码库的第一部分的图形表示的生成有关的输入;
在所述第一部分的图形表示的生成期间至少部分基于确定所述边界条件存在,经由所述界面接收输入,其中所述输入包括图形表示的生成的中断;以及
将所述代码库的图形表示的生成恢复为经恢复的生成,其中经恢复的生成从图形表示中排除所述代码库的第二部分,使得所述代码库的图形表示可被显示在显示设备上。
5.如权利要求4所述的方法,其特征在于,所述输入还包括所述代码库的第三部分的选择。
6.如权利要求5所述的方法,其特征在于,所述代码库的从经恢复的生成中排除的第二部分包括所述代码库中未被包含在所述代码库的所述第三部分中的部分。
7.如权利要求5所述的方法,其特征在于,所述代码库的图形表示的经恢复的生成包括所述代码库的第三部分的图形表示。
8.一种计算机执行的方法,包括:
审阅代码库的第一部分;
生成所述代码库的第一部分的图形表示;
通过至少确定没有足够的计算资源来生成所述代码库的图形表示、外部数据为所述代码库所需、或所述代码库的第二部分的图形表示具有多个可能的解来确定预定边界条件存在;
至少部分基于在所述代码库的所述第一部分中遭遇的所述边界条件基于所述第一部分的图形表示来接收输入,其中所述输入改变所述第一部分的图形表示的范围;
基于接收所述输入,审阅所述代码库的第二部分;
至少部分基于所述代码库的所述第二部分的静态分析或运行时分析来生成所述代码库的第二部分的图形表示;以及
显示所述代码库的图形表示。
9.如权利要求8所述的方法,其特征在于,还包括:
提供用于在所述第一部分的图形表示的生成期间接收指令的界面;
经由所述界面接收输入,其中所述指令包括所述第一部分的图形表示的生成的中断;以及
恢复所述代码库的图形表示的生成,其中经恢复的生成从图形表示中排除所述代码库的第三部分。
10.如权利要求9所述的方法,其特征在于,还包括提供用于在经恢复的代码库的图形表示的生成期间接收请求的界面。
11.如权利要求8所述的方法,其特征在于,还包括确定所述代码库的所述第一部分中存在边界条件。
12.如权利要求11所述的方法,其特征在于,还包括:
提供与所述边界条件有关的界面;以及
接收对边界条件的解作为来自所述界面的响应。
13.如权利要求12所述的方法,其特征在于,确定边界条件存在包括:确定需要来自代码库外部的源的数据来完成代码库的图形表示的生成。
CN201180029767.1A 2010-06-18 2011-06-06 用户增强的反向工程 Active CN102947791B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/819,113 2010-06-18
US12/819,113 US8954925B2 (en) 2010-06-18 2010-06-18 User augmented reverse engineering
PCT/US2011/039320 WO2011159518A2 (en) 2010-06-18 2011-06-06 User augmented reverse engineering

Publications (2)

Publication Number Publication Date
CN102947791A CN102947791A (zh) 2013-02-27
CN102947791B true CN102947791B (zh) 2016-03-23

Family

ID=45329827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180029767.1A Active CN102947791B (zh) 2010-06-18 2011-06-06 用户增强的反向工程

Country Status (5)

Country Link
US (1) US8954925B2 (zh)
EP (1) EP2583171B1 (zh)
CN (1) CN102947791B (zh)
HK (1) HK1180402A1 (zh)
WO (1) WO2011159518A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8390269B2 (en) * 2010-10-07 2013-03-05 Raytheon Company Non-destructive determination of functionality of an unknown semiconductor device
US9465608B2 (en) * 2013-03-15 2016-10-11 ArtinSoft Corporation Code separation with semantic guarantees
US10019259B2 (en) 2013-01-29 2018-07-10 Mobilize.Net Corporation Code transformation using extensibility libraries
US9459862B2 (en) 2013-01-29 2016-10-04 ArtinSoft Corporation Automated porting of application to mobile infrastructures
US10061573B2 (en) 2013-01-29 2018-08-28 Mobilize.Net Corporation User interfaces of application porting software platform
US10740096B2 (en) 2015-10-28 2020-08-11 Qomplx, Inc. Meta-indexing, search, compliance, and test framework for software development
US11531538B2 (en) 2015-10-28 2022-12-20 Qomplx, Inc. Meta-indexing, search, compliance, and test framework for software development using smart contracts
US11531539B2 (en) 2015-10-28 2022-12-20 Qomplx, Inc. Automated compliance and testing framework for software development
US10354069B2 (en) * 2016-09-02 2019-07-16 Bae Systems Information And Electronic Systems Integration Inc. Automated reverse engineering
EP3961382A1 (en) * 2020-08-25 2022-03-02 Siemens Aktiengesellschaft Automatic derivation of software engineering artifact attributes

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6346945B1 (en) 1998-12-28 2002-02-12 Klocwork Solutions Method and apparatus for pattern-based flowcharting of source code
US7020697B1 (en) 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US7546577B2 (en) * 1999-12-06 2009-06-09 Axiomatic Design Software, Inc. Method and apparatus for producing software
US6425121B1 (en) * 2000-01-14 2002-07-23 Softwire Technology, Llp Method and apparatus for resolving divergent paths in graphical programming environments
WO2001082071A1 (en) 2000-04-21 2001-11-01 Togethersoft Corporation Methods and systems for supporting and deploying distributed computing components
US7216334B2 (en) * 2002-03-08 2007-05-08 National Instruments Corporation Self-determining behavior node for use in creating a graphical program
US20050177816A1 (en) * 2002-03-08 2005-08-11 National Instruments Corporation Automatic generation of graphical program code for a graphical program based on the target platform of the graphical program
US7178112B1 (en) * 2003-04-16 2007-02-13 The Mathworks, Inc. Management of functions for block diagrams
JP2007536634A (ja) * 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US20060059011A1 (en) * 2004-09-15 2006-03-16 Karen Ulreich Systems for automated proposal generation
US7512942B2 (en) 2005-08-24 2009-03-31 International Business Machines Corporation Model-driven software deployment in an application server
US7954059B2 (en) * 2006-07-24 2011-05-31 National Instruments Corporation Automatic conversion of text-based code having function overloading and dynamic types into a graphical program for compiled execution
US8656350B2 (en) * 2007-02-06 2014-02-18 Software Ag Event-based process configuration
EP2026211A1 (en) 2007-07-31 2009-02-18 Sap Ag Method for automatically creating a behaviour pattern of a computer program for model-based testing techniques
CA2605234C (en) * 2007-10-03 2015-05-05 Semiconductor Insights Inc. A method of local tracing of connectivity and schematic representations produced therefrom
US8935677B2 (en) 2008-04-07 2015-01-13 Microsoft Corporation Automatic reverse engineering of input formats
US8495559B2 (en) 2008-09-09 2013-07-23 International Business Machines Corporation Extracting platform independent models from composite applications
US8533666B2 (en) * 2008-10-17 2013-09-10 Microsoft Corporation Interactive design environments to visually model, debug and execute resource oriented programs

Also Published As

Publication number Publication date
US20110314445A1 (en) 2011-12-22
WO2011159518A2 (en) 2011-12-22
CN102947791A (zh) 2013-02-27
EP2583171B1 (en) 2020-06-03
US8954925B2 (en) 2015-02-10
WO2011159518A3 (en) 2012-02-23
EP2583171A4 (en) 2014-03-12
HK1180402A1 (zh) 2013-10-18
EP2583171A2 (en) 2013-04-24

Similar Documents

Publication Publication Date Title
CN102947791B (zh) 用户增强的反向工程
CN110928772B (zh) 一种测试方法及装置
US8589874B2 (en) Visual interface to represent scripted behaviors
CN102696012B (zh) 从代码使用中创建所推断的符号
US9501596B2 (en) Graphical design verification environment generator
CN105739983B (zh) 脚本程序编辑装置及其实现方法
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
JP2019518257A (ja) 状態制御方法及び装置
US10223076B1 (en) Generating code based on user interactions with a user interface element in a code editor
US20040225919A1 (en) Event driven graph explorer for model-based testing of software
KR101597780B1 (ko) 소프트웨어 코드의 시각적 구현 방법 및 장치
TW200919310A (en) Software factory specification and execution model
CN104809056A (zh) 一种接口测试代码的生成方法和装置
CN107656864A (zh) 一种基于概率模型的移动应用自动化测试方法
US10380526B2 (en) System and method for providing a process player for use with a business process design environment
Beuvens et al. Designing graphical user interfaces integrating gestures
CN114661284A (zh) 游戏编辑方法、游戏运行方法、装置及计算机设备
CN113010168B (zh) 一种基于场景树的用户界面生成方法
CN107491311B (zh) 生成页面文件的方法、系统以及计算机设备
JP2023553220A (ja) マルチインスタンスプロセスのためのプロセスマイニング
CN116820535A (zh) 任务处理方法、装置、计算机可读存储介质和电子装置
US9063761B2 (en) Apparatus and method for multi-aspect simulation
CN115599400A (zh) 一种Docker镜像快速构建方法、系统及介质
CN111338609B (zh) 信息获取方法、装置、存储介质及终端
JP2018124901A (ja) プログラム分析装置、プログラム分析方法及びプログラム分析プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1180402

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150727

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1180402

Country of ref document: HK