CN113918170A - 一种软件产品开发方法、装置、设备及介质 - Google Patents

一种软件产品开发方法、装置、设备及介质 Download PDF

Info

Publication number
CN113918170A
CN113918170A CN202111397980.XA CN202111397980A CN113918170A CN 113918170 A CN113918170 A CN 113918170A CN 202111397980 A CN202111397980 A CN 202111397980A CN 113918170 A CN113918170 A CN 113918170A
Authority
CN
China
Prior art keywords
module
layer
program
application program
component group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111397980.XA
Other languages
English (en)
Inventor
薛逍哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Tuya Information Technology Co Ltd
Original Assignee
Hangzhou Tuya Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Tuya Information Technology Co Ltd filed Critical Hangzhou Tuya Information Technology Co Ltd
Priority to CN202111397980.XA priority Critical patent/CN113918170A/zh
Publication of CN113918170A publication Critical patent/CN113918170A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种软件产品开发方法、装置、设备及介质,包括:创建管理插件;管理插件中定义了应用程序的层级结构,包括架构层、模块层、组件组层;管理插件包括模块组装白名单,模块组装白名单包括构成应用程序的最小可运行程序的指定模块的第一标识信息;获取开发人员需要编译的目标模块的第二标识信息,并添加至模块组装白名单,得到新的模块组装白名单;利用管理插件以及新的模块组装白名单对应用程序的模块进行过滤,得到指定模块、目标模块的全部组件组,最小可运行程序对应的非指定模块的非指定组件组,组装为目标程序,对目标程序进行编译,以实现软件产品的开发。能够提升编译效率,从而提升软件产品的开发效率。

Description

一种软件产品开发方法、装置、设备及介质
技术领域
本申请涉及软件产品开发技术领域,特别涉及一种软件产品开发方法、装置、设备及介质。
背景技术
在当前软件产品开发过程中,比如Android产品,项目架构通常采用模块化开发方式,即每个开发人员负责各自的模块,最终集成到项目,这是业界比较流行的一种项目架构和协作方式。但随着业务越来越复杂,组件和模块(组件按照jar包来划分,一个组件即一个jar包,模块按照功能来划分,一个模块可以包含多个组件)的数量也随之变的非常庞大,开发人员每次调试都要编译所有模块,即使只是调试一个小功能,每个组件都要下载、解压、加载,平均编译1次要十几甚至几十分钟,增加了很多不必要的等待时间。甚至如果其他模块有问题还会导致编译失败而无法调试,需要等待其修复或回滚,这里又增加了很多不必要的等待时间,严重影响了开发效率。对于大型项目,非必要的编译耗时随着组件数量和开发人员的增多呈线性增长,这是一笔巨大的成本。如果开发人员尝试着把其他模块手动注释掉,只编译调试自己的模块,由于模块间存在相互依赖和影响,也可能导致编译不过,且这种方式要求开发人员对项目整体架构及模块间依赖关系非常熟悉,对于小型项目还好,对于庞大复杂的项目,明显是做不到的,非常容易出错。即使是花了很多时间成功去掉了其他模块,也很容易把相关调试引起的修改提交到代码仓库污染代码甚至造成bug,既浪费时间又容易出错。
发明内容
有鉴于此,本申请的目的在于提供一种软件产品开发方法、装置、设备及介质,能够提升模块调试时的编译效率,从而提升软件产品的开发效率。
其具体方案如下:
第一方面,本申请公开了一种软件产品开发方法,包括:
创建管理插件;其中,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息;
获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单;
利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组;
将所述全部组件组以及所述非指定组件组组装为目标程序,并对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。
可选的,所述第一标识信息和所述第二标识信息为模块的模块名或者模块对应的正则表达式。
可选的,所述架构层包括所述应用程序的框架层、基础层、以及业务层;其中,所述框架层下的模块层均对应于所述应用程序的框架模块,所述基础层下的模块层均对应于所述应用程序的基础模块,所述业务层下的模块层均对应于所述应用程序的业务模块。
可选的,还包括:
获取开发人员对所述架构层下的模块层定义的模块名,并在所述管理插件相应的架构层下创建该模块名。
可选的,还包括:
获取开发人员对所述模块层下的非指定组件组对应的组件组层定义的组件组名,并在所述管理插件相应的模块层下创建该组件组名。
可选的,所述管理插件还包括模块插拔控制开关;
相应的,所述方法还包括:
在测试环境或生产环境下,将所述模块插拔控制开关配置为关闭,以便对完整的所述应用程序进行编译和打包,得到相应的应用程序包。
可选的,在对所述目标程序进行编译之后,还包括:
运行所述目标程序;
利用预设调试组件显示所述应用程序中各模块的模块调试入口;
当监测到针对任一所述模块调试入口的点击操作,则跳转至该模块调试入口对应的模块,以进行对该模块的调试。
第二方面,本申请公开了一种软件产品开发装置,包括:
管理插件创建模块,用于创建管理插件;其中,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息;
模块标识获取模块,用于获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单;
应用程序过滤模块,用于利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组;
目标程序组装模块,用于将所述全部组件组以及所述非指定组件组组装为目标程序;
目标程序编译模块,用于对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。
第三方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的软件产品开发方法。
第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的软件产品开发方法。
可见,本申请先创建管理插件,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息,然后获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单,之后利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组,最后将所述全部组件组以及所述非指定组件组组装为目标程序,并对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。也即,本申请实施例利用管理插件实现对应用程序的分层管理,通过管理组件以及模块组装白名单对应用程序进行过滤,得到最小可运行程序对应的组件以及开发人员需要调试的模块的全部组件,组成相应的目标程序,开发人员只需到对该目标程序进行编译,无需编译整个应用程序,这样,能够提升模块调试时的编译效率,从而提升软件产品的开发效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种软件产品开发方法流程图;
图2为本申请公开的一种具体的模块分层示意图;
图3为本申请公开的一种具体的预设调试组件示意图;
图4为本申请公开的一种软件产品开发装置结构示意图;
图5为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,随着业务越来越复杂,软件产品的组件和模块的数量也随之非常庞大,开发人员每次调试都要编译所有模块,即使只是调试一个小功能,每个组件都要下载、解压、加载,平均编译1次要十几甚至几十分钟,增加了很多不必要的等待时间。甚至如果其他模块有问题还会导致编译失败而无法调试,需要等待其修复或回滚,这里又增加了很多不必要的等待时间,严重影响了开发效率。为此,本申请实施例提供了一种软件产品开发方案,能够提升模块调试时的编译效率,从而提升软件产品的开发效率。
参见图1所示,本申请实施例公开了一种软件产品开发方法,包括:
步骤S11:创建管理插件;其中,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息。
在具体的实施方式中,所述架构层包括所述应用程序的框架层、基础层、以及业务层;其中,所述框架层下的模块层均对应于所述应用程序的框架模块,所述基础层下的模块层均对应于所述应用程序的基础模块,所述业务层下的模块层均对应于所述应用程序的业务模块。
并且,可以获取开发人员对所述架构层下的模块层定义的模块名,并在所述管理插件相应的架构层下创建该模块名。
进一步的,可以获取开发人员对所述模块层下的非指定组件组对应的组件组层定义的组件组名,并在所述管理插件相应的模块层下创建该组件组名。
也即,本申请实施例中的管理插件,支持自定义模块名以及组件组名,以得到相应的模块层、组件组层。其中,指定组件组的名称由管理插件内部定义。
例如,基于DSL(即Domain Specific Language,领域特定语言)技术创建管理插件StructureDslPlugin,用于app架构分层及模块分层管理,支持自定义模块及内部分层,支持模块插拔,第一层也即架构层包含framework(即框架层)、basic(基础层)、business(即业务层),插件内部定义好的,开发人员无需关心。第二层即模块层为模块名称,不管是框架、基础还是业务,开发人员在这一层自定义自己的模块名。第三层为模块内部的分层,即组件组层,UI组件组用于放置纯业务相关的组件(如UI组件或非服务组件),service(即服务)和API(即Application Program Interface,应用程序接口)放置该模块的服务或者对外提供的服务化接口,开发人员也可以自定义块如custom。这样将一个模块内部结构做了分层,参见图2所示,图2为本申请实施例提供的一种具体的模块分层示意图。
这样,UI组件组由于存放的是纯业务相关的组件,因此,在开发人员进行编译自己负责的模块时,需要UI组件组及其他模块,其他模块的UI组件组中的组件无需编译,但是其他模块的非UI组件组是构成最小可运行APP需要的组件组,所以本申请实施例可以将UI组件组确定为指定组件。但是,通常应用程序中的账号模块是最小可运行程序的必不可少的模块,其他模块均依赖账号模块,因此,在进行过滤时,需要保留完整的账号模块,包括其UI组件组。也即,本申请实施例可以将账号模块确定为指定模块。使用插件后,模块管理如下:
Figure BDA0003365026750000061
Figure BDA0003365026750000071
可以理解的是,有了以上分层后,管理插件就很好地对模块进行了拆分和组合,整个项目包含的模块和依赖的组件非常清晰,可以快速定位到指定的模块或组件。每个组件也都属于特定的组,比如组件business_A_ui_module_A属于组business.business_A.ui,对于通过CI/CD(即持续集成/持续交付)***构建的组件,集成到项目时也可以添加到指定的组内,非常方便准确,且为模块插拔打下基础,在进行过滤时,快速定位指定的模块或组件。
步骤S12:获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单。
其中,所述第一标识信息和所述第二标识信息为模块的模块名或者模块对应的正则表达式。
也即,在具体的实施方式中,模块组装白名单支持用户名指定模块名或者匹配正则表达式。
其中,正则表达式是对字符串操作的一种逻辑公式,也即用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。比如要组装A模块和B模块,可在白名单中添加“tuyadsl.whiteList=.*\\.(A|B)\\..*”。这样编译和运行就只包含了这两个模块,而不受其他模块的影响。
步骤S13:利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组。
例如,对应用程序的所有模块进行过滤,得到了账号模块,白名单中A模块和B模块对应的全部组件组,以及其他模块的不包括UI组件组的组件组。框架层和基础层中的模块中的组件组全部过滤出来。也即,如果开发人员不配置白名单,利用本申请实施例提供的管理插件,可以得到最小可运行APP。开发人员添加白名单,可实现将其想要调试的模块加入,其他模块中的与APP运行无关的组件组过滤。
另外,所述管理插件还包括模块插拔控制开关;相应的,所述方法还包括:在测试环境或生产环境下,将所述模块插拔控制开关配置为关闭,以便对完整的所述应用程序进行编译和打包,得到相应的应用程序包。
也即,本申请实施例提供的管理插件提供了2个配置,是否打开模块插拔开关及模块组装白名单,这两个配置都在gradle.properties(相应应用程序项目的gradle配置文件)配置中。以上两个配置非常简单,可以随时修改,且只对本地环境生效,不影响其他开发人员和生产环境。
其中,模块插拔开关,默认开启,开启后,插件会根据应用程序的分层结构对模块内的组件组自动做过滤,只依赖指定的组件,以达到最小可运行app的目的,这样app运行起来,就只包含了基本框架、基础组件、服务化接口以及通用的帐号模块(所有模块都要依赖帐号模块),大大减少了非必要的组件数,提高了编译效率。开发人员如果想要调试自己关心的模块,可以加到白名单中,如果本地想要测试完整的app功能,也可以将开关关掉,非常灵活。以上是本地开发调试时的配置,在测试和生产环境的打包机器上,该开关是关掉的,打包时会包含所有的模块,以提供完整功能的apk(即Android应用程序包),用于测试或者发布应用市场。
步骤S14:将所述全部组件组以及所述非指定组件组组装为目标程序,并对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。
在具体的实施方式中,在对所述目标程序进行编译之后,还包括:
运行所述目标程序;
利用预设调试组件显示所述应用程序中各模块的模块调试入口;
当监测到针对任一所述模块调试入口的点击操作,则跳转至该模块调试入口对应的模块,以进行对该模块的调试。
需要指出的是,有些模块的入口可能比较深,需要依赖其他模块的跳转,但模块插拔后,可能没有入口模块,因此本申请实施例也提供了模块调试入口,模块通过指定URI(即Uniform Resource Identifier,统一资源标识符)实现跳转,一种隐式跳转方式,类似浏览器打开一个连接,运行app后即可打开指定的模块,进行相应的模块调试。在调试环境下,增加了模块调试入口,点击即可跳转到对应模块。该入口也通过打包插件控制,在正式环境下,该入口会被自动移除,不影响生产环境。也即,打包插件在调试环境下应用预设调试组件,在正式环境下,移除预设调试组件。
例如,参见图3所示,本申请实施例公开了一种具体的预设调试组件示意图。
基于本申请实施例提供的方案,对开发人员的本地环境编译时间进行采样测试,由于不同开发人员本地环境和机器配置不同,数据会有差异,因此,比较不同开发人员在同一本地环境和机器配置使用方案前后的不同数据,统计结果如表一所示。
其中,开发A至F表示开发人员,需要编译不同的模块或者模块组,表内时间为编译时间,多次编译结果以“/”分割。
表一
关闭模块插拔开关 开启模块插拔开关 编译速度提升
开发A 3m13s 1m34s 50%
开发B 2m40s 1m2s 60%
开发C 5m5s 1m49s 60%
开发D 5m10s/5m9s/4m32s 2m32s/2m11s/2m4s 50%
开发E 8m42s/6m33s/5m48s 3m39s/3m39s 50%
开发F 16m28s/15mm16s/14m58s 8m58s/8m45s 50%
可见,本申请实施例先创建管理插件,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息,然后获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单,之后利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组,最后将所述全部组件组以及所述非指定组件组组装为目标程序,并对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。也即,本申请实施例利用管理插件实现对应用程序的分层管理,通过管理组件以及模块组装白名单对应用程序进行过滤,得到最小可运行程序对应的组件以及开发人员需要调试的模块的全部组件,组成相应的目标程序,开发人员只需到对该目标程序进行编译,无需编译整个应用程序,这样,能够提升模块调试时的编译效率,从而提升软件产品的开发效率。
参见图4所示,本申请实施例公开了一种软件产品开发装置,包括:
管理插件创建模块11,用于创建管理插件;其中,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息;
模块标识获取模块12,用于获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单;
应用程序过滤模块13,用于利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组;
目标程序组装模块14,用于将所述全部组件组以及所述非指定组件组组装为目标程序;
目标程序编译模块15,用于对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。
可见,本申请实施例先创建管理插件,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息,然后获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单,之后利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组,最后将所述全部组件组以及所述非指定组件组组装为目标程序,并对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。也即,本申请实施例利用管理插件实现对应用程序的分层管理,通过管理组件以及模块组装白名单对应用程序进行过滤,得到最小可运行程序对应的组件以及开发人员需要调试的模块的全部组件,组成相应的目标程序,开发人员只需到对该目标程序进行编译,无需编译整个应用程序,这样,能够提升模块调试时的编译效率,从而提升软件产品的开发效率。
其中,所述第一标识信息和所述第二标识信息为模块的模块名或者模块对应的正则表达式。
其中,所述架构层包括所述应用程序的框架层、基础层、以及业务层;其中,所述框架层下的模块层均对应于所述应用程序的框架模块,所述基础层下的模块层均对应于所述应用程序的基础模块,所述业务层下的模块层均对应于所述应用程序的业务模块。
所述装置还包括,还包括:
模块名创建模块,用于获取开发人员对所述架构层下的模块层定义的模块名,并在所述管理插件相应的架构层下创建该模块名。
所述装置还包括,还包括:
组件组名创建模块,用于获取开发人员对所述模块层下的非指定组件组对应的组件组层定义的组件组名,并在所述管理插件相应的模块层下创建该组件组名。
进一步的,所述管理插件还包括模块插拔控制开关;
相应的,所述装置还用于:
在测试环境或生产环境下,将所述模块插拔控制开关配置为关闭,以便对完整的所述应用程序进行编译和打包,得到相应的应用程序包。
另外,所述装置还包括调试模块:用于在对所述目标程序进行编译之后,运行所述目标程序;利用预设调试组件显示所述应用程序中各模块的模块调试入口;当监测到针对任一所述模块调试入口的点击操作,则跳转至该模块调试入口对应的模块,以进行对该模块的调试。
参见图5所示,本申请实施例公开了一种电子设备20,包括处理器21和存储器22;其中,所述存储器22,用于保存计算机程序;所述处理器21,用于执行所述计算机程序,前述实施例公开的软件产品开发方法。
关于上述软件产品开发方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
并且,所述存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,存储方式可以是短暂存储或者永久存储。
另外,所述电子设备20还包括电源23、通信接口24、输入输出接口25和通信总线26;其中,所述电源23用于为所述电子设备20上的各硬件设备提供工作电压;所述通信接口24能够为所述电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;所述输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的软件产品开发方法。
关于上述软件产品开发方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种软件产品开发方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种软件产品开发方法,其特征在于,包括:
创建管理插件;其中,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息;
获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单;
利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组;
将所述全部组件组以及所述非指定组件组组装为目标程序,并对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。
2.根据权利要求1所述的软件产品开发方法,其特征在于,所述第一标识信息和所述第二标识信息为模块的模块名或者模块对应的正则表达式。
3.根据权利要求1所述的软件产品开发方法,其特征在于,所述架构层包括所述应用程序的框架层、基础层、以及业务层;其中,所述框架层下的模块层均对应于所述应用程序的框架模块,所述基础层下的模块层均对应于所述应用程序的基础模块,所述业务层下的模块层均对应于所述应用程序的业务模块。
4.根据权利要求1所述的软件产品开发方法,其特征在于,还包括:
获取开发人员对所述架构层下的模块层定义的模块名,并在所述管理插件相应的架构层下创建该模块名。
5.根据权利要求1所述的软件产品开发方法,其特征在于,还包括:
获取开发人员对所述模块层下的非指定组件组对应的组件组层定义的组件组名,并在所述管理插件相应的模块层下创建该组件组名。
6.根据权利要求1所述的软件产品开发方法,其特征在于,所述管理插件还包括模块插拔控制开关;
相应的,所述方法还包括:
在测试环境或生产环境下,将所述模块插拔控制开关配置为关闭,以便对完整的所述应用程序进行编译和打包,得到相应的应用程序包。
7.根据权利要求1至6任一项所述的软件产品开发方法,其特征在于,在对所述目标程序进行编译之后,还包括:
运行所述目标程序;
利用预设调试组件显示所述应用程序中各模块的模块调试入口;
当监测到针对任一所述模块调试入口的点击操作,则跳转至该模块调试入口对应的模块,以进行对该模块的调试。
8.一种软件产品开发装置,其特征在于,包括:
管理插件创建模块,用于创建管理插件;其中,所述管理插件中定义了应用程序的层级结构,所述层级结构包括所述应用程序的架构层、所述架构层下的模块层、以及所述模块层下的组件组层,所述组件组层中存在指定组件组对应的组件组层;并且,所述管理插件还包括模块组装白名单,所述模块组装白名单包括构成所述应用程序的最小可运行程序的指定模块的第一标识信息;
模块标识获取模块,用于获取开发人员需要编译的所述应用程序的目标模块的第二标识信息,并添加至所述模块组装白名单中,得到新的模块组装白名单;
应用程序过滤模块,用于利用所述管理插件以及所述新的模块组装白名单对所述应用程序的模块进行过滤,得到所述指定模块以及所述目标模块的全部组件组,以及所述最小可运行程序对应的非指定模块的非指定组件组;
目标程序组装模块,用于将所述全部组件组以及所述非指定组件组组装为目标程序;
目标程序编译模块,用于对所述目标程序进行编译,以实现对所述应用程序对应的软件产品的开发。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的软件产品开发方法。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的软件产品开发方法。
CN202111397980.XA 2021-11-19 2021-11-19 一种软件产品开发方法、装置、设备及介质 Pending CN113918170A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111397980.XA CN113918170A (zh) 2021-11-19 2021-11-19 一种软件产品开发方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111397980.XA CN113918170A (zh) 2021-11-19 2021-11-19 一种软件产品开发方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN113918170A true CN113918170A (zh) 2022-01-11

Family

ID=79247773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111397980.XA Pending CN113918170A (zh) 2021-11-19 2021-11-19 一种软件产品开发方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113918170A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140033183A1 (en) * 2009-07-13 2014-01-30 Adobe Systems,Inc. Debugging method using program inspectors to debug programs developed using frameworks and libraries
CN107632827A (zh) * 2016-07-12 2018-01-26 阿里巴巴集团控股有限公司 应用的安装包的生成方法及装置
CN109358841A (zh) * 2018-08-15 2019-02-19 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
CN109460222A (zh) * 2018-11-07 2019-03-12 广州虎牙科技有限公司 应用程序的组件化方法、装置、设备及存储介质
CN110750245A (zh) * 2019-10-17 2020-02-04 杭州涂鸦信息技术有限公司 一种应用程序开发方法及***和设备
CN111367501A (zh) * 2020-02-13 2020-07-03 深圳壹账通智能科技有限公司 软件在线开发方法、装置、设备和存储介质
CN111610982A (zh) * 2019-02-26 2020-09-01 阿里巴巴集团控股有限公司 一种应用程序开发的方法、装置和相关***
CN112181425A (zh) * 2020-02-27 2021-01-05 王建 基于云平台的软件开发包的编译方法及装置
CN112748946A (zh) * 2019-10-30 2021-05-04 腾讯科技(深圳)有限公司 应用程序安装文件生成方法和装置、计算设备、存储介质
CN113656040A (zh) * 2021-08-11 2021-11-16 广州方硅信息技术有限公司 程序组件调试更新方法及其相应的装置、设备、介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140033183A1 (en) * 2009-07-13 2014-01-30 Adobe Systems,Inc. Debugging method using program inspectors to debug programs developed using frameworks and libraries
CN107632827A (zh) * 2016-07-12 2018-01-26 阿里巴巴集团控股有限公司 应用的安装包的生成方法及装置
CN109358841A (zh) * 2018-08-15 2019-02-19 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
CN109460222A (zh) * 2018-11-07 2019-03-12 广州虎牙科技有限公司 应用程序的组件化方法、装置、设备及存储介质
CN111610982A (zh) * 2019-02-26 2020-09-01 阿里巴巴集团控股有限公司 一种应用程序开发的方法、装置和相关***
CN110750245A (zh) * 2019-10-17 2020-02-04 杭州涂鸦信息技术有限公司 一种应用程序开发方法及***和设备
CN112748946A (zh) * 2019-10-30 2021-05-04 腾讯科技(深圳)有限公司 应用程序安装文件生成方法和装置、计算设备、存储介质
CN111367501A (zh) * 2020-02-13 2020-07-03 深圳壹账通智能科技有限公司 软件在线开发方法、装置、设备和存储介质
CN112181425A (zh) * 2020-02-27 2021-01-05 王建 基于云平台的软件开发包的编译方法及装置
CN113656040A (zh) * 2021-08-11 2021-11-16 广州方硅信息技术有限公司 程序组件调试更新方法及其相应的装置、设备、介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
XPLEEMOON: "基于运行时组件化/模块化的架构实践", Retrieved from the Internet <URL:https://mp.weixin.qq.com/s/-tJZsIUBICYZJRf6Fgbaww> *
杜鹏程: "基于软件职责和结构的分层架构模式识别及重构", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 6, 15 June 2020 (2020-06-15) *
杨充: "Android组件化开发时间和案例分享|融合数10个项目模块", Retrieved from the Internet <URL:https://juejin.im/post/5c46e6fb6fb9a049a5713bcc> *

Similar Documents

Publication Publication Date Title
CN102622241B (zh) 一种软件升级方法及装置
CN110008113B (zh) 一种测试方法、装置、电子设备
CN105808266B (zh) 代码运行方法及装置
US20110258600A1 (en) Using a dsl for calling apis to test software
US20120060148A1 (en) Assigning runtime artifacts to software components
CN112394942A (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
CN105446775A (zh) 游戏安装包的配置化生成方法及装置
CN113805890B (zh) 小程序跨应用迁移方法、设备、终端、***及存储介质
CN109889377A (zh) 基于Openstack的NFV***中部署VNF的方法和装置
WO2023155940A1 (zh) 小程序的编译方法、小程序的运行方法及装置、存储介质
CN110543427A (zh) 测试用例存储方法、装置、电子设备及存储介质
US10866803B2 (en) Generating interaction libraries
CN112148278A (zh) 可视化的区块链智能合约框架及智能合约开发部署方法
CN111399828A (zh) 一种基于模型驱动的逻辑设备建模方法及终端
CN109684192A (zh) 基于数据处理的本地测试方法、设备、存储介质及装置
CN111435312B (zh) 应用程序管理方法、装置及电子设备
CN113918170A (zh) 一种软件产品开发方法、装置、设备及介质
US7487227B2 (en) Scripting engine having a sequencer table and a plurality of secondary tables for network communication software
CN108021389B (zh) 一种Android中引入ARouter的方法及装置
CN114020604A (zh) 一种基于工作流的自动化测试方法及装置
CN112783791B (zh) 接口测试案例的生成方法及装置
CN115098158A (zh) Sdk打包方法和装置、计算机设备及存储介质
CN113448874A (zh) 一种单元测试脚本的生成方法及装置
CN106778301A (zh) 基于cocos2d‑x的可靠的跨平台数据存储方法及***
CN112965733A (zh) 组件库更新方法、装置、电子设备和可读存储介质

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