将视觉示图转换成代码的制作方法

文档序号:16366605发布日期:2018-12-22 08:28阅读:270来源:国知局
将视觉示图转换成代码的制作方法

通常,当计算机程序开发团队(例如,一个或多个设计架构师、开发者、程序员、编码员等)开始设想诸如应用(“app”)之类的计算机程序的实施方式时,首先创建计算机程序的示图。例如,开发团队的成员经常聚集在协作环境中,例如在会议室中进行会议以示出(例如,绘制)示图,例如,在干擦白板上。从那时起,将白板上的示图转换成代码结构的过程是通常需要次优的时间利用的手动过程。例如,在白板上绘制的示图可能需要被转换(例如,复制)成数字格式,并且然后被传递给开发者(例如,编码员、程序员)。然后,开发者花费相当的时间来审阅示图的设计架构以识别示图的各方面(例如,组件、组件的结构、组件的交互和/或组件的行为)。在审阅设计架构之后,开发者可以开始为计算机程序创建代码结构(例如,从头开始编写代码)。时常地,在创建代码结构的同时,开发者不知道和/或不熟悉经由特定编程平台变得可用的编程特征。例如,开发者可能无法利用与特定功能相关联的最新且最适用的设计模式和最佳实践。



技术实现要素:

本文描述的技术和系统将图解的计算机程序的视觉说明转换成等效的、结构化的代码解决方案。转换可以与任何编程语言相关联地实现,使得示图中的组件随后可以映射到它们等效的、结构化的源代码。映射基于对示图中示出的组件的计算机辨识。映射还可以基于对示图中示出的组件的结构、示图中示出的组件的交互和/或示图中示出的组件的行为的计算机辨识。一旦开发者将代码解决方案最终化,源代码就可以被编译以验证它正确地执行。

在本文讨论的各种示例中,技术和系统实现了接收计算机程序的示图的工具。示图可以包括图像(例如,在由相机捕获的在白板上绘制的示图的照片),或者示图可以包括最初以电子形式生成的内容(例如,使用计算机实现的数字绘图程序来以数字格式生成示图)。示图表示计算机程序的设计架构,并且因此,示图可以示出个别组件以及个别组件的结构和个别组件之间的交互。工具被配置为(例如,光学地)辨识示图中示出的组件的特性。在一些实施方式中,工具使用特性来确定与设计架构相关联的编程语言。然后,对于示出组件中的个别组件,工具还使用特性来将组件与一个或多个代码模板相关联。代码模板被预先填充有编程语言的源代码。随后,工具使得代码模板能够输出(例如,显示)在与用户相关联的设备上,使得用户可以提供更新和最终化源代码的输入。

在各种实施方式中,用于识别组件和/或将组件映射到代码模板的辨识的特性可以包括关键字、视觉关系(例如,表示交互)和/或视觉形状。例如,关键字可以标记和/或命名组件,使得工具可以使用关键字将组件映射到代码模板。在另一示例中,视觉关系可以可视地连接两个或更多个组件(例如,在其间绘制箭头的组件、彼此相邻示出的组件使得它们在彼此接触、在另一组件的顶部上可视地示出的组件、示图中的一系列组件中的组件的视觉位置、两个组件之间的间隔或距离等),使得工具可以使用视觉连接将组件映射到代码模板。在又一示例中,可以使用视觉形状(例如,正方形、圆形、菱形、椭圆形、为部件预定义的独特形状等)来将第一类型或分类的第一组件与第二类型或分类的第二组件区分开,使得工具可以使用视觉形状来将组件映射到代码模板。

在各种实施方式中,工具还可以使用特性来识别各种编码选项、将代码模板配置为呈现各种编码选项、使得编码选项能够由用户选择和/或推荐编码选项。例如,编码选项可以反映最新和最常使用的(例如,最流行的):与特定编程语言相关联地实现的特定功能的设计模式和/或与特定编程语言相关联地实现的特定功能的最佳实践。因此,经由使用与辨识的特性相关联的代码模板,可以高效地生成结构化代码解决方案。换言之,开发者不需要从头开始生成或编写代码,而是使用预先填充的代码来审阅代码模板、更新预先填充的代码和/或对编码选项进行选择,使得代码解决方案可以被最终化。

提供本概括是为了以简化的形式介绍对构思的选择,所述构思将在以下详细描述中被进一步描述。本概括不旨在确定所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。例如,术语“技术”可以指代如由以上描述的上下文允许的并贯穿本文档的系统、方法、计算机可读指令、引擎、模块、算法、硬件逻辑单元和/或操作。

附图说明

参考附图描述了详细描述。在附图中,附图标记的最左边的数字标识在其中附图标记首次出现的附图。不同附图中的相同附图标记指示相似或相同的元素。

图1是示出将示出计算机程序(例如,应用(“app”))的设计架构的示图转换成代码解决方案的框图。

图2是描绘示出了被配置为将示图转换成代码解决方案的设备和/或模块的示例性环境的示意图。

图3是将示图转换成代码解决方案的示例性过程的流图。

图4是为代码模板中的一部分代码提供推荐编码选项并接收对选择的编码选项的用户选择的示例性过程的流图。

图5是示出代码模板中的一部分代码与经由特定编程平台变得可用于该部分代码的编码选项(例如,最佳设计模式、最佳实践等)之间的关联的示意图。

图6是用于创建代码模板并将代码模板与组件的特定特性(例如,关键字、视觉形状、视觉关系等)相关联的示例性过程的流图。

具体实施方式

本文描述的技术和系统提供了用于与计算机程序的开发相关联地使用的工具。例如,计算机程序开发团队(例如,一个或多个设计架构师、开发者、程序员、编码员等)可以使用工具来使用示出的示图(例如,在干擦白板上绘制的、使用之类的数字绘图程序绘制的,等等)高效地生成代码解决方案。在各种示例中,工具接收示出设计架构的示图(例如,可视地捕获示图的上载的图像)。然后,工具可以执行辨识技术以识别示图中示出的组件的特性。例如,个别组件的特性可以包括书写在组件上的关键字、组件的视觉形状以及组件与设计架构中示出的其他组件之间的视觉关系。使用所识别的特性,工具可以确定与示图相关联的和/或示出将用其将示图中示出的组件映射到先前生成的代码模板的编程语言(例如,采用人类可读格式)。

在各种实施方式中,个别的代码模板可以被预先填充有以所确定的编程语言编写的源代码。预先填充在代码模板中的源代码可以是“基本”代码,使得它为开发者提供了理解正被编码的功能的良好起点,同时还使得开发者能够进行针对特定计算机程序和/或特定计算机程序的开发团队的期望而定制的改变。因此,代码模板是交互式的并且被输出(例如,显示),使得开发者可以提供输入以更新源代码(例如,修改预先填充的代码、添加新代码、删除预先填充的代码等)。此外,一系列代码模板可以为实现正被开发的计算机程序所需的一个或多个代码解决方案提供初始结构。

如本文使用的,示图的“组件”可以表示包含语义相关的功能、数据、硬件或其组合的计算机程序(例如,应用)的单独或模块化部分。例如,可以在示图中示出不同的组件以强调开发团队的关注点分离(例如,为使计算机程序正确执行所需实现的单独任务)。在一些示例中,组件可以与编程平台(例如,诸如visual之类的集成开发环境(ide))的特定功能相关联。为此,组件可以表示硬件方面、软件或软件和硬件二者的组合。例如,组件可以表示:软件包、服务(例如,网络服务、联网服务、存储服务、云服务等)、资源(例如,网络资源、联网资源、存储资源、云资源等)、设备、服务器、接口(例如,应用编程接口(api))、调试器、编辑器等。因此,组件用于分离经由编程平台变得对于开发者可用的多种功能。在一些实例中,示图中示出的组件用名称(例如,组件的标准或常用名称)标记,所述名称包括一个或多个关键字以将一个组件与另一组件区开。

因此,经由本文提供的技术和系统,可以直接(例如,在有很少用户参与或没有用户参与的情况下)将示图的说明转换成代码模板,并且开发者不必为生成鲁棒的代码基础作为起点而从事审阅和分析设计架构。相反,通过将示图的示出的组件映射到被预先填充有基本代码的代码模板,开发者被自动提供了编码可以从其开始的初始结构。因此,经由使用代码模板,编程可以跨各种开发者组更加一致,并且/或者编程还可以是更高质量的,这是因为编码风格和编码规则的变化减少了(如果不是无关紧要的话)。更进一步地,经由消除任务(例如,识别和分析示图的组件和/或生成实现计算机程序的代码解决方案所需的基本代码和/或初始结构)节省了程序开发过程中的宝贵时间。

图1是示出将示出计算机程序的设计架构或计算机程序(例如,“app”)的一部分的示图转换成代码解决方案的框图100。示图在表面(例如,物理表面和/或数字表面)上被创建(例如,绘制)。例如,表面可包括白板、粉笔板、显示屏、触摸屏、投影仪屏幕等。在第一示例中,示图可以由用户(例如,在会议室中使用白板的开发者、在触摸屏表面上使用数字笔的开发者等)手绘102。在第二示例中,示图可以由用户使用计算机绘图工具104来生成(例如,由用户在诸如之类的计算机制图程序内生成)。

如以上描述的,示图可以包括多个不同的组件,其中,个别组件包括计算机程序的单独或模块化部分,其包含语义相关的功能、数据、硬件或其组合。因此,手绘示图102和计算机生成的示图104二者都包括第一组件(例如,“组件1”)、第二组件(例如,“组件2”)、第三组件(例如,“组件3”)、第四组件(例如“组件4”)和第五组件(例如“组件5”)。在各种示例中,示图可以包括统一建模语言(uml)图,例如类图、序列图、实体-关系(er)图、用例图或其组合。虽然图1示出了示图中的五个组件,但是在本文档的上下文中应当理解,示图可以包括任何数量的组件(例如,一个、三个、八个、十个、十五个、五十个、一百个等等)。

一旦被绘制和提交,工具106就对示图执行辨识技术108以识别其中的个别组件以及组件的特性。例如,示图的图像可以被捕获(例如,由相机)并被上传到工具106,从而辨识可以被执行。在另一示例中,以数字格式创建的示图(例如,使用数字笔在触摸屏上手绘的、由用户在计算机制图程序中生成的等)可以直接被上载到工具,从而辨识可以被执行。在各种实施方式中,工具106被配置为使用光学辨识技术(例如,光学字符辨识(ocr))、形状辨识/分类技术(例如,边的数量、边的长度、角度检测等)和/或其他辨识技术以识别示图的特性。

如以上描述的,特性可以包括关键字、视觉形状和/或视觉关系。使用特性,工具106可以确定要在其中实现示图的设计架构的预期的编程语言。因此,工具106被配置为使用特性来创建与示图中的各种组件相对应的语义上下文。此外,工具106被配置为识别被预先填充有可用于为计算机程序定义代码解决方案110的源代码的代码模板。

代码模板由工具106生成和/或提供作为用于开发者高效且有效地执行以下操作的手段:审阅与示图的示出的组件相关联的预先填充的代码,提供对与示图的示出的组件相关联的预先填充的代码的改变,添加到与示图的示出的组件相关联的预先填充的代码,和/或对被配置为进一步将代码导入代码模板中的嵌入的编码选项进行选择。因此,代码模板以中间形式提供代码,使得在代码被最终化之前代码可以由开发者高效地审阅和修改,而开发者不再需要从头开始创建所有代码。

在各种示例中,关键字可以标记和/或命名组件,使得关键字可以由工具106用于将组件映射到代码模板。在一些实例中,关键字可以包括缩写词。因此,示图102、104中示出的“组件1”、“组件2”、“组件3”、“组件4”和“组件5”中的每一者都可以包括描述组件的一个或多个关键字。关键字可以概括地适用于各种编程语言,或者关键字可以特定地与特定编程语言相关联。关键字的示例可以包括:“网络”、“服务器”、“oem”(原始设备制造商)、“包”、“数据库”、“连接”、“网”、“浏览器”、“调试器”、“编辑器”、“帐户”、“电子邮件”、“付款”、“发送”、“接收”、“表单”、“文件”、“.net”、“azure”、“blob”、“mvc”(模型-视图-控制器)、“sql”(结构化查询语言)等。关键字可以用于将个别组件或多个组件与代码模板112或代码模板114相关联(例如,映射),所述代码模板112或代码模板114显示在开发者的用户设备上以供审阅。

在另一示例中,视觉关系可以可视地连接两个或更多个组件,使得视觉连接可以由工具106用于将组件或多个组件映射到代码模板112或代码模板114。例如,可以基于示出“组件1”与“组件2”交互(例如,经由指示数据以双向方式交换的箭头)并且“组件5”发送信息到“组件4”(例如,经由指示数据仅以单向发送的箭头)的示图102、104来辨识视觉关系。在另一示例中,可以基于示出“组件3”和“组件4”彼此相邻的示图102、104或者基于“组件3”和“组件4”之间的间隔或距离来辨识视觉关系。在又一示例中,可以基于示出“组件3”和“组件4”被放置在“组件2”上或顶部上的示图102、104来辨识视觉关系。在一些实例中,可以使用关键字(例如,“连接”、“发送”、“接收”、“检索”等)来描述视觉关系。

在又一示例中,视觉形状可以用于将第一类型或分类的第一组件与第二类型或分类的第二组件区分开,使得视觉形状可以由工具106用于映射组件到代码模板112或代码模板114。如示图102、104示出的,形状可以包括正方形、矩形、椭圆形或另一常见的几何形状。作为替代,可以由工具106为诸如数据库或数据存储库之类的特定组件(例如,示图102、104中的“组件1”)预定义视觉形状。

因此,示图的特性可以被工具106辨识并随后使用,以将组件映射到对应的代码模板112、114,作为生成和最终化(例如,基于用户审阅和输入)可用于实现计算机程序或计算机程序的一部分的代码解决方案110的起点。

在各种实施方式中,工具106还可以使用辨识的特性来识别各种编码选项116并呈现各种编码选项116以用于在用户设备上的代码模板114内进行选择。例如,编码选项116可以反映最新和最常用的设计模式和/或最佳实践。设计模式可以由特定编程平台创建并使其可用,并且可以包括对给定编程上下文内的常见问题的可重用解决方案。最佳实践还可以由特定的编程平台创建并使其可用,并且可以包括开发社区已随时间获知的可以帮助提高计算机程序的质量的规则。

作为示例,图1中的编码选项116与可用于处理“blobclient”的瞬态连接问题的不同代码相关联。在特定示例中,第一选项可以与瞬态故障处理块相关联(例如,与服务相关联地实现的选项),并且第二选项可以与断路器处理块相关联(例如,也可以是与服务相关联地实现的选项)。因此,编码选项116可以提供不同的解决方案以解决相同或类似的问题,其中,每个解决方案具有取决于计算机程序(例如,如示图中示出的)的设计架构要考虑的优点和缺点。在一些示例中,还可以显示对与编码选项相关联的特征的描述,以帮助开发者决定选择哪个选项。在一些实例中,工具106被配置为推荐编码选项(例如,对显示的编码选项进行排序,使得第一有序编码选项是推荐的选项并且显示的后续有序编码选项是备选选项;提供标识推荐的编码选项的视觉区别等)。在选择了选项(例如,用户点击“此处”)时,工具106还将与选择的选项相关联的另外的代码导入代码模板114中。

因此,经由使用呈现给开发者的与识别的特性相关联的代码模板112、114,可以高效地最终化和验证结构化代码解决方案110。换言之,开发者不需要从头开始生成或编写代码,而是审阅被预先填充有源代码的代码模板、更新预先填充的源代码并且/或者对编码选项116进行选择,使得代码解决方案110可以被最终化。

图2是描绘示出了被配置为将示图转换成代码解决方案的设备和/或模块示例性环境200的示意图。更具体而言,示例性环境200可以包括服务提供者202、服务提供者204、用户设备206和网络208。

服务提供者202被配置为实现本文描述的工具(例如,以上关于图1描述的工具106)。因此,服务提供者202可以包括促进程序开发辅助的实体、服务器、平台、数据中心、云资源等中的一者或多者。服务提供者202可以在非分布式计算环境中实现,或者可以在分布式计算环境中实现。如所示,服务提供者202可以包括设备210(例如,服务器),其中,个别设备可以包括处理器212、存储器214以及网络接口216,使得设备210可以在网络208上与用户设备206和/或服务提供者204进行通信。为此,网络208可以是有线和/或无线的,包括广域网(wan)、局域网(lan)、个域网(pan)、特定于数据中心的网络(例如,内联网、存储区域网络(san))、移动电话网络(mtn)等。设备之间的通信可以使用本领域已知的任何种类的通信协议来发送和接收信息和/或消息,所述通信协议例如传输控制协议/互联网协议(tcp/ip)和/或用户数据报协议(udp)。

处理器212可以是单个处理单元或多个单元,每个所述单元可以包括多个不同的处理单元。处理器212可以包括微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元(cpu)、图形处理单元(gpu)等。替代地或另外地,本文描述的部分或全部技术可以至少部分地由一个或多个硬件逻辑组件执行。例如并不作为限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、状态机、复杂可编程逻辑器件(cpld)、其他逻辑电路、片上系统(soc)和/或基于指令执行操作的任何其他设备。除了其他能力之外,处理器212还可以被配置为提取并执行存储在存储器214中的计算机可读指令。

存储器214可以包括计算机可读介质中的一者或组合。如本文使用的,“计算机可读介质”包括计算机存储介质和通信介质。

计算机存储介质包括以用于存储信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质,所述信息例如为计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质包括但不限于相变存储器(pcm)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程rom(eeprom)、闪速存储器或其他存储技术、光盘rom(cd-rom)、数字多功能盘(dvd)或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备或者可用于存储信息以供计算设备访问的任何其他介质。

相反,通信介质包括计算机可读指令、数据结构、程序模块或调制的数据信号(例如,载波)中的其他数据。如本文定义的,计算机存储介质不包括通信介质。

存储器214还可以包括操作系统,其被配置为管理设备210内和耦合到设备210的硬件和服务,以有益于其他设备组件和其他设备。作为示例,存储器214可以包括辨识模块218、模板识别模块220、代码输出模块222、编码选项模块224和数据存储库226,以上每一项都在本文中被进一步描述。如本文使用的,术语“模块”旨在出于讨论的目而表示对可执行指令的示例性划分,并且不旨在表示任何类型的要求或所需的方法、方式或组织。因此,虽然描述了各种“模块”,但是它们的功能和/或类似功能可以不同地布置(例如,组合成更少数量的模块、分成更大数量的模块等等)。此外,尽管某些功能和模块在本文中被描述为由可在处理器上执行的软件和/或固件实现,但是在其他实施例中,任何或所有模块可以全部或部分地由硬件(例如,专门处理单元等)实现以执行所描述的功能。

辨识模块218被配置为经由网络208从用户设备206接收示图228。如以上描述的,示图228可以包括从用户设备206上传到设备210的手绘示图的图像(例如,由相机捕获)。或者,示图228可以包括经数字格式化并且从用户设备206上传到设备210的内容(例如,使用数字笔在触摸屏上手绘的内容、由用户在计算机制图程序中生成的内容等)。辨识模块218被配置为在示图228上实现辨识技术以识别组件的特性230。特性230可以包括以下各项中的一者或多者:关键字、视觉关系和/或视觉形状。

用户设备206可以包括桌上型计算设备、服务器设备、移动设备、膝上型计算设备、平板设备、可穿戴设备、游戏控制台、媒体播放器设备、相机或任何其他种类的计算设备。

模板识别模块220被配置为使用示图228的识别的特性230来确定与示图228的设计架构相关联的编程语言。模板识别模块220还被配置为使用特性来将个别组件与一个或多个预先填充有源代码的代码模板相关联。因此,数据存储库226存储与第一编程语言相关联的一组代码模板232、与第二编程语言相关联的一组代码模板234、与第三编程语言相关联的一组代码模板236等等。被存储在数据存储库226中的每个代码模板可以与一个或多个关键字、一个或多个视觉关系、一个或多个视觉形状或其组合相关联。因此,模板识别模块220使用示图228的特性230将示出的组件映射到一系列代码模板238,所述一系列代码模板238提供用于示图228的设计架构的代码解决方案。所识别的代码模板也可以基于特性230而被结构化(例如,排序、按顺序排列等)。

然后,代码输出模块222被配置为将识别的代码模板238提供给用户设备206(例如,使得代码模板238被显示),使得用户(例如,开发者)可以与代码模板238交互并且高效且有效地:审阅代码模板238中的预先填充的代码、提供对代码模板238中的预先填充的代码的改变、添加到代码模板238中的预先填充的代码。

编码选项模块224被配置为识别代码模板238中与多个不同编码选项相关联的一部分代码。为了确定不同的编码选项,编码选项模块224可以与由服务提供者204的设备和/或资源托管的各种编程平台240进行交互。例如,编码选项可以与可以适用于基于特定设计架构(例如,基于示图中辨识的组件和特性)的计算机程序的设计模式和/或最佳实践相关联。在各种实施方式中,服务提供者202和服务提供者204可以是相同的服务提供者。

图3、图4和图6个别地示出了采用本文描述的技术的示例性过程。示例性过程被示出为逻辑流图,其每个操作表示可以用硬件、软件或其组合实现的一系列操作。在软件的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,所述指令当由一个或多个处理器执行时,将设备或系统配置为执行所记载的操作。通常,计算机可执行指令包括执行特定功能的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且可以以任何顺序和/或并行地组合任何数量的所描述的操作以实现过程。此外,可以省略个别操作中的任一者。

图3是将示图转换成代码解决方案的示例性过程300的流图。示例性过程300可以与图1和图2中示出的各种元素相关联地实现。

在302处,示出用于计算机程序的至少一部分的设计架构的组件的示图被接收。例如,程序开发团队可以在白板上绘制示图、在示图完成时捕捉示图的图片并将示图的图片上载到工具106(例如,辨识模块218)。

在304处,对示图执行辨识技术以识别组件的特性。例如,特性可以包括关键字、视觉形状、视觉关系或其组合。

在各种实施方式中,在306处,与示图的设计架构相关联的编程语言被确定。例如,模板识别模块220可以使用特性将示图228与编程语言之一相关联,用于所述编程语言之一的代码模板被存储在数据存储库226中。

在308处,特性用于将示图的组件与代码模板相关联。例如,模板识别模块220可以辨识标记或命名(例如,标识)组件的关键字,并使用关键字将组件映射到一个代码模板或多个代码模板。在另一示例中,辨识模块218可以辨识组件的视觉形状并使用视觉形状将组件映射到一个代码模板或多个代码模板。在又一示例中,辨识模块218可以辨识组件的视觉关系并使用视觉关系将组件映射到一个代码模板或多个代码模板。视觉关系可以包括:示图中在第二组件的顶部上(例如,上方)可视地示出的第一组件、示图中在第一组件和第二组件之间的视觉连接(例如,箭头或线)、示图中第一组件在一系列组件中的视觉位置(例如,流程图中的组件的位置)、示图中与第二组件的第二视觉位置相比的第一组件的第一视觉位置(例如,组件之间的测量的距离或间隔)或示图中与第二组件的大小相比的第一组件的大小。

在310处,代码模板被输出(例如,显示在用户设备上)。例如,代码输出模块222可以输出与示图228中示出的一个或多个第一组件相关联的一个或多个第一代码模板(例如,基于辨识的结构、交互和行为)。

在312处,用于修改代码模板的用户输入被接收。例如,开发者可以与显示的代码模板进行交互以:审阅预先填充的代码、提供对预先填充的代码的改变、添加到预先填充的代码和/或对被配置为进一步将代码导入代码模板中的嵌入的编码选项进行选择(如本文关于图4进一步描述的)。在各种实施方式中,代码输出模块222被配置为与需要用特定代码更新的代码模板的区域(例如,高亮的区域)相关联地提供视觉区别。

在314处,基于用户输入来更新代码模板。在各种示例中,在接收到指示用户想要查看下一代码模板的指令时,过程返回到310,并且代码输出模块222可以在输出第一或先前代码模板之后输出或与示图228中示出的一个或多个第二或后续组件相关联的一个或多个第二或后续代码模板(例如,基于辨识的结构、交互和行为)。因此,工具106被配置为基于组件的特性以结构化和有序的格式提供用于设计架构的代码模板。该组代码模板输出的子集可以与代码解决方案相关联。

在316处,一旦是代码解决方案的部分的代码模板由用户审阅、更新和/或批准,代码解决方案就被验证了。例如,工具106可以分析代码解决方案的语法和语义,并确定代码解决方案将正确地执行。在一些实施方式中,工具106使用应用编程接口(api)来与外部编程平台240进行交互以验证代码解决方案。

图4是用于为代码模板中的一部分代码提供推荐的编码选项并接收对选择的编码选项的用户选择的示例性过程400的流图。示例性过程400可以与图1和图2中示出的各种元素相关联地实现,并且还与图3的示例性过程300中的操作310、312和314相关联地实现。

在402处,代码模板内与多个不同编码选项相关联的一部分代码被识别。例如,编码选项模块224可以使用特性230来确定基于示图228的设计架构的计算机程序将实现特定功能,并且特定功能可以以多于一种方式被编码。可以基于由编程平台240提供的不同选项的知识(例如,根据设计模式和/或最佳实践)来做出该确定。

在404处,代码模板被配置有使得用户能够查看和/或选择多个不同编码选项的功能。例如,编码选项模块224可以描述代码模板的相关区域内的不同编码选项,从而向用户通知不同的编码选项(例如,图1的代码模板114中的引用116)。

在各种示例中,在406处,可以基于示图的特性来提供推荐的编码选项。例如,编码选项模块224可以将显示的编码选项排序,使得第一有序编码选项是推荐的选项,并且显示的后续有序编码选项是备选选项。在另一示例中,编码选项模块224可以提供标识推荐的编码选项的视觉区别。本文关于图5进一步描述了对编码选项的推荐。

在408处,对编码选项的用户选择被接收。例如,用户可以单击编码选项以提供选择。

在410处,基于选择的编码选项,进一步用另外的代码来填充代码模板内的该部分代码。

图5是示出代码模板504(例如,经由用户设备206被显示)中的一部分代码与经由特定编程平台240变得可用于该部分代码的编码选项506(例如,最佳设计模式、最佳实践等)之间的关联502的示意图500。个别的编码选项506可以包括描述(例如,特征、选项应当何时被使用等),和代码模板504要被填充有的实际代码,并且编码选项506及其描述和代码被存储在经由服务提供者204实现并与编程平台240相关联的数据存储库508中。

代码模板504包括功能510,并且功能包括:第一部分的代码512(例如,代码模板504的预先填充的源代码)、第二部分的代码514(例如,代码模板504的预先填充的源代码)和第三部分的代码516(例如,代码模板504的预先填充的源代码)。然而,基于示图228的辨识的特性230,已经确定第二部分的代码514可以以各种方式实现。因此,代码模板可以提供显示区域518的视觉区别,其中,选择的部分代码514被显示,从而用户知道可以进行选择或者必须进行选择以将代码解决方案最终化。

代码模板504可以在显示区域518中呈现编码选项。在各种实施方式中,代码模板504可以基于示图228的辨识的特性230来提供推荐的编码选项。例如,显示区域518中的第一编码选项可以是“推荐的”选项。显示区域518中的第二编码选项可以是“第一备选”推荐的选项。并且显示区域518中的第三编码选项可以是“第二备选”推荐的选项。

在一些示例中,在代码模板504中呈现的编码选项可以是经由编程平台240变得可用的更大的编码选项集506的子集。此外,编码选项506可以基于它们对于特定设计架构的特性的适用性来被评估和排序。换言之,在显示区域518中呈现的第一编码选项可以与存储在数据存储库508中的推荐的编码选项相对应,在显示区域518中呈现的第二编码选项可以与存储在数据存储库508中的第一备选推荐的编码选项相对应,并且在显示区域518中呈现的第三编码选项可以与存储在数据存储库508中的第二备选推荐的编码选项相对应。如所示,可以以特定顺序推荐这前三个编码选项。然而,数据存储库508还可以包括“不推荐的”第四编码选项和/或将与特定设计架构“不兼容”的第五编码选项。基于评估,第四编码选项和/或第五编码选项不在代码模板504内呈现以供用户选择。

图6是用于创建代码模板并将代码模板与绘制的组件的特定特性(例如,关键字、视觉形状、视觉关系等)相关联的示例性过程600的流程图。示例性过程600可以与图1和图2中示出的各种元素相关联地实现。

在602处,用于编程语言的代码模板被创建。例如,当代码模板用于计算机程序的未来开发时,代码模板的创建者可以编写代码以充当预先填充的代码。

在604处,代码模板的特性被定义。例如,代码模板的创建者可以定义如果在示图中被辨识则可以将示图的组件映射到代码模板的关键字、视觉形状和/或视觉关系。

在各种示例中,在606处,代码模板中的一部分代码与不同的编码选项相关联。例如,代码模板的创建者可以确定该部分代码可以不同地实现,并且因此,可以将指令插入代码模板中,所述指令用于(i)基于特定特性来自动选择编码选项或(ii)访问编程平台240以识别不同的编码选项(例如,根据设计模式和最佳实践)。

在608处,代码模板和定义的特性被存储在一起(例如,在数据存储库226中)。

示例条款

示例a:一种设备,包括:一个或多个处理器;存储器;以及一个或多个模块,其存储在存储器中并且可由一个或多个处理器执行以执行以下操作:接收示出计算机程序的至少一部分的设计架构的示图,设计架构包括多个组件;辨识多个组件的特性;至少部分地基于多个组件的特性来确定与设计架构相关联的编程语言;对于多个组件中的个别组件,至少部分地基于特性将组件与一个或多个代码模板相关联,其中,个别代码模板被预先填充有编程语言的源代码;以及使得一个或多个代码模板输出在与用户相关联的设备上。

示例b:示例a的设备,其中,示图包括手绘图,并且多个组件的特性是光学辨识的。

示例c:示例a或示例b的设备,其中,一个或多个模块还可由一个或多个处理器执行以执行以下操作:确定一个或多个代码模板中的一部分代码与多个不同的编码选项相关联;将一个或多个代码模板配置有用于呈现多个不同编码选项中的至少两个编码选项并且实现对选择的编码选项的选择的功能;以及用功能使得一个或多个代码模板输出在与用户关联的设备上。

示例d:示例c的设备,其中,至少两个编码选项包括推荐的编码选项。

示例e:示例a至示例d中任一项的设备,其中,个别组件表示计算机程序的包含语义相关功能的至少一部分的单独或模块化部分。

示例f:示例a至示例e中任一项的设备,其中:特性包括标记或命名多个组件的关键字;以及基于关键字中的关键字到一个或多个代码模板的映射,组件与一个或多个代码模板相关联。

示例g:示例a至示例f中任一项的设备,其中:特性包括多个组件的视觉形状;以及基于视觉形状中的视觉形状到一个或多个代码模板的映射,组件与一个或多个代码模板相关联。

示例h:示例a至示例g中任一项的设备,其中:特性包括多个组件之间的视觉关系;以及基于视觉关系中的视觉关系到一个或多个代码模板的映射,组件与一个或多个代码模板相关联。

示例i:示例h的设备,其中,视觉关系包括以下关系之一:示图中在第二组件的顶部上可视地示出的第一组件;示图中在第一组件和第二组件之间的视觉连接;示图中第一组件在一系列组件中的视觉位置;与示图中的第二组件的第二视觉位置相比的示图中的第一组件的第一视觉位置;或者示图中与第二组件的大小相比的第一组件的大小。

示例j:示例a至示例i中任一项的设备,其中,一个或多个代码模板包括多个代码模板,并且多个代码模板至少部分地基于多个组件的特性来构造。

虽然以上关于设备描述了示例a至示例j,但是在本文档的上下文中应当理解,可以另外地和/或替代地将示例a至示例j的主题实现:实现为方法、经由存储在一个或多个计算机存储介质上的可执行指令实现和/或通过系统实现。

示例k:一种方法,包括:接收示出计算机程序的至少一部分的设计架构的示图,设计架构包括多个组件;由一个或多个处理器辨识多个组件中的个别组件的特性;至少部分地基于特性将个别组件映射到代码模板,其中,代码模板被预先填充有源代码;使得代码模板输出在与用户相关联的设备上;从与用户相关联的设备接收更新代码模板中的源代码的用户输入;以及至少部分地基于用户输入来更新代码模板。

示例l:示例k的方法,其中,个别组件表示计算机程序的包含语义相关功能的至少一部分的单独或模块化部分。

示例m:示例k或示例l的方法,其中:特性包括标记或命名个别组件的一个或多个关键字;以及基于一个或多个关键字到代码模板的映射,个别组件与代码模板相关联。

示例n:示例k至示例m中任一项的方法,其中:特性包括个别组件和另一组件之间的视觉关系;以及基于视觉关系到代码模板的映射,个别组件与代码模板相关联。

示例o:示例k至示例n中任一项的方法,其中:特性包括个别组件和另一组件之间的视觉关系;以及基于视觉关系到代码模板的映射,个别组件与代码模板相关联。

示例p:示例k至示例o中任一项的方法,还包括:将代码模板配置有用于呈现至少两个编码选项并且实现对选择的编码选项的选择的功能;从与用户相关联的设备接收对选择的编码选项的选择并作为用户输入;以及用与选择的编码选项相关联的另外的源代码填充编码模板。

虽然以上关于方法描述了示例k至示例p,但是在本文档的上下文中应当理解,可以另外地和/或替代地将示例k至示例p的主题实现:经由存储在一个或多个计算机存储介质上的可执行指令实现、通过设备实现和/或通过系统实现。

示例q:一种或多种计算机存储介质,其存储指令,所述指令当由一个或多个处理器执行时,使得设备执行以下操作:辨识示图中示出的多个组件的特性;对于多个组件中的个别组件,使用特性将组件与一个或多个代码模板相关联,其中,个别代码模板被预先填充有源代码;确定一个或多个代码模板中的一部分代码与多个不同的编码选项相关联;将一个或多个代码模板配置有用于呈现多个不同编码选项中的至少两个编码选项并且实现对至少两个编码选项的选择的功能;以及用功能使得一个或多个代码模板输出在与用户关联的设备上。

示例r:示例q的一种或多种计算机存储介质,其中:特性包括标记或命名多个组件的关键字;以及基于关键字中的关键字到一个或多个代码模板的映射,组件与一个或多个代码模板相关联。

示例s:示例q或示例r的一种或多种计算机存储介质,其中:特性包括多个组件的视觉形状;以及基于视觉形状中的视觉形状到一个或多个代码模板的映射,组件与一个或多个代码模板相关联。

示例t:示例q至示例s中任一项的一种或多种计算机存储介质,其中:特性包括多个组件之间的视觉关系;以及基于视觉关系中的视觉关系到一个或多个代码模板的映射,组件与一个或多个代码模板相关联。

虽然以上关于计算机存储介质描述了示例q至示例t,但是在本文档的上下文中应当理解,可以另外地和/或替代地将示例q至示例t的主题实现:实现为方法、通过设备实现和/或通过系统实现。

结论

尽管本公开内容可以使用特定于结构特征和/或方法动作的语言,但是本发明不限于本文描述的特定特征或动作。相反,特定特征和动作被公开为实现本发明的说明性形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1