CN110785736A - 自动代码生成 - Google Patents
自动代码生成 Download PDFInfo
- Publication number
- CN110785736A CN110785736A CN201880041312.3A CN201880041312A CN110785736A CN 110785736 A CN110785736 A CN 110785736A CN 201880041312 A CN201880041312 A CN 201880041312A CN 110785736 A CN110785736 A CN 110785736A
- Authority
- CN
- China
- Prior art keywords
- gui
- component
- image
- model
- gui screen
- 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.)
- Granted
Links
Images
Classifications
-
- 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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
- G06F18/2148—Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector 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/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/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
- G06V30/41—Analysis of document content
- G06V30/413—Classification of content, e.g. text, photographs or tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
- G06V30/42—Document-oriented image-based pattern recognition based on the type of document
- G06V30/422—Technical drawings; Geographical maps
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Medical Informatics (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
- Image Analysis (AREA)
Abstract
公开了用于从包括文本信息和一个或多个图形用户界面部件的GUI屏幕图像来自动化GUI开发的技术。分析GUI屏幕图像以提取文本信息并识别GUI屏幕中包含的UI部件。检测GUI屏幕图像中的一个或多个文本区域并将其用占位符替换。从GUI屏幕图像中提取GUI屏幕中的一个或多个图形用户界面部件的图像,并使用基于机器学习的分类器对它们进行分类。基于分类结果、一个或多个文本区域的位置以及一个或多个图形用户界面部件的位置,为GUI生成GUI模型。所生成的模型然后可以用于生成GUI的一个或多个实现体(例如,可执行代码),这些实现体可能采用不同编程语言并用于各种平台。
Description
相关申请的交叉引用
本申请要求于2018年6月1日提交的题为“AUTOMATED CODE GENERATION”的美国非临时专利申请No.15/996,311的权益和优先权,其要求于2018年2月12日提交的题为“AUTOMATED CODE GENERATION”的印度临时专利申请号201841005130的权益和优先权,上述专利申请的全部内容出于所有目的通过引用并入本文。
背景技术
在典型的图形用户界面(GUI)开发过程中,GUI可以由设计人员基于顾客或客户调查、市场调查以及驱动要包含在待开发的GUI中的功能和外观的其它信息源来设计。GUI可以描述应用期望的用户界面(UI),诸如应用的各个屏幕的模拟(mock-up)图像、屏幕的设计和外观、屏幕之间的过渡等。除了屏幕的模拟图像之外,GUI还可以包括向用户提供关于GUI的信息的文本内容。
应用的GUI(包括GUI屏幕的图像)可以由设计人员记录在文档(例如,设计文档)或规范(例如,图像文件或示意草图)中。然后,GUI设计文档可以用于创建或开发用于实现应用的GUI的代码。例如,在开发阶段期间,可以将包括应用的GUI屏幕的一个或多个图像或草图的GUI设计文档提供给工程设计组织,该组织包括负责基于GUI设计文档编写用于实现GUI和/或应用的代码的工程师或开发人员。这些开发人员可以手动编写代码,或者可以使用基于“拖放”的开发工具来手动构建期望的GUI屏幕,并生成实现具有在GUI设计文档中描述的期望外观和功能的GUI的代码。
因此,从设计文档为可执行应用开发GUI可能涉及开发人员的大量人工工作。它可能要求开发人员研究设计文档、了解包括GUI屏幕的期望的功能和外观的需求,并且然后编写代码来实现GUI和/或应用。它还可能要求开发人员具有关于要用于开发GUI的应用开发平台和编程语言的知识,并且还具有关于针对其开发GUI和应用的特定目标系统或平台(例如,或移动或桌面)的知识。因此,经常需要具有特定专业知识的开发人员来进行GUI开发。所有这些因素导致开发阶段繁琐、耗时、劳动强度大且昂贵。
发明内容
本公开涉及应用开发,并且更具体地,涉及用于从诸如应用的一个或多个GUI屏幕的一个或多个图像或草图之类的设计文档中自动开发应用的图形用户界面(GUI)的技术。本文描述了各种发明实施例,包括方法、系统、存储程序、代码或可由一个或多个处理器执行的指令的非暂态计算机可读存储介质等。
在某些实施例中,应用的GUI可以包括一个或多个GUI屏幕,其中每个屏幕包括一个或多个用户界面(UI)部件,诸如按钮、文本输入框、下拉列表、下拉菜单、图标、表格等。除了UI部件之外,GUI屏幕还可以包括包含文本内容的部分。文本内容可以与某些UI部件相关联,例如,可以描述要在UI部件中输入的信息、UI部件的功能、URL链接等。
在某些实施例中,可以分析例如由GUI设计人员设计的GUI屏幕的图像(也称为GUI屏幕图像),以从GUI屏幕图像中提取文本信息并识别GUI屏幕中包含的UI部件。各种基于机器学习的技术可以用于分析GUI屏幕图像。例如,UI部件可以通过基于机器学习的分类器(例如,基于支持向量机的分类器或基于卷积神经网络的分类器)进行检测和分类,该分类器被配置为,在提供输入GUI屏幕图像的情况下,识别屏幕图像中存在的UI部件以及检测到的UI部件在图像中的位置。另外,基于学习的分类器可以被配置为识别每个检测到的UI部件的类型和/或与每个检测到的UI部件相关联的功能。GUI屏幕图像中的文本内容项及其对应位置也可以被检测和识别。
然后可以基于例如检测到的UI部件、UI部件的类型、UI部件的位置、UI部件的相关联的文本信息,以及可能不与任何UI部件相关联的附加文本信息来为应用的GUI生成GUI模型。GUI模型可以是与语言无关和与平台无关的。描述应用的GUI的信息可以包括描述应用的一个或多个GUI屏幕的信息,以及对于每个GUI屏幕,关于该GUI屏幕上的检测到的UI部件、文本部分等的信息。
各种不同的格式可以用于存储为应用生成的模型。例如,在某些实施例中,可以以与语言和/或平台无关的数据交换格式来描述所生成的模型。例如,可以以与语言无关的数据交换格式来描述GUI模型,诸如JavaScript对象表示法(JSON)格式。在一些实现方案中,GUI模型可以被生成为可以与应用相关联的元数据。
然后,基于对应用的GUI屏幕图像的分析而生成的GUI模型随后可以用于生成实现模型中描述的应用的GUI的代码。所生成的代码使得在执行或解释时,生成具有如描述应用GUI的设计文档(例如,包含表示GUI的一组图像的设计文档)中所描绘的那样的外观和功能的GUI。相同的生成模型可以用于以潜在不同的语言针对各种不同的平台(例如,等)生成代码。
如上所述,可以分析表示GUI屏幕的图像以检测图像中存在的一个或多个文本内容项和UI部件。在一些实施例中,在对UI部件进行分类之前,可以从UI部件的图像中提取文本内容项,并且可以用不包含任何文本内容的占位符来代替这些文本内容项。在一些实施例中,可以基于图像的包括文本内容项的部分中的像素来生成直方图。该直方图可以用于确定文本内容项的强度是否比背景的强度浅。然后可以反转图像的该部分中的像素,以使图像的该部分中的文本内容项比图像的该部分中的背景暗。然后可以基于图像的该经反转的部分来识别文本内容项。在一些实施例中,可以用具有预定义的像素图案的像素阵列或具有图像的该部分的背景的像素值的像素阵列来代替图像的该部分中的文本内容项。该像素阵列替换不仅导致从图像部分中去除实际文本内容,而且还识别文本内容在图像内的位置和边界。在一些实施例中,预定义的像素图案可以促进确定文本内容项的位置和/或UI部件的类型。
在某些实施例中,为应用的GUI生成的GUI模型可以封装与应用的一个或多个GUI屏幕对应的信息。对于每个GUI屏幕,GUI模型可以包括识别包含在该GUI屏幕中的一个或多个用户界面(UI)部件的信息。对于每个GUI屏幕,该模型还可以包含关于GUI屏幕的结构的信息,诸如识别GUI屏幕上用户界面部件和文本内容项的层次结构的信息。例如,在一些实施例中,可以基于例如UI部件的类型和位置对UI部件进行分组,以形成UI部件的子组(例如,表或列表)。子组还可以被进一步聚类以确定GUI屏幕的更高级别的布局。在一些实施例中,文本内容项也可以被分组以形成例如文本行或文本段。在一些实施例中,文本内容项可以基于例如文本内容项和UI部件的位置信息来分组或与UI部件相关联。
在某些实施例中,可以分析GUI屏幕的图像以识别图像的包括文本内容项和UI部件的部分。取决于文本内容项的位置和性质,可以确定文本内容项与在屏幕上检测到的UI部件相关联,或者,在某些实施例中,可以确定文本内容项是独立的并且不与任何检测到的UI部件相关联。生成的GUI模型封装了该信息。在一些实施例中,GUI模型因此可以指示某些文本内容项是独立的并且不与任何UI部件相关联。在某些实施例中,可以检测未关联的文本内容项并将其分类为在被点击时可以发起动作的可点击的文本(例如,链接)。该信息可以存储在GUI模型中。
在一些实施例中,GUI模型可以描述将如何显示GUI屏幕的各个UI部件,使得可以再现如所设计那样的GUI屏幕的外观。在某些实施例中,GUI模型还可以包括关于要与GUI屏幕上的某些UI部件相关联的功能的信息。可以基于例如由基于机器学习的分类器分类的用户界面部件的类型和/或相关联的文本内容项(如果有的话)来确定与用户界面部件相关联的功能。
在一些实施例中,提供了一种基础设施,其使(一个或多个)用户能够编辑并提供对所生成的GUI模型的反馈。用户反馈可以包括例如对自动生成的模型的一部分进行的校正(例如,改变与UI部件相关联的类型)。反馈还可以包括用户提供添加到模型的附加信息。然后,用户反馈可以用于改善(例如,重新训练)基于机器学习的分类器。
基于GUI设计信息为GUI生成的GUI模型可以被各种下游消费者使用。例如,下游消费者可以使用该模型来自动且基本上没有任何手动编码地生成用于实现GUI的代码。该代码可以是可由一个或多个处理器执行的可执行程序,或者是可以由例如web浏览器解释的可解释程序,以显示具有与在用于生成GUI模型的一组图像中描述的期望外观和/或功能基本上相似的外观和/或功能的GUI。不同的消费者可以使用相同的GUI模型。例如,第一消费者可以使用GUI模型为第一平台(例如,)自动生成可执行文件,并且第二消费者可以使用相同的GUI模型为另一个平台(例如,)自动生成第二可执行文件。GUI模型(例如,以JSON格式)还可以用于生成不同编程语言的代码,诸如标记语言(例如,HTML或XML)或样式表语言(例如,级联样式表(CSS))。
根据某些实施例,一种计算机实现的方法可以包括:从输入图像中检测描绘GUI的GUI屏幕的图形用户界面(GUI)屏幕图像;检测GUI屏幕图像的包括第一文本内容项的第一区域;确定第一区域在GUI屏幕图像内的位置;以及用不包含文本内容的占位符替换第一区域的内容。该计算机实现的方法还可以包括:检测位于GUI屏幕图像的第二区域中的第一用户界面(UI)部件,其中第二区域包含具有占位符的第一区域;确定第一UI部件在GUI屏幕图像内的位置;以及使用基于机器学习的分类器来确定第一UI部件的UI部件类型。可以使用包括多个训练图像的训练数据来训练基于机器学习的分类器,其中多个训练图像中的每个训练图像可以包括UI部件。训练数据还可以包括,对于每个训练图像,识别训练图像中的UI部件的UI部件类型的信息。然后可以生成可用于生成用于实现GUI的代码的GUI模型。GUI模型可以包括第一UI部件的信息和第一文本内容项的信息,其中第一UI部件的信息可以包括指示为第一UI部件确定的UI部件类型以及第一UI部件在GUI屏幕图像内的位置的信息。
在该方法的一些实施例中,检测第一UI部件可以包括由基于机器学习的分类器检测GUI屏幕图像中的第一UI部件,并且对于每个训练图像,训练数据还可以包括UI部件在该训练图像内的位置。在一些实施例中,该方法还可以包括基于第一区域在GUI屏幕图像内的位置和第一UI部件在GUI屏幕图像内的位置,将第一文本内容项与第一UI部件进行分组,其中生成GUI模型还可以包括在GUI模型中包含指示该分组的信息。
在一些实施例中,该计算机实现的方法还可以包括:检测GUI屏幕图像的可以包括第二文本内容项的第三区域;确定第三区域在GUI屏幕图像内的位置;检测位于GUI屏幕图像中的第二UI部件的位置;确定第二UI部件在GUI屏幕图像内的位置;以及使用基于机器学习的分类器来确定第二UI部件的UI部件类型。该计算机实现的方法还可以包括:基于第一区域的位置、第三区域的位置、第一UI部件的UI部件类型和位置,以及第二UI部件的UI部件类型和位置,对第一文本内容项、第二文本内容项、第一UI部件和第二UI部件进行分组;以及基于该分组确定GUI屏幕的布局,其中生成GUI模型还可以包括在GUI模型中包含指示GUI屏幕的分组和布局的信息。
在一些实施例中,该计算机实现的方法还可以包括:基于第三区域在GUI屏幕图像内的位置,确定第二文本内容项不与GUI屏幕图像中的任何UI部件相关联;以及确定第二文本内容项指示动作,其中生成GUI模型可以包括在GUI模型中指示GUI屏幕图像的第三区域内的第二文本内容项是可点击的文本,其中点击第二文本内容项可以发起动作。
在一些实施例中,第一区域可以包括背景上的第一文本内容项。该计算机实现的方法还可以包括基于GUI屏幕图像的第一区域中的像素的强度值来生成直方图;基于与第一文本内容项对应的像素数和与GUI屏幕图像的第一区域中的背景对应的像素数,从直方图中确定第一文本内容项的像素的强度值高于背景的像素的强度值;将第一区域中的像素的强度值反转,其中反转可以使第一文本内容项的像素的强度值低于第一区域中的背景的像素的强度值;以及在执行反转之后,识别第一区域中的第一文本内容项。在一些实施例中,该方法还可以包括:在生成直方图之前,基于第一区域中的每个像素的强度值,将GUI屏幕图像的第一区域从RGB子图像转换成二进制子图像。
在该方法的一些实施例中,占位符可以包括预定义的像素图案,并且确定第一UI部件的UI部件类型可以包括基于占位符在第二区域中的存在和占位符中的预定义的像素图案来对GUI屏幕图像的第二区域进行分类。在一些实施例中,占位符可以包括预定义的像素图案,从而使得能够从GUI屏幕图像确定第一文本内容项在第一区域中的位置的边界。在一些实施例中,预定义的像素图案的像素值可以包括第一区域的背景中的像素的预定义值或像素值。
在一些实施例中,生成GUI模型可以包括以JavaScript对象表示法(JSON)格式存储GUI模型的信息。在一些实施例中,该方法还可以包括基于GUI模型生成GUI的一个或多个实现体。在一些实施例中,基于GUI模型生成GUI的一个或多个实现体可以包括:使用GUI模型为第一平台生成GUI的第一实现体;以及使用GUI模型为第二平台生成GUI的第二实现体,其中第二平台与第一平台不同。在一些实施例中,基于GUI模型生成GUI的一个或多个实现体可以包括:使用GUI模型以第一编程语言生成GUI的第一实现体;以及使用GUI模型以第二编程语言生成GUI的第二实现体,其中第二编程语言与第一编程语言不同。在一些实施例中,基于GUI模型生成GUI的一个或多个实现体可以包括使用GUI模型和一个或多个代码生成模板来生成GUI的一个或多个实现体,其中每个代码生成模板与平台或编程语言相关联。
在一些实施例中,基于机器学习的分类器可以包括基于图像直方图的非线性支持向量机分类器或基于人工神经网络的分类器。在一些实施例中,该方法还可以包括:接收关于GUI模型的用户反馈,其中用户反馈可以包括识别要与第一UI部件相关联的新UI部件类型而不是在GUI模型中为第一UI部件指定的UI部件类型的信息,或者识别存在于GUI屏幕中但不包括在GUI模型中的新UI部件的信息,以及指示新UI部件的UI部件类型的信息。该方法还可以包括基于用户反馈来重新训练基于机器学习的分类器。
在一些实施例中,用户反馈可以包括第一UI部件或新UI部件的子图像。该方法还可以包括从多个训练图像中提取特征;将从多个训练图像中提取的特征映射到多维空间中的数据点,其中数据点可以形成多维空间中的一组聚类;从第一UI部件或新UI部件的子图像中提取特征;将从第一UI部件或新UI部件的子图像中提取的特征映射到多维空间中的数据点;确定与第一UI部件或新UI部件的子图像对应的数据点与所述一组聚类中的每个聚类的中心之间的距离;以及响应于确定该距离小于阈值,将第一UI部件或新UI部件的子图像包括在训练数据中。
根据某些实施例,一种非暂态计算机可读介质可以存储可由一个或多个处理器执行的多个指令,其中该多个指令在由一个或多个处理器执行时,可以使该一个或多个处理器执行上述方法。
根据某些实施例,一种系统可以包括一个或多个处理器以及耦合到一个或多个处理器的存储器。存储器可以存储指令,该指令在由一个或多个处理器执行时,可以使系统执行上述方法。
通过参考以下说明书、权利要求书和附图,前述内容以及其它特征和实施例将变得更加清楚。
附图说明
图1描绘了根据某些实施例的用于基于图形用户界面(GUI)的设计信息来生成GUI的GUI模型的系统的示例的简化高层图,其中所生成的GUI模型可以由下游消费者使用以自动生成GUI的一个或多个实现体。
图2描绘了根据某些实施例的GUI屏幕的模拟图像的示例。
图3描绘了根据某些实施例的用于基于GUI的设计信息为GUI生成GUI模型的系统的示例。
图4是描绘根据某些实施例的为使用基于机器学习的分类器生成GUI模型和/或GUI的一个或多个实现体而执行的高级处理的简化流程图。
图5是描绘根据某些实施例的为训练用于对用户界面部件进行检测和分类的基于机器学习的分类器而执行的高级处理的简化流程图。
图6是描绘根据某些实施例的为基于GUI的设计信息生成图形用户界面的GUI模型和/或源代码而执行的高级处理的简化流程图。
图7是描绘根据某些实施例的为从GUI屏幕的图像中提取文本内容项而执行的高级处理的简化流程图。
图8描绘了根据某些实施例的可以通过将UI部件聚类来为图形用户界面屏幕生成的UI部件层次结构的示例。
图9描绘了根据某些实施例的用于自动生成GUI屏幕的GUI模型和GUI代码的软件应用的GUI屏幕的示例。
图10描绘了根据某些实施例的用于自动生成GUI屏幕的GUI模型和GUI代码的软件应用的GUI屏幕的示例。
图11描绘了根据某些实施例的用于自动生成GUI屏幕的GUI模型和GUI代码的软件应用的GUI屏幕的示例。
图12描绘了根据某些实施例的用于自动生成GUI屏幕的GUI模型和GUI代码的软件应用的GUI屏幕的示例。
图13描绘了根据某些实施例的针对GUI屏幕生成的以JSON格式的GUI模型的示例。
图14图示了根据某些实施例的输入GUI屏幕图像和使用基于本文公开的技术生成的代码显示的对应GUI屏幕图像的示例。
图15图示了根据某些实施例的基于本文公开的技术为输入GUI屏幕图像的示例生成的html代码的示例。
图16A和图16B图示了根据某些实施例的输入GUI屏幕图像和使用基于本文公开的技术生成的代码显示的对应GUI屏幕图像的另一个示例。
图17描绘了用于实现某些实施例的分布式系统的简化图。
图18是根据某些实施例的其中各种服务可以被提供为云服务的基于云的系统环境的简化框图。
图19图示了可以用于实现某些实施例的计算机系统的示例。
具体实施方式
本公开一般而言涉及应用开发,并且更具体地,涉及用于根据GUI的设计信息来自动开发应用的图形用户界面(GUI)的技术。本文描述了各种发明实施例,包括方法、系统、存储程序、代码或可由一个或多个处理器执行的指令的非暂态计算机可读存储介质等。
在下面的描述中,出于解释的目的,阐述了具体细节以便提供对某些发明实施例的透彻理解。但是,将清楚的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不意图是限制性的。词语“示例”或“示例性”在本文中用于表示“用作示例、实例或图示”。本文中描述为“示例性”或“示例”的任何实施例或设计不一定被解释为比其它实施例或设计是优选的或有利的。
在某些实施例中,应用的GUI可以包括一个或多个GUI屏幕,其中每个屏幕包括一个或多个用户界面(UI)部件,诸如按钮、文本输入框、下拉列表、下拉菜单、图标、表格等。应用的GUI还可以包括描述应用的GUI和/或与各个UI部件的功能和行为相关联或向用户提供其它信息或指令的文本信息。
在某些实施例中,可以分析由GUI设计人员设计的GUI屏幕的图像(也称为GUI屏幕图像)以提取文本信息和识别UI部件。例如,UI部件可以由基于机器学习的分类器(例如,支持向量机分类器或基于卷积神经网络的分类器)检测和分类,以识别每个UI部件的类型和/或相关联的功能。文本信息和UI部件的对应位置也可以从GUI屏幕图像确定。可以基于文本信息和UI部件的某些属性来确定GUI屏幕的布局。然后可以基于例如识别出的UI部件、UI部件的类型、UI部件的位置、UI部件的相关联的文本信息、可能不与任何UI部件相关联的附加文本信息以及GUI屏幕的布局为GUI屏幕生成与语言无关的GUI模型。可以以数据交换格式来描述所生成的模型,并且随后可以使用所生成的模型来生成使用各种编程语言在各种平台上实现GUI屏幕的代码。在一些实施例中,可执行的或可解释的代码可以基于GUI模型来生成,以显示具有与GUI的设计信息中所描述的外观和功能相同的GUI。
在某些实施例中,在检测或分类UI部件之前,可以提取GUI屏幕图像中的文本内容,并用不包含任何文本内容的占位符替换该文本内容。例如,在一些实施例中,可以基于GUI屏幕图像的包括文本内容项的一部分中的像素的强度值来生成直方图。直方图可以用于确定文本内容项的颜色是否比背景的颜色浅。然后,可以反转GUI屏幕图像的该部分中的像素,以使GUI屏幕图像的该部分中的文本内容的颜色比GUI屏幕图像的该部分中的背景的颜色暗。然后可以从GUI屏幕图像的经反转的部分中识别文本内容项。在一些实施例中,可以将GUI屏幕图像的该部分中的文本内容替换为像素阵列,该像素阵列具有预定义的像素图案或具有GUI屏幕图像的该部分的背景的像素值。在一些实施例中,预定义的像素图案可以促进确定文本内容项的位置和/或与文本内容项相关联的UI部件的类型。
在某些实施例中,为GUI生成的GUI模型可以封装与应用的一个或多个GUI屏幕对应的信息。对于每个GUI屏幕,GUI模型可以包括识别包含在GUI屏幕中的一个或多个用户界面(UI)部件的信息。对于每个GUI屏幕,该模型还可以包含关于GUI屏幕的结构的信息,诸如识别GUI屏幕中用户界面部件的层次结构的信息。例如,在一些实施例中,可以基于例如UI部件的类型和位置对UI部件进行分组,以形成UI部件的子组(例如,表或列表)。这些子组还可以被聚类以确定GUI屏幕的更高级别的布局。在一些实施例中,文本内容项也可以被分组以形成例如文本行或文本段。在一些实施例中,文本内容项可以基于例如文本内容项和UI部件的位置信息来分组或与UI部件相关联。
在一些实施例中,GUI模型可以将不与任何UI部件相关联的某些文本内容项指示为在被点击时发起动作的可点击的文本。在一些实施例中,GUI模型可以描述将如何显示GUI屏幕的各个UI部件,使得可以再现如所设计那样的GUI屏幕的外观。在某些实施例中,GUI模型还可以包括关于要与GUI屏幕上的用户界面部件相关联的功能的信息。可以基于例如由基于机器学习的分类器分类的用户界面部件的类型和/或相关联的文本内容项(如果有的话)来确定与用户界面部件相关联的功能。在一些实现方案中,GUI模型可以被生成为元数据。在一些实现方案中,可以以与语言无关的数据交换格式来描述GUI模型,诸如JavaScript对象表示法(JSON)格式。在一些实施例中,用户可以提供关于GUI模型的反馈。用户反馈然后可以用于改善(例如,重新训练)基于机器学习的分类器。
基于设计信息为GUI生成的GUI模型可以被各种下游消费者使用。例如,下游消费者可以使用该模型来自动且基本上没有任何手动编码地生成用于实现GUI的代码。该代码可以是可由一个或多个处理器执行的可执行程序,或者是可以由例如web浏览器解释以显示GUI的可解释程序。不同的消费者可以使用相同的GUI模型。例如,第一消费者可以使用GUI模型来自动生成用于第一平台(例如,)的可执行文件,并且第二消费者可以使用相同的GUI模型来自动生成用于不同平台(例如,)的第二可执行文件。GUI模型(例如,以JSON格式)还可以用于生成不同编程语言的代码,诸如标记语言(例如,HTML或XML)或样式表语言(例如,级联样式表(CSS))。
如本文所使用的,UI部件可以指代GUI屏幕的图形部件。UI部件可以包括不同类型的UI部件,诸如按钮、文本输入框、下拉列表、下拉菜单、复选框、单选按钮、切换按钮、图标、表格、(人或对象)的照片、行分隔线、容器等。GUI屏幕可以包含一个或多个文本区域,其中每个文本区域可以包含文本内容。每个文本区域中的文本内容可以包含一个或多个文本内容项。如本文所使用的,文本内容项可以指GUI屏幕的包括任何语言的某些文本字符的非图形部件。例如,文本内容项可以包括单词、特殊字符或短短语。如本文所使用的,GUI部件可以包括在GUI屏幕中示出的任何元素,包括UI部件或文本内容项。
为了说明的目的,在本公开中描述了某些示例。但是,这些示例仅是示例性的,而不是限制性的。本文公开的教导也可以应用于各种类型的应用,诸如移动应用、非移动应用、桌面应用、web应用、企业应用等。此外,本公开的教导不限于特定操作环境(例如,操作系统、设备、平台等),而是可以应用于多个不同的操作环境。
图1描绘了根据某些实施例的用于基于GUI的设计信息来生成GUI的图形用户界面(GUI)模型的系统100的示例的简化高层图,其中所生成的GUI模型可以由下游消费者使用以自动生成GUI的一个或多个实现体。图1中描绘的系统100仅是示例,并且无意于不适当地限制本公开的范围。本领域普通技术人员将认识到许多可能的变化、替代和修改。例如,在一些实现方案中,系统100可以具有比图1所示的子系统或部件更多或更少的子系统或部件、可以组合两个或更多个子系统,或者可以具有不同配置或布置的子系统。
如图1所示,系统100可以包括模型生成系统(MGS)102,该模型生成系统102被配置为接收GUI的一个或多个GUI屏幕图像104作为输入,并基于一个或多个GUI屏幕图像104为GUI生成GUI模型124。然后,GUI模型124可以由一个或多个下游模型消费者103消费,下游模型消费者103可以基于GUI模型124来基本上没有手动编码地生成GUI的一个或多个GUI实现体110、112和114。GUI实现体110、112和114可以由一个或多个处理器执行以在不同平台上显示GUI。
如上所述,在为GUI创建GUI模型或实现体之前,可以定义或收集用于GUI的信息。一个或多个GUI屏幕图像104可以基于顾客或客户调查、市场调查以及驱动要包含在GUI中的GUI的外观和功能的其它信息源而被放在一起。一个或多个GUI屏幕图像104因此可以描述GUI的期望的外观和功能。GUI屏幕图像104的准备中可能涉及各种不同的工作人员,诸如功能顾问、用户体验(UX)设计人员等。GUI屏幕图像104可以使用计算机辅助设计工具生成并以数字格式保存,或者可以被手动生成为纸上的草图并且然后被扫描到数字图像中。
在某些实施例中,诸如图1中所绘出的实施例,GUI屏幕图像104可以包括一个或多个图像,其中每个图像可以用于一个GUI屏幕或多个GUI屏幕。在某些实施例中,GUI屏幕图像104可以作为序列被接收或可以具有次序,其中该序列或次序识别由图像描绘的这些屏幕之间的流。GUI屏幕图像104可以描绘屏幕的设计和外观以及屏幕之间的过渡等。每个GUI屏幕图像104可以包括一个或多个UI部件134和文本信息132。可以以各种不同格式中的一种来接收GUI屏幕图像104,诸如位图文件、JPEG文件、PNG(便携式网络图形)文件、GIF文件、PDF文件等。各种不同的技术可以用于生成GUI屏幕图像104。例如,GUI屏幕图像104可以包括作为使用诸如相机、扫描仪等的图像捕获设备捕获的照片的图像。作为另一个示例,GUI屏幕图像104可以包括作为屏幕快照(例如现有应用的屏幕的屏幕快照)的图像,其中待开发的应用将具有与现有应用相似的GUI屏幕(例如,现有应用可以是要为其开发应用的新版本的应用的先前版本)。GUI屏幕图像104还可以包括使用诸如图像编辑应用之类的应用(例如,由Adobe提供的各种图像编辑应用)生成的图像。GUI屏幕图像104还可以包括使用能够创建或编辑图像的软件应用生成的图像,软件应用诸如各种文字处理器(例如,MS)、绘图应用(例如,)和其它应用。
将使用GUI屏幕图像104开发的应用可以是各种类型的应用之一,包括但不限于移动应用(例如,可由移动设备执行的应用)、桌面应用、web应用、企业应用等。应用可以针对各种不同类型的设备(例如,智能电话、平板电脑、笔记本电脑、台式计算机等)和平台(例如,平台、平台、平台等)之一。例如,GUI屏幕图像104可以包括被设计为在Apple上执行的移动应用的一个或多个GUI屏幕的一个或多个图像,其中这些屏幕跨移动设备的整个屏幕实际使用面积或其一部分。
每个GUI屏幕图像104可以包括一个或多个UI部件134,诸如按钮、文本输入框、下拉列表、下拉菜单、复选框、图标、表格、(人或对象)的照片等。在一些实施例中,一些UI部件134可以包括相关联的文本。例如,按钮可以在按钮上包括诸如“下一步”、“取消”、“确定”或“确认”之类的单词。UI部件134还可以具有相关联的属性,诸如大小、位置或相关联的动作或功能。例如,UI部件134可以位于GUI屏幕图像104中的任何位置。在一些实施例中,UI部件134可以根据布局或分层结构(诸如表格、列表、树结构、流图、组织图等)被布置在GUI屏幕图像104上。一些UI部件134可以是可点击的、可选择的,或者可以以其它方式接受用户输入(例如,用户键入),而一些其它UI部件可以是静态的或者可以不接受任何用户输入。
如图1所示,每个GUI屏幕图像104可以包括文本信息132。文本信息132可以提供应用的功能的文本描述,包括但不限于屏幕的外观(例如,屏幕的设计或结构、屏幕的用户界面部件、所使用的字体、屏幕上使用的颜色(例如,前景色和背景色)等)、屏幕及其用户界面部件的功能、要由屏幕及其用户界面部件显示的数据等。文本信息132还可以包括给用户的其它信息资料或指示。在一些实施例中,文本信息132也可以描述多个屏幕之间的过渡。
在传统的应用开发环境中,可以基于GUI屏幕图像104手动构建应用。例如,可以将GUI屏幕图像104提供给工程设计组织,该组织包括负责编写用于实现应用的GUI屏幕图像104和应用的其它部件的代码的工程师或开发人员。这些开发人员可能需要了解GUI屏幕图像104,并且然后手动编写实现如在GUI屏幕图像104中定义的应用的GUI和相关联功能的代码。
根据某些实施例,模型生成系统102可以被配置为采用GUI屏幕图像104作为输入,并使用例如模型生成器120、UI部件分类器136和/或存储在存储器122中的参考信息121自动生成GUI模型124。然后,GUI模型124可以用于自动生成GUI的一个或多个实现体。这些实现体可以包括实现GUI的代码和逻辑。这些实现体可以包括可以由一个或多个处理器执行的可执行实现体。
如图1所示,模型生成系统102可以包括一个或多个子系统,该一个或多个子系统被配置为一起工作以生成GUI模型124。这些子系统可以用于硬件、用由计算机系统的一个或多个处理单元(例如,处理器或核心)执行的软件(例如,代码、指令、程序)或其组合来实现。软件可以被存储在诸如存储器122的非暂态存储介质(例如,存储器设备)上。在图1所示的实施例中,模型生成系统102包括一个模型生成器120。在替代实施例中,模型生成系统102可以包括多个模型生成器120。
模型生成系统102可以使用各种不同的技术从GUI屏幕图像104构建GUI模型124。例如,模型生成系统102可以处理和分析GUI屏幕图像104以确定为GUI指定的一个或多个GUI屏幕,并且对于每个GUI屏幕,确定该屏幕上包括的一组用户界面部件以及这些用户界面部件的物理布置。在一些实施例中,该GUI模型生成处理可以包括例如对于GUI屏幕,确定一组用户界面部件(例如,按钮、下拉列表、分段等)及其属性(例如,标签、大小、位置)、确定UI部件在GUI屏幕内的物理布局(例如,确定UI部件或UI部件的组的层次包含关系)以及确定要与这些UI部件中的一个或多个UI部件相关联的功能。
在某些实施例中,模型生成系统102可以被配置为使用例如可以检测每个UI部件的边界的轮廓检测技术来处理和分析GUI屏幕图像104以识别屏幕中包括的一个或多个用户界面部件。基于每个UI部件的边界,可以确定每个UI部件的大小和位置。可以使用基于机器学习的分类器(诸如支持向量机分类器、基于卷积神经网络的分类器(例如,使用Softmax分类器))或其它基于深度神经网络的分类器来提取并分类每个UI部件的边界内的图像。分类器可以将UI部件分类为许多可能的UI部件类型中的UI部件类型,诸如按钮、文本输入框、下拉列表、下拉菜单、复选框、图标、表格、(人或对象的)照片等。下面提供可以由模型生成系统102执行的用于确定GUI屏幕的部件和GUI屏幕的布局的处理的附加描述和示例。
在某些实施例中,模型生成系统102可以从GUI屏幕图像104中提取文本信息132。例如,在模型生成系统102的一些实现方案中,可以使用文本检测工具来确定GUI屏幕图像104中可能包括文本内容的区域的位置(例如,坐标),并且光学字符识别(OCR)工具然后可以用于从GUI屏幕图像104中的这些区域提取(例如,识别)文本内容项。在一些实施例中,基于每个UI部件的大小和位置以及文本内容项的位置信息,一些文本内容项(例如,可点击的按钮上的文本)可以与某些UI部件(例如,可点击的按钮)相关联。
在某些实施例中,由模型生成系统102执行的处理可以通过参考信息121来指导,参考信息121可以由包括模型生成器120和UI部件分类器136的模型生成系统102访问。参考信息121可以包括各种类型的信息。例如,在某些实施例中,参考信息121可以包括指导由模型生成系统102执行的处理的各种规则。在某些实施例中,参考信息121可以包括模型生成系统102可以用来确定以下各项的规则:为GUI和/或为每个GUI屏幕指定的一个或多个GUI屏幕、该屏幕上包括的一组用户界面部件,以及GUI屏幕的物理布局(例如,用于UI部件和文本内容项聚类的规则)。在图1所示的实施例中,参考信息121可以存储在存储器122中。在一些其它实施例中,参考信息121可以存储在距模型生成系统102的远程位置。在还有的其它实施例中,参考信息121的部分可以存储在模型生成系统102本地的存储器122中,而其它部分可以远离模型生成系统102存储。
在某些实施例中,可以使用各种机器学习技术来执行由模型生成系统102执行的处理或处理的一部分。例如,机器学习技术可以用于UI部件检测和分类、文本检测、文本内容(例如,手写文本内容)识别,或UI部件和文本内容项聚类。与这些机器学习技术相关的信息(例如,神经网络的权重、卷积神经网络的过滤器、用于机器学习的模型、用于训练模型的数据、模型的应用、用于提高模型准确性的反馈信息等)也可以包含在参考信息121中。在某些实施例中,模型生成系统102可以使用基于规则的处理和基于机器学习的技术的组合。因此,参考信息121可以包括与基于机器学习的模型相关的规则和信息。
在某些实施例中,参考信息121还可以包括关于各种类型的UI部件的信息。UI部件类型的信息可以包括诸如以下的信息:类型的名称(或标识)(例如,按钮、复选框、输入框等)、用于该类型的UI部件的参数(例如,属性、元素或字段名称)、功能或动作、连接性、以及用于该类型的UI部件的存储信息,和/或该类型的UI部件的数据源等。模型生成系统102可以使用此类信息来在GUI模型124中描述识别出的UI部件并将某些动作与UI部件相关联。
在某些实施例中,参考信息121可以由模型生成系统102的用户(例如,程序员)或管理员来配置。在一些其它实施例中,可以使用一种或多种机器学习技术来构建参考信息121。例如,参考信息121可以包括使用训练数据和受监督的机器学习技术构建的一个或多个基于机器学习的模型,其中该一个或多个基于机器学习的模型可以被用于生成GUI模型124。
在某些实施例中,GUI模型124可以被持久化到由模型生成器120生成的一个或多个文件。GUI模型124可以以各种格式描述。例如,在一些实现方案中,GUI模型124可以以与语言无关的数据交换格式来描述,诸如JavaScript对象表示法(JSON)格式。在某些实施例中,可以以诸如可扩展标记语言(XML)或jQuery的标记语言来编码模型信息。例如,模型生成系统102可以生成一起表示GUI模型124的一个或多个XML文件。所生成的(一个或多个)文件可以存储在存储器122中或模型生成系统102可访问的一些其它存储器位置中。在某些实施例中,可以通过模型生成系统102将GUI模型124传递给一个或多个下游消费者,例如代码生成器126、128和130,而无需首先将其持久化到文件中。
然后,一个或多个下游模型消费者103可以使用GUI模型124。例如,模型消费者103可以被配置为基于GUI模型124生成一个或多个GUI实现体110、112和114。GUI实现体110、112和114可以各自基于在GUI模型124中指定的信息。由于GUI模型124是基于设计的GUI屏幕图像104生成的,因此基于GUI模型124生成的GUI实现体可以具有如GUI屏幕图像104中所描述的外观和功能。例如,GUI模型124可以包括指定特定GUI窗口或屏幕的信息,该特定GUI窗口或屏幕包括特定的一组UI部件并且被映射到特定的一组功能或动作。基于GUI模型124生成的GUI实现体(例如,实现GUI的代码或指令)可以包括用于利用特定的一组UI部件实例化特定的GUI屏幕并映射到特定的一组功能或动作的代码和逻辑。
因此,GUI实现体可以实现如GUI模型124所描述的GUI屏幕以及相关联的动作或功能,而GUI模型124又是基于GUI屏幕图像104而生成的。例如,如果GUI模型124指定包括以特定物理布局布置的一组用户界面部件的特定屏幕,则该屏幕和特定物理布局可以由GUI实现体来实现。如果GUI模型124为特定用户界面部件指定了特定功能,则基于该模型生成的GUI实现体可以包括用于实现该特定功能并将该功能与特定用户界面部件相关联的逻辑。在某些实施例中,GUI实现体可以提供钩子(hook),该钩子使得特定的用户界面部件能够与实现要与该特定的用户界面部件相关联的特定功能的代码链接。在某些实施例中,GUI实现体可以包括提供钩子的代码,该钩子使得开发人员能够将实现附加功能的附加代码钩连或添加到GUI实现体。
在某些实施例中,下游模型消费者103可以包括一个或多个代码生成器126、128和130,其被配置为采用GUI模型124作为输入并且基于例如用于不同编程语言和/或用于不同平台的代码生成模板140来生成可能以不同编程语言和/或用于不同平台的GUI的代码实现体。代码生成器可以采用GUI模型124作为输入,并生成以特定于该代码生成器的语言实现GUI的代码。实现体可以是可由一个或多个处理器执行的GUI的可执行实现体。例如,代码生成器126可以采用模型124作为输入,并以第一语言为第一平台(例如,用于平台)生成GUI实现体110。代码生成器128可以使用GUI模型124以第二语言为第一平台生成GUI实现体112。代码生成器130可以使用GUI模型124为平台生成GUI实现体114。GUI实现体可以被编译(或解释,或对其执行的一些其它处理)以生成GUI的可执行版本。
在某些实施例中,GUI实现体110、112和114可以各自对应于可以用于实现GUI的代码生成模板。代码生成模板可以包括包含高级代码(其可以包括方法、函数、类、事件处理程序等)的一个或多个源代码文件,这些高级代码可以被编译或解释以生成用于由计算机系统的一个或多个处理器执行的GUI可执行程序。以这种方式,可以基于GUI模型124自动生成GUI的可执行实现体,其中该可执行实现体封装了如GUI设计信息中所描述的GUI的外观和GUI以及UI部件的功能。例如,代码生成器126可以被配置为接收包含与GUI模型124对应的标记代码的一个或多个文件,并通过将标记代码(例如,XML)转换成(高级)源代码(例如,Java、C++或其它编程语言)来输出包含一个或多个源代码文件的GUI实现体110。
在一些实现方案中,模型生成系统102可以提供一个或多个接口,该一个或多个接口使用户106能够直接地或者经由客户端设备108与模型生成系统102进行交互。这些用户界面可以包括例如各种GUI、命令行界面(CLI)和其它界面。在某些实施例中,模型生成系统102可以是集成开发环境(IDE)的一部分。
客户端设备108可以是不同类型的,包括但不限于个人计算机、台式计算机、移动或手持式设备(例如,膝上型电脑、智能电话、平板电脑等)或其它类型设备。在某些实施例中,客户端设备108可以直接或经由通信网络与模型生成系统102通信地耦合。通信网络可以是各种类型的,并且可以包括一个或多个通信网络。通信网络的示例可以包括但不限于互联网、广域网(WAN)、局域网(LAN)、以太网、公共或专用网络、有线网络、无线网络等及其组合。可以使用不同的通信协议来促进客户端设备108与模型生成系统102之间的通信,包括有线和无线协议,诸如IEEE 802.XX协议套件、TCP/IP、IPX、SAN、和其它协议。
与模型生成系统102的用户交互可以采取各种形式。用户可以使用由模型生成系统102提供的一个或多个界面经由这些交互将GUI屏幕图像104提供给模型生成系统102。在某些实施例中,模型生成系统102的输出(例如,GUI模型124)或关于处理的状态的信息可以由模型生成系统102传送到客户端设备108,并经由客户端设备108呈现给用户106。例如,可以将与GUI模型124相关的信息呈现给用户106。用户106然后可以审查GUI模型124的准确性,并且如果需要,可以对GUI模型124进行改变。以这种方式,用户106可以提供关于由模型生成系统102生成的GUI模型124的反馈。然后,模型生成系统102可以使用该反馈来更新参考信息121(例如,训练样本)。经更新的参考信息121可以用于重新训练一个或多个基于机器学习的模型和/或生成GUI模型124的未来世代。例如,如果用户106在审查GUI模型124时确定GUI模型中指示的UI部件之一被错误地分类,则用户可以经由客户端设备108向模型生成系统102提供反馈(例如,错误分类的UI部件的图像和该UI部件的实际类别或类型)。模型生成系统102可以基于用户反馈来更新GUI模型124,诸如将UI部件与正确的动作相关联、对UI部件进行重新分组或重新生成布局。以这种方式,来自用户的反馈回路使得模型生成系统102的准确性能够随着时间的推移而提高。然后,可以将带标注的图像保存为参考信息,并且可以将其用作训练样本,以对某些基于机器学习的模型(例如,UI部件分类器)进行重新训练。
如上所述,模型生成系统102被配置为基于GUI屏幕图像104以自动方式并且基本上没有任何手动用户干预地生成GUI模型124。此外,相同的GUI模型124可以用于为不同的设备、平台和/或语言生成GUI实现体。在许多情况下,下游模型消费者可以使用GUI模型124以自动方式生成GUI实现体。例如,可以基于GUI模型124来生成GUI实现体,而不必由开发人员手动编写用于该实现体的代码。以这种方式,可执行的GUI实现体可以从GUI屏幕图像104自动生成,并且基本上没有任何手动的用户干预或必须手动为应用编写代码或逻辑。这种自动化水平可以显著加快应用的开发周期并降低开发成本。在一些实施例中,GUI模型124也可以用于生成用于将对GUI实现体的测试自动化的测试。
图2描绘了根据某些实施例的GUI屏幕200的模拟图像的示例。GUI屏幕200的图像可以由GUI设计人员提供,以供开发人员用来为应用实现GUI。GUI屏幕200可以包括一个或多个UI部件和一个或多个文本内容项。UI部件可以位于GUI屏幕200上的任何位置。UI部件可以包括例如按钮、文本输入框、下拉列表、下拉菜单、复选框、图标、表格、(人或对象的)照片、行分隔符、容器等中的一个或多个。例如,如图2所示,GUI屏幕200可以包括按钮214、文本输入框206、单选按钮210、下拉列表212和下拉表(例如,日历)208。一些UI部件可以包括相关联的文本内容项。例如,按钮214可以包括文本内容项218,诸如按钮上的“下一步”、“取消”或“确认”。UI部件可以具有相关联的属性,诸如大小、颜色、位置或相关联的动作或功能。
在一些实施例中,UI部件可以根据布局或分层结构(诸如表格、列表、树结构、流图、组织图等)被布置在GUI屏幕200上。例如,在图2所示的示例中,文本输入框206可以垂直对齐并且可以形成表格。
一些UI部件可以是可点击的、可选的,或者可以接受其它用户输入,而一些其它UI部件可以是静态的并且可以不接受任何用户输入。例如,文本输入框206可以从键盘获取用户输入、单选按钮210和手动下拉菜单可以是可选的(例如,使用鼠标),并且按钮214可以被点击以显示新的GUI屏幕。GUI屏幕200的UI部件可以是静态部件或动态部件。静态部件是指其在GUI屏幕上显示的值对于不同实例不会更改的部件。动态部件是其在GUI屏幕上显示的值对于不同实例可能改变的部件。例如,在图2中,一些文本输入框可以是静态部件。如果按钮214中的每一个是不同类型的UI部件,则按钮214可以是静态部件。如果按钮214与相同类型的UI部件相关联,则它们也可以是动态部件,并且与对于每个按钮文本可以是UI部件图像的一部分的情况相比,可以通过动态添加对应的文本来使用相同的UI部件图像生成按钮214。
如图2所示,GUI屏幕200可以包括各种文本信息,诸如标题220、输入框描述204、默认输入216和区分相同类型的不同UI部件的文本信息,诸如与按钮214相关联的文本内容项218。某些文本信息(诸如标题220)可能会提供应用的功能的文本描述。一些文本信息,诸如输入框描述204,可以提供对一些UI部件的文本描述。一些文本信息,诸如文本内容项218,可以各自是UI部件的一部分,并且可以描述相关联的UI部件(诸如按钮214)的功能。一些文本信息,诸如默认输入216,可以为一些UI部件提供默认值,这些UI部件的值可以被输入、选择或以其它方式被改变。文本信息可以具有相关联的属性,诸如字体、大小、颜色、位置等。在一些实施例中,文本信息可以包括对用户的指令。文本信息可以是静态的或动态的。图2中的静态文本示例可以包括:在标题部分中:头部标题“创建账户”;在正文部分中:属性标题“名字”、“姓氏”、“电子邮件”、“用户名”等。图2中的动态文本的示例可以包括:在主体部分中:属性值“英语”、“Peter”等,其值可以从一个实例中的第一个人的信息改变为另一个实例中的第二个人的信息。
各种信息可以从GUI屏幕图像中提取,并且可以用于识别屏幕的UI部件和文本内容项。可以例如使用基于机器学习的模型来确定识别出的部件的某些属性。识别出的部件的属性然后可以用于生成GUI模型和/或用于实现GUI的代码,如下面详细描述的。
图3描绘了根据某些实施例的用于基于GUI的设计信息为GUI生成GUI模型的系统300的示例。在该示例中,系统300具有包括客户端子系统310和服务器子系统320的客户端-服务器体系架构。客户端子系统310可以包括用于上传图像或草图形式的GUI原型的供给部(provision)和用于生成GUI实现体的代码生成逻辑。在一些实施例中,代码生成逻辑可以在服务器子系统320上而不是在客户端子系统310上实现。服务器子系统320可以包括模型生成系统330和代表性状态转移(REST)服务340,REST服务340提供客户端子系统310和服务器子系统320之间的可互操作性和分离。在一些实施例中,系统300可以在相同的计算系统上(例如在服务器上)实现。
当接收到GUI设计文档(诸如用于一个或多个GUI屏幕的一个或多个图像(或草图))时,GUI屏幕的每个图像可以由客户端子系统310上的图像上传器302上传到服务器子系统320。GUI屏幕的图像可以通过REST服务340发送到服务器子系统320,REST服务340可以将GUI屏幕的图像传递给模型生成系统330以在服务器子系统320上开始模型生成处理。模型生成系统330可以包括模型生成器350,模型生成器350被配置为基于GUI屏幕的图像和由机器学习子系统360生成的(一个或多个)基于机器学习的模型来生成GUI模型。
机器学习子系统360可以基于GUI设计文档(例如,GUI屏幕的图像)生成用于生成GUI模型的基于机器学习的模型。基于机器学习的模型可以包括例如UI部件检测器和/或分类器以及文本检测器和/或字符分类器。在一些实施例中,基于机器学习的模型可以包括可以识别和分类图像文件中的对象的基于神经网络的分类器,诸如卷积神经网络(CNN)。
可以使用受监督的学习技术和带标注的训练样本368来训练基于机器学习的模型。带标注的训练样本368可以包括包含各种UI部件的图像,UI部件诸如是按钮、文本字段、文本输入框、下拉列表、下拉菜单、图标、表格、饼图、条形图等。标注可以包括唯一地识别每个UI部件的标签或标记,诸如每个UI部件在图像内的位置、UI部件的类型或类别或与UI部件相关联的动作。在一些实施例中,标注可以作为元数据存储在图像文件中。在一些实施例中,标注可以与图像文件分开存储。在一些实施例中,训练样本中的图像可以不包括任何文本内容。例如,可以识别用于生成训练样本的图像中的文本内容项,并用诸如黑框或白框之类的预定义的图案来替换这些文本内容项。
带标注的训练样本368可以被传递到特征提取引擎366。特征提取引擎366可以实现例如深度CNN,以从各个部件的图像中导出不同级别的特征。作为对照,常规的基于计算机视觉的技术可能涉及艰巨的特征工程任务,其中对于特定UI部件而言不同的特征可能是手动识别的,并被发送到分类器,诸如支持向量机(SVM)或浅神经网络。
特征提取引擎366可以在深度CNN的不同层上对输入图像执行诸如卷积、非线性(或激活)功能(例如,ReLU)和/或池化(或子采样)之类的操作。CNN中的卷积操作可以用于从输入图像(例如,训练图像或GUI屏幕图像)中提取特征。在卷积中,矩阵(称为过滤器、内核或特征检测器)可以以某个步子(称为步幅)划过输入图像(或经处理的像素阵列或特征图)。对于每个位置(或步子),可以计算输入图像中的重叠矩阵和过滤器矩阵之间的逐元素乘法,并将其相加以获得表示输出矩阵的单个元素的最终值,该输出矩阵可以被称为卷积特征或特征图。
在每个卷积操作之后,可以使用利用激活函数(例如,整流线性单元(ReLU))的附加非线性操作。ReLU的目的是在CNN中引入非线性。也可以使用其它非线性函数,诸如tanh或sigmoid函数,但已发现ReLU在大多数情况下表现更好。
空间池化(也称为子采样或下采样)可以减小每个特征图的维数,同时保留最重要的信息。具体地,池化可以使特征维度更小并且更可管理,并且减少网络中的参数和计算的数量。池化还可以使网络对于输入图像中的小变换、变形和平移是不变的,使得输入图像中的小变形不会改变池化的输出,因为使用了局部邻域中的最大值或平均值。因此,池化可以帮助实现输入图像的等变表示,使得可以检测图像中的对象,无论它们位于何处。可以以不同的方式执行空间池化,诸如最大池化、平均池化、和池化等。
为了从输入图像(例如,训练图像或GUI屏幕图像)中提取特征,可以首先使用卷积层以用一个或多个过滤器对输入图像进行卷积,以生成输入图像的一个或多个特征图,诸如检测图像中的边缘或渐变。激活函数可以将非线性引入到特征图中。可选地,池化层可以对特征图进行下采样以减小特征图的维度。可以再次对先前层生成的特征图执行卷积、非线性(或激活)功能以及可选的池化或子采样操作,以在不同级别提取特征图,其中来自先前层的特征图可以用作卷积的输入。以这种方式,可以提取多个级别的特征图,并将其用于检测和分类GUI屏幕图像或训练图像中的UI部件。
然后可以使用所提取的特征和带标注的训练样本中的标注来训练基于机器学习的模型。在一些实施例中,诸如SSD技术(参见,例如,Liu等人,“SSD:Single Shot MultiBoxDetector”,arXiv:1512.02325v5,2016年12月29日)或YOLO技术(参见,例如,Redmon等人,“YOLO9000:Better,Faster,Stronger”,arXiv:1612.08242v1,2016年12月25日)之类的对象检测技术可以用于使用所提取的特征来定位训练图像的各种不同位置处的对象。例如,深度CNN中的分类层(诸如完全连接的层)可以使用所提取的特征来检测和分类训练图像中存在的UI部件。可以将分类结果和与训练样本相关联的标注进行比较。如果分类结果与标注不匹配,则可以使用例如反向传播技术将反馈提供给分类层和/或特征提取层(例如,卷积层)以调整深度CNN的参数。可以针对每个训练样本重复上述训练处理。由于深度CNN可以基于带标注的训练样本学习可以用于区分各种类型的UI部件的一组特征,因此可以避免繁琐的特征提取任务。在训练处理之后,可以生成经训练的模型364,该经训练的模型可以能够准确地检测和分类训练样本中存在的UI部件。下面参考例如图5描述用于生成基于机器学习的模型的更详细的处理。
模型生成器350可以包括光学字符识别(OCR)模块352。OCR模块352可以检测和识别GUI屏幕的图像中的文本内容和/或将文本内容与GUI屏幕图像分离。在一些实施例中,OCR模块352可以使用基于机器学习的分类器来检测和识别文本内容。OCR模块352的输出可以包括文本内容项及其位置,以及不具有文本内容的图像。如以下详细描述的,在来自OCR模块352的输出图像中,GUI屏幕图像中存在文本内容项的区域可以包括一些预定义的图案,诸如黑框。OCR模块352的输出可以被传递到对象检测模块354。下面参考例如图7描述OCR模块352的更详细的操作。
对象检测模块354可以使用由机器学习子系统360生成的(一个或多个)基于机器学习的模型来检测和分类来自OCR模块352的输出图像中的UI部件。例如,基于机器学习的模型可以包括UI部件检测器和/或分类器。在一些实施例中,基于机器学习的模型可以包括可以识别和分类图像中的对象的基于神经网络的分类器,诸如卷积神经网络。对象检测模块354可以使用基于机器学习的模型来识别GUI屏幕图像中的UI部件,并且对每个UI部件进行分类以确定UI部件的类型以及相关联的动作或功能。对象检测模块354的输出可以包括文本内容项(及其位置信息),以及与GUI屏幕图像中识别出的UI部件相关的信息,诸如位置、类型(或类别)、相关联的动作或功能。
在一些实施例中,对象检测模块354的输出可以被发送到聚类模块356。聚类模块356可以基于例如UI部件和/或文本内容项的位置信息、UI部件的类型等将检测到的UI部件和文本内容项分组。例如,分组可以基于部件之间的距离和/或相似性。在一些实施例中,聚类模块356可以使用一组规则来执行分组。例如,文本内容项可以与文本输入UI部件而不是与按钮分组在一起。作为另一个示例,按钮和日期选择器部件(例如,日历)可以不被分组在一起,并且可以被认为是布局中的单独元素。在一些实施例中,可以将用于分组的一组规则存储在持久性存储器设备中的数据结构(例如,表或列表)中,诸如作为参考信息121的一部分存储在存储器122中。
聚类模块356可以以自下而上的方式递归地执行分组。例如,可以将各个部件(例如,UI部件和/或文本内容项)分组为子组,然后可以将这些子组分组为更高级别的子组,依此类推,直到单个组将覆盖图像中的所有部件。基于不同级别的分组,聚类模块356可以使用位置信息来确定部件在GUI屏幕图像中的层次以及用于GUI屏幕的最优布局。聚类模块356的输出可以包括聚类图或GUI屏幕的布局。
在一些实施例中,可以将文本内容项、UI部件、与文本内容项和UI部件相关联的信息(例如,位置、类型等)以及聚类图(或布局)传递给文本分析模块358。文本分析模块358可以分析文本内容项以识别GUI屏幕图像中的可点击的文本内容项。可点击的文本内容项可以指示一些动作或功能,并且通常可以包括至少一个动词(例如,取消、保存、清除等),并且可以不与任何UI部件相关联。例如,具有与其它文本内容项分开的文本“取消”的文本内容项可以被认为是可点击的文本。在一些实施例中,可以维护这样的可点击单词的字典并将其用于文本分析。
在一些实施例中,OCR模块352的输出可以包括各个单词以及它们的位置信息。在通过聚类模块356进行分组之后,单个单词可以成为行或段落的一部分,或者可以是GUI屏幕图像上的独立项。如果各个单词是行或段落的一部分,则聚类模块356可以将它们分组在一起。可点击的文本内容项可以从作为独立项的单词或最多具有一定数量的单词的一行中被识别出,但不能从作为段落的一部分的单词中识别。在一些实施例中,被识别为可点击的文本内容项的类型可以从“文本”改变为“可点击的文本”。
在文本分析以识别和改变与可点击的文本内容项相关联的类型之后,可以更新聚类图并将其馈送到元数据生成器362。元数据生成器362可以为可以包括一个或多个GUI屏幕的GUI生成GUI模型。GUI模型可以是被提交给服务器子系统320的GUI屏幕图像的最佳表示。在一些实施例中,元数据生成器362可以以与语言无关的数据交换格式(诸如JavaScript对象对象表示法(JSON)格式)生成GUI模型。然后可以通过REST服务340将(例如,以JSON元数据描述的)GUI模型发送到客户端子系统310,作为对来自客户端子系统310的请求的响应。
在接收到GUI模型306之后,客户端子系统310可以将GUI模型(例如,以JSON元数据)发送给页面生成器308。页面生成器308可以包括如上面关于图1描述的代码生成器(例如,代码生成器126、128或130)。页面生成器308可以采用GUI模型306作为输入,并生成以目标平台的目标语言实现GUI的代码,目标平台诸如使用或操作的移动设备,或使用或Linux操作的具有宽屏的系统。例如,可以为AngularJS或Bootstrap生成代码。GUI实现体可以是可由一个或多个处理器执行的GUI的可执行实现体。在一些实施例中,GUI实现体可以被编译(或解释,或对其执行的一些其它处理)以生成GUI的可执行版本。然后可以使为GUI生成的页面产品(artifact)312对于最终用户可用。
在一些情况下,模型生成系统330可能无法准确地检测或分类GUI屏幕图像中的UI部件。反馈处理可以用于向模型生成系统330提供反馈以校正所生成的GUI模型。例如,开发人员可以审查GUI模型306并识别未检测到的或错误分类的UI部件,并通过可选的反馈模块304将识别出的未检测到的或错误分类的UI部件的图像和校正标签提供给模型生成系统330。例如,如果存在模型生成系统330(更具体而言,对象检测模块354)已经错误分类或未检测到的UI部件,则错误分类或未检测到的UI部件的图像或包括错误分类或未检测到的UI部件的GUI屏幕图像可以通过REST服务340与用于错误分类或未检测到的UI部件的校正标签一起被提供给模型生成系统330。如上所述,反馈信息可以由特征提取引擎366用来从错误分类或未检测到的UI部件的图像或GUI屏幕图像中提取特征(例如,特征图或特征向量)。在一些实施例中,可以将从用户反馈中提取的特征发送到特征聚类模块372。
特征聚类模块372可以将训练样本中的每个UI部件的特征映射到特征空间中的数据点,该特征空间可以是多维空间。可以在特征空间中形成一组聚类,其中每个聚类可以对应于一种类型的UI部件。聚类间差异(或距离)可能很重要,使得可以使用这些特征对UI部件进行恰当分类。从错误分类或未检测到的UI部件的反馈图像中提取的特征也可以被映射到特征空间中的数据点。可以计算表示从错误分类或未检测到的UI部件的图像中提取的特征的数据点与一组聚类的聚类中心之间的距离,来确定错误分类或未检测到的UI部件与已经包括在训练样本中的UI部件之间的相似性或相异性。如果距离之一低于阈值,则错误分类或未检测到的UI部件的图像可以被添加到训练样本中,并且可以触发对基于机器学习的模型的重新训练。在一些实施例中,可以基于实验结果来确定该阈值。
阈值可以帮助确保带标注的训练样本368的一定级别的安全性。例如,在一些情况下,开发人员可能意外地将“饼图”标记为“条形图”。如果未计算距离来过滤由开发人员在如上所述的反馈中提供的带标注的样本,则基于机器学习的模型可能会用错误标记的样本进行重新训练,这可能会使经重新训练的模型比先前的模型更差,或者可能导致训练处理无法收敛。因此,特征聚类模块372和距离比较框370可以帮助确保仅当用户提供的样本中的UI部件类似于训练样本中已经存在的一些UI部件时,才使用用户提供的样本来重新训练模型。在一些实施例中,如果计算出的距离超过阈值,则可以忽略用户提供的样本。在一些实施例中,如果计算出的距离超过阈值,则可以请求人工干预。
然后,使用用户提供的样本重新训练的模型可以用于检测和分类当前GUI屏幕图像以及随后接收到的GUI屏幕图像中的UI部件。可以基于使用重新训练的模型的检测和分类结果来更新GUI模型,并将该GUI模型发送回客户端子系统310以生成GUI实现体。
图1或图3中描述的系统可以用于训练基于机器学习的模型,并使用该模型自动生成GUI模型和/或GUI实现体。
图4是描绘根据某些实施例的为使用基于机器学习的分类器生成GUI模型和/或GUI的一个或多个实现体而执行的高级处理的简化流程图400。图4中描绘的处理可以用由相应系统的一个或多个处理单元(例如,处理器、核心)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。软件可以被存储在非暂态存储介质上(例如,存储器设备上)。图4中呈现并在下面描述的方法旨在是说明性的而非限制性的。虽然图4描绘了以特定顺序或次序发生的各种处理步骤,但这并不意味着是限制性的。在某些替代实施例中,这些步骤可以以一些不同的次序执行,或者一些步骤也可以并行执行。在某些实施例中,图4中描绘的处理可以由包括如上所述的模型生成系统102或300的服务器、客户端计算机系统、处理器(例如,图形处理单元(GPU)或张量处理单元(TPU))、ASIC或FPGA来执行。
如图4所示,该处理可以在402处开始,在402中模型生成系统,更具体而言,机器学习子系统(例如,模型生成系统330中的机器学习子系统360)可以构建基于机器学习的模型,诸如用于检测和分类GUI屏幕图像中的UI部件的分类器。为了构建基于机器学习的分类器,可以首先选择分类器的类型,诸如支持向量机(SVM)分类器或卷积神经网络(CNN)分类器。可以确定分类器的一些参数,诸如SVM的内核的类型或层数以及用于CNN分类器的过滤器的数量和大小。然后可以基于所选择的分类器类型和/或分类器的参数来处理训练样本(诸如已知类型的UI部件的训练图像或具有已知类型的UI部件的GUI屏幕的训练图像)。在一些实现方案中,为了提高训练和推理处理的准确性和速度,可以在训练和/或推理处理开始之前从训练图像中提取文本信息并将其去除。然后,可以使用具有(由标注指示的)已知类型的UI部件的经处理的训练图像来训练分类器。
例如,可以将分类器的参数(例如,分类器中用于卷积层的各种权重或过滤器)初始化(例如,初始化为一些随机值或默认值),并且对于每个训练图像,分类器可以从训练图像中提取特征,并基于所提取的特征对训练图像进行分类。可以基于训练图像中的(一个或多个)UI部件的(一个或多个)已知类型和(一个或多个)分类结果来确定损失函数值(例如,误差)。可以调整分类器的参数以减小损失函数值。在一些实现方案中,使用分类器对训练图像进行分类可以包括从训练图像中提取特征,诸如通过用过滤器对训练图像进行卷积来生成特征图,或者从图像的某个直方图(例如,颜色直方图或梯度的直方图)中提取特征,并且基于训练图像的所提取的特征确定训练图像中(一个或多个)UI部件的(一个或多个)类型。下面参考图5描述构建基于机器学习的模型的更多细节。
在404处,模型生成系统可以使用基于机器学习的模型为GUI生成GUI模型。例如,在一些实现方案中,可以对每个输入的GUI屏幕图像进行处理以识别和提取包括文本内容项和各个UI部件的GUI部件、确定文本内容项和UI部件的参数(例如,尺寸、位置、颜色等),并使用(一个或多个)基于机器学习的模型对UI部件进行分类以确定UI部件的类型。然后可以将经分类的UI部件和文本内容项分组以形成GUI部件的层次结构。可以基于该层次结构来确定GUI屏幕的布局(或聚类图)。在一些实施例中,可以识别可点击的文本内容项。然后可以生成GUI模型,以描述GUI屏幕、GUI屏幕中的UI部件、GUI屏幕中的文本内容项等的布局。在一些实现方案中,GUI模型可以以与语言无关的数据交换格式(诸如JavaScript对象表示法(JSON)格式)来描述。然后可以将在404中生成的GUI模型用于各种下游目的。
例如,在406处,可以基于GUI模型自动生成GUI的一个或多个GUI屏幕的一个或多个实现体。在一些实施例中,基于可以在其上使用GUI的平台和用于实现体的目标语言,可以从可用的代码生成模板(例如,关于图1描述的代码生成模板140)中选择代码生成模板。代码生成器(例如,代码生成器126、128或130)可以基于所选择的代码生成模板和如上面关于图1描述的GUI模型来生成用于实现GUI的代码。在某些实施例中,实现体可以是可由一个或多个处理器执行的GUI的可执行实现体。在其它实施例中,实现体可以包括用于实现GUI的代码和逻辑。然后实现体可以被编译或解释以生成可执行的GUI。
在一些实施例中,在408处,模型生成系统可以接收关于在404处生成的GUI模型的用户反馈。例如,如果在GUI模型中存在一个错误分类或未检测到的UI部件,则该错误分类或未检测到的UI部件的图像或包含错误分类或未检测到的UI部件的GUI屏幕图像(以及错误分类或未检测到的UI部件在图像中的位置)可以与由用户提供的错误分类或未检测到的UI部件的标注一起被提供给模型生成系统。错误分类或未检测到的UI部件的图像和标注可以用于重新训练基于机器学习的模型和/或重新生成GUI模型。在一些实施例中,在被用于重新训练基于机器学习的模型之前,可以如上所述对错误分类或未检测到的UI部件的图像和标注进行过滤。
图5是描绘根据某些实施例的为训练用于对用户界面部件进行检测和分类的基于机器学习的分类器而执行的高级处理的简化流程图500。在某些实施例中,图5中描绘的处理可以作为图4中的402中执行的处理的一部分来执行。图5中描绘的处理可以用由相应系统的一个或多个处理单元(例如,处理器、核心)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。软件可以被存储在非暂态存储介质上(例如,存储器设备上)。图5中呈现并在下面描述的方法旨在是说明性的而非限制性的。虽然图5描绘了以特定顺序或次序发生的各种处理步骤,但这并不意味着是限制性的。在某些替代实施例中,这些步骤可以以一些不同的次序执行,或者一些步骤也可以并行执行。在某些实施例中,图5中描绘的处理可以由模型生成系统102、机器学习子系统360、处理器(例如,GPU或TPU)、ASIC或FPGA来执行。
在502处,可以接收一个或多个带标注的训练图像并将其存储在例如存储器122中。训练图像可以包括具有已知类型的各种UI部件,诸如按钮、文本输入框、下拉列表、下拉菜单、复选框、单选按钮、切换按钮、图标、表格、(人或对象)的照片、行分隔线、容器等。训练图像可以被标注有UI部件的类型和与UI部件相关联的其它信息(诸如UI部件在训练图像中的位置)。在一些实施例中,每个训练图像可以仅包括一个UI部件的图像。在一些实施例中,每个训练图像可以包括多个UI部件。在一些实施例中,每个训练图像可以对应于可以包括或可以不包括文本内容的GUI屏幕的图像。在一些实施例中,训练GUI屏幕图像可以来自可以用于设计GUI的各种前端技术的各种来源。
每个训练图像可以被处理以提取和分类训练图像中的一个或多个UI部件。在训练图像包括除UI部件以外的特征以提高训练处理的准确性和速度的一些实施例中,可能干扰训练的UI部件检测和分类的视觉特征,诸如文本内容,可以被暂时擦除。例如,对于与GUI屏幕对应的每个训练图像,可以在检测一个或多个UI部件并对其进行分类之前,从训练图像中提取并去除文本信息,如下面在504和506处的操作中所描述的。对于每个训练图像,可以提取图像中的特征,可以使用基于所提取的特征而训练的基于机器学习的分类器对训练图像中的UI部件进行检测和分类。可以基于分类结果和训练图像的标注之间的比较来调整分类器。
可选地,在504处,可以从训练图像中提取文本信息(如果存在的话)。文本信息提取可以包括检测训练图像中的文本内容项,以及识别检测到的文本内容项。例如,在一些实施例中,完全卷积网络(FCN)模型(参见,例如,Zhou等人,“EAST:An Efficient andAccurate Scene Text Detector”,arXiv:1704.03155v2,2017年7月10日)可以用于检测训练图像中的文本内容项并确定文本内容项的位置(例如,边界框的坐标)和/或维度。在一些实施例中,设计工具(例如,GIMP或Photoshop)的扩展可以用于从训练图像的各层中提取文本区域。然后可以提取所确定的位置处的子图像,并且可以对所提取的每个子图像执行光学字符识别(OCR)处理以提取与每个文本内容项相关联的文本信息。在一些实施例中,OCR处理也可以使用基于机器学习的模型来识别文本内容项中的字符。例如,在一些情况下,文本内容项可能包含使用常规OCR技术可能无法正确识别的手写字符。基于机器学习的分类器可以用于将每个字符分类为一组已知字符中的一个。
在506处,训练图像中的文本信息(如果存在的话)可以用占位符(诸如预定义的图案)替代。例如,子图像中的像素值可以用背景像素值或预定义的像素值替代,使得没有文本内容项会干扰随后的UI部件检测和分类。在一些实现方案中,占位符还可以用作用于训练目的的特征。例如,占位符可以指示原始UI部件可以包括某些文本信息,并且因此很可能是某些类型的UI部件之一,诸如可点击的按钮或文本输入框。此外,占位符可以保留文本内容项在UI部件中的对齐。
在508处,可以从训练图像中提取某些特征。例如,如以上关于特征提取引擎366所描述的,深度CNN可以用于从训练图像中提取不同级别的各种特征(例如,特征向量或特征图)。可以使用不同的过滤器提取不同的特征。例如,可以使用过滤器将训练图像卷积为包括训练图像中的对象的边缘或轮廓的特征图。可以在训练处理期间自动确定要提取的特征的类型,使得可以基于所提取的特征来准确地检测和分类不同类型的UI部件。
在510处,基于机器学习的分类器,诸如SVM分类器或CNN分类器,可以基于在508处提取的特征来检测和分类训练图像中的UI部件。在各种实施例中,可以使用不同的基于机器学习的模型分开地执行UI部件检测和UI部件分类,或者可以由同一分类器联合执行UI部件检测和UI部件分类。在一些实施例中,可以首先使用可以检测每个UI部件的边界的各种轮廓检测技术来从训练图像中识别和提取训练图像中的UI部件,然后可以对子图像中的提取的UI部件进行分类。例如,神经网络可以实现对象检测技术(例如,上述SSD或YOLO技术),以使用所提取的特征将一个或多个UI部件定位在训练图像的一个或多个不同位置处。基于每个UI部件的位置或边界,可以提取每个UI部件的边界内的子图像。从训练图像的包括UI部件的所确定的位置提取的子图像然后可以被分类器用于UI部件分类。在一些实施例中,相同的深度神经网络可以执行联合的UI部件检测和分类,其中所提取的特征可以在流水线中或并行地既用于将一个或多个UI部件定位在训练图像的一个或多个不同位置处,又用于对一个或多个UI部件进行分类。在一些实施例中,为了训练基于机器学习的模型(例如,神经网络)以检测GUI屏幕图像中的多个UI部件,至少一些训练图像还可以包括在不同位置处的多个UI部件。
在UI部件分类期间,可以结合使用从训练图像中提取的某些特征来将一种类型的UI部件与其它类型的UI部件区分开。如上所述,因为诸如文本信息之类的干扰特征可以用一些潜在的区别特征(例如,预定义的图案)替代,因此训练处理可以更快并且可以产生更准确的分类器。可能有几种不同的基于机器学习的分类器可以用于对UI部件进行分类。下面描述可以用于对UI部件进行分类的分类器的一些示例。
在一些实现方案中,支持向量机(SVM)分类器可以用于分类UI部件。SVM分类器基于定义决策边界的决策平面。SVM分类器可以是线性分类器(即,用线将一组对象分到其各自的类别或组中的分类器),或者是非线性分类器,其中可以使用基于非线性内核函数的更复杂结构(超平面)来分离不同类别的对象。在一些实施例中,可以将图像的直方图特征(例如,颜色直方图、梯度直方图)而不是图像的像素用于使用SVM分类器的分类。
如上所述,也可以使用各种基于神经网络的分类器来对UI部件进行分类。例如,基于神经网络的分类器可以包括用于特征提取的一些层和用于分类的一些层(例如,完全连接的层)。用于特征提取的层可以类似于以上关于特征提取引擎366描述的特征提取层。在完全连接的层中,层中的每个节点都连接到(一个或多个)相邻层上的每个节点。完全连接的层可以使用输入图像的所提取的特征作为输入,以将输入图像分类为输出层处的各种类别,其中输出层上的每个节点可以对应于UI部件的可能类别(或类型)。例如,完全连接的层可以在输出层上使用Softmax激活函数。Softmax函数可以采用任意实值得分的向量并将其转换成值(概率)在零到一之间且总和为一的向量。然后可以基于与输出层处的每个可能类别相关联的概率值来对输入图像进行分类。
在512处,可以基于分类结果和训练图像的标注之间的比较来调整分类器(例如,基于CNN的分类器)。一般而言,可以首先用一些随机值、默认值或在类似分类器中使用的值来初始化分类器的参数(例如,过滤器中的权重和完全连接的层的权重)。由于分类器的参数(诸如权重)可能具有随机值并且没有针对训练示例进行优化,因此输出概率可能是随机的。在一些实施例中,可以基于分类结果和训练图像的标注来确定每个可能类别的分类误差,可以通过对所有可能类别的概率误差求和来计算输出层处的总误差。然后可以使用诸如反向传播技术之类的技术来计算相对于要在网络中训练的所有参数和权重的误差梯度,并使用梯度下降法来更新要在网络中训练的所有参数和权重,以便最小化输出误差。可以根据权重对总误差的贡献来调整权重。当相同的训练图像再次输入时,输出概率可能更接近目标概率,这表明网络已学会对该特定图像进行分类。可以对训练样本中的所有训练图像重复上述训练处理。如上所述,卷积神经网络的一些参数,诸如过滤器的数量、过滤器大小、神经网络的体系架构等,可能已经被预先选择并且在训练处理期间保持不变。
在训练处理结束时,分类器的所有参数可能已经被优化以从训练样本正确分类训练图像。当将未见过的图像(例如,测试图像或新图像)输入到分类器中时,分类器可以经历前向传播步骤,并使用经训练的权重和参数输出每个类别的概率,与训练处理相比,这可以被称为推理处理。如果训练样本足够,则经训练的分类器可以将未见过的样本分类为正确的类别。
如上所述,在一些实施例中,可以基于用户反馈来重新训练分类器。例如,用户可以审查由模型生成系统使用基于机器学习的分类器生成的GUI模型。如果存在已经被分类器错误分类或未检测到的UI部件,则错误分类或未检测到的UI部件的图像或包括错误分类或未检测到的UI部件的GUI屏幕图像可以与由用户提供的针对错误分类或未检测到的UI部件的校正标注一起被反馈回模型生成系统。
在514处,机器学习子系统,诸如机器学习子系统360,可以基于用户反馈来确定是否需要对分类器进行重新训练。例如,可以如上面在508处所描述的那样提取反馈中的图像的特征,并将其映射到多维特征空间中的数据点。特征空间可以包括与训练样本中已经存在的不同类型的UI部件对应的一组聚类。可以计算表示从错误分类或未检测到的UI部件的图像中提取的特征的数据点与该组聚类的聚类中心之间的距离,以确定错误分类或未检测到的UI部件与包含在训练样本中的UI部件之间的相似性或相异性。如果距离之一低于阈值,则错误分类或未检测到的UI部件的图像以及由用户提供的标注可以被认为是可靠的,并且可以被添加到训练样本中并触发对基于机器学习的模型的重新训练。如果计算出的距离超过阈值,则可以忽略用户提供的图像和标注,或者可以请求人工干预。
在514处,如果确定用户反馈中提供的图像和标注是可靠的,则可以基于用户反馈来重新训练分类器。用于基于用户反馈来重新训练分类器的操作可以类似于上面关于508、510和512描述的操作。
在训练基于机器学习的模型之后,模型生成系统可以使用基于机器学习的模型来基于由用户提供的GUI屏幕图像而生成GUI模型。用于实现GUI的源代码也可以在最少的人工干预下被自动生成。
图6是描绘根据某些实施例的为基于GUI的设计信息生成图形用户界面的GUI模型和/或源代码而执行的高级处理的简化流程图600。图6中描绘的处理可以用由一个或多个处理单元(例如,处理器、核心)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。软件可以被存储在存储器中(例如,在诸如存储器设备之类的非暂态计算机可读存储介质上)。图6中描绘的特定系列的处理步骤并非旨在进行限制。应该认识到的是,可以以与图6中所描绘的次序不同的次序来执行处理步骤,并且不需要执行图6中所描绘的所有步骤。在一些实施例中,图6中描绘的处理中的至少一些可以由图1中描绘的模型生成系统102或图3的模型生成系统330执行。
为了简单起见,图6中描绘的流程图600和下面提供的相关联描述描述了针对GUI的单个GUI屏幕图像的处理。但是,这并不旨在进行限制。在替代实施例中,多个GUI屏幕图像可以用于描述GUI的多个GUI屏幕。在一些这样的场景中,可以针对GUI的每个GUI屏幕重复图6中描绘的处理(或一些处理)。
在602处,可以接收包括一个或多个GUI屏幕图像的输入图像。每个GUI屏幕图像可以包括一个或多个UI部件以及包括文本信息的一个或多个文本区域。可以首先从输入图像中检测和提取每个GUI屏幕图像。如上所述,GUI屏幕图像可以由用户界面设计人员基于顾客或客户调查、市场调查以及驱动要包含在待开发的GUI中的GUI的外观和功能的其它信息源来生成。GUI屏幕图像可以使用计算机辅助设计工具生成并以数字格式保存,或者可以被手动生成为纸上的草图并且然后被扫描到数字图像中。在一些实施例中,GUI屏幕图像可以是具有一些修改的GUI的先前版本的快照。在某些实施例中,由客户端设备108(或客户端子系统310)执行的程序可以使用户能够与模型生成系统102(或模型生成系统330)接口并交互。例如,该程序可以是集成开发环境(IDE)的一部分,该集成开发环境为用户(例如,程序员)提供构建软件应用的设施和工具。在这样的环境中,IDE可以提供使用户能够导入(例如,拖放)由UI开发人员设计的GUI屏幕图像的工具。
如上所述,GUI的GUI屏幕图像可以经历各种分析,以便让模型生成系统确定GUI屏幕的功能和布局、GUI屏幕的部件、UI部件的类型和功能、UI部件之间的映射等。
在604处,可以从GUI屏幕图像中检测并提取包含文本内容的文本区域。每个文本区域中的文本内容可以包含一个或多个文本内容项。在一些实施例中,可以使用完全卷积的网络模型来检测GUI屏幕图像中的文本区域并确定文本区域的位置(例如,边界框的坐标)和/或维度。在一些实施例中,设计工具(例如,GIMP或Photoshop)的扩展可以用于从训练图像的各层提取文本区域。所确定的位置处的子图像然后可以被提取并用于文本内容项提取。
在606处,可以从子图像中提取文本区域中的文本内容项和对应的位置。例如,在一些实施例中,可以对每个提取的子图像执行光学字符识别(OCR)处理,以提取与每个文本内容项相关联的文本信息。在一些实施例中,OCR处理也可以使用基于机器学习的模型来识别文本内容项中的字符。例如,在一些情况下,文本内容项可能包含使用常规OCR技术可能无法正确识别的手写字符。基于机器学习的分类器可以用于将每个字符分类为一组已知字符中的一个。下文关于图7描述了文本内容项检测和识别的更多细节。
在608处,可以将GUI屏幕图像中的文本区域用占位符替换。例如,子图像中的像素值可以用背景像素值或预定像素值替换,使得没有文本区域可以干扰随后的UI部件提取和分类。如上所述,在一些实现方案中,占位符还可以用作用于分类目的的特征。例如,占位符可以指示原始UI部件可以包括某些文本信息,并且因此很可能是某些类型的UI部件之一,诸如可点击的按钮或文本输入框。因此,占位符可以帮助提高分类器在检测UI部件和确定UI部件类型时的准确性。此外,占位符可以保留文本内容项在UI部件内的对齐。在一些实现方案中,可以用占位符仅替代可能与UI部件重叠或与UI部件相邻的文本。
在610处,可以以类似于上述关于510的处理的方式检测UI部件并且可以确定GUI屏幕图像中的对应位置。UI部件可以包括例如按钮、复选框、列表、文本输入框、图标、容器、单选按钮、切换按钮等。可以使用各种轮廓检测技术来检测每个UI部件的边界。例如,神经网络可以如上所述从GUI屏幕图像中提取特征,并且可以实现对象检测技术(例如,上述SSD或YOLO技术)以使用所提取的特征定位GUI屏幕图像的一个或多个不同位置处的一个或多个UI部件。基于每个UI部件的位置或边界,可以从GUI屏幕图像中提取每个UI部件的边界内的子图像。
在612处,可以使用基于机器学习的分类器和子图像对在610中检测到的UI部件进行分类。如上所述,基于机器学习的分类器可以包括例如可以使用包括已知类型的UI部件的训练图像来训练的SVM或CNN分类器。分类器可以确定UI部件可能属于的UI部件的类型。在一些实施例中,每个类型的UI部件都可以与数据模型相关联,该数据模型可以针对该UI部件的类型来描述例如图像或图像的来源、功能、对应的动作、对应的代码、到其它应用或GUI屏幕的链接等。如上所述,在一些实施例中,可以由相同的基于深度CNN的分类器来执行610和612处的操作。
在614处,可以对在610处检测到并在612处分类的UI部件以及在604处检测到并在606处提取的文本内容项进行分组以生成GUI屏幕的布局。如上所述,聚类模块(例如,聚类模块356)可以基于某些预定义规则以自下而上的方式递归地执行分组。文本内容项和UI部件的属性(诸如位置、大小、类型、功能等)可以被用于分组。例如,可以将各个部件(例如,UI部件和/或文本内容项)分组为子组(例如,表示表格、列表、组织图、段落等),然后可以将子组分组为更高级别的子组,依此类推,直到单个组将覆盖图像中的所有部件。例如,在606处提取的文本内容项可以包括各个单词连同它们的位置信息。如果各个单词是行或段落的一部分,则聚类模块可以将它们分组在一起。基于不同级别的分组,聚类模块可以确定图像中的部件的层次结构以及使用层次结构和位置信息来确定GUI屏幕的最佳布局。
在616处,可以识别不与任何UI部件相关联的可点击的文本内容项。可点击的文本内容项可以指示一些动作或功能,并且通常可以包含至少一个动词(例如,取消、保存、清除等),但是可以不与任何UI部件相关联。例如,具有与其它文本内容项分开的文本“取消”的文本内容项可以被认为是可点击的文本,并且如果文本内容项被点击,则可以采取动作。因此,GUI模型可能需要将该文本内容项描述为可点击的,并且可以提供与该可点击的文本内容项相关联的链接或代码。在一些实施例中,可点击的文本内容项可以从作为独立项的单词或最多具有一定数量的单词的一行中被识别,而不能从作为段落的一部分的单词中被识别。在一些实施例中,这样的可点击的文本内容项的类型可以从“文本”改变为“可点击的文本”。
在618处,可以基于文本内容项和对应的位置、经分类的UI部件和对应的位置以及GUI屏幕的布局,为GUI生成GUI模型。在某些实施例中,GUI模型可以存储与在604、606、610、612、614和616处执行的处理相关的信息。例如,GUI模型可以存储以下的指示:在604和606中确定的GUI屏幕中的文本内容项、在610中确定的UI部件的位置、在612中确定的UI部件的类型(以及与UI部件相关联的数据模型)、在614中确定GUI屏幕的布局等。下游用户可以使用存储在GUI模型中的信息来生成GUI的实现体。在一些实现方案中,GUI模型可以被生成为用于GUI的元数据。在一些实现方案中,GUI模型可以以与语言无关的数据交换格式来描述,诸如JavaScript对象表示法(JSON)格式。
在620处,可以基于GUI模型自动生成用于实现GUI的源代码。在一些实施例中,可以基于某些代码生成模板来生成用于实现GUI的源代码。例如,各种代码生成器应用(例如,代码生成器126、128和130)可以采用GUI模型作为输入,并基于例如用于不同编程语言和/或用于不同平台的代码生成模板140来生成可能以不同编程语言和/或针对不同平台实现GUI的代码。
代码生成器可以生成以特定于该代码生成器的语言实现GUI的代码。实现体可以是可由一个或多个处理器执行的GUI的可执行实现体。例如,代码生成器可以将GUI模型作为输入,并用第一语言生成用于第一平台(例如,用于平台)的实现体。另一个代码生成器系统可以使用相同的GUI模型用第二语言生成用于第一平台的GUI的实现体,并且第三代码生成器可以使用相同的GUI模型生成用于平台的GUI的另一个实现体。代码生成模板可以由包含高级代码(其可能包含方法、函数、类、事件处理程序等)的一个或多个源代码文件组成,这些高级代码可以被编译或解释以生成可以由计算机系统的一个或多个处理器执行的GUI可执行文件。
以这种方式,可以基于GUI模型来自动生成GUI的可执行实现体,其中该可执行实现体封装了如GUI设计信息中所描述的GUI的外观、GUI的功能,以及与对应于UI部件的数据模型的映射或关联。
在一些实施例中,开发人员可以用附加代码进一步扩展代码模板实现体,以完成或增强代码基础库(例如,向其添加附加功能)。例如,代码生成器可以被配置为接收包括与GUI模型对应的标记代码(例如,XML)的一个或多个文件,并且通过将标记代码翻译成(高级)源代码(例如,Java、C++或其它语言)来输出包括一个或多个源代码文件的GUI实现体。然后可以对代码实现体进行编译(或解释,或对其执行的一些其它处理),以生成GUI的可执行版本。在一些实施例中,GUI模型(例如,以JSON格式)可以用于生成不同编程语言的代码,诸如标记语言(例如,HTML或XML)或样式表语言(例如,级联样式表(CSS)))。
如上所述,大多数OCR技术的缺点是,当深色背景上存在浅色文本(诸如蓝色背景中存在白色文本)时,它们可能无法检测文本内容。根据某些实施例,可以使用完全卷积的网络模型(例如,如上所述的EAST技术)来检测GUI屏幕图像中的文本内容项并确定文本内容项的位置(例如,边界框的坐标)和/或维度。然后可以提取所确定的位置处的子图像,并且可以对每个所提取的子图像执行改进的OCR处理,以提取与每个文本内容项相关联的文本信息。
图7是描绘根据某些实施例的为从GUI屏幕的图像中提取文本内容项而执行的高级处理的简化流程图700。流程图700中描述的处理可以由例如OCR模块352执行,并且可以用于从GUI屏幕图像或训练图像中提取文本信息,如上文关于606和504所描述的。图7中描绘的处理可以用由一个或多个处理单元(例如,处理器、核心)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。软件可以被存储在存储器中(例如,在诸如存储器设备之类的非暂态计算机可读存储介质上)。图7中描绘的特定系列的处理步骤并非旨在进行限制。注意的是,可以以与图7中描绘的次序不同的次序执行处理步骤,并且不需要执行图7中描绘的所有步骤。
在710处,可以将输入图像(例如,GUI屏幕图像)提交给文本提取模块(例如,OCR模块352)。在720处,可以使用例如上述的EAST技术来检测输入图像中的文本区域。EAST技术可以提供对界定输入图像中存在文本内容项的区域的坐标的准确估计。在730处,可以提取与文本内容项对应的每个区域的子图像。在一些实施例中,子图像可以包括添加到与文本内容项对应的区域的边距。在780处执行OCR处理以识别子图像中的文本内容项之前,可以在705处对每个子图像进行预处理。
在一些实施例中,在705处的预处理可以包括在740处使用自适应阈值化将RGB格式的子图像转换成二进制子图像。例如,如果像素的强度值高于阈值,则可以将像素的值设置为表示白色像素的值(例如,“1”)。否则,可以将像素的值设置为表示黑色像素的值(例如,“0”)。在750处可以为二进制子图像生成直方图。在760处,文本提取模块可以通过将每个像素的强度值改变为互补值来确定是否需要反转子图像。一般而言,在每个子图像内,与文本对应的像素的数量会小于与背景对应的像素的数量。因此,如果直方图指示二进制子图像中的黑色像素的数量大于白色像素的数量,则文本可能具有比背景更高的强度值(即,较浅),因此RGB子图像可能需要反转。否则,文本可能具有比背景低的强度值(较暗),因此RGB子图像可能不需要反转。在一些实施例中,可以为RGB子图像生成直方图,并且该直方图用于确定文本是否比背景浅。在770处,RGB子图像可以被反转。例如,如果最大强度值是255并且每个像素的强度值是xi,则经反转的图像中每个像素的值可以变为255-xi。
在780处,可以处理RGB子图像或经反转的RGB子图像以识别子图像中的文本内容项。由于RGB子图像或经反转的RGB子图像中的文本可能比背景暗,因此可以更准确地识别文本内容项。如上所述,在一些实施例中,基于机器学习的技术可以用于识别可能包括例如手写字符的文本内容项。在790处,可以将每个文本内容项中识别出的文本以及每个文本内容项的位置(例如,边界框坐标)保存在存储设备中,或者提供给模型生成器(例如,模型生成器120或350)中的下一个处理模块。如上所述,在一些实施例中,子图像可以由占位符替代以去除文本内容项。因此,所得图像可以不包括任何文本内容,并且可以被提供给下一个处理模块以进行UI部件检测和分类。
图8描绘了根据某些实施例的可以通过将UI部件和/或文本内容项聚类而为图形用户界面屏幕生成的UI部件层次结构800的示例。UI部件层次结构800可以基于对UI部件和/或文本内容项的聚类来生成,并且可以用于确定GUI屏幕的最佳布局。在一些实施例中,UI部件层次结构800可以描述如何如上所述在GUI屏幕中层次地组织UI部件。在图8所示的示例中,GUI屏幕810可以包括K个聚类820。每个聚类820可以包括一个或多个UI部件830。例如,聚类1可以包括M个UI部件830,聚类2可以包括N个UI部件830,...,聚类K可以包括L个UI部件830。每个UI部件830可以具有可以如上所述地确定的相关联属性。例如,每个UI部件830可以具有针对UI部件的相关联的标识、位置和大小信息、如由基于机器学习的分类器分类的UI部件的类型、相关联的文本(如果有的话)以及如上所述的其它信息,诸如图像或图像的来源、功能、对应的动作、对应的代码、到其它应用或GUI屏幕的链接等。模型生成器(例如,模型生成器120或350)可以使用每个UI部件的这些相关联的属性来生成GUI模型。
在以下描述中,描述了具体实施例。这些具体实施例仅用于说明目的,而不旨在进行限制。在这些实施例的一些实施例中,本文公开的自动GUI模型和代码生成技术可以被实现为集成开发环境(IDE)(诸如Visual Builder Cloud Service开发环境)的一部分。在一些实施例中,本文公开的自动GUI模型和代码生成技术可以被实现为独立的工具。
图9描绘了根据某些实施例的用于自动生成GUI屏幕的GUI模型和GUI代码的软件应用的GUI屏幕900的示例。如图9所示,可以在IDE中启动极简(bare-bone)的新web应用webapp1 910。极简的新web应用webapp1 910可以仅包括起始页面940。webapp1910的文件结构920在左侧面板中示出。为了添加新的GUI,诸如UI开发人员之类的用户可以点击“⊕”按钮930。
图10描绘了根据某些实施例的用于自动生成GUI屏幕的GUI模型和GUI代码的软件应用的GUI屏幕1000的示例。GUI屏幕1000示出了在用户点击“⊕”按钮930之后显示给用户的用户界面1010。用户界面1010可以提示用户输入或将GUI设计文件上传到输入框1020。GUI设计文件可以包括由GUI设计人员在计算机上设计或在纸上设计并以数字格式保存的一个或多个图像文件,诸如包括像素或向量的图像文件。当选择(例如,点击)输入框1020时,可以向用户显示弹出窗口1030,使得用户可以能够定位本地或远程存储的GUI设计文件。
图11描绘了根据某些实施例的用于自动生成GUI屏幕的GUI模型和GUI代码的软件应用的GUI屏幕1100的示例。如图11所示,在从弹出窗口1130中定位GUI设计文件(例如,图像文件)之后,用户可以选择GUI设计文件或将如由图标1110所示的所选择的GUI设计文件拖放到输入框1120。
图12描绘了根据某些实施例的用于自动生成GUI屏幕的GUI模型和GUI代码的软件应用的GUI屏幕1200的示例。如图12所示,在将GUI设计文件上传到应用之后,除了起始页面1240之外,还可以生成新页面1210。如文件结构1220所示,可以为新GUI生成JSON文件1216、JavaScript文件1214和HTML文件1212。JSON文件1216可以包含GUI模型,并且HTML文件1212可以包含HTML格式的GUI实现体。
图13描绘了根据某些实施例的针对GUI屏幕生成的以JSON格式的GUI模型1300的示例。GUI模型1300可以对应于图12中所示的JSON文件1216。如图13所示,GUI模型1300可以描述GUI屏幕的布局、GUI屏幕的各个部件,诸如标签、图像和文本输入框。GUI模型1300也可以指示一些UI部件内的文本。如果需要,用户可以使用文本编辑器来修改GUI模型。
图14图示了根据某些实施例的输入GUI屏幕图像1410和使用基于本文公开的技术生成的代码而显示的对应GUI屏幕图像1420的示例。输入GUI屏幕图像1410是由照片观看器显示的JPG文件,其示出了所设计的GUI屏幕。Web浏览器基于HTML文件(诸如HTML文件1212)显示GUI屏幕图像1420。
图15图示了根据某些实施例的基于本文公开的技术为输入GUI屏幕的示例生成的html代码的屏幕快照1500的示例。如图15所示,当用户在文件结构1510中选择由工具生成的HTML文件1520时,源HTML代码可以被显示给用户,并且用户可以根据需要修改HTML代码。
图16A和图16B图示了根据某些实施例的输入GUI屏幕图像1600和使用基于本文公开的技术生成的代码而显示的对应GUI屏幕图像1650的另一个示例。输入GUI屏幕图像1600是由照片观看器显示的PNG文件,其示出了所设计的GUI屏幕。GUI屏幕图像1650是基于由实现本文所公开的技术的工具自动生成的HTML文件由web浏览器显示的GUI的快照。
本文描述的模型生成系统102或330可以在包括云环境(例如,包括私有云、公共云和混合云环境的各种类型的云)、本地(on-premises)环境、混合环境等的各种不同的环境中实现。
图17描绘了用于实现实施例的分布式系统1700的简化图。在所示的实施例中,分布式系统1700包括经由一个或多个通信网络1710耦合到服务器1712的一个或多个客户端计算设备1702、1704、1706和1708。客户端计算设备1702、1704、1706和1708可以被配置为执行一个或多个应用。
在各种实施例中,服务器1712可以适于运行或提供一个或多个服务或软件应用,该服务或软件应用使得能够使用应用的需求信息在应用中的用户界面部件与数据对象之间自动生成关系或映射。例如,在某些实施例中,服务器1712可以接收应用的需求信息,其中需求信息可以包括对应用的期望功能的描述,并且还可以包括应用的期望GUI的图像。服务器1712然后可以使用需求信息来生成应用的用户界面部件与一个或多个数据对象之间的映射。
在某些实施例中,服务器1712还可以提供可以在非虚拟和虚拟环境中提供的其它服务或软件应用。在一些实施例中,这些服务可以作为基于web的服务或云服务,诸如在软件即服务(SaaS)模型下,提供给客户端计算设备1702、1704、1706和/或1708的用户。操作客户端计算设备1702、1704、1706和/或1708的用户可以依次利用一个或多个客户端应用与服务器1712交互以利用由这些部件提供的服务。
在图17所示的配置中,服务器1712可以包括实现由服务器1712执行的功能的一个或多个部件1718、1720和1722。这些部件可以包括可以由一个或多个处理器执行的软件部件、硬件部件或其组合。应当认识到的是,各种不同的系统配置是可能的,其可以与分布式系统1700不同。因此,图17中所示的实施例是用于实现实施例系统的分布式系统的一个示例,并且不旨在进行限制。
根据本公开的教导,用户可以使用客户端计算设备1702、1704、1706和/或1708向服务器1712提供需求信息并从服务器1712接收信息(例如,映射信息)。客户端设备可以提供使客户端设备的用户能够与客户端设备交互的接口。客户端设备还可以经由该界面向用户输出信息。虽然图17仅描绘了四个客户端计算设备,但可以支持任何数量的客户端计算设备。
客户端设备可以包括各种类型的计算系统,诸如便携式手持式设备、诸如个人计算机和膝上型计算机的通用计算机、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息传送设备、传感器和其它感测设备等。这些计算设备可以运行各种类型和版本的软件应用和操作系统(例如,MicrosoftApple或类UNIX操作系统、Linux或类Linux操作系统,诸如Google ChromeTMOS),包括各种移动操作系统(例如,Microsoft WindowsWindowsAndroidTM、Palm)。便携式手持式设备可以包括蜂窝电话、智能电话(例如,)、平板电脑(例如,)、个人数字助理(PDA)等。可穿戴设备可以包括Google头戴式显示器和其它设备。游戏系统可以包括各种手持式游戏设备、具有互联网功能的游戏设备(例如,具有或不具有手势输入设备的Microsoft游戏机、Sony系统、由提供的各种游戏系统以及其它)等。客户端设备可以能够执行各种不同的应用,诸如各种与互联网相关的应用、通信应用(例如,电子邮件应用、短消息服务(SMS)应用),并且可以使用各种通信协议。
(一个或多个)通信网络1710可以是本领域技术人员熟悉的任何类型的网络,其可以使用多种可用协议中的任何一种来支持数据通信,包括但不限于TCP/IP(传输控制协议/互联网协议)、SNA(系统网络体系架构)、IPX(互联网分组交换)、等。仅仅作为示例,(一个或多个)通信网络1710可以是局域网(LAN)、基于以太网的网络、令牌环、广域网(WAN)、互联网、虚拟网络、虚拟专用网(VPN)、内联网、外联网、公共电话交换网(PSTN)、红外网络、无线网络(例如,在任何电气和电子协会(IEEE)802.11协议套件、和/或任何其它无线协议下操作的网络)和/或这些和/或其它网络的任意组合。
服务器1712可以由一个或多个通用计算机、专用服务器计算机(作为示例,包括PC(个人计算机)服务器、服务器、中档服务器、大型计算机、机架安装的服务器等)、服务器场、服务器集群或任何其它适当的布置和/或组合组成。服务器1712可以包括运行虚拟操作系统的一个或多个虚拟机,或者涉及虚拟化的其它计算体系架构,诸如可以被虚拟化以维护服务器的虚拟存储设备的逻辑存储设备的一个或多个灵活的池。在各种实施例中,服务器1712可以适于运行提供前述公开中描述的功能的一个或多个服务或软件应用。
服务器1712中的计算系统可以运行一个或多个操作系统,包括以上讨论的任何操作系统以及任何商用的服务器操作系统。服务器1712还可以运行各种附加服务器应用和/或中间层应用中的任何一种,包括HTTP(超文本传输协议)服务器、FTP(文件传输协议)服务器、CGI(通用网关界面)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于可从 (国际商业机器)等商购获得的数据库服务器。
在一些实现方案中,服务器1712可以包括一个或多个应用以分析和整合从客户端计算设备1702、1704、1706和1708的用户接收到的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于从一个或多个第三方信息源和连续数据流接收到的馈送、更新或实时更新,其可以包括与传感器数据应用、金融报价机、网络性能测量工具(例如,网络监视和流量管理应用)、点击流分析工具、汽车流量监视等相关的实时事件。服务器1712还可以包括经由客户端计算设备1702、1704、1706和1708的一个或多个显示设备显示数据馈送和/或实时事件的一个或多个应用。
分布式系统1700还可以包括一个或多个数据储存库1714、1716。在某些实施例中,这些数据储存库可以用于存储数据和其它信息。例如,一个或多个数据储存库1714、1716可以用于存储信息,诸如一个或多个应用的需求信息、映射信息,以及由服务器1712使用或生成的其它信息。数据储存库1714、1716可以驻留在各种位置。例如,由服务器1712使用的数据储存库可以在服务器1712本地,或者可以远离服务器1712并经由基于网络或专用的连接与服务器1712通信。数据储存库1714、1716可以是不同的类型。在某些实施例中,由服务器1712使用的数据储存库可以是数据库,例如关系数据库,诸如由公司和其它供应商提供的数据库。这些数据库中的一个或多个可以适于响应于SQL格式的命令来实现数据库中数据的存储、更新和检索。由应用使用的数据储存库可以具有不同的类型,诸如,例如,键-值储存库、对象储存库或由文件系统支持的通用储存库。
在某些实施例中,可以经由云环境将本公开中描述的特征作为服务来提供。图18是根据某些实施例的其中各种服务可以被提供为云服务的基于云的系统环境的简化框图。在图18所示的实施例中,云基础设施系统1802可以提供可以由用户使用一个或多个客户端设备1804、1806和1808请求的一个或多个云服务。云基础设施系统1802可以包括一个或多个计算机和/或服务器,其可以包括以上针对服务器1712描述的那些计算机和/或服务器。云基础设施系统1802中的计算机可以被组织为通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置和/或组合。
(一个或多个)网络1810可以促进客户端设备1804、1806和1808与云基础设施系统1802之间的通信和数据交换。(一个或多个)网络1810可以包括一个或多个网络。网络可以是相同或不同的类型。(一个或多个)网络1810可以支持一种或多种通信协议,包括有线和/或无线协议,以促进通信。
图18中描绘的实施例仅仅是云基础设施系统的一个示例,并且不旨在进行限制。应该认识到的是,在一些其它实施例中,云基础设施系统1802可以具有比图18所示的部件更多或更少的部件、可以组合两个或更多个部件,或者可以具有不同的部件配置或布置。例如,虽然图18描绘了三个客户端计算设备,但是在替代实施例中可以支持任何数量的客户端计算设备。
术语“云服务”通常用于指由服务提供商的系统(例如,云基础设施系统1802)根据需要并且经由诸如互联网之类的通信网络使用户可使用的服务。典型地,在公共云环境中,组成云服务提供商系统的服务器和系统与客户自己的本地服务器和系统不同。云服务提供商的系统由云服务提供商管理。客户因此可以利用由云服务提供商提供的云服务,而不必为服务购买单独的许可证、支持或硬件和软件资源。例如,云服务提供商的系统可以托管应用,并且用户可以经由互联网按需订购和使用应用,而用户不必购买用于执行应用的基础设施资源。云服务旨在提供对应用、资源和服务的轻松、可扩展的访问。几个提供商提供云服务。例如,由加利福尼亚州Redwood Shores的公司提供了几种云服务,诸如中间件服务、数据库服务、Java云服务等。
在某些实施例中,云基础设施系统1802可以使用诸如软件即服务(SaaS)模型、平台即服务(PaaS)模型、基础设施即服务(IaaS)模型以及包括混合服务模型的其它模型之类的不同模型提供一个或多个云服务。云基础设施系统1802可以包括一套应用、中间件、数据库以及使得能够供给各种云服务的其它资源。
SaaS模型使得应用或软件能够作为服务通过如互联网的通信网络交付给客户,而客户不必为底层应用购买硬件或软件。例如,SaaS模型可以用于为客户提供对由云基础设施系统1802托管的按需应用的访问。由公司提供的SaaS服务的示例包括但不限于用于人力资源/资本管理、客户关系管理(CRM)、企业资源计划(ERP)、供应链管理(SCM)、企业绩效管理(EPM)、分析服务、社交应用及其它的各种服务。在某些实施例中,从应用的需求信息自动生成工作应用的能力可以作为SaaS模型下的服务提供。
PaaS模型通常用于提供平台和环境资源作为服务,其使得客户能够开发、运行和管理应用和服务,而客户不必采购、构建或维护此类资源。由公司提供的PaaS服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)、数据管理云服务、各种应用开发解决方案服务,以及其它服务。
云服务通常基于按需自助服务、基于订阅、弹性可缩放、可靠、高度可用和安全的方式提供。例如,客户可以经由订阅订单订购由云基础设施系统1802提供的一个或多个服务。然后,云基础设施系统1802执行处理,以提供客户的订阅订单中所请求的服务。例如,用户可以向云基础设施系统提供应用的需求信息,并请求云基础设施系统根据需求信息自动生成工作应用,包括如上所述的自动生成应用的用户界面部件和数据对象之间的映射。云基础设施系统1802可以被配置为提供一个或甚至多个云服务。
云基础设施系统1802可以经由不同的部署模型来提供云服务。在公共云模型中,云基础设施系统1802可以由第三方云服务提供商拥有,并且云服务被提供给任何普通公众客户,其中客户可以是个人或企业。在某些其它实施例中,在私有云模型下,可以在组织内(例如,在企业组织内)操作云基础设施系统1802,并向组织内的客户提供服务。例如,客户可以是企业的各个部门,诸如人力资源部门、工资部门等,甚至是企业内的个人。在某些其它实施例中,在社区云模型下,云基础设施系统1802和所提供的服务可以由相关社区中的几个组织共享。也可以使用各种其它模型,诸如上面提到的模型的混合。
客户端设备1804、1806和1808可以是不同类型的(诸如图18中描绘的客户端设备1804、1806和1808),并且可以能够操作一个或多个客户端应用。用户可以使用客户端设备与云基础设施系统1802交互,诸如请求由云基础设施系统1802提供的服务。例如,用户可以使用客户端设备向云基础设施系统1802提供应用的需求信息,并请求云基础设施系统根据需求信息自动生成工作应用,包括如本公开中所述的自动生成应用的用户界面部件和数据对象之间的映射。
在一些实施例中,由云基础设施系统1802执行的用于提供所请求的服务的处理可能涉及大数据分析。这种分析可能涉及使用、分析和操纵大型数据集,以检测和可视化数据内的各种趋势、行为、关系等。该分析可以由一个或多个处理器执行、可能并行处理数据、使用数据执行仿真等。用于该分析的数据可以包括结构化数据(例如,存储在数据库中或根据结构化模型结构化的数据)和/或非结构化数据(例如,数据Blob(二进制大对象))。
如在图18的实施例中所描绘的,云基础设施系统1802可以包括基础设施资源1830,其用于促进由云基础设施系统1802提供的各种云服务的供给。基础设施资源1830可以包括例如处理资源、存储或存储器资源、联网资源等。
在某些实施例中,为了促进这些资源的高效供给以支持由云基础设施系统1802为不同客户提供的各种云服务,可以将资源捆绑成资源或资源模块的集合(也称为“群聚(pod)”)。每个资源模块或群聚可以包括一种或多种类型的资源的预先集成和优化的组合。在某些实施例中,可以为不同类型的云服务预先供给不同的群聚。例如,可以为数据库服务供给第一组群聚,可以为Java服务供给第二组群聚,其中第二组群聚可以包括与第一组群聚中的群聚不同的资源组合。对于一些服务,可以在服务之间共享为供给服务而分配的资源。
云基础设施系统1802本身可以内部使用服务1832,服务1832由云基础设施系统1802的不同部件共享并且促进云基础设施系统1802的服务供给。这些内部共享的服务可以包括但不限于安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、用于启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。
云基础设施系统1802可以包括多个子系统。这些子系统可以用软件或硬件或其组合来实现。如图18所示,子系统可以包括用户界面子系统1812,该用户界面子系统1812使得云基础设施系统1802的用户或客户能够与云基础设施系统1802交互。用户界面子系统1812可以包括各种不同的界面,诸如web界面1814、在线商店界面1816(其中由云基础设施系统1802提供的云服务被广告并且可由消费者购买)和其它界面1818。例如,客户可以使用客户端设备通过使用界面1814、1816和1818中的一个或多个下订阅订单来请求(服务请求1834)由云基础设施系统1802提供的一个或多个服务。这些界面可以包括例如在线商店用户界面1816,客户访问和浏览在线商店,识别由云基础设施系统1802提供的云服务,并为提供的服务中客户希望订阅的一个或多个服务下订阅订单。其它界面可以包括web界面1814和其它界面1818。
在某些实施例中,服务请求或订阅请求可以包括识别进行请求的用户或客户以及客户期望订阅的一个或多个服务的信息。例如,客户可以为由云基础设施系统1802提供的自动化应用生成服务下订阅订单。
在某些实施例中,诸如图18所示的实施例,云基础设施系统1802可以包括被配置为处理新的订阅订单的订单管理子系统(OMS)1820。作为该处理的一部分,OMS 1820可以被配置为:为客户创建账户(如果尚未创建);接收来自客户的账单和/或会计信息,该账单和/或账单信息将用于针对向客户提供所请求的服务向客户计费;验证客户信息;在验证后,为客户预订订单;已经编排各种工作流程以准备用于供给的订单。
一旦被恰当地验证,OMS 1820就可以调用订单供给子系统(OPS)1824,其被配置为为订单供给资源,包括处理资源、存储器资源和联网资源。供给可以包括为订单分配资源,以及配置资源以促进由客户订单所请求的服务。为订单供给资源的方式和供给资源的类型可以取决于客户已订购的云服务的类型。例如,根据一个工作流程,OPS 1824可以被配置为确定所请求的特定云服务,并且识别可能已经针对该特定云服务而被预先配置的多个群聚。为订单分配的群聚的数量可以取决于所请求的服务的大小/数量/级别/范围。例如,可以基于服务所支持的用户的数量、正在请求的服务的持续时间等来确定要分配的群聚的数量。然后,可以针对特定的进行请求的客户定制所分配的群聚,以提供所请求的服务。
云基础设施系统1802可以向进行请求的客户发送响应或通知1844,以指示所请求的服务何时准备就绪。在一些情况下,可以将信息(例如,链接)发送给客户,使得客户能够开始使用和利用所请求的服务的益处。
云基础设施系统1802可以向多个客户提供服务。对于每个客户,云基础设施系统1802负责管理与从客户接收到的一个或多个订阅订单相关的信息、维护与订单相关的客户数据,以及向客户提供所请求的服务。云基础设施系统1802还可以收集关于客户对已订阅的服务的使用的使用统计信息。例如,可以针对使用的存储量、传输的数据量、用户的数量以及系统正常运行时间和系统停机时间量等收集统计信息。该使用信息可以用于向客户计费。计费可以例如按月周期进行。
云基础设施系统1802可以并行地向多个客户提供服务。云基础设施系统1802可以存储这些客户的信息,包括可能的专有信息。在某些实施例中,云基础设施系统1802包括身份管理子系统(IMS)1828,其被配置为管理客户的信息并提供所管理的信息的分离,使得与一个客户相关的信息不可被另一个客户访问或与另一个客户的信息混合。IMS 1828可以被配置为提供各种与安全相关的服务,诸如身份服务,诸如信息访问管理、认证和授权服务、用于管理客户身份和角色及相关能力的服务,等等。
图19图示了可以用于实现某些实施例的示例性计算机系统1900。例如,在一些实施例中,计算机系统1900可以用于实现上述各种服务器和计算机系统中的任何一个,诸如图1中描绘的模型生成系统102。如图19所示,计算机系统1900包括各种子系统,包括经由总线子系统1902与多个其它子系统通信的处理子系统1904。这些其它子系统可以包括处理加速单元1906、I/O子系统1908、存储子系统1918和通信子系统1924。存储子系统1918可以包括非暂态计算机可读存储介质,其包括存储介质1922和系统存储器1910。
总线子系统1902提供用于使计算机系统1900的各种部件和子系统按照期望彼此通信的机制。虽然总线子系统1902被示意性地示为单个总线,但是总线子系统的替代实施例可以利用多个总线。总线子系统1902可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、使用任何各种总线体系架构的局部总线等。例如,此类体系架构可以包括工业标准体系架构(ISA)总线、微通道体系架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围部件互连(PCI)总线,其可以实现为根据IEEE P1386.1标准制造的夹层(Mezzanine)总线,等等。
处理子系统1904控制计算机系统1900的操作,并且可以包括一个或多个处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。处理器可以包括单核或多核处理器。可以将计算机系统1900的处理资源组织成一个或多个处理单元1932、1934等。处理单元可以包括一个或多个处理器、来自相同或不同处理器的一个或多个核心、核心和处理器的组合、或核心和处理器的其它组合。在一些实施例中,处理子系统1904可以包括一个或多个专用协处理器,诸如图形处理器、数字信号处理器(DSP)等。在一些实施例中,处理子系统1904的处理单元中的一些或全部可以使用定制电路来实现,诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。
在一些实施例中,处理子系统1904中的处理单元可以执行存储在系统存储器1910中或计算机可读存储介质1922上的指令。在各个实施例中,处理单元可以执行各种程序或代码指令,并且可以维护多个并发执行的程序或进程。在任何给定的时间,要执行的程序代码中的一些或全部可以驻留在系统存储器1910中和/或计算机可读存储介质1922上,包括可能在一个或多个存储设备上。通过适当的编程,处理子系统1904可以提供上述各种功能。在计算机系统1900正在执行一个或多个虚拟机的情况下,可以将一个或多个处理单元分配给每个虚拟机。
在某些实施例中,可以可选地提供处理加速单元1906,以用于执行定制的处理或用于卸载由处理子系统1904执行的一些处理,从而加速由计算机系统1900执行的整体处理。
I/O子系统1908可以包括用于向计算机系统1900输入信息和/或用于从或经由计算机系统1900输出信息的设备和机制。一般而言,术语“输入设备”的使用旨在包括用于向计算机系统1900输入信息的所有可能类型的设备和机制。用户界面输入设备可以包括,例如,键盘、诸如鼠标或轨迹球之类的指向设备、并入到显示器中的触摸板或触摸屏、滚轮、点击轮、拨盘、按钮、开关、小键盘、带有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户界面输入设备还可以包括使用户能够控制输入设备并与之交互的诸如Microsoft运动传感器的运动感测和/或姿势识别设备、Microsoft360游戏控制器、提供用于接收使用姿势和口语命令的输入的界面的设备。用户界面输入设备还可以包括眼睛姿势识别设备,诸如从用户检测眼睛活动(例如,当拍摄图片和/或进行菜单选择时的“眨眼”)并将眼睛姿势转换为到输入设备(例如,Google)的输入的Google眨眼检测器。此外,用户界面输入设备可以包括使用户能够通过语音命令与语音识别系统(例如,导航器)交互的语音识别感测设备。
用户界面输入设备的其它示例包括但不限于,三维(3D)鼠标、操纵杆或指示杆、游戏板和图形平板、以及音频/视频设备,诸如扬声器、数字相机、数字摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3D扫描仪、3D打印机、激光测距仪、以及眼睛注视跟踪设备。此外,用户界面输入设备可以包括,例如,医疗成像输入设备,诸如计算机断层摄影、磁共振成像、位置发射断层摄影、以及医疗超声检查设备。用户界面输入设备也可以包括,例如,音频输入设备,诸如MIDI键盘、数字乐器等。
一般而言,术语“输出设备”的使用旨在包括所有可能类型的设备和用于从计算机系统1900向用户或其它计算机输出信息的机制。用户界面输出设备可以包括显示子系统、指示器灯或诸如音频输出设备的非可视显示器等。显示子系统可以是阴极射线管(CRT)、诸如利用液晶显示器(LCD)或等离子体显示器的平板设备、投影设备、触摸屏等。例如,用户界面输出设备可以包括但不限于,可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备和调制解调器。
存储子系统1918提供用于存储由计算机系统1900使用的信息和数据的储存库或数据存储库。存储子系统1918提供了用于存储提供某些实施例的功能的基本编程和数据构造的有形非暂态计算机可读存储介质的示例。存储子系统1918可以存储软件(例如,程序、代码模块、指令),该软件在由处理子系统1904执行时提供上述功能。软件可以由处理子系统1904的一个或多个处理单元执行。存储子系统1918还可以提供用于存储根据本公开的教导使用的数据的储存库。
存储子系统1918可以包括一个或多个非暂态存储器设备,包括易失性和非易失性存储器设备。如图19所示,存储子系统1918包括系统存储器1910和计算机可读存储介质1922。系统存储器1910可以包括多个存储器,包括用于在程序执行期间存储指令和数据的易失性主随机存取存储器(RAM)以及其中存储有固定指令的非易失性只读存储器(ROM)或闪存。在一些实现方案中,基本输入/输出系统(BIOS)可以典型地存储在ROM中,该基本输入/输出系统(BIOS)包含有助于例如在启动期间在计算机系统1900内的元件之间传递信息的基本例程。RAM通常包含当前由处理子系统1904操作和执行的数据和/或程序模块。在一些实现方案中,系统存储器1910可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。
作为示例而非限制,如图19所示,系统存储器1910可以加载正在被执行的可以包括各种应用(诸如Web浏览器、中间层应用、关系型数据库管理系统(RDBMS)等)的应用程序1912、程序数据1914和操作系统1916。作为示例,操作系统1916可以包括各种版本的MicrosoftApple和/或Linux操作系统、各种商用或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、GoogleOS等)和/或移动操作系统,诸如Phone、OS、OS、OS操作系统,以及其它操作系统。
计算机可读存储介质1922可以存储提供一些实施例的功能的编程和数据构造。计算机可读存储介质1922可以为计算机系统1900提供计算机可读指令、数据结构、程序模块和其它数据的存储。当由处理子系统1904执行时,提供上述功能的软件(程序、代码模块、指令)可以存储在存储子系统1918中。作为示例,计算机可读存储介质1922可以包括非易失性存储器,诸如硬盘驱动器、磁盘驱动器、诸如CD ROM、DVD、(蓝光)盘或其它光学介质的光盘驱动器。计算机可读存储介质1922可以包括但不限于,驱动器、闪存存储器卡、通用串行总线(USB)闪存驱动器、安全数字(SD)卡、DVD盘、数字视频带等。计算机可读存储介质1922也可以包括基于非易失性存储器的固态驱动器(SSD)(诸如基于闪存存储器的SSD、企业闪存驱动器、固态ROM等)、基于易失性存储器的SSD(诸如基于固态RAM、动态RAM、静态RAM、DRAM的SSD、磁阻RAM(MRAM)SSD),以及使用基于DRAM和基于闪存存储器的SSD的组合的混合SSD。
在某些实施例中,存储子系统1918还可以包括计算机可读存储介质读取器1920,其还可以连接到计算机可读存储介质1922。计算机可读存储介质读取器1920可以接收并且被配置为从诸如盘、闪存驱动器等的存储器设备读取数据。
在某些实施例中,计算机系统1900可以支持虚拟化技术,包括但不限于处理和存储器资源的虚拟化。例如,计算机系统1900可以提供用于执行一个或多个虚拟机的支持。在某些实施例中,计算机系统1900可以执行诸如促进虚拟机的配置和管理的管理程序之类的程序。可以为每个虚拟机分配存储器、计算(例如,处理器、核心)、I/O和联网资源。每个虚拟机通常独立于其它虚拟机运行。虚拟机通常运行其自己的操作系统,该操作系统可以与由计算机系统1900执行的其它虚拟机执行的操作系统相同或不同。因此,计算机系统1900可以潜在地同时运行多个操作系统。
通信子系统1924提供到其它计算机系统和网络的界面。通信子系统1924用作用于从计算机系统1900接收数据以及向其它系统传输数据的界面。例如,通信子系统1924可以使得计算机系统1900能够经由互联网建立到一个或多个客户端设备的通信信道,以用于从客户端设备接收信息以及向客户端设备发送信息。
通信子系统1924可以支持有线和/或无线通信协议两者。例如,在某些实施例中,通信子系统1924可以包括用于(例如,使用蜂窝电话技术、高级数据网络技术(诸如3G、4G或EDGE(全球演进的增强数据速率)、WiFi(IEEE 802.XX族标准)、或其它移动通信技术、或其任意组合)接入无线语音和/或数据网络的射频(RF)收发器部件、全球定位系统(GPS)接收器部件和/或其它部件。在一些实施例中,作为无线界面的附加或替代,通信子系统1924可以提供有线网络连接(例如,以太网)。
通信子系统1924可以以各种形式接收和传输数据。例如,在一些实施例中,除了其它形式之外,通信子系统1924还可以以结构化和/或非结构化的数据馈送1926、事件流1928、事件更新1930等形式接收输入通信。例如,通信子系统1924可以被配置为实时地从社交媒体网络的用户和/或诸如馈送、更新、诸如丰富站点摘要(RSS)馈送的web馈送的其它通信服务接收(或发送)数据馈送1926,和/或来自一个或多个第三方信息源的实时更新。
在某些实施例中,通信子系统1924可以被配置为以连续数据流的形式接收本质上可能是连续的或无界的没有明确结束的数据,其中连续数据流可以包括实时事件的事件流1928和/或事件更新1930。生成连续数据的应用的示例可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
通信子系统1924也可以被配置为将数据从计算机系统1900传送到其它计算机系统或网络。数据可以以各种不同的形式传送给一个或多个数据库,诸如结构化和/或非结构化数据馈送1926、事件流1928、事件更新1930等,该一个或多个数据库可以与耦合到计算机系统1900的一个或多个流传输数据源进行通信。
计算机系统1900可以是各种类型中的一种,包括手持便携式设备(例如,蜂窝电话、计算平板、PDA)、可穿戴设备(例如,Google头戴式显示器)、个人计算机、工作站、大型机、信息站、服务器机架或任何其它数据处理系统。由于计算机和网络不断变化的性质,对图19中绘出的计算机系统1900的描述旨在仅仅作为具体示例。具有比图3中所绘出的系统更多或更少部件的许多其它配置是可能的。基于本文所提供的公开内容和教导,本领域普通技术人员将理解实现各种实施例的其它方式和/或方法。
虽然已经描述了特定的实施例,但是各种修改、变更、替代构造以及等同物都是可能的。实施例不限于在某些特定数据处理环境内的操作,而是可以在多个数据处理环境内自由操作。此外,虽然已经使用一系列特定的事务和步骤描述了某些实施例,但是对于本领域技术人员来说清楚的是,这并不旨在进行限制。虽然一些流程图将操作描述为顺序处理,但是许多操作可以并行或同时执行。此外,操作的次序可以被重新布置。处理可能具有图中未包括的其它步骤。上述实施例的各种特征和方面可以被单独使用或联合使用。
另外,虽然已经使用硬件和软件的特定组合描述了某些实施例,但是应该认识到的是,硬件和软件的其它组合也是可能的。某些实施例可以仅用硬件或仅用软件或其组合来实现。本文描述的各种处理可以以任何组合在相同的处理器或不同的处理器上实现。
在将设备、系统、部件或模块描述为被配置为执行某些操作或功能的情况下,这样的配置可以通过以下方式来实现,例如,通过设计电子电路来执行操作、通过对可编程电子电路(诸如微处理器)进行编程来执行操作,诸如通过执行计算机指令或代码,或处理器或核心被编程为执行存储在非暂态存储介质上的代码或指令,或其任意组合来执行操作。进程可以使用各种技术进行通信,包括但不限于用于进程间通信的常规技术,并且不同对的进程可以使用不同的技术,或者同一对进程可以在不同时间使用不同的技术。
在本公开中给出了具体细节以提供对实施例的透彻理解。但是,可以在没有这些具体细节的情况下实践实施例。例如,已经示出了众所周知的电路、处理、算法、结构和技术,而没有不必要的细节,以避免使实施例模糊。本描述仅提供示例实施例,并且不旨在限制其它实施例的范围、适用性或配置。相反,实施例的先前描述将为本领域技术人员提供用于实现各种实施例的使能描述。可以对元件的功能和布置进行各种改变。
因此,说明书和附图应被认为是说明性的而不是限制性的。但是,将清楚的是,在不脱离权利要求书所阐述的更广泛的精神和范围的情况下,可以对其进行添加、减少、删除以及其它修改和改变。因此,虽然已经描述了具体的实施例,但是这些实施例并不旨在进行限制。各种修改和等同形式均在所附权利要求的范围内。各种修改包括所公开特征的任何相关组合。
Claims (20)
1.一种方法,包括:
由计算机系统从输入图像中检测图形用户界面(GUI)屏幕图像,所述图形用户界面(GUI)屏幕图像描绘GUI的GUI屏幕;
由所述计算机系统检测所述GUI屏幕图像的包括第一文本内容项的第一区域;
由所述计算机系统确定所述第一区域在所述GUI屏幕图像内的位置;
由所述计算机系统使用不包含文本内容的占位符替换所述第一区域的内容;
由所述计算机系统检测位于所述GUI屏幕图像的第二区域中的第一用户界面(UI)部件,其中所述第二区域包含具有所述占位符的所述第一区域;
由所述计算机系统确定所述第一UI部件在所述GUI屏幕图像内的位置;
由所述计算机系统使用基于机器学习的分类器来确定所述第一UI部件的UI部件类型,其中所述基于机器学习的分类器是使用包括多个训练图像的训练数据训练的,所述多个训练图像中的每个训练图像包括UI部件,对于每个训练图像,所述训练数据还包括识别该训练图像中的UI部件的UI部件类型的信息;以及
由所述计算机系统生成GUI模型,所述GUI模型能够用于生成用于实现所述GUI的代码,所述GUI模型包括用于所述第一UI部件的信息和用于所述第一文本内容项的信息,其中用于所述第一UI部件的信息包括指示为所述第一UI部件确定的UI部件类型以及所述第一UI部件在所述GUI屏幕图像中的位置的信息。
2.如权利要求1所述的方法,其中:
检测所述第一UI部件包括通过所述基于机器学习的分类器检测所述GUI屏幕图像中的所述第一UI部件;以及
对于每个训练图像,所述训练数据还包括UI部件在该训练图像内的位置。
3.如权利要求1或权利要求2所述的方法,还包括:
基于所述第一区域在所述GUI屏幕图像内的位置和所述第一UI部件在所述GUI屏幕图像内的位置,将所述第一文本内容项与所述第一UI部件进行分组;以及
其中生成所述GUI模型还包括在所述GUI模型中包含指示所述分组的信息。
4.如权利要求1至3中的任一项所述的方法,还包括:
由所述计算机系统检测所述GUI屏幕图像的包含第二文本内容项的第三区域;
由所述计算机系统确定所述第三区域在所述GUI屏幕图像内的位置;
由所述计算机系统检测位于所述GUI屏幕图像中的第二UI部件;
确定所述第二UI部件在所述GUI屏幕图像内的位置;
使用所述基于机器学习的分类器来确定所述第二UI部件的UI部件类型;
基于所述第一区域的位置、所述第三区域的位置、所述第一UI部件的UI部件类型和位置、以及所述第二UI部件的UI部件类型和位置,对所述第一文本内容项、所述第二文本内容项、所述第一UI部件和所述第二UI部件进行分组;以及
基于所述分组确定所述GUI屏幕的布局,
其中生成所述GUI模型还包括在所述GUI模型中包含指示所述GUI屏幕的所述布局和所述分组的信息。
5.如权利要求4所述的方法,还包括:
基于所述第三区域在所述GUI屏幕图像内的位置,确定所述第二文本内容项不与所述GUI屏幕图像中的任何UI部件相关联;以及
确定所述第二文本内容项指示动作,
其中生成所述GUI模型包括在所述GUI模型中指示所述GUI屏幕图像的所述第三区域内的所述第二文本内容项是可点击的文本,其中点击所述第二文本内容项发起所述动作。
6.如权利要求1至5中的任一项所述的方法,其中所述第一区域包括背景上的所述第一文本内容项,所述方法还包括:
基于所述GUI屏幕图像的所述第一区域中的像素的强度值生成直方图;
根据所述直方图基于与所述第一文本内容项对应的像素数和与所述GUI屏幕图像的所述第一区域中的所述背景对应的像素数,确定所述第一文本内容项的像素的强度值高于所述背景的像素的强度值;
使所述第一区域中的像素的强度值反转,其中所述反转使所述第一文本内容项的像素的强度值低于所述第一区域中的背景的像素的强度值;以及
在执行所述反转之后,识别所述第一区域中的所述第一文本内容项。
7.如权利要求6所述的方法,还包括:
在生成所述直方图之前,基于所述第一区域中的每个像素的强度值,将所述GUI屏幕图像的所述第一区域从RGB子图像转换成二进制子图像。
8.如权利要求1至7中的任一项所述的方法,其中:
所述占位符包括预定义的像素图案;以及
确定所述第一UI部件的UI部件类型包括基于所述占位符在所述第二区域中的存在和所述占位符中的所述预定义的像素图案来对所述GUI屏幕图像的所述第二区域进行分类。
9.如权利要求1至8中的任一项所述的方法,其中所述占位符是预定义的像素图案,所述预定义的像素图案使得能够从所述GUI屏幕图像确定所述第一文本内容项在所述第一区域中的位置的边界。
10.如权利要求9所述的方法,其中所述预定义的像素图案的像素值包括所述第一区域的背景中的像素的像素值或预定义值。
11.如权利要求1至10中的任一项所述的方法,还包括:
基于所述GUI模型生成所述GUI的一个或多个实现体。
12.如权利要求11所述的方法,其中基于所述GUI模型生成所述GUI的一个或多个实现体包括:
使用所述GUI模型,为第一平台生成所述GUI的第一实现体;以及
使用所述GUI模型,为第二平台生成所述GUI的第二实现体,其中所述第二平台与所述第一平台不同。
13.如权利要求11或12所述的方法,其中基于所述GUI模型生成所述GUI的所述一个或多个实现体包括:
使用所述GUI模型,以第一编程语言生成所述GUI的第一实现体;以及
使用所述GUI模型,以第二编程语言生成所述GUI的第二实现体,其中所述第二编程语言与所述第一编程语言不同。
14.如权利要求11所述的方法,其中基于所述GUI模型生成所述GUI的所述一个或多个实现体包括:
使用所述GUI模型和一个或多个代码生成模板来生成所述GUI的所述一个或多个实现体,每个代码生成模板与平台或编程语言相关联。
15.如权利要求1至14中的任一项所述的方法,其中生成所述GUI模型包括以JavaScript对象表示法(JSON)格式存储所述GUI模型的信息。
16.如权利要求1至15中的任一项所述的方法,其中所述基于机器学习的分类器包括基于图像直方图的非线性支持向量机分类器或基于人工神经网络的分类器。
17.如权利要求1至16中的任一项所述的方法,还包括:
接收关于所述GUI模型的用户反馈,其中所述用户反馈包括:
识别要与所述第一UI部件相关联的新UI部件类型而不是在所述GUI模型中为所述第一UI部件指定的UI部件类型的信息,或者
识别存在于所述GUI屏幕中但不包括在所述GUI模型中的新UI部件的信息,以及指示所述新UI部件的UI部件类型的信息;以及
基于所述用户反馈重新训练所述基于机器学习的分类器。
18.如权利要求17所述的方法,其中所述用户反馈还包括所述第一UI部件或所述新UI部件的子图像,所述方法还包括:
从所述多个训练图像中提取特征;
将从所述多个训练图像中提取的特征映射到多维空间中的数据点,其中所述数据点形成所述多维空间中的一组聚类;
从所述第一UI部件或所述新UI部件的子图像中提取特征;
将从所述第一UI部件或所述新UI部件的子图像中提取的特征映射到所述多维空间中的数据点;
确定与所述第一UI部件或所述新UI部件的子图像对应的数据点与所述一组聚类中的每个聚类的中心之间的距离;以及
响应于确定所述距离小于阈值,将所述第一UI部件或所述新UI部件的所述子图像包括在所述训练数据中。
19.一种非暂态计算机可读介质,存储能够由一个或多个处理器执行的多个指令,其中所述多个指令在由所述一个或多个处理器执行时,使所述一个或多个处理器执行包括以下操作的处理:
从输入图像中检测图形用户界面(GUI)屏幕图像,所述图形用户界面(GUI)屏幕图像描绘GUI的GUI屏幕;
检测所述GUI屏幕图像的包括第一文本内容项的第一区域;
确定所述第一区域在所述GUI屏幕图像内的位置;
使用不包含文本内容的占位符替换所述第一区域的内容;
检测位于所述GUI屏幕图像的第二区域中的第一用户界面(UI)部件,其中所述第二区域包含具有所述占位符的所述第一区域;
确定所述第一UI部件在所述GUI屏幕图像内的位置;
使用基于机器学习的分类器来确定所述第一UI部件的UI部件类型,其中所述基于机器学习的分类器是使用包括多个训练图像的训练数据训练的,所述多个训练图像中的每个训练图像包括UI部件,对于每个训练图像,所述训练数据还包括识别该训练图像中的UI部件的UI部件类型的信息;以及
生成GUI模型,所述GUI模型能够用于生成用于实现所述GUI的代码,所述GUI模型包括用于所述第一UI部件的信息和用于所述第一文本内容项的信息,其中用于所述第一UI部件的信息包括指示为所述第一UI部件确定的UI部件类型以及所述第一UI部件在所述GUI屏幕图像中的位置的信息。
20.一种系统,包括:
一个或多个处理器;以及
与所述一个或多个处理器耦合的存储器,所述存储器存储指令,所述指令在由所述一个或多个处理器执行时,使所述系统:
从输入图像中检测图形用户界面(GUI)屏幕图像,所述图形用户界面(GUI)屏幕图像描绘GUI的GUI屏幕;
检测所述GUI屏幕图像的包括第一文本内容项的第一区域;
确定所述第一区域在所述GUI屏幕图像内的位置;
使用不包含文本内容的占位符替换所述第一区域的内容;
检测位于所述GUI屏幕图像的第二区域中的第一用户界面(UI)部件,其中所述第二区域包含具有所述占位符的所述第一区域;
确定所述第一UI部件在所述GUI屏幕图像内的位置;
使用基于机器学习的分类器来确定所述第一UI部件的UI部件类型,其中所述基于机器学习的分类器是使用包括多个训练图像的训练数据训练的,所述多个训练图像中的每个训练图像包括UI部件,对于每个训练图像,所述训练数据还包括识别该训练图像中的UI部件的UI部件类型的信息;以及
生成GUI模型,所述GUI模型能够用于生成用于实现所述GUI的代码,所述GUI模型包括用于所述第一UI部件的信息和用于所述第一文本内容项的信息,其中用于所述第一UI部件的信息包括指示为所述第一UI部件确定的UI部件类型以及所述第一UI部件在所述GUI屏幕图像中的位置的信息。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201841005130 | 2018-02-12 | ||
IN201841005130 | 2018-02-12 | ||
US15/996,311 | 2018-06-01 | ||
US15/996,311 US10489126B2 (en) | 2018-02-12 | 2018-06-01 | Automated code generation |
PCT/US2018/041038 WO2019156706A1 (en) | 2018-02-12 | 2018-07-06 | Automated code generation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110785736A true CN110785736A (zh) | 2020-02-11 |
CN110785736B CN110785736B (zh) | 2021-04-06 |
Family
ID=67541668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880041312.3A Active CN110785736B (zh) | 2018-02-12 | 2018-07-06 | 自动代码生成 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10489126B2 (zh) |
EP (1) | EP3692438B1 (zh) |
JP (1) | JP6944548B2 (zh) |
CN (1) | CN110785736B (zh) |
WO (1) | WO2019156706A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427567A (zh) * | 2020-03-20 | 2020-07-17 | 杭州涂鸦信息技术有限公司 | 一种智能产品快速生成方法及其系统和设备 |
CN112035120A (zh) * | 2020-08-31 | 2020-12-04 | 平安医疗健康管理股份有限公司 | 基于医疗数据的逻辑代码获取方法、装置以及计算机设备 |
CN112114803A (zh) * | 2020-08-25 | 2020-12-22 | 济南浪潮高新科技投资发展有限公司 | 基于深度学习的ui界面的前端代码生成方法、设备及介质 |
CN112836033A (zh) * | 2021-02-25 | 2021-05-25 | 平安银行股份有限公司 | 业务模型的管理方法、装置、设备及存储介质 |
CN113031938A (zh) * | 2021-04-25 | 2021-06-25 | 中国电子系统技术有限公司 | 一种可视化界面图像转化为编程语言数据的方法及装置 |
CN113741902A (zh) * | 2021-09-10 | 2021-12-03 | 百融至信(北京)征信有限公司 | 一种基于模版的SaaS代码生成方法及系统 |
CN117850786A (zh) * | 2024-03-07 | 2024-04-09 | 长江龙新媒体有限公司 | 一种基于用户偏好的自适应用户界面生成方法及系统 |
CN112114803B (zh) * | 2020-08-25 | 2024-05-24 | 山东浪潮科学研究院有限公司 | 基于深度学习的ui界面的前端代码生成方法、设备及介质 |
Families Citing this family (103)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10838699B2 (en) | 2017-01-18 | 2020-11-17 | Oracle International Corporation | Generating data mappings for user interface screens and screen components for an application |
US10678244B2 (en) | 2017-03-23 | 2020-06-09 | Tesla, Inc. | Data synthesis for autonomous control systems |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
US10877735B1 (en) * | 2017-09-25 | 2020-12-29 | Amazon Technologies, Inc. | Automated generation of software applications using analysis of submitted content items |
US10705805B1 (en) | 2017-12-12 | 2020-07-07 | Amazon Technologies, Inc. | Application authoring using web-of-sheets data model |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
US11403663B2 (en) * | 2018-05-17 | 2022-08-02 | Spotify Ab | Ad preference embedding model and lookalike generation engine |
US20190355372A1 (en) | 2018-05-17 | 2019-11-21 | Spotify Ab | Automated voiceover mixing and components therefor |
US11537428B2 (en) | 2018-05-17 | 2022-12-27 | Spotify Ab | Asynchronous execution of creative generator and trafficking workflows and components therefor |
US11586603B1 (en) | 2018-05-23 | 2023-02-21 | Amazon Technologies, Inc. | Index sheets for robust spreadsheet-based applications |
US11215999B2 (en) | 2018-06-20 | 2022-01-04 | Tesla, Inc. | Data pipeline and deep learning system for autonomous driving |
WO2019244762A1 (ja) * | 2018-06-21 | 2019-12-26 | 株式会社Tsunagu.AI | ウェブコンテンツ自動生成システム |
US11361457B2 (en) | 2018-07-20 | 2022-06-14 | Tesla, Inc. | Annotation cross-labeling for autonomous control systems |
US11636333B2 (en) | 2018-07-26 | 2023-04-25 | Tesla, Inc. | Optimizing neural network structures for embedded systems |
US11269600B2 (en) * | 2018-08-30 | 2022-03-08 | Cloudblue Llc | System and method of analysis and generation of navigation schema |
US11562231B2 (en) | 2018-09-03 | 2023-01-24 | Tesla, Inc. | Neural networks for embedded devices |
IL282172B2 (en) | 2018-10-11 | 2024-02-01 | Tesla Inc | Systems and methods for training machine models with enhanced data |
US11196678B2 (en) | 2018-10-25 | 2021-12-07 | Tesla, Inc. | QOS manager for system on a chip communications |
US10783405B2 (en) * | 2018-10-31 | 2020-09-22 | Salesforce.Com, Inc. | Refinement of machine learning engines for automatically generating component-based user interfaces |
KR102624323B1 (ko) * | 2018-11-16 | 2024-01-12 | 삼성전자 주식회사 | 컴퓨팅 자원들을 사용자가 선택할 수 있고 선택된 컴퓨팅 자원들로 어플리케이션을 실행하는 가상의 모바일 환경을 지원하는 전자 장치 |
TWI691836B (zh) * | 2018-11-20 | 2020-04-21 | 神雲科技股份有限公司 | 基本輸入輸出系統的開機階段辨識方法 |
US10747655B2 (en) * | 2018-11-20 | 2020-08-18 | Express Scripts Strategic Development, Inc. | Method and system for programmatically testing a user interface |
US11099640B2 (en) | 2018-11-20 | 2021-08-24 | Express Scripts Strategie Development, Inc. | System and method for enhancing a user interface using eye tracking data |
US11816585B2 (en) | 2018-12-03 | 2023-11-14 | Tesla, Inc. | Machine learning models operating at different frequencies for autonomous vehicles |
US11537811B2 (en) | 2018-12-04 | 2022-12-27 | Tesla, Inc. | Enhanced object detection for autonomous vehicles based on field view |
US11010536B2 (en) * | 2018-12-20 | 2021-05-18 | AINS, Inc. | Systems and methods for dynamic web user interface generation |
US11610117B2 (en) | 2018-12-27 | 2023-03-21 | Tesla, Inc. | System and method for adapting a neural network model on a hardware platform |
US11237713B2 (en) * | 2019-01-21 | 2022-02-01 | International Business Machines Corporation | Graphical user interface based feature extraction application for machine learning and cognitive models |
US10848379B2 (en) * | 2019-01-30 | 2020-11-24 | Hewlett Packard Enterprise Development Lp | Configuration options for cloud environments |
US10997461B2 (en) | 2019-02-01 | 2021-05-04 | Tesla, Inc. | Generating ground truth for machine learning from time series elements |
US11567514B2 (en) | 2019-02-11 | 2023-01-31 | Tesla, Inc. | Autonomous and user controlled vehicle summon to a target |
US10956755B2 (en) | 2019-02-19 | 2021-03-23 | Tesla, Inc. | Estimating object properties using visual image data |
US11462112B2 (en) * | 2019-03-07 | 2022-10-04 | Nec Corporation | Multi-task perception network with applications to scene understanding and advanced driver-assistance system |
US20220138088A1 (en) * | 2019-03-08 | 2022-05-05 | Micro Focus Llc | Internationalization of automated test scripts |
US11720621B2 (en) * | 2019-03-18 | 2023-08-08 | Apple Inc. | Systems and methods for naming objects based on object content |
US11068785B2 (en) * | 2019-03-26 | 2021-07-20 | Aivitae LLC | Methods and systems for operating applications through user interfaces |
WO2020194662A1 (ja) * | 2019-03-28 | 2020-10-01 | オリンパス株式会社 | 情報処理システム、内視鏡システム、学習済みモデル、情報記憶媒体、情報処理方法及び学習済みモデルの製造方法 |
US11113095B2 (en) | 2019-04-30 | 2021-09-07 | Automation Anywhere, Inc. | Robotic process automation system with separate platform, bot and command class loaders |
US10929110B2 (en) * | 2019-06-15 | 2021-02-23 | International Business Machines Corporation | AI-assisted UX design evaluation |
CN110377282B (zh) * | 2019-06-26 | 2021-08-17 | 扬州大学 | 基于生成对抗和卷积神经网络的UI生成Web代码的方法 |
US11061650B2 (en) * | 2019-06-27 | 2021-07-13 | Intel Corporation | Methods and apparatus to automatically generate code for graphical user interfaces |
US20210103834A1 (en) * | 2019-08-28 | 2021-04-08 | Tata Consultancy Services Limited | Method and system for generating model driven applications using artificial intelligence |
US11675967B2 (en) * | 2019-08-30 | 2023-06-13 | Accenture Global Solutions Limited | Automated front-end code generating method and system for a website |
CN110795077A (zh) * | 2019-09-26 | 2020-02-14 | 北京你财富计算机科技有限公司 | 一种基于人工智能的软件开发方法、装置及电子设备 |
US11526899B2 (en) | 2019-10-11 | 2022-12-13 | Kinaxis Inc. | Systems and methods for dynamic demand sensing |
US11886514B2 (en) | 2019-10-11 | 2024-01-30 | Kinaxis Inc. | Machine learning segmentation methods and systems |
US20210110299A1 (en) * | 2019-10-15 | 2021-04-15 | Kinaxis Inc. | Interactive machine learning |
US20220075605A1 (en) * | 2019-10-15 | 2022-03-10 | UiPath, Inc. | Training and using artificial intelligence (ai) / machine learning (ml) models to automatically supplement and/or complete code of robotic process automation workflows |
US11539643B2 (en) * | 2019-11-07 | 2022-12-27 | D8AI Inc. | Systems and methods of instant-messaging bot for robotic process automation and robotic textual-content extraction from images |
JP7292184B2 (ja) * | 2019-11-11 | 2023-06-16 | 富士フイルム株式会社 | 学習装置、学習方法および学習済みモデル |
CN110968299A (zh) * | 2019-11-20 | 2020-04-07 | 北京工业大学 | 一种基于手绘网页图像的前端工程化代码生成方法 |
US11579849B2 (en) * | 2019-11-22 | 2023-02-14 | Tenweb, Inc. | Generating higher-level semantics data for development of visual content |
US20210157576A1 (en) * | 2019-11-27 | 2021-05-27 | Microsoft Technology Licensing, Llc | Speech to Project Framework |
US20210174233A1 (en) * | 2019-12-05 | 2021-06-10 | Fujitsu Limited | Graph equation modeling for mathematical equation decomposition and automated code generation |
US11481304B1 (en) | 2019-12-22 | 2022-10-25 | Automation Anywhere, Inc. | User action generated process discovery |
US11474671B2 (en) | 2020-01-31 | 2022-10-18 | Salesforce.Com, Inc. | Neutralizing designs of user interfaces |
US11137985B2 (en) | 2020-01-31 | 2021-10-05 | Salesforce.Com, Inc. | User interface stencil automation |
US11182135B2 (en) * | 2020-01-31 | 2021-11-23 | Salesforce.Com, Inc. | User interface design update automation |
US11475205B2 (en) | 2020-01-31 | 2022-10-18 | Salesforce.Com, Inc. | Automatically locating elements in user interfaces |
WO2021154285A1 (en) | 2020-01-31 | 2021-08-05 | Google Llc | Analyzing graphical user interfaces to facilitate automatic interaction |
US11537363B2 (en) | 2020-01-31 | 2022-12-27 | Salesforce.Com, Inc. | User interface migration using intermediate user interfaces |
US11221833B1 (en) * | 2020-03-18 | 2022-01-11 | Amazon Technologies, Inc. | Automated object detection for user interface generation |
US11714612B2 (en) * | 2020-03-20 | 2023-08-01 | Disney Enterprises, Inc. | Techniques for personalizing graphical user interfaces based on user interactions |
US11010679B1 (en) * | 2020-04-08 | 2021-05-18 | Curtis Ray Robinson, JR. | Systems and methods for autonomously executing computer programs |
US11429582B2 (en) * | 2020-04-09 | 2022-08-30 | Capital One Services, Llc | Techniques for creating and utilizing multidimensional embedding spaces |
US11513670B2 (en) * | 2020-04-27 | 2022-11-29 | Automation Anywhere, Inc. | Learning user interface controls via incremental data synthesis |
US11797428B2 (en) * | 2020-05-07 | 2023-10-24 | Mitel Networks Corporation | Dynamic user interface testing and reconciliation |
US20210365506A1 (en) * | 2020-05-22 | 2021-11-25 | Microsoft Technology Licensing, Llc | Automatic conversion of webpage designs to data structures |
US11593678B2 (en) * | 2020-05-26 | 2023-02-28 | Bank Of America Corporation | Green artificial intelligence implementation |
US20210406673A1 (en) * | 2020-06-26 | 2021-12-30 | Nvidia Corporation | Interface translation using one or more neural networks |
JP2022011442A (ja) * | 2020-06-30 | 2022-01-17 | オムロン株式会社 | ビジュアルプログラミングエディタのプログラム、コンピューターおよび方法 |
CN111898338B (zh) * | 2020-07-15 | 2024-04-30 | 北京字节跳动网络技术有限公司 | 文本生成方法、装置和电子设备 |
WO2022060408A1 (en) * | 2020-09-15 | 2022-03-24 | Siemens Aktiengesellschaft | Generation of human machine interfaces from a visual designer tool using multistage machine learning |
US20220083907A1 (en) * | 2020-09-17 | 2022-03-17 | Sap Se | Data generation and annotation for machine learning |
US20220108109A1 (en) * | 2020-10-03 | 2022-04-07 | Fabio Carbone | Hand draw code system for augmenting paper documents with digital contents using AI |
US20220108079A1 (en) * | 2020-10-06 | 2022-04-07 | Sap Se | Application-Specific Generated Chatbot |
US11301269B1 (en) * | 2020-10-14 | 2022-04-12 | UiPath, Inc. | Determining sequences of interactions, process extraction, and robot generation using artificial intelligence / machine learning models |
DE112021005515T5 (de) * | 2020-10-21 | 2023-11-02 | Full Speed Automation, Inc. | System und vorrichtung zum verfassen und entwickeln von automatisierungsschnittstellen und -prozessen ohne schreiben von code |
CN112363705B (zh) * | 2020-11-10 | 2023-07-28 | 中国平安人寿保险股份有限公司 | 系统包生成方法、装置、计算机设备及存储介质 |
CN112486073B (zh) * | 2020-12-03 | 2022-04-19 | 用友网络科技股份有限公司 | 机器人控制方法、控制系统和可读存储介质 |
FR3117240A1 (fr) * | 2020-12-08 | 2022-06-10 | Orange | Procédé de construction d’une base de connaissance, produit programme d'ordinateur, médium de stockage et machine de calcul correspondants. |
CN112416363B (zh) * | 2020-12-09 | 2024-03-19 | 锐捷网络股份有限公司 | 一种前后端crud代码的生成方法及装置 |
US11762667B2 (en) * | 2020-12-22 | 2023-09-19 | International Business Machines Corporation | Adjusting system settings based on displayed content |
EP4290366A1 (en) * | 2021-02-04 | 2023-12-13 | Telefonica Digital España, S.L.U. | Computer project implementation based on a design outline |
JP6949341B1 (ja) * | 2021-03-10 | 2021-10-13 | ソプラ株式会社 | プログラムコード自動生成装置及びプログラム |
CN113360151B (zh) * | 2021-06-02 | 2024-03-08 | 湖南大学 | 一种用于rpa系统的ui数据集自动生成方法和系统 |
US11599338B2 (en) * | 2021-06-18 | 2023-03-07 | Qingdao Pico Technology Co., Ltd. | Model loading method and apparatus for head-mounted display device, and head-mounted display device |
US11714610B2 (en) * | 2021-06-21 | 2023-08-01 | International Business Machines Corporation | Software code integration from a media file |
US11847432B2 (en) * | 2021-07-17 | 2023-12-19 | Vmware, Inc. | System and method for generating accessible user experience design guidance materials |
EP4131010A1 (en) * | 2021-08-06 | 2023-02-08 | L & T Technology Services Limited | Method and system for performing human machine interface (hmi) automation testing |
US11960864B2 (en) * | 2021-09-27 | 2024-04-16 | Microsoft Technology Licensing, Llc. | Creating applications and templates based on different types of input content |
US11763063B2 (en) * | 2021-10-12 | 2023-09-19 | Adobe Inc. | Propagating modifications made to an object to linked objects in a document |
US11727084B1 (en) * | 2022-05-23 | 2023-08-15 | Salesforce, Inc. | Techniques for automatically configuring web components |
CN114926830B (zh) * | 2022-05-30 | 2023-09-12 | 南京数睿数据科技有限公司 | 屏幕图像识别方法、装置、设备和计算机可读介质 |
CN115080051B (zh) * | 2022-05-31 | 2023-05-09 | 武汉大学 | 一种基于计算机视觉的gui代码自动生成方法 |
US20230418566A1 (en) * | 2022-06-22 | 2023-12-28 | Amazon Technologies, Inc. | Programmatically generating evaluation data sets for code generation models |
KR102539282B1 (ko) * | 2022-12-16 | 2023-06-02 | 주식회사 유니온플레이스 | 인공 지능을 이용한 코드 생성 방법 |
KR102539283B1 (ko) * | 2022-12-19 | 2023-06-02 | 주식회사 유니온플레이스 | 인공 지능을 이용한 코드 생성 방법 |
KR102576664B1 (ko) * | 2023-03-08 | 2023-09-13 | 스튜디오씨드코리아 주식회사 | 그래픽 사용자 인터페이스의 프로토타입 제작 방법 및 그 시스템 |
CN116432125B (zh) * | 2023-06-01 | 2023-09-05 | 中南大学 | 基于哈希算法的代码分类方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030138A (zh) * | 2006-02-27 | 2007-09-05 | 软件股份公司 | 应用构架 |
US7392162B1 (en) * | 2002-12-20 | 2008-06-24 | Rage Frameworks, Inc. | System and method for device developing model networks purely by modelling as meta-data in a software application |
CN101464799A (zh) * | 2009-01-16 | 2009-06-24 | 天津大学 | 基于可视化建模的mpi并行程序设计系统及框架代码自动生成方法 |
US20140006962A1 (en) * | 2012-06-28 | 2014-01-02 | Sap Ag | Consistent Interface for Document Output Request |
US8943468B2 (en) * | 2012-08-29 | 2015-01-27 | Kamesh Sivaraman Balasubramanian | Wireframe recognition and analysis engine |
CN107273117A (zh) * | 2017-05-25 | 2017-10-20 | 深圳市彬讯科技有限公司 | 一种编程友好型的敏捷代码自动生成系统 |
CN107454954A (zh) * | 2015-05-27 | 2017-12-08 | 谷歌公司 | 数据绑定相关性分析 |
Family Cites Families (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0772861B2 (ja) | 1990-08-24 | 1995-08-02 | 富士ゼロックス株式会社 | プログラム作成装置 |
JPH064277A (ja) | 1992-06-23 | 1994-01-14 | Hitachi Ltd | Gui制御プログラム自動生成方法および装置 |
JPH08166865A (ja) * | 1994-12-12 | 1996-06-25 | Ricoh Co Ltd | 画面生成方法及びその装置 |
US6434598B1 (en) * | 1996-07-01 | 2002-08-13 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system |
EP0853788A1 (en) * | 1996-08-08 | 1998-07-22 | Agranat Systems, Inc. | Embedded web server |
AU6928698A (en) * | 1997-04-15 | 1998-11-11 | British Telecommunications Public Limited Company | Service creation |
US6496202B1 (en) * | 1997-06-30 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for generating a graphical user interface |
CA2334233C (en) * | 1999-03-05 | 2010-10-26 | Kenneth J. Klask | Graphical user interface engine for embedded systems |
US7334216B2 (en) | 2000-04-04 | 2008-02-19 | Sosy, Inc. | Method and apparatus for automatic generation of information system user interfaces |
US7146347B1 (en) * | 2000-08-03 | 2006-12-05 | National Instruments Corporation | System and method for automatically creating a prototype to perform a process |
JP4366011B2 (ja) * | 2000-12-21 | 2009-11-18 | キヤノン株式会社 | 文書処理装置及び方法 |
EP1402435A4 (en) * | 2001-03-08 | 2007-04-25 | Richard M Adler | SYSTEM AND METHOD FOR MODELING AND ANALYZING STRATEGIC BUSINESS DECISIONS |
US8015541B1 (en) * | 2002-10-24 | 2011-09-06 | Rage Frameworks, Inc. | Business process technology for the enterprise |
JP2005031737A (ja) * | 2003-07-07 | 2005-02-03 | Hitachi Information Systems Ltd | ソースコードの生成システム及びその生成方法及びその生成プログラム及びソフトウェア開発支援ツール |
KR20060129177A (ko) | 2003-10-15 | 2006-12-15 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 스케칭을 통한 사용자 인터페이스 설명의 자동 생성 |
US8006224B2 (en) * | 2005-04-15 | 2011-08-23 | Research In Motion Limited | System and method for unified visualization of two-tiered applications |
US7620885B2 (en) * | 2005-05-12 | 2009-11-17 | International Business Machines Corporation | Automatic generation of documentation for component-based computing solution |
US7861217B2 (en) * | 2005-12-30 | 2010-12-28 | The Mathworks, Inc. | Non-graphical model dependencies in graphical modeling environments |
US7702417B2 (en) * | 2006-01-31 | 2010-04-20 | National Instruments Corporation | Automatically generating code from drawing specifications for use in motion control |
CN101606125A (zh) | 2007-02-16 | 2009-12-16 | 夏普株式会社 | 用户界面生成装置、信息终端、用户界面生成控制程序、记录介质以及用户界面生成方法 |
US8484626B2 (en) | 2007-09-28 | 2013-07-09 | Verizon Patent And Licensing Inc. | Generic XML screen scraping |
US8306255B1 (en) | 2008-08-28 | 2012-11-06 | Intuit Inc. | Snapshot-based screen scraping |
US8645815B2 (en) * | 2008-09-29 | 2014-02-04 | Nec Corporation | GUI evaluation system, GUI evaluation method, and GUI evaluation program |
US9170778B2 (en) | 2008-11-18 | 2015-10-27 | Adobe Systems Incorporated | Methods and systems for application development |
US20100131916A1 (en) * | 2008-11-21 | 2010-05-27 | Uta Prigge | Software for modeling business tasks |
US9665350B1 (en) * | 2009-05-29 | 2017-05-30 | The Mathworks, Inc. | Automatic test generation for model-based code coverage |
US8849725B2 (en) | 2009-08-10 | 2014-09-30 | Yahoo! Inc. | Automatic classification of segmented portions of web pages |
US8918739B2 (en) | 2009-08-24 | 2014-12-23 | Kryon Systems Ltd. | Display-independent recognition of graphical user interface control |
US8762873B2 (en) | 2009-10-26 | 2014-06-24 | Hewlett-Packard Development Company, L.P. | Graphical user interface component identification |
US20110214107A1 (en) | 2010-03-01 | 2011-09-01 | Experitest, Ltd. | Method and system for testing graphical user interfaces |
US8977971B2 (en) | 2010-12-24 | 2015-03-10 | General Electric Company | Metadata generation systems and methods |
KR101047899B1 (ko) | 2011-02-18 | 2011-07-08 | 삼일데이타시스템 주식회사 | 휴대단말기의 사용자 인터페이스 자동 생성과 이를 이용한 설비 제어시스템 |
US9323418B2 (en) * | 2011-04-29 | 2016-04-26 | The United States Of America As Represented By Secretary Of The Navy | Method for analyzing GUI design affordances |
WO2012162686A1 (en) | 2011-05-25 | 2012-11-29 | Centric Software, Inc. | Mobile app for design management framework |
US9195572B2 (en) | 2011-12-16 | 2015-11-24 | Sap Se | Systems and methods for identifying user interface (UI) elements |
US20150020006A1 (en) | 2012-02-26 | 2015-01-15 | Passcall Advanced Technologies (Transforma) Ltd. | Method and system for creating dynamic browser-based user interface by example |
US9351641B2 (en) | 2012-10-04 | 2016-05-31 | Cerner Innovation, Inc. | Mobile processing device system for patient monitoring data acquisition |
US9111091B2 (en) | 2013-01-29 | 2015-08-18 | International Business Machines Corporation | Automatic extraction, modeling, and code mapping of application user interface display screens and components |
US10261650B2 (en) | 2013-03-12 | 2019-04-16 | Oracle International Corporation | Window grouping and management across applications and devices |
US20150046783A1 (en) | 2013-08-12 | 2015-02-12 | Kobo Incorporated | Presenting an aggregation of annotated terms in ebook |
RU2633149C2 (ru) | 2013-07-19 | 2017-10-11 | Общество с ограниченной ответственностью "Мэйл.Ру" | Способ и система автоматического генерирования графического пользовательского интерфейса и компьютерный носитель для выполнения способа с использованием системы |
US9135151B2 (en) | 2013-09-18 | 2015-09-15 | Yahoo! Inc. | Automatic verification by comparing user interface images |
US9430141B1 (en) | 2014-07-01 | 2016-08-30 | Amazon Technologies, Inc. | Adaptive annotations |
US10191889B2 (en) | 2014-07-29 | 2019-01-29 | Board Of Regents, The University Of Texas System | Systems, apparatuses and methods for generating a user interface by performing computer vision and optical character recognition on a graphical representation |
KR102170999B1 (ko) | 2014-07-30 | 2020-10-29 | 삼성디스플레이 주식회사 | 표시장치 |
JP2016071412A (ja) * | 2014-09-26 | 2016-05-09 | キヤノン株式会社 | 画像分類装置、画像分類システム、画像分類方法、及びプログラム |
US10210464B2 (en) * | 2015-03-11 | 2019-02-19 | Qualcomm Incorporated | Online training for object recognition system |
GB201505864D0 (en) | 2015-04-07 | 2015-05-20 | Ipv Ltd | Live markers |
WO2016170618A1 (ja) * | 2015-04-22 | 2016-10-27 | 三菱電機株式会社 | 自動試験装置 |
US9459780B1 (en) * | 2015-04-29 | 2016-10-04 | Axure Software Solutions, Inc. | Documenting interactive graphical designs |
US9967467B2 (en) | 2015-05-29 | 2018-05-08 | Oath Inc. | Image capture with display context |
WO2016208037A1 (ja) * | 2015-06-25 | 2016-12-29 | 富士通株式会社 | プログラム生成装置、プログラム生成方法および生成プログラム |
US10169006B2 (en) | 2015-09-02 | 2019-01-01 | International Business Machines Corporation | Computer-vision based execution of graphical user interface (GUI) application actions |
US9619209B1 (en) | 2016-01-29 | 2017-04-11 | International Business Machines Corporation | Dynamic source code generation |
JP6410749B2 (ja) * | 2016-03-08 | 2018-10-24 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
US10048946B2 (en) | 2016-03-24 | 2018-08-14 | Microsoft Technology Licensing, Llc | Converting visual diagrams into code |
JP2018014073A (ja) * | 2016-07-23 | 2018-01-25 | 株式会社ジェイエスコーポレーション | スマートフォンアプリケーション作成支援システム |
US10733754B2 (en) | 2017-01-18 | 2020-08-04 | Oracle International Corporation | Generating a graphical user interface model from an image |
US10838699B2 (en) | 2017-01-18 | 2020-11-17 | Oracle International Corporation | Generating data mappings for user interface screens and screen components for an application |
US10360473B2 (en) | 2017-05-30 | 2019-07-23 | Adobe Inc. | User interface creation from screenshots |
CN107516005A (zh) | 2017-07-14 | 2017-12-26 | 上海交通大学 | 一种数字病理图像标注的方法和系统 |
US10255085B1 (en) * | 2018-03-13 | 2019-04-09 | Sas Institute Inc. | Interactive graphical user interface with override guidance |
-
2018
- 2018-06-01 US US15/996,311 patent/US10489126B2/en active Active
- 2018-07-06 JP JP2019570927A patent/JP6944548B2/ja active Active
- 2018-07-06 WO PCT/US2018/041038 patent/WO2019156706A1/en unknown
- 2018-07-06 CN CN201880041312.3A patent/CN110785736B/zh active Active
- 2018-07-06 EP EP18753267.6A patent/EP3692438B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7392162B1 (en) * | 2002-12-20 | 2008-06-24 | Rage Frameworks, Inc. | System and method for device developing model networks purely by modelling as meta-data in a software application |
CN101030138A (zh) * | 2006-02-27 | 2007-09-05 | 软件股份公司 | 应用构架 |
CN101464799A (zh) * | 2009-01-16 | 2009-06-24 | 天津大学 | 基于可视化建模的mpi并行程序设计系统及框架代码自动生成方法 |
US20140006962A1 (en) * | 2012-06-28 | 2014-01-02 | Sap Ag | Consistent Interface for Document Output Request |
US8943468B2 (en) * | 2012-08-29 | 2015-01-27 | Kamesh Sivaraman Balasubramanian | Wireframe recognition and analysis engine |
CN107454954A (zh) * | 2015-05-27 | 2017-12-08 | 谷歌公司 | 数据绑定相关性分析 |
CN107273117A (zh) * | 2017-05-25 | 2017-10-20 | 深圳市彬讯科技有限公司 | 一种编程友好型的敏捷代码自动生成系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427567A (zh) * | 2020-03-20 | 2020-07-17 | 杭州涂鸦信息技术有限公司 | 一种智能产品快速生成方法及其系统和设备 |
CN111427567B (zh) * | 2020-03-20 | 2023-08-18 | 杭州涂鸦信息技术有限公司 | 一种智能产品快速生成方法及其系统和设备 |
CN112114803A (zh) * | 2020-08-25 | 2020-12-22 | 济南浪潮高新科技投资发展有限公司 | 基于深度学习的ui界面的前端代码生成方法、设备及介质 |
CN112114803B (zh) * | 2020-08-25 | 2024-05-24 | 山东浪潮科学研究院有限公司 | 基于深度学习的ui界面的前端代码生成方法、设备及介质 |
CN112035120B (zh) * | 2020-08-31 | 2022-09-20 | 深圳平安医疗健康科技服务有限公司 | 基于医疗数据的逻辑代码获取方法、装置以及计算机设备 |
CN112035120A (zh) * | 2020-08-31 | 2020-12-04 | 平安医疗健康管理股份有限公司 | 基于医疗数据的逻辑代码获取方法、装置以及计算机设备 |
CN112836033A (zh) * | 2021-02-25 | 2021-05-25 | 平安银行股份有限公司 | 业务模型的管理方法、装置、设备及存储介质 |
CN112836033B (zh) * | 2021-02-25 | 2023-12-01 | 平安银行股份有限公司 | 业务模型的管理方法、装置、设备及存储介质 |
CN113031938A (zh) * | 2021-04-25 | 2021-06-25 | 中国电子系统技术有限公司 | 一种可视化界面图像转化为编程语言数据的方法及装置 |
CN113741902A (zh) * | 2021-09-10 | 2021-12-03 | 百融至信(北京)征信有限公司 | 一种基于模版的SaaS代码生成方法及系统 |
CN113741902B (zh) * | 2021-09-10 | 2024-03-29 | 百融至信(北京)科技有限公司 | 一种基于模版的SaaS代码生成方法及系统 |
CN117850786A (zh) * | 2024-03-07 | 2024-04-09 | 长江龙新媒体有限公司 | 一种基于用户偏好的自适应用户界面生成方法及系统 |
CN117850786B (zh) * | 2024-03-07 | 2024-05-10 | 长江龙新媒体有限公司 | 一种基于用户偏好的自适应用户界面生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
JP6944548B2 (ja) | 2021-10-06 |
CN110785736B (zh) | 2021-04-06 |
US10489126B2 (en) | 2019-11-26 |
EP3692438A1 (en) | 2020-08-12 |
JP2021501382A (ja) | 2021-01-14 |
WO2019156706A1 (en) | 2019-08-15 |
US20190250891A1 (en) | 2019-08-15 |
EP3692438B1 (en) | 2023-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110785736B (zh) | 自动代码生成 | |
US10733754B2 (en) | Generating a graphical user interface model from an image | |
US11119738B2 (en) | Generating data mappings for user interface screens and screen components for an application | |
US11481540B2 (en) | Discrepancy resolution processor and methods for implementing the same | |
US11455462B2 (en) | Table item information extraction with continuous machine learning through local and global models | |
Villán | Mastering OpenCV 4 with Python: a practical guide covering topics from image processing, augmented reality to deep learning with OpenCV 4 and Python 3.7 | |
US11410316B1 (en) | System and computer-implemented method for validation of label data | |
US11914951B2 (en) | Semantically-guided template generation from image content | |
CN112930537A (zh) | 文本检测、插入符号追踪以及活动元素检测 | |
CN112930538A (zh) | 文本检测、插入符号追踪以及活动元素检测 | |
CN114175018A (zh) | 新词分类技术 | |
US11972625B2 (en) | Character-based representation learning for table data extraction using artificial intelligence techniques | |
Malik et al. | Reimagining Application User Interface (UI) Design using Deep Learning Methods: Challenges and Opportunities | |
Newnham | Machine Learning with Core ML: An iOS developer's guide to implementing machine learning in mobile apps | |
EP4187452A1 (en) | Machine learning based entity recognition | |
US20240061883A1 (en) | Declarative modeling paradigm for graph-database | |
JP2024065102A (ja) | ロボットプロセス自動化のためのセマンティック自動化ビルダー | |
Paliwal | Dissertation on |
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 |