图形用户界面软件功能获取方法及装置的制造方法
【技术领域】
[0001] 本发明涉及软件工程技术领域,尤其涉及一种图形用户界面软件功能获取方法及 装直。
【背景技术】
[0002] 图形用户界面软件以其操作简单、直观、方便得到广泛应用,与嵌入式软件相比, 图形用户界面软件包含很多的窗口,每一个窗口中又包含很多控件,这些窗口和控件的不 同组合构成了软件不同的功能,用户通过操作界面上的控件,实现规定的功能。窗口和控件 的多样性以及组合的复杂性,导致难以用常规的方法获取软件所设计的功能,即使能够做 至IJ,其工作量也非常大。
[0003] 软件功能是软件的重要属性,是软件规模度量、软件开发和测试工作量估计等工 作的基础。目前,软件需求主要来自于软件需求规格说明文档,按照传统的软件开发V模 型,软件开发需要经过需求分析一概要设计一详细设计一编码一测试等几个阶段,其中,软 件需求分析是首先需要开展的工作,在软件需求分析阶段,明确软件的需求。这种开发模式 所确定的软件需求存在如下问题:1、一致性差,理论上讲,软件需求规格说明等文档应该与 软件版本保持一致,但在具体项目中,由于各种原因,开发人员难以及时更新软件需求,导 致软件需求与实际的软件存在较大差异;2、软件功能获取工作量大。图形用户界面软件功 能繁多而复杂,无论是通过阅读相关软件文档还是通过实际执行软件,工作量都很大。
[0004] 随着快速原型开发等新的软件开发模式的广泛使用,软件开发进入了快速迭代的 时代,开发人员对软件需求的依赖程度发生了变化,已不再要求首先明确详细的软件需求 后才能启动编程工作。
[0005] 有鉴于此,为填补现有软件工程技术领域的功能自动获取技术的空白,并且针对 图形用户界面获取软件功能中存在的技术问题,有必要提供一种新的图形用户界面软件功 能获取方法及装置,能够自动、快速、准确地获取图形用户界面软件所具有的功能。
【发明内容】
[0006] 为了解决上述问题,本发明提供的一种图形用户界面软件功能获取方法及装置, 能够自动、快速、准确地获取图形用户界面软件所具有的功能。
[0007] 本发明提供了一种图形用户界面软件功能获取方法,包括:S1、利用Windows操作 系统提供的微软用户交互自动化MS-UIA框架,对被测软件的用户界面进行分析,获取主界 面中的菜单类和对话框类控件元素;S2、通过自动触发菜单和控件的点击事件,得到次级菜 单或次级对话框窗口,依此方式,递归找出被测软件所有层级的菜单类或对话框类控件中 包含的元素;S3、通过分析菜单层级关系或对话框窗口调用关系,得出被测软件的功能组成 结构。
[0008] 作为一种实施例,所述步骤Sl进一步包括:通过当前窗口句柄构建窗口中控件树 的根结点,使用UIA框架提供的TreeWalker类,采用深度遍历算法递归构造以当前窗口为 根结点的控件树,从而获取窗口中所有控件及其信息。
[0009] 作为一种实施例,所述采用深度遍历算法递归构造以当前窗口为根结点的控件 树,进一步包括:将被测程序的主窗口参数rootElement作为遍历的起点;遍历时首先找到 rootElement的第一个子结点,如果该结点是菜单控件,则需要遍历当前结点的所有子结 点,这时,先将菜单展开,然后调用展开后的子结点的Invoke控件模式,其他结点类型在 这里不做处理;递归遍历当前结点的子结点控件,处理完子结点控件后,处理当前结点的兄 弟结点。
[0010] 作为一种实施例,所述菜单或对话框的层级关系获取,进一步包括:获得到被测软 件主界面窗口的所有控件及其信息,该信息以树形结构展示;根据控件类型ControlType 属性进行过滤得到控件类型为菜单或对话框的界面元素;当控件类型为菜单界面元素时, 获取主菜单,通过调用invoke控件模式触发GUI事件,模拟人工点击菜单项的操作,递归查 找当前菜单的子菜单项,并保存主菜单与子菜单的层级关系;当控件类型为对话框界面元 素时,获取主窗口,通过调用invoke控件模式触发CTI事件,模拟人工点击各按钮的操作, 递归查找当前窗口的子窗口,以获取窗口间的调用关系,并将窗口间的调用关系保存为主 窗口与子窗口的层级关系。
[0011] 作为一种实施例,所述递归查找当前菜单的子菜单项,并保存主菜单与子菜单的 层级关系,进一步包括:传入主窗口节点,并获取第一个孩子节点;判断该节点是否为空, 若该节点为非空,则进一步判断该节点是否为菜单,若该节点是菜单,进入Invoke控件模 式,并递归遍历子节点,若该节点不是菜单,递归遍历子节点;若该节点不是菜单,递归遍历 子节点;递归之后,处理兄弟节点;若该节点为空则结束。
[0012] 作为一种实施例,所述递归查找当前窗口的子窗口,以获取窗口间的调用关系,并 将窗口间的调用关系保存为主窗口与子窗口的层级关系,进一步包括:传入主窗口节点; 获取第一个孩子节点;判断该节点是否为空,若该节点为非空,进一步判断该节点是否为按 钮,若该节点是按钮,则进入Invoke控件模式,并递归遍历子节点,随后处理兄弟节点;若 该节点不是按钮则结束;若该节点为空则结束。
[0013] 作为一种实施例,所述S3进一步包括:菜单层级调用关系链表和窗口调用链表中 包含了软件的功能要素,从链表的起始结点到某个终止结点构成了软件的一个功能,链表 的所有路径构成了软件所具有的功能;在分别获取了菜单和窗口及其层级调用关系之后, 先找到功能的所有子结点,通过回溯找到从该子结点向上的功能调用关系,通过遍历菜单 层级调用关系链表和窗口调用链表,并将遍历结果分别转换为文本显示方式和图形显示方 式,以得到被测软件的所有功能和功能组成结构图。
[0014] 本发明还提供了一种图形用户界面软件功能获取装置,包括:元素分析模块,用于 利用Windows操作系统提供的微软用户交互自动化MS-UIA框架,对被测软件的用户界面进 行分析,获取主界面中的菜单类和对话框类控件元素;层级分析模块,用于通过自动触发菜 单和控件的点击事件,得到次级菜单或次级对话框窗口,依此方式,递归找出被测软件所有 层级的菜单类或对话框类控件中包含的元素;结构生成模块,用于通过分析菜单层级关系 或对话框窗口调用关系,得出被测软件的功能组成结构。
[0015] 由上述本发明的实施例提供的技术方案可以看出,采用本发明所提出的方法及装 置,可以直接从软件界面中提取软件所设计的功能,彻底改变了软件功能的获取方式。这种 方法一方面可以减少开发人员的工作量,开发人员可以将编写软件需求文档的时间更多地 用于软件功能实现,提高软件开发效率;另一方面可以保证软件需求与最终软件的一致性。 由于软件需求来源于最终软件的执行结果界面,开发人员不再需要手工频繁更新软件需求 文档,从根本上解决软件功能需求与软件实现不一致的难题。
[0016] 本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变 得明显,或通过本发明的实践了解到。
【附图说明】
[0017] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用 的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其 他的附图。
[0018] 图1为本发明一实施例的图形用户界面软件功能获取方法的流程示意图;
[0019] 图2为本发明一实施例的获取窗口控件及其信息的流程示意图;
[0020] 图3为本发明一实施例的获取菜单层级调用关系的流程示意图;
[0021] 图4为本发明一实施例的获取窗口调用关系的流程不意图;
[0022] 图5为本发明一实施例的针对菜单类软件场景获取功能的流程示意图;
[0023] 图6为本发明一实施例的菜单类软件界面控件树的结构示意图;
[0024] 图7为本发明一实施例的菜单类软件菜单层级调用关系的结构示意图;
[0025] 图8为本发明一实施例的学生管理系统软件的功能组成图;
[0026] 图9为本发明一实施例的学生管理系统软件的功能路径图;
[0027] 图10为本发明一实施例的图形用户界面软件功能获取方法的流程示意图。
【具体实施方式】
[0028] 下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始 至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参 考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0029] 本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式"一"、"一 个"、"所述"和"该"也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措 辞"包括"是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加 一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元 件被"连接"或"耦接"到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存 在中间元件。此外,这里使用的"连接"或"耦接"可以包括无线连接或耦接。这里使用的 措辞"和/或"包括一个或更多个相关联的列出项的任一单元和全部组合。
[0030] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术 术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应 该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的 意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
[0031] 为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步 的解释说明,且各个实施例并不构成对本发明实施例的限定。
[0032] 针对这种情况以及目前所面临的上述问题,本发明提出了通过分析软件的图形用 户界面获取软件功能的方法,主要解决如何快速、准确地获取软件所具有的功能技术问题。
[0033] 图形用户界