用户增强的反向工程的制作方法

文档序号:6360945阅读:216来源:国知局
专利名称:用户增强的反向工程的制作方法
技术领域
以下一般涉及代码库、二进制代码和数据库反向工程及代码库、二进制代码和数据库的视觉表示的领域。
背景技术
通常说来,图像具有数千字。对于试图在预先存在的代码库上工作或以其它方式创建代码库二进制代码或反向工程数据库的视觉表示的人而言,这种说法尤其正确。随着计算机硬件和软件功能性的进步,代码库已经变得越来越大且复杂。通常,很多不同的程序员将利用单个代码库或项目。这些人可能不熟悉代码库的所有元素,因此可能需要代码库的总“图”,或者他们可能需要关于代码库内的特定结构的信息。为了帮助具有该问题的人,已经开发出多种程序,其以流程图、运行图、时序图、树等方式提供代码库的图形表示。 通常可将提供代码库的图形表示的这些程序分成两组静态分析制图程序和运行时间分析制图程序。静态分析程序更加普遍,但它们在很多方面受到限制。经历静态分析的代码库可能具有很多静态分析不能解决的“边界”。此外,静态分析不能确定代码库的实际功能,且它们可能不能定位错误和类似物。此外,静态代码库可能不能聚焦在代码库的概览以及特定类、函数、调用、算法、元素、值、参数、序列、分量、活动等。类似,运行时间表示具有一系列问题。如果系统具有错误或差错,使得运行不能完成,则运行时间表示可能失败。此外,该运行仅可跟随动作的特定过程,且可能不会提供全部表示。其它问题可与静态和动态表示的任一个或两者相关联。因此,需要克服静态和运行时间代码库图中的问题的系统和方法。

发明内容
在一实施例中,为了克服与代码库、数据库模式、二进制数据库等的静态和运行时间图形表示相关联的限制,可向用户提供在代码库、数据库模式、二进制数据库等的处理期间“聚焦”图形表示的生成的选项。例如,在大代码库的图形生成期间,用户可选择一个或多个类、项、算法、值、项、协议、序列、分量、活动、使用案例、进程等以限制图形表示生成的范围。例如,在代码库的图形表示的生成期间,用户可暂停图形生成,提供去除或选择图形生成的一个或多个元素的输入,这可将生成的剩余部分限制在仅与期望元素有关的那些子元素。在另一个实施例中,图形生成可遇到一个或多个预定的边界条件。在遇到边界条件后,图形表示的生成可确定在没有附加指令的情况下它不能在预定的一组要求内完成图形生成。因此,生成可继续而不完成边界条件,直到生成已经创建它能创建的每个元素的表示,或者生成可在遇到边界条件时暂停并在继续生成的剩余部分之前请求用户输入。可按各种方式定义边界条件。在一个实施例中,缺少存储器可能是边界条件。在另一个实施例中,关于生成将花费特定时间量的确定是边界条件。在又一个实施例中,关于代码的一个或多个部分需要来自外部数据库或源的输入的确定可以是边界条件。在另一个实施例中,当有代码库、数据库模式、二进制数据库等的可向函数、进程、调用等提供解的多个部分时,系统可向用户提示可能的解且用户然后可选择期望的解。此外,用户可向反向工程提供指令,使得生成将特定限制视为边界条件。换言之,边界条件也可以是用户定义的。本领域的技术人员将意识到以上不是边界条件的穷尽列表,而是仅仅提供几个示例以便一般地描述用户增强的反向工程。在另一个实施例中,用户增强的反向工程可包括在图形表示的生成期间实时接收来自用户的输入的可能性并且还可包括检测一个或 多个预定边界条件并向用户提供用于输入边界条件相关信息的界面的能力。因此,在图形表示的生成期间,用户可向系统提供输入以完成先前不可能的生成,并且用户还可在生成本身期间指导图形生成,因此聚焦在代码库、数据库模式、二进制数据库等的与用户有关的部分上。在另一个实施例中,可在代码库等的静态生成期间和/或在代码库等的运行时间生成期间提供上述实施例中的任一种。在任意类型的生成期间,构想到可提供用于信息输入的用户界面以便允许用户聚焦代码库、数据库模式、二进制数据库等或允许用户满足对预先确定的边界条件的解的请求。


图I描绘了其中可实现所公开的主题的示例计算机系统。图2描绘用户增强的反向工程的各方面的操作的流程图。图3描绘在用户增强的反向工程中的边界条件的各方面的操作的流程图。图4描绘代码库、数据库模式、二进制数据库等的采样图形表示,其中代码库、数据库模式、二进制数据库等具有边界条件。图5 (a)- (b)描绘代码库、数据库模式、二进制数据库等的采样图形表示,其中已经从图形生成中排除代码库、数据库模式、二进制数据库等的一部分。图6描绘克服代码库、数据库模式、二进制数据库等中的边界条件的示例方法的流程图。图7描绘利用活动环境来指导代码库、数据库模式、二进制数据库等的图形表示的生成的方法的一个实施例的流程图。图8描绘具有用于用户增强的反向工程的指令的计算机可读介质的一个实施例的流程图。
具体实施例方式尽管在不包括所有其它选项的情况下在以下说明书中一般地引用“代码库”,然而应理解本文公开的实施例包括任何其它类的代码库、计算机可读介质上实现的指令、数据库模式、二进制模式、数据库、代码数据库、代码等。在一个实施例中,用户增强的反向工程包括用于创建代码库、数据库模式、二进制数据库等的图形表示的计算机实现的交互式方法。该方法包括生成代码库、数据库模式、二进制数据库等的第一部分的图形表示;确定存在预定的边界条件;向用户提示与边界条件有关的输入;接收关于边界条件的用户输入;以及生成所述代码库、数据库模式、二进制数据库等的第二部分的图形表示。
在另一个实施例中,用户增强反向工程包括用于创建代码库的图形表示的计算机实现的交互式方法。该方法包括审阅代码库的第一部分;生成代码库的第一部分的图形表示;在显示器上显示代码库的第一部分的图形表示;在该图形表示的第一部分的生成期间接收输入,其中该输入包括所述图形表示的生成的中断;以及恢复图形表示的生成,其中所述恢复的生成从图形表示中排除代码库的第二部分。在另一个实施例中,用户增强的反向工程包括其上存储指令的计算机可读存储介质,所述指令用于在处理器上执行。这些指令包括用于进行以下操作的指令审阅代码库的第一部分;生成代码库的第一部分的图形表示;接收输入,其中该输入改变图形表示的范围;审阅代码库的第二部分;生成代码库的第二部分的图形表示;以及显示代码库的图形表不。用于增强的反向工程的各实施例可以在一个或多个计算机系统上执行。图I及以下讨论旨在提供可在其中实现所公开的主题的合适计算环境的简要概括描述。贯穿本说明书使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“电路”还可包括微处理器、专用集成电路、和/或一个或多个逻辑处理器,例如由固件和/或软件配置的多核通用处理单元的一个或多个核。逻辑处理器可由指令来配置,指令具体化可用于执行从例如RAM、R0M、固件和/或大容量存储等存储器加载的功能的逻辑。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。现在参考图1,描绘了示例性计算系统100。计算机系统100可包括逻辑处理器102,例如,执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图I所示,各种计算机可读存储介质110可由一个或多个系统总线互联,系统总线将各种系统组件耦合到逻辑处理器102。系统总线可以是几种类型的总线·结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM) 104、存储设备106 (例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪速RAM或ROM)、以及可移动存储设备118 (例如⑶-ROM、软盘、DVD、闪速驱动器、夕卜部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、和/或数字视频盘。计算机可读存储介质110可提供对计算机100的处理器可执行指令122、数据结构、程序模块和其他数据的非易失性和易失性存储。基本输入/输出系统(BIOS) 120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。若干个程序可被存储在固件108、存储设备106、RAM 104和/或可移动存储设备118上,并且可由逻辑处理器102来执行,包括操作系统和/或应用程序。
命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其它输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其它输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理单元112的一部分或可连接到图形处理器单元112的接口来连接到系统总线。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图I的示例性系统还可包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。计算机系统100可以使用至一个或多个远程计算机的逻辑连接在联网环境中工作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡(NIC) 114连接至LAN或WAN。NIC 114 (可以是内部的或外部的)可被连接到系统总线。在联网环境 中,相对于计算机系统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输出值I和在312输出值
2。306处的值I和312处的值2可由308处的算法B和316处的算法A利用。然而,在该点,生成可确定它需要来自外部数据库I的值,310。如果在310来自外部数据库I的信息不可用于生成,则生成可确定它不能完成图形表示300。在这种情况下,用户增强的反向工程可提示用户在320处输入以便完成图形生成。图4描绘由于在310处外部数据库I中包含的信息不可用于用户增强的反向工程而不能完成图形生成的实施例。如上所述,这仅为一个边界条件,且该图不旨在限制可能出现的各种类型的边界条件。如上所述,用户、程序员等可选择任意条件并预先确定所选的条件具有与之相关联的边界条件。此外,本领域的技术人员将意识到用户增强的反向工程可被配置成将诸如时间、存储器、丢失元素、一组可能元素等的任意条件纳入作为预先确定的边界条件。图5 (a)_图5 (b)描绘基于来自用户的输入聚焦图形生成的结果的示例实施例。图5 (a)- (b)表示进程中的图形生成的显示,其中图形生成包括开始点402。如上参考图2所指出的,当图形生成开始202时,可提供用于输入的界面。尽管图5 (a)- (b)中未描绘,但当创建图5 (a)- (b)中的图时,应理解向用户提供用于输入的界面。在404,可审阅代码库的第一层,并且显示可包括示出若干进程的图形生成。在图5 (a)的示例中,描绘了进程A-YY。在图5 (a),在404处的层I的图形生成之后,用户增强的反向工程接下来可转到层2,406,并且开始该层的图形生成。层2可包括代码库的任意元素且可按本领域中已知的任何方式来表示。然而,参考图5(a),基于最初进程的数量,并且假设对于404处层I中的每个进程406处的层2中至少有两个或三个元素,图形显示已经变大且笨重。图5 (b)描绘用户已经提供输入之后的图形表示。在图5 (b),在408,用户选择层I的进程B。因此,对于生成余下部分,排除404处层I和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准备用于显示,其中显示是如上所述本领域中已知的任意显示。应该理解,此处所述的配置和/或方法在本质上是示例性的,且这些具体实施例或示例不被认为是限制性的。此处所述的具体例程或方法可表示任何数量的处理策略中的一个或多个。由此,所示出的各个动作可以按所示顺序执行、按其他顺序执行、并行地执行等等。同样,可以改变上述过程的次序。
另外,本发明的主题包括各种过程、系统和配置的组合和子组合、和此处所公开的 其他特征、功能、动作、和/或特性、以及其任何和全部等效物。
权利要求
1.一种用于创建代码库的图形表示的计算机执行的交互式方法,包括 生成所述代码库的第一部分的图形表示; 确定一个或多个预定边界条件存在; 提示用户与所述一个或多个边界条件有关的输入; 接收关于所述一个或多个边界条件的用户输入;以及 生成所述代码库的第二部分的图形表示。
2.如权利要求I所述的方法,其特征在于,还包括向用户提示用于所述一个或多个边界条件中的每一个的多个选项,所述多个选项限制所述输入。
3.如权利要求2所述的方法,其特征在于,还包括基于对所述一个或多个边界条件中的每一个的可能解来选择所述多个选项。
4.如权利要求I所述的方法,其特征在于,确定边界条件存在包括确定没有足够的存储器用于生成代码库的图形表示。
5.如权利要求I所述的方法,其特征在于,确定边界条件存在包括确定需要来自代码库外部的源的数据来完成图形表示的生成。
6.一种用于创建代码库的图形表示的计算机执行的交互式方法,包括 生成所述代码库的第一部分的图形表示; 显示所述代码库的第一部分的图形表示; 向用户提供界面,所述界面配置成接收与所述代码库的第一部分的图形表示的生成有关的输入; 在所述图形表示的第一部分的生成期间经由所述界面接收输入,其中所述输入包括图形表示的生成的中断;以及 将所述图形表示的生成恢复为经恢复的生成,其中经恢复的生成从图形表示中排除所述代码库的第二部分。
7.如权利要求6所述的方法,其特征在于,所述输入还包括所述代码库的第三部分的选择。
8.如权利要求7所述的方法,其特征在于,所述代码库的从经恢复的生成中排除的第二部分包括所述代码库中未被包含在所述代码库的所述第三部分中的部分。
9.如权利要求7所述的方法,其特征在于,所述图形表示的经恢复的生成包括所述代码库的第三部分的图形表示。
10.一种具有存储于其上的指令的计算机可读存储介质,所述指令在处理器上执行,所述指令包括用于以下动作的指令 审阅代码库的第一部分; 生成所述代码库的第一部分的图形表示; 接收输入,其中所述输入改变所述图形表示的范围; 审阅所述代码库的第二部分; 生成所述代码库的第二部分的图形表示;以及 显示所述代码库的图形表示。
11.如权利要求10所述的指令,其特征在于,还包括 提供用于在所述图形表示的第一部分的生成期间接收指令的界面;经由所述界面接收输入,其中所述指令包括所述第一部分的图形表示的生成的中断;以及 恢复所述图形表示的生成,其中经恢复的生成从图形表示中排除所述代码库的第三部分。
12.如权利要求11所述的方法,其特征在于,还包括提供用于在经恢复的图形表示的生成期间接收请求的界面。
13.如权利要求10所述的指令,其特征在于,还包括用于确定所述代码库的所述第一部分中存在边界条件的指令。
14.如权利要求13所述的指令,其特征在于,还包括 提供与所述边界条件有关的界面;以及 接收对边界条件的解作为来自所述界面的响应。
15.如权利要求14所述的指令,其特征在于,确定边界条件存在包括确定需要来自代码库外部的源的数据来完成图形表示的生成。
全文摘要
本文中公开的是用户增强的反向工程,其中在一个实施例中,在代码库、数据库、二进制等的图形表示的生成期间,可向用户提供用于“聚焦”的选项。例如,在大代码库的图形生成期间,用户可选择一个或多个物以限制图形表示生成的范围。在另一个实施例中,图形生成可遇到一个或多个预定的边界条件。在遇到边界条件后,图形表示的生成可确定在没有附加指令的情况下它不能在预定的一组要求内完成图形生成。因此,图形生成可完成然后向用户提示它已经遇到的任意边界条件的解,或者该生成可在每次遇到边界条件时暂停,并向用户提示对边界条件的解。
文档编号G06F3/14GK102947791SQ201180029767
公开日2013年2月27日 申请日期2011年6月6日 优先权日2010年6月18日
发明者S·杜塔, T·特里温, A·拜恩 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1