CN108334320A - 用于处理软件代码的方法和装置 - Google Patents
用于处理软件代码的方法和装置 Download PDFInfo
- Publication number
- CN108334320A CN108334320A CN201711396909.3A CN201711396909A CN108334320A CN 108334320 A CN108334320 A CN 108334320A CN 201711396909 A CN201711396909 A CN 201711396909A CN 108334320 A CN108334320 A CN 108334320A
- Authority
- CN
- China
- Prior art keywords
- state
- state machine
- code
- states
- finite
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
Abstract
呈现了一种基于转换成有限状态机的与软件代码交互的机制。呈现了当前正在审查的经转换的代码的状态以及其他相关状态。相关的状态可以是馈送入当前正在审查的经转换的代码的状态、或者可以遵循处理流程中的那些状态的状态。可以在相关状态与当前正在审查的经转换的代码的状态结合呈现时对相关状态进行用户编辑,并且相应地更新对应的代码。当前正在审查的经转换的代码的状态以及对应的相关状态可以被动态地更新以反映实际的代码执行。
Description
技术领域
本发明涉及软件代码处理,尤其涉及软件代码的审查和编辑。
背景技术
随着时间的推移,与用于运行结果代码的计算机系统的发展同步,与软件代码编辑相关联的工具和方法也在发展。在打卡时代,程序是在纸上开发的,随着终端的可用性,在计算环境中直接开发软件变得可行。此后,编程主要围绕编辑基于文本的代码(在通用文本编辑软件中)进行,或者随时间而更多地在专用集成开发环境中,通常提供用于编译和调试代码的附加工具。某些环境支持可视编码,其中用户可以通过操纵某些计算机生成的空间中的代码实体的图形表示来编辑代码。基于文本的和可视化编程环境都倾向于使用围绕多个模块构建的结构来呈现代码,每个模块中的元素以以下顺序来呈现:它们将服从模块内的任何循环和分叉来被执行。
希望提供用于审查软件代码的改进的工具,尤其是促进通过代码跟踪执行。
发明内容
根据本发明的第一方面,提供了一种用于处理软件代码的装置,所述装置包括:代码转变器,其适于将所述代码的表示准备为有限状态机;
初级状态选择器,其适于选择所述有限状态机的一个或多个状态以进行显示;
次级状态选择器,其适于针对所述选择的初级状态而识别次级状态,其中
所有所述次级状态都是包括引导至所述选择的状态的转变的所述有限状态机的状态,或者
所有次级状态都是包括从所述选择的状态引导出的转变的所述有限状态机的状态,或者
所述状态属于在由装置接收的用户输入中指定的、通过有限状态机的一系列选择状态的有效序列;以及
表示处理器,其适于使得呈现将所述选择的状态的文本表示与所述次级状态的文本表示集成的文本表示。
在第一方面的发展中,所述装置可以进一步适于接收指定所述次级状态是否应当包括所述有限状态机的所有状态的用户输入,所述有限状态机的所有状态包括引导至所述选择的状态的转变、或相反所述有限状态机的所有状态包括从所述选择的状态引导出的转变;并且适于相应地刷新所述文本表示。
在第一方面的发展中,所述装置还可以适于接收指定所述有限状态机的哪个状态将构成所述选择的状态的用户输入。
在第一方面的发展中,所述装置还可以适于接收指定对所述文本表示的一部分的修改的用户输入,以
识别对应于所述修改的修改的状态,
识别对应于所述修改的状态的修改的代码,以及
更新所述修改的代码以反映所述修改。
在第一方面的发展中,所述装置还可以适于选择一个或多个次级状态作为扩展次级状态,其中所述有限状态机的其他状态在它们是包括引导至所述扩展的次级状态的转变的所述有限状态机的状态、或它们是包括从所述扩展的次级状态引导出的转变的所述有限状态机的状态的情况下被选择用于显示为次级状态。
在第一方面的发展中,所述装置还可以适于选择所述有限状态机的一个或多个状态以进行显示,其中所述选择的状态位于当前执行流程内。
根据本发明的第二方面,提供了一种处理软件代码的方法,所述方法包括以下步骤:
将所述代码的表示准备为有限状态机;
选择所述有限状态机的一个或多个状态以进行显示;
针对所述选择的状态中的每个状态,识别次级状态,其中
所有所述次级状态是包括引导至所述选择的状态的转变的所述有限状态机的状态,或者
所有所述次级状态是包括从所述选择的状态引导出的转变的所述有限状态机的状态,
或者接收指定通过所述有限状态机的一系列选择的状态的有效序列的用户输入;以及
呈现将所述选择的状态的文本表示与所述次级状态的文本表示进行集成的文本表示。
在第二方面的发展中,所述方法可以包括以下附加步骤:接收指定所述次级状态是否应当包括所述有限状态机的所有状态的用户输入,所述有限状态机的所有状态包括引导至所述选择的状态的转变、或相反所述有限状态机的所有状态包括从所述选择的状态引导出的转变;并且相应地刷新所述文本表示。
在第二方面的发展中,所述方法可以包括接收指定所述有限状态机的哪个状态将构成所述选择的状态的用户输入的附加步骤。
在第二方面的发展中,所述方法可以包括接收指定对所述文本表示的一部分的修改的用户输入的附加步骤,
识别对应于所述修改的修改的状态,
识别对应于所述修改的状态的修改的代码,以及
更新所述修改的代码以反映所述修改。
在第二方面的发展中,所述方法可以包括附加步骤:将一个或多个次级状态选择为扩展的次级状态,其中所述有限状态机的其他状态在它们是包括引导至所述扩展的次级状态的转变的所述有限状态机的状态、或它们是包括从所述扩展的次级状态引导出的转变的所述有限状态机的状态的情况下被选择用于显示为次级状态。
在第二方面的发展中,选择所述有限状态机的一个或多个状态以进行显示的步骤可以包括选择位于当前执行流程内的状态。
根据本发明的第三方面,提供了一种适用于实现第二方面的步骤的计算机程序。
根据本发明的第四方面,提供了一种包含第三方面的计算机程序的计算机可读介质。
附图说明
现在将参考附图描述本发明的上述和其它优点,仅出于说明的目的,其中:
图1示出了有限状态机的示例;
图2示出了根据实施例的处理软件代码的方法;
图3示出了根据实施例的软件开发环境的表示;
图4示出了根据实施例的软件开发环境的表示;
图5示出了根据实施例的装置;以及
图6示出了适用于实施本发明的实施例的通用计算系统。
具体实施方式
一般而言,交互式计算机软件可以用有限状态机来表示。有限状态机是用具有多个定义的状态的机器的过程表示,其中在任何时候机器必须处于并且仅处于这些状态中的一个状态,并且其中这些状态通过定义的转变来链接,其中这些状态之间的移动只能根据这些定义的转变中的一个而发生。任何这样的有限状态机都可以用软件和/或硬件来实现。
当前编程工具的设计基于在于以单一的、规范表示来显示代码的隐含的选择。交互式代码的文本规范表示包括在状态的上下文中显示离开的转变。然而,为了理解一系列事件的行为,有时需要看看导致当前调查的特定状态的转变的代码。这要求程序员通过扫描所有的代码来查找转变,一旦找到,就从转变跳转到转变以理解指令序列。
在读取和调试使用现有技术的接口准备的代码时出现困难,因为对于查看正在执行的当前代码行的读者来说,没有指示前面的步骤导致执行以到达那一点。通过一个软件的执行流程可以通过一些微妙的因素来修改,这些因素并不总是显而易见或容易预测的,并且意味着这种决定往往要求对代码本身的代码结构有一个完整的理解。在实质性的软件项目中,对于操作人员来说,这种理解程度往往是不切实际的。
图1示出了有限状态机的示例。
如图1所示,提供了表示用户界面交互特征的有限状态机。定义了状态“开始”110、“滞后(Hyst)”120和“拖动”130。“开始”状态具有转变“按压”111,其引导至状态“滞后”120。状态“滞后”120具有转变“释放”121和转变“拖动”122,“释放”121引导至回到状态“开始”110,“拖动”122引导至状态“拖动”130。状态“拖动”130具有转变“移动”131和转变“释放”132,“移动”131循环回到状态“拖动”130,“释放”132引导至回到状态“开始”110。因此,这个状态机表示常常与图形用户界面中的图标和其他实体相关联的通常的“拖放”行为。具体而言,当用户使用诸如鼠标指针之类的光标设备来点击这样的实体时,例如通过将指针移动到实体上并按下鼠标左键,对于该实体,按压转变发生,将其状态带到滞后。如果用户随后释放鼠标按钮,则转变“释放”发生,并且对象的状态返回到开始。另一方面,如果用户在没有释放的情况下将鼠标移动给定距离,则拖动转变发生,将实体的状态转移到拖动。进一步的移动使实体状态处于拖动,直到用户释放鼠标按钮,触发释放事件并将状态返回到开始。
虽然大多数编程语言不直接定义有限状态机,但是可以将任何计算机程序转变成有限状态机,无论是以软件形式还是以硬件形式。
尽管传统的有限状态机是通过诸如上面关于图1描述的附图来表示的,但是对于有限状态机的定义确实存在一定的基于文本的约定。具体地,在Caroline Appert和MichelBeaudouin-Lafon的文章中提到的摇摆状态(SwingStates)。2006年在Proceedings of the19th annual ACM symposium on User interface software and technology(UIST'06)中题为“SwingStates:adding state machines to the swing toolkit”。ACM,纽约,美国,319-322,提出了一组规则来定义Java中的有限状态机,使用类来表示每个状态机和匿名类。每个状态是属于相应的匿名类的对象,它本身属于储存在状态机的字段中的状态类,并且针对一个特定状态的每个转变是属于相应的匿名类的对象,它本身属于储存在对应状态的字段中的转变类。有限状态机的摇摆状态或任何其它文本表示可以用在本发明的实施例中。
下面的文本是根据摇摆状态形式的图1的有限状态机的表示:
因此,这段代码定义了一个拖放交互。程序员可能希望修复当程序的用户执行特定的事件序列时发生的漏洞:被拖动的形状应该在拖动过程中突出显示。由于“开始”状态也是交互的最终状态(在交互结束时,并且无论结束是什么,交互应该重新开始),被操纵的形状应该不被突出显示。使用传统的编辑器,这需要找到所有到“开始”状态的转变,并浏览它们。而且,相关的代码段被分开散布的事实意味着程序员必须用他的记忆来比较它们。导航到代码所需的认知活动因此不被分配给理解和设计代码所需的更重要的认知活动。
关于上面突出显示的问题,将会理解的是,就有限状态机而言的表述具有渲染到达代码中的特定点的明确可能路径的好处。
这个属性可以用来促进软件开发、编码、调试等等。
图2示出了根据实施例的处理软件代码的方法。
如图所示,该方法在进行到步骤205之前开始于步骤200,在步骤205中准备将被处理为有限状态机的代码的表示。这可以基于图形表示或基于文本的或其他编码的表示。该表示可以通过常规软件代码的转换来准备,例如由摇摆状态库来实现,或者可以存在于本地有限状态机表示中。
该方法接下来前进到步骤210,在该步骤中,选择有限状态机表示的一个或多个状态以进行显示。出于语法原因,以下描述在这方面通常会涉及“选择的状态”,然而应该记住,任何实施例可以仅应用于单个选择的状态。
图3示出了根据实施例的软件开发环境的表示。如图3所示,在图形用户界面中提供了窗口310,其可以构成集成开发环境的一部分。如图所示,作为典型GUI界面特征的示例,窗口310包括编辑窗格311、标题栏312、滑动条313、光标314和指针315。编辑窗格311显示如上所述的有限状态机330的文本表示,并且如图所示,有关的文本与以上所呈现的文本相同。该窗口还包括呈现复选框321和322的选项窗格320,其功能将在下面进一步详细讨论。
根据图2的方法,选择的状态可以包括最接近光标314或指针315的无论哪个或哪些状态,或当前项目中的最后状态,或确实的当前项目、窗口、视图等中的每个状态,或任何其他适当的方法。
选择的状态可以包括状态机、在复合状态的情况下的分层父状态,例如由DavidHarel在StateCharts:A visual Formalism for Complex Systems,Science of ComputerProgramming 8(1987)231-274l中或以SCXML标准或其他方式描述的。
方法接下来针对在步骤210处选择的一个或多个状态继续进行以在步骤215处识别次级状态。
在各种实施例中,次级状态可以是:
·有限状态机的状态包含引导至选择的一个或多个状态的转变,或者
·所有次级状态都是包括从选择的一个或多个状态引导出的转变的有限状态机的状态,或者
·这些状态属于通过有限状态机的一系列选择的状态(例如由用户定义)的有效序列。
如图3所示,选项窗格320呈现复选框321和322。复选框321用于接收指示进入选择的状态的转变将被识别的用户输入,并且复选框322用于接收指示离开选择的一个或多个状态的转变将被识别的用户输入。如本文所建议的或以其他方式提出的其他识别标准可以被呈现,除了图3中所示的那些之外或者替代图3中呈现的那些。因此,可以使用识别标准的任何组合。
虽然为了本示例呈现了复选框界面特征,但是将会理解,可以使用任何合适的用户输入机制,不管是在图形用户界面中还是以其他方式。
如图2所示,关于选择标准的次级状态的识别被表示为一系列测试:在步骤220中,该方法确定有限状态机的任何状态是否包括引导至选择的状态的转变,并且在这些状态中的任何一个状态发生的情况下,在进行到步骤230之前,在步骤225中,如此识别这些状态。如果没有状态符合步骤220的标准,则该方法进行到步骤230。在步骤230,该方法确定是否有限状态机的任何状态包括从选择的一个或多个状态中引导出的转变,并且在这些状态中的任何一个状态发生的情况下,在进行到步骤240之前,在步骤235中如此识别这些状态。如果没有状态符合步骤230中的标准,该方法进行到步骤240。在步骤240,该方法确定是否已经接收到通过有限状态机的一系列选择的状态来定义有效序列的任何用户输入,并且在已经接收到任何这样的输入的情况下,在进行到步骤250之前,在步骤245中如此识别这些状态。如果没有状态满足步骤240的标准,则该方法进行到步骤250。在步骤250,准备文本的新的表示,其中文本表示将选择的一个或多个状态的文本表示与每个识别的次级状态的文本表示一起集成。
根据特定实施方式所支持的选择标准,所采用的测试次数在数量上可以更少或更多,并且可以仅包括单个测试。此外,虽然测试是串行显示的,但是可以理解,它们中的一些或全部可以同样并行处理。
图4示出了根据实施例的软件开发环境的表示。如图4所示,在图形用户界面中,提供了对应于图3的窗口310。如图所示,复选框321被选中,指示用户已经请求显示进入选择的状态的转变。
如上所述,定义选择的一个或多个状态有许多可能的方法。为了图4的示例的目的,假定当前项目中的所有状态都被选择用于增强显示。
因此,图3中所示的代码330在图4中被示为分成一系列的部分331、332、333、334、335、336。部分331、333和335中的每个对应于属于代码330的状态的开始,如上所述。如图所示,在每个状态的开始之后,散布另外的代码段431、433、435。这些另外的代码段431、433、435对应于分别与具有进入状态331、333、335的转变的状态对应的其他状态。因此具体地,状态431是基于其包括到状态331的转变的为了增强显示而选择的另一状态,状态432是基于其包括到状态332的转变的为增强显示而选择的另一状态,并且状态433是基于其包括到状态333的转变的为了增强显示而选择的另一状态。因此,查看代码的用户可以快速地看到执行如何到达其当前位置。如图所示,状态334的第一行代码被突出显示,为了示例的目的,指示代码执行已经在这行代码处被中断。遵循执行顺序的用户可以从状态433方便地看到执行顺序到达了这一点。
相应地,交互式代码最初是用状态机的文本表示来表示的:机器包含状态,状态进而又包含在离开状态到下一状态的事件时的转变。程序员/用户可以点击复选框来显示进入一个或多个选择的特定状态的转变。在点击复选框之后,动画可以将对应于“离开”转变的识别的代码移动到底部,以便为对应于“进入”转变的代码腾出空间。如图所示,进入转变然后出现,显示为灰色,并以“>>状态”文本开头。进入转变是驻留在其他状态中的离开转变的副本。
所识别的状态的副本可以被链接:在进入转变的代码中所做的所有改变可以反映在离开的转变中,反之亦然。这可以例如通过MVC机制(模型视图控制器)来实现,其中在存储器中(例如以字符串的形式)和两个视图(表示)提供代码的模型,这两个视图在模型更改(通常是因为用户正在修改其中一个视图)时被同步。这种方法对交互式代码中的程序员是已知的,如例如T.Reenskaug,在“Models-views-controllers.”Xerox PARC,1979中所描述的。
据此,可以接收指定对文本表示的一部分的修改的用户输入。这可能导致识别与修改对应的修改的状态、识别与修改的状态相对应的修改的代码、以及更新修改的代码以反映修改的步骤。
基于这些特征,程序员能够通过显示进入转变来查看状态上下文中的指令序列。结果,程序员能够看到引导至该状态的所有转变的指令。因此,可以快速检查是否到“开始”状态的所有转变实际上不使图形形状突出显示。另外,这也允许程序员依靠非常短时记忆来比较相关的代码段并检测潜在的缺陷。这使得程序员能够更高效地理解代码,根据适合他们现有问题的视图进行编辑,并且相应地缩短开发时间,并且更高效,更少出错的软件。这转而又转化为节能,提高安全性和降低系统维护成本。
图3和图4以特定的图形用户界面实现的形式呈现了本发明的实施例。应该理解,有无数可能的这样的实现,其中图3和图4仅仅是示例。此外,将理解的是,实施例还可以采用基于文本的方法,例如其中经由命令行输入状态选择和/或识别标准。
尽管如参考图4所描述的那样,被识别以进行显示的另外的一个或多个状态是从选择的状态中移除的一个步骤,但是可以也通过识别以显示具有引导至或引导出第一级别所识别的状态等的转变的状态来进一步挖掘执行流程到任何期望的深度。此外,所识别的状态可以基于实际的执行流程来识别。这可以被“实时”执行,即在执行期间,例如借助在暂停执行的状态下断点的等同物,以避免文本非常迅速地出现并且消失在任何地方。例如,调试断点可以与选择的状态相关联,使得当代码被执行并且达到该状态时,执行暂停而不是选择馈送入或者出选择的状态的全部次级状态,而仅仅是在当前的执行流程中引导至与断点相关联的选择的状态被显示的那些状态。
所公开的方法可以采取完全硬件实施例(例如,FPGA),完全软件实施例(例如控制根据本发明的系统)或包含硬件和软件元素的实施例的形式。这样,实施例可以包括适于实现与彼此通信的本发明的多个子系统、功能元件或装置,和/或例如如下面所述的标准固定功能或可编程元件。
图5示出了根据一个实施例的装置。如图5所示,提供了用于处理软件代码521的装置510。如图所示,软件代码521驻留在数据库520中。装置510包括代码转换器511,其适于将代码521的表示准备为有限状态机522。该有限状态机表示522被示为驻留在数据库520中。装置510进一步包括初级状态选择器512,初级状态选择器512适于选择有限状态机522的一个或多个状态以进行显示,并且次级状态选择器513适于针对选择的初级状态识别次级状态,其中
所有次级状态都是有限状态机的状态,其包括引导至选择的状态的转变,或者
所有次级状态都是有限状态机的状态,其包括从选择的状态导出的转变,或者
状态属于装置接收的用户输入中指定的、通过有限状态机的一系列选择的状态的有效序列。该装置还包括表示处理器514,其适于使得呈现文本表示,所述文本表示将从有限状态机表示522获取的选择的一个或多个状态的文本表示与从有限状态机表示522获取的所识别的次级状态的文本表示集成。
类似地,提供了适于执行上述任何方法的步骤的装置,例如关于图2或上面详述的任何算法。
因此,提供了一种基于转换成有限状态机的与软件代码进行交互的机制被呈现。呈现了当前正在审查的经转换的代码的状态以及其他相关状态。相关的状态可能是馈送入当前正在审查的经转换的代码的状态、或者可能遵循处理流程中的那些状态的状态。可以在与当前正在审查的经转换的代码的状态相关地呈现相关状态时对相关状态进行用户编辑,并且相应地更新对应的代码。当前正在审查的经转换的代码的状态以及对应的相关状态可以被动态地更新以反映实际的代码执行。
软件实施例包括但不限于应用、固件、常驻软件、微代码等。本发明可以采取可从计算机可用或计算机可读的介质访问的计算机程序产品的形式,该计算机程序产品提供供计算机或指令执行系统使用的或与其结合的、或者用于在专用或适当的可编程硬件(如有限状态机或其他)中实现的程序代码。
计算机可用或计算机可读可以是可以包含、储存、传送、传播或传输供指令执行系统、装置或设备使用或与其结合使用的程序的任何装置。介质可以是电子、磁性、光学、电磁、红外或半导体系统(或装置或设备)或传播介质。
在一些实施例中,本文描述的方法和过程可以全部或部分地由用户设备来实现。这些方法和过程可以通过计算机应用或服务、应用编程接口(API)、库和/或其他计算机程序产品或这些实体的任何组合来实现。
用户设备可以是诸如智能手机或平板电脑的移动设备、无人机、计算机或具有处理能力的任何其他设备,诸如包括IoT(物联网)设备的机器人或其他连接的设备。
图6示出了适用于实施本发明的实施例的通用计算系统。
如图6所示,系统包括逻辑设备601和储存设备602。系统可以可选地包括显示子系统611、输入/输出子系统603、通信子系统620和/或未示出的其他部件。
逻辑设备601包括被配置为执行指令的一个或多个物理设备。例如,逻辑设备601可以被配置为执行作为一个或多个应用、服务、程序、例程、库、对象、部件、数据结构或其他逻辑构造的一部分的指令。这样的指令可以被实现为执行任务,实现数据类型,变换一个或多个部件的状态,实现技术效果,或以其他方式达到期望的结果。
逻辑设备601可以包括被配置为执行软件指令的一个或多个处理器。附加地或可选地,逻辑设备可以包括被配置为执行硬件或固件指令的一个或多个硬件或固件逻辑设备。逻辑设备的处理器可以是单核或者多核,并且其上执行的指令可以被配置用于顺序、并行和/或分布式处理。逻辑设备601的各个部件可选地可以分布在两个或更多个分开的设备中,该两个或更多个分开的设备可以远程定位和/或被配置用于协调处理。逻辑设备601的各方面可以被虚拟化并且由以云计算配置来配置的可远程访问的联网计算设备执行。
储存设备602包括一个或多个物理设备,其被配置为保存可由逻辑设备执行的指令以实现本文描述的方法和过程。当实施这样的方法和过程时,储存设备602的状态可以被变换,例如以保存不同的数据。
储存设备602可以包括可移动和/或内置设备。储存设备可以在本地或远程储存(例如在云中)。储存设备602可以包括一个或多个类型的储存设备,包括光学存储器(例如,CD、DVD、HD-DVD、蓝光光盘等)、半导体存储器(例如,FLASH、RAM、EPROM、EEPROM等)和/或磁存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)等等。储存设备可以包括易失性、非易失性、动态、静态、读/写、只读、随机访问、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。
在某些配置中,系统可以包括适用于支持逻辑设备601与其他系统部件之间的通信的接口603。例如,附加的系统部件可以包括可移动的和/或内置的扩展储存设备。扩展储存设备可以包括一个或多个类型的储存设备,包括光存储器632(例如,CD、DVD、HD-DVD、蓝光光盘等)、半导体存储器(未示出)(例如,RAM、EPROM、EEPROM、FLASH等)、和/或磁存储器631(例如,硬盘驱动器、软盘驱动器、磁带驱动器、MRAM等)等等。这种扩展储存设备可以包括易失性、非易失性、动态、静态、读/写、只读、随机访问、顺序访问、位置可寻址、文件可寻址和/或内容可寻址设备。
应该理解,储存设备包括一个或多个物理设备,并且本身不包括传播信号。然而,与储存在储存设备上相反的,本文所述的指令的各方面可以替代地通过通信介质(例如,电磁信号、光信号等)传播。
逻辑设备601和储存设备602的各方面可以被集成在一起到一个或多个硬件逻辑部件中。这些硬件逻辑部件可以包括例如现场可编程门阵列(FPGA)、程序和应用专用集成电路(PASIC/ASIC)、程序和应用专用标准产品(PSSP/ASSP)、片上系统芯片(SOC)和复杂可编程逻辑器件(CPLD)。
术语“程序”可以被用于描述被实现为执行特定功能的计算系统的方面。在一些情况下,可以经由执行由储存设备602保存的机器可读指令的逻辑设备来实例化程序。将理解的是,可以从相同的应用、服务、代码块、对象、库、例程、API、功能等来实例化不同的模块。同样,相同的程序可以由不同的应用、服务、代码块、对象、例程、API、功能等来实例化。术语“程序”可以包括可执行文件、数据文件、库、驱动程序、脚本、数据库记录等中的单个或组合。
特别地,图6的系统可以用来实现本发明的实施例。
例如,执行关于图2描述的步骤的程序或者上述呈现的算法可以被储存在储存设备602中并且由逻辑设备501执行。单元511、512、513或者514中的任何一个或者全部单元的功能可以类似地由执行所需功能的程序来实现,必要时与附加专用硬件单元通信,并且代码521和/或有限状态机522可以被储存在储存设备602中。因此,本发明可以以计算机程序的形式体现。
应该理解,本文使用的“服务”是跨多个用户会话可执行的应用程序。服务可以对一个或多个系统部件、程序和/或其他服务可用。在一些实现中,服务可以在一个或多个服务器计算设备上运行。
当被包括时,显示子系统611可以被用于呈现由储存设备保存的数据的可视表示。该视觉表示可以采取图形用户界面(GUI)的形式。由于本文描述的方法和过程改变了储存设备602所保存的数据,并且因此转换了储存设备602的状态,显示子系统611的状态可以同样地被转换以可视地表示底层数据中的改变。显示子系统611可以包括实际上利用例如上面讨论的任何类型的技术的一个或多个显示设备。这样的显示设备可以与逻辑设备和/或储存设备结合在共享外壳中,或者这样的显示设备可以是外围显示设备。
当被包括时,输入子系统可以包括一个或多个用户输入设备(诸如键盘612、鼠标613、触摸屏611或游戏控制器(未示出))或与其接合。在一些实施例中,输入子系统可以包括选择的自然用户输入(NUI)元件部分或与其接合。这样的元件部分可以是集成的或外围的,并且输入动作的转换和/或处理可以在板上或板外处理。示例性NUI元件部分可以包括用于讲话和/或语音识别的麦克风;用于机器视觉和/或姿势识别的红外、颜色、立体和/或深度相机;用于运动检测和/或意图识别的头部追踪器、眼睛追踪器、加速度计和/或陀螺仪;以及用于评估大脑活动的电场感测元件部分。
当被包括时,通信子系统620可以被配置为将计算系统与一个或多个其他计算设备通信地耦合。例如,通信模块经由包括例如个人区域网络、局域网、广域网或互联网的任何尺寸的网络将计算设备通信地耦合到例如远程服务器676上托管的远程服务。通信子系统可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置为经由无线电话网络674或有线或无线局域网或广域网进行通信。在一些实施例中,通信子系统可以允许计算系统经由诸如互联网675之类的网络向其他设备发送消息和/或从其它设备接收消息。通信子系统可以另外支持与无源或有源设备(NFC、RFID、UHF等)的短程感应通信。
图6的系统旨在反映广泛的不同类型的信息处理系统。应该理解的是,关于图6描述的许多子系统和特征对于本发明的实现不是必需的,而是被包括来反映根据本发明的可能的系统。应该理解的是,系统架构变化很大,而图6的不同子系统之间的关系仅仅是示意性的并且可能根据布局和系统中的角色分布而变化。应该理解的是,在实践中,系统可能包括关于图6描述的各种特征和子系统的不同子集。
应该理解,本文描述的配置和/或方法本质上是示例性的,并且这些具体实施例或示例不应被认为是限制性的,因为许多变化是可能的。本文描述的具体例程或方法可以表示任何数量的处理策略中的一个或多个。如此,所例示和/或描述的各种动作可以以所例示和/或描述的顺序、以其他顺序、以并行或省略的方式执行。同样地,可以改变上述过程的顺序。
本公开内容的主题包括本文公开的各种过程、系统和配置以及其他特征、功能、行为和/或属性的所有新颖和非显而易见的组合和子组合、以及它们的任何和所有等同物。
Claims (14)
1.一种用于处理软件代码的装置,所述装置包括:
代码转换器,其适于将所述代码的表示准备为有限状态机;
初级状态选择器,其适于选择所述有限状态机的一个或多个状态以进行显示;
次级状态选择器,其适于针对所述选择的初级状态而识别次级状态,其中
所有所述次级状态是包括引导至所述选择的状态的转变的所述有限状态机的状态,或者
所有所述次级状态是包括从所述选择的状态引导出的转变的所述有限状态机的状态,或者
所述状态属于在由所述装置接收的用户输入中指定的、通过所述有限状态机的一系列选择的状态的有效序列;以及
表示处理器,其适于使得呈现将所述选择的状态的文本表示与所述次级状态的文本表示集成的文本表示。
2.根据权利要求1所述的装置,所述装置还适于接收指定所述次级状态是否应当包括所述有限状态机的所有状态的用户输入,所述有限状态机的所有状态包括引导至所述选择的状态的转变、或相反所述有限状态机的所有状态包括从所述选择的状态引导出的转变;并且适于相应地刷新所述文本表示。
3.根据权利要求1或2所述的装置,所述装置还适于接收指定所述有限状态机的哪个状态将构成所述选择的状态的用户输入。
4.根据前述权利要求中任一项所述的装置,所述装置适于接收指定对所述文本表示的一部分的修改的用户输入,以
识别对应于所述修改的修改的状态,
识别对应于所述修改的状态的修改的代码,以及
更新所述修改的代码以反映所述修改。
5.根据前述权利要求中任一项所述的装置,所述装置适于选择一个或多个所述次级状态作为扩展的次级状态,其中所述有限状态机的其他状态在它们是包括引导至所述扩展的次级状态的转变的所述有限状态机的状态、或者是包括从所述扩展的次级状态引导出的转变的所述有限状态机的状态的情况下被选择用于显示为次级状态。
6.根据前述权利要求中任一项所述的装置,所述装置适于选择所述有限状态机的一个或多个状态以进行显示,其中,所述选择的状态位于当前执行流程内。
7.一种处理软件代码的方法,所述方法包括以下步骤:
将所述代码的表示准备为有限状态机;
选择所述有限状态机的一个或多个状态以进行显示;
针对所述选择的状态中的每个状态,识别次级状态,其中
所有所述次级状态是包括引导至所述选择的状态的转变的所述有限状态机的状态,或者
所有所述次级状态是包括从所述选择的状态引导出的转变的所述有限状态机的状态,或者
接收指定通过所述有限状态机的一系列选择的状态的有效序列的用户输入;以及
呈现将所述选择的状态的文本表示与所述次级状态的文本表示进行集成的文本表示。
8.根据权利要求7所述的方法,包括接收指定所述次级状态是否应当包括所述有限状态机的所有状态的用户输入的附加步骤,所述有限状态机的所有状态包括引导至所述选择的状态的转变、或相反所述有限状态机的所有状态包括从所述选择的状态引导出的转变;并且相应地刷新所述文本表示。
9.根据权利要求7至8中任一项所述的方法,包括接收指定所述有限状态机的哪个状态将构成所述选择的状态的用户输入的附加步骤。
10.根据权利要求7至9中任一项所述的方法,包括接收指定对所述文本表示的一部分的修改的用户输入的附加步骤:
识别对应于所述修改的修改的状态,
识别对应于所述修改的状态的修改的代码,以及
更新所述修改的代码以反映所述修改。
11.根据权利要求7至10中的任一项所述的方法,还包括以下步骤:选择一个或多个所述次级状态作为扩展的次级状态,其中所述有限状态机的其他状态在它们是包括引导至所述扩展的次级状态的转变的所述有限状态机的状态、或者是包括从所述扩展的次级状态引导出的转变的所述有限状态机的状态的情况下被选择用于显示为次级状态。
12.根据权利要求7至11中任一项所述的方法,其中,所述选择所述有限状态机的一个或多个状态以进行显示的步骤包括:选择位于当前执行流程内的状态。
13.一种适于实现权利要求7至12中的任一项所述的步骤的计算机程序。
14.一种包含权利要求13的计算机程序的计算机可读介质。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16306780.4 | 2016-12-22 | ||
EP16306780.4A EP3340044A1 (en) | 2016-12-22 | 2016-12-22 | Method and apparatus for processing software code |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108334320A true CN108334320A (zh) | 2018-07-27 |
Family
ID=57755139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711396909.3A Pending CN108334320A (zh) | 2016-12-22 | 2017-12-21 | 用于处理软件代码的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20180181408A1 (zh) |
EP (1) | EP3340044A1 (zh) |
CN (1) | CN108334320A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020167544A1 (en) * | 2001-05-14 | 2002-11-14 | Vijaya Raghavan | Graphical functions |
US20080270101A1 (en) * | 2005-07-12 | 2008-10-30 | Marko Salmela | Building Finite State Machine Model |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN102103497A (zh) * | 2009-12-18 | 2011-06-22 | 阿尔卡特朗讯 | 有限状态机执行装置和方法、在应用中的建立和使用方法 |
CN105045603A (zh) * | 2015-08-24 | 2015-11-11 | 北京金山安全软件有限公司 | 一种构建有限状态机模型框架的方法、装置及电子装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560475B2 (en) * | 2004-09-10 | 2013-10-15 | Cavium, Inc. | Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process |
US8680888B2 (en) * | 2011-12-15 | 2014-03-25 | Micron Technologies, Inc. | Methods and systems for routing in a state machine |
US9304968B2 (en) * | 2012-07-18 | 2016-04-05 | Micron Technology, Inc. | Methods and devices for programming a state machine engine |
US10042654B2 (en) * | 2014-06-10 | 2018-08-07 | International Business Machines Corporation | Computer-based distribution of large sets of regular expressions to a fixed number of state machine engines for products and services |
US9588779B2 (en) * | 2014-12-09 | 2017-03-07 | International Business Machines Corporation | Maintaining state information in a multi-component, event-driven state machine |
-
2016
- 2016-12-22 EP EP16306780.4A patent/EP3340044A1/en not_active Withdrawn
-
2017
- 2017-12-18 US US15/845,357 patent/US20180181408A1/en not_active Abandoned
- 2017-12-21 CN CN201711396909.3A patent/CN108334320A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020167544A1 (en) * | 2001-05-14 | 2002-11-14 | Vijaya Raghavan | Graphical functions |
US20080270101A1 (en) * | 2005-07-12 | 2008-10-30 | Marko Salmela | Building Finite State Machine Model |
CN102103497A (zh) * | 2009-12-18 | 2011-06-22 | 阿尔卡特朗讯 | 有限状态机执行装置和方法、在应用中的建立和使用方法 |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN105045603A (zh) * | 2015-08-24 | 2015-11-11 | 北京金山安全软件有限公司 | 一种构建有限状态机模型框架的方法、装置及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
US20180181408A1 (en) | 2018-06-28 |
EP3340044A1 (en) | 2018-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934301B2 (en) | System and method for automated software testing | |
US20240037020A1 (en) | System and Method for Automated Software Testing | |
US8627228B2 (en) | Automatic sash configuration in a GUI environment | |
US9465726B2 (en) | Abstract layer for automatic user interface testing | |
CN111310934A (zh) | 一种模型生成方法、装置、电子设备和存储介质 | |
JP7439242B2 (ja) | 機械学習モデルの視覚的作成及び監視 | |
US20130219272A1 (en) | Monitoring and guiding user input among multiple computer program user interfaces | |
CN108874382A (zh) | 用于处理代码的方法和装置 | |
EP2705441B1 (en) | Automatic classification adjustment of recorded actions for automation script | |
US20180246801A1 (en) | Controlling a system under test using a cognitive control based test runner | |
CN108292383A (zh) | 与通信相关联的任务的自动提取 | |
Liu et al. | Make llm a testing expert: Bringing human-like interaction to mobile gui testing via functionality-aware decisions | |
CN105335282A (zh) | 用于应用的跨平台测试的方法和系统 | |
Skripcak et al. | Toward nonconventional human–machine interfaces for supervisory plant process monitoring | |
US12001823B2 (en) | Systems and methods for building and deploying machine learning applications | |
US20130080139A1 (en) | Representing State Transitions | |
Marenkov et al. | Guideliner: A tool to improve web UI development for better usability | |
Xue et al. | [Retracted] Visual Identification of Mobile App GUI Elements for Automated Robotic Testing | |
Cheng et al. | YOLOv5‐MGC: GUI Element Identification for Mobile Applications Based on Improved YOLOv5 | |
Kapec et al. | Visual analysis of software systems in virtual and augmented reality | |
US20240053980A1 (en) | Shortened narrative instruction generator for software code change | |
CN108334320A (zh) | 用于处理软件代码的方法和装置 | |
JP7540003B2 (ja) | Rpaロボットを訓練する方法、装置、コンピュータプログラム、コンピュータ可読媒体 | |
Lacoche et al. | Prototyping context-aware augmented reality applications for smart environments inside virtual reality | |
Martinie et al. | Designing and assessing interactive systems using task models |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180727 |