包含插件的应用程序的构建方法、装置、介质及电子设备
技术领域
本公开涉及软件开发技术领域,特别涉及一种包含插件的应用程序的构建方法、装置、介质及电子设备。
背景技术
随着互联网特别是移动互联网时代的到来,应用程序的功能越来越复杂,应用程序的版本需要不断的更新迭代,通过插件化的方式进行插件软件包的开发可以提高应用程序版本的更新效率,当用户不需要使用插件的功能时,插件也不会占用用户设备的存储空间。然而由于一个应用程序的集成程度很高,功能组件复杂,导致了要在选择功能组件进行插件开发时,选择的流程复杂,开发效率低下,如何在高度集成的应用程序中高效地选择合适的功能组件实现插件化是本领域技术人员要解决的问题。
发明内容
在软件开发技术领域,为了解决上述技术问题,本公开的目的在于提供一种包含插件的应用程序的构建方法、装置、介质及电子设备。
根据本申请的一方面,提供了一种包含插件的应用程序的构建方法,所述方法包括:
在开发第一应用程序之前,获取对应于所述第一应用程序的预设格式的需求文档,所述需求文档包括多个功能组件描述,所述功能组件描述与功能组件的标识对应;
根据所述需求文档中的功能组件描述,在与每一功能组件描述对应的功能组件的标识中,确定出需要按照插件化方式开发的功能组件的标识,作为插件化功能组件标识;
将所述插件化功能组件标识以及与所述插件化功能组件标识对应的功能组件描述发送至开发者终端,以使开发者按照与所述插件化功能组件标识对应的功能组件描述开发出与所述插件化功能组件标识对应的功能组件插件安装包;
当所述多个功能组件描述中与所述插件化功能组件标识对应的功能组件描述之外的其他功能组件描述所对应的工程代码被开发完毕之后,将所有所述工程代码打包为一个工程安装包;
将所述功能组件插件安装包加载至所述工程安装包,得到所述第一应用程序。
根据本申请的另一方面,提供了一种包含插件的应用程序的构建装置,所述装置包括:
需求文档获取模块,被配置为在开发第一应用程序之前,获取对应于所述第一应用程序的预设格式的需求文档,所述需求文档包括多个功能组件描述,所述功能组件描述与功能组件的标识对应;
确定模块,被配置为根据所述需求文档中的功能组件描述,在与每一功能组件描述对应的功能组件的标识中,确定出需要按照插件化方式开发的功能组件的标识,作为插件化功能组件标识;
发送模块,被配置为将所述插件化功能组件标识以及与所述插件化功能组件标识对应的功能组件描述发送至开发者终端,以使开发者按照与所述插件化功能组件标识对应的功能组件描述开发出与所述插件化功能组件标识对应的功能组件插件安装包;
打包模块,被配置为当所述多个功能组件描述中与所述插件化功能组件标识对应的功能组件描述之外的其他功能组件描述所对应的工程代码被开发完毕之后,将所有所述工程代码打包为一个工程安装包;
加载模块,被配置为将所述功能组件插件安装包加载至所述工程安装包,得到所述第一应用程序。
根据本申请的另一方面,提供了一种计算机可读程序介质,其存储有计算机程序指令,当所述计算机程序指令被计算机执行时,使计算机执行如前所述的方法。
根据本申请的另一方面,提供了一种电子设备,所述电子设备包括:
处理器;
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如前所述的方法。
本发明的实施例提供的技术方案可以包括以下有益效果:
本发明所提供的包含插件的应用程序的构建方法包括如下步骤:在开发第一应用程序之前,获取对应于所述第一应用程序的预设格式的需求文档,所述需求文档包括多个功能组件描述,所述功能组件描述与功能组件的标识对应;根据所述需求文档中的功能组件描述,在与每一功能组件描述对应的功能组件的标识中,确定出需要按照插件化方式开发的功能组件的标识,作为插件化功能组件标识;将所述插件化功能组件标识以及与所述插件化功能组件标识对应的功能组件描述发送至开发者终端,以使开发者按照与所述插件化功能组件标识对应的功能组件描述开发出与所述插件化功能组件标识对应的功能组件插件安装包;当所述多个功能组件描述中与所述插件化功能组件标识对应的功能组件描述之外的其他功能组件描述所对应的工程代码被开发完毕之后,将所有所述工程代码打包为一个工程安装包;将所述功能组件插件安装包加载至所述工程安装包,得到所述第一应用程序。
此方法下,由于需求文档能够真实反映应用程序开发任务的细节,通过先根据需求文档中的功能组件描述,可以较为准确地确定要将哪些功能组件开发为插件,实现了要实现插件化的功能组件的高效选择,在此基础上,通过将开发好的功能组件插件安装包加载到工程安装包上,可以使快速实现应用的落地,提高了包含插件的应用程序的开发效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种包含插件的应用程序的构建方法的应用场景示意图;
图2是根据一示例性实施例示出的一种包含插件的应用程序的构建方法的流程图;
图3是根据图2对应实施例示出的一实施例的步骤220的细节的流程图;
图4是根据图2对应实施例示出的另一实施例的步骤220的细节的流程图;
图5是根据一示例性实施例示出的一种包含插件的应用程序的构建装置的框图;
图6是根据一示例性实施例示出的一种实现上述包含插件的应用程序的构建方法的电子设备示例框图;
图7是根据一示例性实施例示出的一种实现上述包含插件的应用程序的构建方法的计算机可读存储介质。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
本公开首先提供了一种包含插件的应用程序的构建方法。应用程序可以是任何利用计算机来解决某类问题的程序代码的集合,此处的应用程序不是插件的宿主应用程序,而是插件应用程序和宿主应用程序的结合。插件(Plug-in)是一种遵循一定规范的应用程序接口编写出来的程序,一个插件不能脱离包含该插件的应用程序来执行,一个插件可以辅助应用程序实现某些应用程序不具备的功能,应用程序可以包含调用代码、函数库、数据等各种对象,这些对象可以用于插件执行特定的功能。包含插件的应用程序的构建是指组织生成一个包含插件的应用程序,生成的应用程序被安装在相应的终端并被执行时,既可以执行应用程序本身的功能,也可以执行插件的功能。
本公开的实施终端可以是任何具有运算和处理功能的设备,该设备可以与外部设备相连,用于接收或者发送数据,具体可以是便携移动设备,例如智能手机、平板电脑、笔记本电脑、PDA(Personal Digital Assistant)等,也可以是固定式设备,例如,计算机设备、现场终端、台式电脑、服务器、工作站等,还可以是多个设备的集合,比如云计算的物理基础设施。
优选地,本公开的实施终端可以为服务器或者云计算的物理基础设施。
图1是根据一示例性实施例示出的一种包含插件的应用程序的构建方法的应用场景示意图。如图1所示,包括服务器110、数据库120以及开发终端130,其中,数据库120和开发终端130分别通过通信链路与服务器110相连,在本实施例中,服务器110为本公开的实施终端,开发终端130是应用程序开发人员使用的终端,可以是任何具有运算和处理功能的设备,其可以与本公开的实施终端为相同类型的终端,也可以是不同类型的终端,可以与本公开的实施终端为同一终端,也可以为不同终端,例如,开发终端可以为笔记本电脑或者台式计算机。当软件开发人员要使用开发终端130进行项目开发时,比如开发一个客户端或者Android、IOS等移动操作***下的App(Application,应用程序)时,若开发的项目是大型项目,需要集成众多功能,可能需要把一项或多项功能的组件开发成插件,但如何在集成众多功能的项目中选择出合适的功能的组件进行插件化,是很困扰开发人员的一个问题。在本实施例中,数据库120存储了要开发的应用程序的需求文档,本公开的实施终端——服务器110在从数据库120获取到要开发的应用程序的需求文档后,根据该需求文档,可以自动准确地向开发人员反馈哪些功能组件需要进行插件化,帮助开发人员快速定位开发对象,从而提高开发效率。
值得一提的是,虽然在本实施例中,本公开的实施终端为服务器,并且应用程序的需求文档保存在数据库中,但在其他实施例或者具体应用中,可以根据需要将各种终端选为本公开的实施终端,并且可以将应用程序的需求文档保存在任意相同或者不同的终端上,本公开对此不作任何限定,本公开的保护范围也不应因此而受到任何限制。
图2是根据一示例性实施例示出的一种包含插件的应用程序的构建方法的流程图。本实施例可以由前述的服务器执行,如图2所示,可以包括以下步骤:
步骤210,在开发第一应用程序之前,获取对应于所述第一应用程序的预设格式的需求文档。
所述需求文档包括多个功能组件描述,所述功能组件描述与功能组件的标识对应。
第一应用程序可以是利用任意一种或多种语言编写的程序,比如可以是Java、C++等。
预设格式可以是任意能够记录文本信息的格式,比如可以是Json格式。xml格式、word格式、excel格式等。
需求文档是人为编写的用来指导软件开发设计的文档,又可以称为软件需求规格说明书,可以包含开发原则、设计标准、功能模块定义和概述等各种用于指导软件开发的内容。
通过对需求文档设定预设格式,可以使需求文档中内容的格式保持固定,从而方便准确地从中提取出特定的内容。
在一个实施例中,获取对应于所述第一应用程序的预设格式的需求文档这一步骤是根据开发者发来的获取需要按照插件化方式开发的功能组件的标识的请求执行的,其中,所述请求是在开发第一应用程序之前发送的。
在一个实施例中,所述开发者发来的获取需要按照插件化方式开发的功能组件的标识的请求中携带了所述第一应用程序的标识,所述获取对应于所述第一应用程序的预设格式的需求文档,包括:当接收到所述开发者发来的获取需要按照插件化方式开发的功能组件的标识的请求后,获取该请求中的所述第一应用程序的标识;利用所述标识在预设的数据库中查询与所述标识对应的预设格式的需求文档,作为对应于所述第一应用程序的预设格式的需求文档。
在一个实施例中,本公开的实施终端为所述开发者使用的终端。
在一个实施例中,开发者发送获取需要按照插件化方式开发的功能组件的标识的请求是利用本公开的实施终端之外的终端发送的。
功能组件是能够完成特定功能的程序模块或单元,是在整个应用程序中以功能划分的基本单位。而功能组件描述是对对应的功能组件的原理、实现目的、技术细节、技术流程、作用等一项或多项内容的罗列,通常为文本格式,可以包含字母、数字、文字等符号。当开发者阅读了一项功能组件描述,可以大致了解如何对功能组件进行开发、开发出的功能组件具体能够实现什么功能、开发出的功能组件的标准或者要求等。
在一个实施例中,所述在开发第一应用程序之前,获取对应于所述第一应用程序的预设格式的需求文档,包括:
在开发第一应用程序之前,判断对应于所述第一应用程序的需求文档是否为预设格式;
若所述需求文档不为预设格式,将获取所述需求文档并将所述需求文档转换为预设格式,得到预设格式的需求文档;
若所述需求文档为预设格式,获取所述预设格式的需求文档。
比如,所述需求文档可以为json格式,而预设格式可以为word格式,则可以将json格式转换为word格式。
步骤220,根据所述需求文档中的功能组件描述,在与每一功能组件描述对应的功能组件的标识中,确定出需要按照插件化方式开发的功能组件的标识,作为插件化功能组件标识。
功能组件的标识是用于唯一确定功能组件的身份的标识。
在一个实施例中,功能组件的标识为特定于功能组件的字符串。该字符串可以由字母、数字、下划线等符号组成。
在一个实施例中,功能组件的标识为功能组件的名称。
在一个实施例中,功能组件描述和与每一功能组件描述对应的功能组件的标识对应存储在对应于所述第一应用程序的预设格式的需求文档中。
在一个实施例中,功能组件描述和与每一功能组件描述对应的功能组件的标识对应存储在预设的功能组件描述与功能组件标识对应关系表中,通过查询该表,可以获取到与每一功能组件描述对应的功能组件的标识。
在一个实施例中,步骤220的具体步骤可以如图3所示。图3是根据图2对应实施例示出的一实施例的步骤220的细节的流程图,如图3所示,可以包括以下步骤:
步骤221,确定所述需求文档中的每一功能组件描述所包含的字符的数目。
在一个实施例中,所述需求文档中的每一功能组件描述为第一字符串,每一第一字符串与预设的第二字符串呈一一对应关系,在确定所述需求文档中的每一功能组件描述所包含的字符的数目之前,所述方法还可以包括:获取与预设的第二字符串对应的每一第一字符串,作为所述需求文档中的功能组件描述。
在一个实施例中,本公开的实施终端中内嵌有计数器,利用该计数器可以计算出所述需求文档中的每一功能组件描述所包含的字符的数目。
步骤222,基于各功能组件描述所包含的字符的数目,在与各功能组件描述对应的功能组件的标识中,获取插件化功能组件标识。
在一个实施例中,所述基于各功能组件描述所包含的字符的数目,在与各功能组件描述对应的功能组件的标识中,获取插件化功能组件标识,包括:
获取包含的字符的数目最大的功能组件描述;
将与获取功能组件描述对应的功能组件的标识,作为插件化功能组件标识。
功能组件为软件组件,由多行代码组成。由于一个功能组件描述的字符数目越大,说明该功能组件描述的对应功能组件所包含的代码量越多,也就说明对应功能组件被集成到应用程序上时,会占用用户设备更多的存储空间,通过将包含的字符的数目最大的功能组件描述对应的功能组件的标识作为插件化功能组件标识,可以使开发者在开发时将代码量较多的功能组件插件化,从而使应用程序中占用存储空间较大的一部分通过插件的形式实现,当用户不需要执行插件的功能时,插件的代码和资源不必在设备的本地存储,提高了插件的节省存储空间的效果;同时,由于代码量较多的功能组件出现漏洞的可能性较高,对这些代码量较多的功能组件更新的需求的可能性也越高,通过将代码量较多的功能组件插件化,进一步提升了软件升级更新的便捷性。
在一个实施例中,代码量为代码的行数。
在一个实施例中,所述基于各功能组件描述所包含的字符的数目,在与各功能组件描述对应的功能组件的标识中,获取插件化功能组件标识,包括:
对各功能组件描述按照所包含的字符的数目从大到小进行排序;
获取与排序在前预定数目的功能组件描述对应的功能组件的标识,作为插件化功能组件标识。
在一个实施例中,使用冒泡排序算法对各功能组件描述按照所包含的字符的数目从大到小进行排序。
预设数目可以是任意设定的数值,比如,当预定数目为5时,按照所包含的字符的数目从大到小进行排序在前5的功能组件描述对应的功能组件的标识为插件化功能组件标识。
由于按照所包含的字符的数目从大到小进行排序在前列的各功能组件描述所包含的字符的数目一般都是很大,这意味着这些功能组件描述的对应功能组件的功能可能都是很复杂,在开发这些功能组件时,由于要实现复杂的功能,会造成实现功能组件的代码量增加,进而使功能组件占用的存储空间较大。本实施例的好处在于,一方面,通过将开发成功能组件时可能占用存储较大的多个功能组件通过插件的方式来实现,进一步提升了插件的节省存储空间的效果;另一方面,预设数目的设置使得选出的插件化功能组件标识的数量是稳定的,进而可以使得为所述第一应用程序开发出的插件的数量能够维持在稳定的范围内。
在一个实施例中,所述基于各功能组件描述所包含的字符的数目,在与各功能组件描述对应的功能组件的标识中,获取插件化功能组件标识,包括:
获取所包含的字符的数目大于预设字符数目阈值的功能组件描述;
将与获取的功能组件描述对应的功能组件的标识,作为插件化功能组件标识。
如前所述,功能组件描述包含的字符的数目一般与要开发出对应的功能组件所使用的代码量以及开发出对应的功能组件所占用的存储空间成正相关的关系,当一个功能组件描述包含的字符的数目足够小时,说明要开发出对应的功能组件所使用的代码量一般不会很大,相应地,开发出的对应的功能组件所占用的存储空间也不会很多,在这种情况下,通过利用预设字符数目阈值来过滤掉包含的字符的数目不是很大的功能组件描述,使得这些功能组件描述对应的功能组件在实现时能够集成在应用程序中,保证了获取的插件化功能组件标识对应的功能组件描述包含的字符的数目都是足够大的,从而使得能够开发出的插件能够在较大程度上节省用户设备的存储空间,同时由于功能组件所占用的存储空间越大,也就越可能需要对其进行更新,提高了应用软件整体的更新效率,保证了对应用软件更新的便捷性。
在一个实施例中,所述基于各功能组件描述所包含的字符的数目,在与各功能组件描述对应的功能组件的标识中,获取插件化功能组件标识,包括:
对各功能组件描述按照所包含的字符的数目从大到小进行排序;
若排序的序号为预定值的功能组件描述包含的字符的数目大于预定字符数目阈值,则将与排序的序号小于所述预定值的功能组件描述对应的功能组件的标识作为插件化功能组件标识;
若排序的序号为预定值的功能组件描述包含的字符的数目小于预定字符数目阈值,则获取包含的字符的数目达到预定字符数目阈值的功能组件描述;
将与获取的功能组件描述对应的功能组件的标识作为插件化功能组件标识。
在一个实施例中,利用快速排序或者归并排序的算法对各功能组件描述按照所包含的字符的数目从大到小进行排序。
易于理解,功能组件描述、功能组件标识和要开发的功能组件中任意两者之间都是一一对应的关系,而如前所述,功能组件描述包含的字符的数目一般与对应要开发的功能组件的代码量以及对应要开发的功能组件占用的存储空间成正相关的关系,在本实施例中,一方面,通过在排序的序号为预定值的功能组件描述包含的字符的数目小于预定字符数目阈值时,将与包含的字符的数目达到预定字符数目阈值的功能组件描述对应的功能组件的标识作为插件化功能组件标识,即将代码量较大的要开发的功能组件进行插件化,使得要插件化的功能组件都有足够多的代码量,从而可以使得开发出的插件能够在较大程度上节省用户设备的存储空间,提高了应用软件整体的更新效率;另一方面,在排序的序号为预定值的功能组件描述包含的字符的数目小于预定字符数目阈值时,通过利用排序的序号来限制选出的插件化功能组件标识的数量,使得选出的插件化功能组件标识的数量是稳定的,进而可以使得为所述第一应用程序开发出的插件的数量能够维持在稳定的范围内,所以本实施例兼顾了插件化功能组件的数量和要插件化的功能组件的代码量之间的平衡。
下面继续回到图2,可以看出还包括以下步骤:
步骤230,将所述插件化功能组件标识以及与所述插件化功能组件标识对应的功能组件描述发送至开发者终端,以使开发者按照与所述插件化功能组件标识对应的功能组件描述开发出与所述插件化功能组件标识对应的功能组件插件安装包。
在一个实施例中,所述功能组件插件安装包为用java语言开发的安卓程序包,格式为.apk,所述插件化功能组件标识为类接口的名称,当开发者获得了所述插件化功能组件标识以及对应的功能组件描述,就可以根据类接口的名称以及对应的功能组件描述开发出类的具体实现,得到安卓程序包,即为所述功能组件插件安装包。
步骤240,当所述多个功能组件描述中与所述插件化功能组件标识对应的功能组件描述之外的其他功能组件描述所对应的工程代码被开发完毕之后,将所有所述工程代码打包为一个工程安装包。
不需要按照插件方式开发的工程代码即为所述应用程序宿主工程的代码,是应用程序的主要代码。
在一个实施例中,不需要按照插件方式开发的工程代码为用java语言开发安卓程序代码,和与每一功能组件描述对应的功能组件对应的工程代码被打包为一个.jar格式的程序包,所述将所有所述工程代码打包为一个工程安装包,包括:
将所有.jar格式的程序包打包成一个工程安装包。
在一个实施例中,当所述多个功能组件描述中与所述插件化功能组件标识对应的功能组件描述之外的其他功能组件描述所对应的工程代码被开发完毕之后,其他功能组件描述所对应的工程代码被同步至本端,由本端将所有所述工程代码打包为一个工程安装包。
步骤250,将所述功能组件插件安装包加载至所述工程安装包,得到所述第一应用程序。
将所述功能组件插件安装包加载至所述工程安装包是指将所述功能组件插件安装包嵌入到所述工程安装包,两者结合得到的整体即为第一应用程序,通过接口调用的方式可以使工程安装包中的代码调用所述功能组件插件安装包中的代码。
在一个实施例中,所述功能组件插件安装包和所述工程安装包都为安卓程序安装包,所述工程安装包分别加载所述功能组件插件安装包中的类和资源文件,并调用所述功能组件插件安装包的活动(Activity)组件、服务(Service)组件实现所述功能组件插件安装包的加载。
综上所述,根据图2实施例示出的包含插件的应用程序的构建方法,实现了要插件化的功能组件的高效选择,提高了软件开发整个流程中选择要插件化的功能组件的效率,从而在整体上提高了软件开发的效率。
图4是根据图2对应实施例示出的另一实施例的步骤220的细节的流程图。在图4实施例中,对应于所述第一应用程序的预设格式的需求文档为第一需求文档,所述需求文档中的功能组件描述为第一功能组件描述,如图4所示,包括以下步骤:
步骤221',获取对应于第二应用程序的需求文档,作为第二需求文档。
其中,所述第二需求文档包括多个第二功能组件描述。
第二应用程序是在第一应用程序之前已经开发完成并进行了更新升级的程序。
在一个实施例中,预设的数据库中存储了已经开发完成并进行了更新升级的每一应用程序的需求文档,通过查询预设的数据库,在预设的数据库中任取一个应用程序的需求文档,作为第二需求文档。
步骤222',获取第二应用程序的更新日志。
所述更新日志包含多条更新记录,每一条更新记录与所述第二需求文档中的一个第二功能组件描述对应。
在一个实施例中,本公开的实施终端中内嵌有脚本,可以通过运行该脚本,爬取所述第二应用程序的更新日志。
步骤223',根据所述第一需求文档中的第一功能组件描述和第二应用程序的更新日志中各条更新记录对应的第二功能组件描述,在与每一第一功能组件描述对应的第一功能组件的标识中,确定出需要按照插件化方式开发的第一功能组件的标识,作为插件化功能组件标识。
在一个实施例中,步骤223'可以包括以下步骤:
对第二应用程序的更新日志中各条更新记录对应的第二功能组件描述,按照各第二功能组件描述对应的更新记录的条数从大到小进行排序;
获取排序在前预定数目的第二功能组件描述;
针对排序在前预定数目的每一第二功能组件描述,在所述第一需求文档的各第一功能组件描述中获取与该第二功能组件描述的相似度最大的第一功能组件描述;
在与每一第一功能组件描述对应的第一功能组件的标识中,获取与针对每一第二功能描述对应获取的第一功能组件描述对应的第一功能组件的标识,作为插件化功能组件标识。
与第一功能组件描述相似的第二功能组件描述的更新记录的条数越多,说明若根据该第一功能组件描述开发出对应的第一功能组件,对该第一功能组件更新的频率可能较多,本实施例中,通过将和与更新记录的条数较多的第二功能组件描述的相似的第一功能组件描述对应的第一功能组件的标识作为插件化功能组件标识,从而可以将最可能进行高频更新的功能组件插件化,应用程序中插件化部分的更新升级无需经过应用市场的审核,保证了开发出的应用程序的更新效率。
在一个实施例中,所述针对排序在前预定数目的每一第二功能组件描述,在所述第一需求文档的各第一功能组件描述中获取与该第二功能组件描述的相似度最大的第一功能组件描述,包括:
提取排序在前预定数目的每一所述第二功能组件描述的关键词;
提取所述第一需求文档的各第一功能组件描述的关键词;
针对排序在前预定数目的每一第二功能组件描述,基于为该第二功能组件描述提取的关键词和为所述第一需求文档的每一第一功能组件描述提取的关键词,确定该第二功能组件描述和所述第一需求文档中的每一第一功能组件描述的相似度;
在所述第一需求文档的各第一功能组件描述中获取与该第二功能组件描述的相似度最大的第一功能组件描述。
在一个实施例中,利用如下的杰卡德相似度系数公式根据第一功能组件的关键词和第二功能组件的关键词计算两个功能组件的相似度:
其中,A为第一功能组件描述提取的关键词的集合,B为第二功能组件描述提取的关键词的集合,|A∩B|为第一功能组件描述提取的关键词的集合和第二功能组件描述提取的关键词的集合中共同包含的关键词的数目,|A∪B|为第一功能组件描述提取的关键词的集合和第二功能组件描述提取的关键词的集合的并集构成的集合中关键词的数目。
本公开还提供了一种包含插件的应用程序的构建装置,以下是本公开的装置实施例。
图5是根据一示例性实施例示出的一种包含插件的应用程序的构建装置的框图。如图5所示,装置500包括:
需求文档获取模块510,被配置为在开发第一应用程序之前,获取对应于所述第一应用程序的预设格式的需求文档,所述需求文档包括多个功能组件描述,所述功能组件描述与功能组件的标识对应;
确定模块520,被配置为根据所述需求文档中的功能组件描述,在与每一功能组件描述对应的功能组件的标识中,确定出需要按照插件化方式开发的功能组件的标识,作为插件化功能组件标识;
发送模块530,被配置为将所述插件化功能组件标识以及与所述插件化功能组件标识对应的功能组件描述发送至开发者终端,以使开发者按照与所述插件化功能组件标识对应的功能组件描述开发出与所述插件化功能组件标识对应的功能组件插件安装包;
打包模块540,被配置为当所述多个功能组件描述中与所述插件化功能组件标识对应的功能组件描述之外的其他功能组件描述所对应的工程代码被开发完毕之后,将所有所述工程代码打包为一个工程安装包;
加载模块550,被配置为将所述功能组件插件安装包加载至所述工程安装包,得到所述第一应用程序。
据本公开的第三方面,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:上述至少一个处理单元610、上述至少一个存储单元620、连接不同***组件(包括存储单元620和处理单元610)的总线630。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述“实施例方法”部分中描述的根据本发明各种示例性实施方式的步骤。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)621和/或高速缓存存储单元622,还可以进一步包括只读存储单元(ROM)623。
存储单元620还可以包括具有一组(至少一个)程序模块625的程序/实用工具624,这样的程序模块625包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备800(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器660通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
根据本公开的第四方面,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
参考图7所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品700,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。