发明内容
为解决现有技术存在的一个或多个问题,本发明提供了软件项目开发方法及装置、计算机存储介质、计算机设备,以达到提高软件项目的开发效率、降低开发成本以及缩短研发周期等至少一个技术目的。
为实现上述技术目的,本发明公开了一种软件项目开发方法,该方法可包括但不限于如下的至少一个步骤。
创建用于当前软件项目的至少一个功能目录。
从所述功能目录中读取需要的至少一个目录作为目标目录。
在所述目标目录下存储附带有基于功能需求的基本代码的多个目标文件,所述目标文件内的基本代码用于实现当前软件项目中的服务功能。
接收并执行用于当前软件项目开发的功能调用指令,得到一个或多个附带有基于功能需求的基本代码的目标文件,以在得到的目标文件基础上添加功能需求代码。
进一步地,所述在所述目标目录下存储附带有基于功能需求的基本代码的多个目标文件包括:
读取与所述设定功能匹配的原始文件。
依据至少一个所述原始文件创建附带有基于功能需求的基本代码的多个目标文件。
将所述多个目标文件存放至所述目标目录,以将所述附带有基于功能需求的基本代码的多个目标文件自动整合到所述目标目录中。
进一步地,所述依据至少一个所述原始文件创建附带有基于功能需求的基本代码的多个目标文件包括:
读取原始文件和用于表示原始文件的当前路径的原始字符串。
在用于表示所述目标目录的字符串基础上生成与所述原始字符串相对应的目标字符串。
基于所述原始文件中内容创建通过所述目标字符串表示的具有预设存储架构的多个目标文件。
进一步地,所述在所述目标目录下存储附带有基于功能需求的基本代码的多个目标文件包括:
将存储至所述目标目录下的所有目标文件后缀名称统一修改为用于表征所述设定功能的功能名称。
进一步地,该方法还包括:
接收后缀名称修改指令。
基于所述后缀名称修改指令修改所述目标目录下存储的一个或多个目标文件后缀名称,以使被修改后缀名称的所述目标文件对应的功能页面上线或者下线。
进一步地,所述在所述目标目录下存储附带有基于功能需求的基本代码的多个目标文件包括:
将存储至所述目标目录下的目标文件前缀名称分别作为所属业务名称。
进一步地,所述执行所述功能调用指令包括:
解析所述功能调用指令,并根据功能调用指令的解析结果确定待调用目标文件的属性信息。
基于所述待调用目标文件的属性信息从所述目标目录中获取所述待调用目标文件。
利用所述待调用目标文件内代码对当前软件项目开发实例进行修改。
进一步地,所述根据功能调用指令的解析结果确定待调用目标文件的属性信息包括:
从所述功能调用指令的解析结果中得到用于全局执行环境的软链接信息。
将所述软链接信息作为待调用目标文件的属性信息。
进一步地,所述功能目录包括项目源码管理目录、项目配置管理目录、项目接口管理目录、项目路由管理目录、项目模板管理目录及项目脚本管理目录、自定义功能管理目录、全局指令管理目录、全局插件管理目录及全局组件管理目录。
进一步地,所述功能调用指令包括创建指令、删除指令、插入指令、页面上线指令、页面下线指令、埋点指令、拦截指令及分享指令。
为实现上述的技术目的,本发明还提供了一种软件项目开发装置,该软件项目开发装置包括:
目录创建模块,用于创建至少一个功能目录,所述至少一个功能目录用于当前软件项目。
目录读取模块,用于从所述功能目录中读取需要的至少一个目录作为目标目录。
文件存储模块,用于在所述目标目录下存储附带有基于功能需求的基本代码的多个目标文件,所述目标文件内的基本代码用于实现当前软件项目中的服务功能。
指令执行模块,用于接收并执行用于当前软件项目开发的功能调用指令,用于得到一个或多个附带有基于功能需求的基本代码的目标文件,以在得到的目标文件基础上添加功能需求代码。
为实现上述的技术目的,本发明还提供了一种计算机存储介质,其上存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本发明任一实施例中所述软件项目开发方法的步骤。
为实现上述的技术目的,本发明还能够提供一种计算机设备,计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,所述计算机可读指令被处理器执行时,使得处理器执行本发明任一实施例中所述软件项目开发方法的步骤。
本发明的有益效果为:本发明能够明显地提高软件项目的开发效率。特别是在面临大规模或超大规模的软件项目开发时,本发明能够极大地降低管理和维护成本。本发明能够实现将业务路由自动注入到软件项目相应的开发实例中,该方式明显提高了软件项目开发效率。本发明基于不同文件区分不同业务路由,不仅使得页面上线功能和页面下线功能更容易实现,而且明显方便了业务路由的后期维护以及管理。进一步来说,与传统手动创建需求文件、手动添加路由以及手动注册路由等繁琐过程相比,本发明能够在执行相应指令后自动生成相应的文件夹和带指定后缀名称(例如route.js)的文件。路由下的预设后缀名称(例如index.js)的文件会自动读取如上的带指定后缀名称(例如route.js)的文件,路由下的预设后缀名称(例如index.js)的文件读取相应文件后会自动注入到相应的实例中,则这些实例就能访问对应路由,从而使效率得到极大的提升。本发明能够通过指令生成相应的功能文件夹,并在得到附带有基于需求的基本代码的文件之后进行业务添加时,直接在这个文件基础上添加功能需求代码即可,可见本发明能够极其方便和快捷地实现路由的自动注入。
本发明能够为开发者提供事先统一生成的通用模板,需要相应功能时直接调用需要的模板即可,省去了再次开发的过程,而且统一了不同开发人员实现相同服务功能的代码,方便了后期的维护和管理。可见本发明所提供的技术方案能够极大地提高开发者的工作效率,而且有助于整个软件项目后期的管理和维护,降低了开发和管理成本,具有广泛的应用前景,市场潜力巨大。
具体实施方式
下面将参照附图更详细地描述本发明提供的一种软件项目开发方法及装置、计算机存储介质、计算机设备示例性实施方式。虽然附图中显示了本发明的示例性实施方式,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本发明,并且能够将本发明的范围完整且准确地传达给本领域的技术人员。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
在软件项目开发过程中,开发者往往是中规中矩地按照实际需求一步一步地进行功能实现。在小项目开发时,参与人员数量较少,按部就班地进行开发工作即可。但是,在面临大规模或者超大规模软件项目开发时,参与的开发者人数较多。不同的开发者进行功能实现时,经常会出现开发相同的服务功能模块的情况,然而不同开发者实现服务功能的代码一般都不同。这种情况导致软件项目管理和维护成本非常高,软件项目开发效率不高,这个问题一直困扰着本领域技术人员。鉴于此,本发明提供了一种能够优化以及精简项目创建方式的技术方案,极大提高大规模和超大规模软件项目开发效率和降低项目开发成本投入。
如图1所示,本发明一个或多个实施例可具体提供一种软件项目开发方法,以解决传统软件项目开发过程中存在的重复开发工作过多、成本高等问题。具体地,该软件项目开发方法包括但不限于如下的至少一个步骤。
首先,创建用于当前软件项目的至少一个功能目录,以合理地对用于当前软件项目的功能目录进行规划。应当理解的是,功能目录种类可以是多个,而且每个种类下的功能目录数量至少为一个。具体实施时,本发明中涉及的功能目录可包括但不限于项目源码管理目录(例如用src命名)、项目配置管理目录(例如用config命名)、项目接口管理目录(例如用api命名)、项目路由管理目录(例如用router命名)、项目模板管理目录(例如用template命名)及项目脚本管理目录(例如用createView命名)等等,不同软件项目所使用的功能目录种类当然并不限于此。
其次,从已经创建的功能目录中可读取至少一个目录作为目标目录。以项目路由管理目录为例,本发明一个或多个实施例能够实现统一定制化业务路由管理,从而为开发者们提供需要的业务路由。以项目模板管理目录为例,本发明一个或者多个实施例能够为同一软件项目中的不同开发者们提供基于统一代码定义的模板,从而为开发者们提供需要的模板组件。可理解的是,本发明不仅能够用于为开发者们提供模板组件和业务路由,还可根据实际的软件项目需求为开发者提供通用接口、可用脚本、配置情况信息等等。
再次,在得到的目标目录下存储与附带有基于功能需求的基本代码的多个目标文件,而且目标文件内代码能够用于实现当前软件项目中的服务功能。可见本发明一个或多个实施例采用了单独设置的附带有基于功能需求的基本代码的多个目标文件的方式,从而极大地方便开发者们进行软件项目开发等工作。应当理解的是,附带有基于功能需求的基本代码的多个目标文件可以基于已有代码段自动生成,或者根据实际软件项目单独地定制化编写(一次编写后可永久、反复地利用)。
具体地,在目标目录下存储与附带有基于功能需求的基本代码的多个目标文件可包括:读取与设定功能匹配的原始文件,依据读取的至少一个原始文件创建附带有基于功能需求的基本代码的一个或者多个目标文件,将创建的多个目标文件存放至目标目录,以将附带有基于功能需求的基本代码的多个目标文件自动整合到目标目录中。如图2所示,本发明一个或多个实施例能够通过文件“克隆”功能基于原始文件创建目标文件,原始文件中的内容可理解为被复制到目标文件中,并存储至目标目录下。可见本发明能够实现项目管理自动新建文件功能,具体实施时,本发明一个或多个实施例能够通过require.context函数或其他类似功能的函数实现该动态导入文件的功能(即如上的文件“克隆”功能)。
应当理解的是,本发明一个或多个实施例在目标目录下存储与附带有基于功能需求的基本代码的多个目标文件还可以包括:将存储至目标目录下的所有目标文件或部分目标文件的后缀名称统一修改为用于表征设定功能的功能名称,和/或将存储至目标目录下的部分目标文件或所有目标文件前缀名称分别修改为所属业务名称。以业务路由为例,可将定义业务路由的目标文件名称统一修改为xxx.route.js,其中结尾route.js作为目标文件后缀名称,xxx作为文件前缀名称,本发明一些实施例如果将前缀xxx修改为address,则address.route.js可表示地址管理路由。在此基础上,在本发明一些改进的实施例中,能够接收后缀名称修改指令,基于后缀名称修改指令修改目标目录下存储的一个或者多个目标文件后缀名称,以使被修改后缀名称的目标文件对应的功能页面上线或者下线;相对于常规必须基于复杂操作的页面上线和页面下线的方式,该上线或者下线方式具有容易实现且可靠性较高等优点。另外,与传统软件项目中将所有的业务路由代码都写在一个文件中、不做明显区分的方式相比,本发明在项目路由管理目录下存储了用于定义不同业务路由的各个目标文件,并能够将业务路由自动注入到正在开发的功能模块中。所以本发明能够根据不同的业务对业务路由进行区分,而且通过目标文件前缀名称也能够用于明显地区分不同业务路由。例如订单业务可能包含交易(transaction)、退款(refund)或者地址管理(address)等多个子业务(这些业务分别对应的不同的业务路由),在本发明中能够创建address.route.js作为地址管理路由,该地址管理路由可被自动读取和注入到相应的软件项目的开发实例中。
更为具体来说,本发明一个或多个实施例依据至少一个原始文件创建附带有基于功能需求的基本代码的多个目标文件具体包括:读取原始文件和用于表示原始文件的当前路径的原始字符串(string),以及在用于表示目标目录的字符串基础上生成与原始字符串相对应的目标字符串,并基于原始文件中内容创建通过目标字符串表示的具有预设存储架构的多个目标文件。即本发明目标文件中的内容按照预设存储架构设置,从而更便于开发者在该存储架构下添加功能需求代码。可理解的是,目标字符串是在目标目录的基础上形成;例如目标目录“d:\users\files”,则目标字符串可为“d:\users\files\pay”、“d:\users\files\refund”、“d:\users\files\address”等等类似的形式。
再次,接收用于当前软件项目开发的功能调用指令。可理解的是,本发明中一个或多个实施例中涉及的功能调用指令可以包括但不限于创建指令、删除指令、插入指令、页面上线指令、页面下线指令、埋点指令、拦截指令以及分享指令等等,这些指令可供开发者们选择和使用,当然也可以根据实际情况自定义功能调用指令,不同软件项目所使用的功能调用指令当然并不限于此,如下对部分指令进行示例性说明。
创建指令(create):通过该指令可以为用户提供模板,例如基础模板和页面模板等。本发明一些实施例中能够根据该指令自动帮助开发者打开浏览器,并可在浏览器上显示开发者常用的通用业务组件,供开发者选用。
删除指令(del):通过该指令可以对目标目录下的目标文件进行删除。该指令还可以用于删除软件项目中废弃的页面,并且能够一键删除存在嵌套关系的多个页面。
插入指令(add):通过该指令可以对目标目录下的目标文件进行插入。该指令还可以用于向软件项目中写入创建完成的页面,并能够实现对该页面进行自定义名称。
页面上线指令(online):该指令用于使相应的页面上线,用户才能够对该页面进行访问。以业务路由为例,在该指令执行时,可通过修改目标目录下存储的相应定义业务路由的目标文件后缀名称的方式使页面上线。
例如将退款业务路由refund.route.cs修改为refund.route.js或者将refund.beta.js修改为refund.route.js,则可用于表示将退款路由对应的页面上线。
页面下线指令(offline):该指令用于使相应的页面下线,则用户无法对该页面进行访问。以业务路由为例,在该指令执行时,可通过修改目标目录下存储的相应定义业务路由的目标文件后缀名称的方式使页面下线。
例如将退款相关路由refund.route.js修改为refund.beta.js或者将refund.route.js修改为refund.route.cs,可用于表示将退款路由对应的页面下线。
最后,执行用于当前软件项目开发的功能调用指令,则自动得到一个或多个附带有基于功能需求的基本代码的目标文件,以能够在目标文件的基础上添加功能需求代码。应当理解的是,本发明能够通过得到的基本代码实现相应的功能,例如提供路由基础模板和页面模板等,并可将模板自动注入到正在开发的开发实例(相关功能模块)中。应当理解的是,本发明涉及的“自动注入”是指基于功能调用指令自动将与功能调用指令对应的目标文件内代码插入至开发者正在编写的功能模块或软件项目内,开发者们直接使用即可。在此基础上,本发明还能为开发者提示代码开发规范、注释规范或注意事项等,并可在软件项目开发的不同阶段为不同开发者分别给与不同的提示,满足不同开发者在不同开发阶段的不同需求,使得软件项目在后期更容易管理和迭代维护,从而进一步地降低了软件项目的开发成本和管理成本。
具体地,执行功能调用指令包括:解析该功能调用指令,并根据功能调用指令的解析结果确定待调用目标文件的属性信息,例如确定了待调用目标文件位置、名称或占用大小等内容;基于待调用目标文件的属性信息从目标目录中获取一个或多个待调用目标文件,利用所获得的待调用目标文件内代码对当前软件项目开发实例进行修改。
更为具体来说,本发明一些实施例根据功能调用指令的解析结果确定待调用目标文件的属性信息包括:从功能调用指令的解析结果中得到用于全局执行环境的软链接信息,将软链接信息作为待调用目标文件的属性信息。其中,本实施例中的软链接信息例如可以是npm link,具体通过安装npm install功能模块实现。利用npm link可将脚本链接到全局环境,并能够通过相应指令快速查看脚本提供的功能。可理解的是,npm link的程序包链接一般是一个两步过程:(1)可在文件夹中创建一个符号链接,该符号链接具体用于链接执行命令的程序包;(2)在其他位置可以直接对该符号链接进行访问,并通过访问该符号链接的方式间接地能够获取执行命令的程序包,以实现全局链接功能。
如图3所示,与软件项目开发方法基于相同的发明构思,本发明还有一个或多个实施例提供了一种软件项目开发装置。该装置可包括但不限于目录创建模块、目录读取模块、文件存储模块及指令执行模块。
目录创建模块可用于创建至少一个功能目录,至少一个功能目录用于当前软件项目。
其中,功能目录可以包括但不限于项目源码管理目录、项目配置管理目录、项目接口管理目录、项目路由管理目录、项目模板管理目录及项目脚本管理目录、自定义功能管理目录、全局指令管理目录、全局插件管理目录及全局组件管理目录中的一种或多种。
目录读取模块可用于从功能目录中读取需要的至少一个目录作为目标目录。
文件存储模块可用于在目标目录下存储附带有基于功能需求的基本代码的多个目标文件,目标文件内基本代码用于实现当前软件项目中的服务功能。该文件存储模块具体用于读取与设定功能匹配的多个原始文件,以根据原始文件在目标目录下创建一个或多个目标文件,并将创建的目标文件存储至目标目录中,以将附带有基于功能需求的基本代码的多个目标文件自动整合到目标目录下。更为具体地,该文件存储模块通过如下方式创建多个目标文件:读取原始文件和用于表示原始文件的当前路径的原始字符串(string),以及在用于表示目标目录的字符串基础上生成与原始字符串相对应的目标字符串,并基于原始文件中内容创建通过目标字符串表示的具有预设存储架构的多个目标文件。
本发明一些实施例的文件存储模块能够具体用于直接将存储至目标目录下的目标文件后缀名称修改为用于表征设定功能的功能名称。
当然,文件存储模块还能够用于直接将这些目标文件前缀名称分别修改为所属业务名称。
指令执行模块可用于接收并执行功能调用指令,用于得到一个或多个附带有基于功能需求的基本代码的目标文件,以在得到的目标文件基础上添加功能需求代码。具体地,该指令执行模块能够通过解析功能调用指令的方式确定待调用目标文件的属性信息,进而根据该属性信息从目标目录中获取待调用目标文件,并利用待调用目标文件中记录的代码对当前软件项目中的至少一个开发实例进行修改,属性信息例如可以是软链接信息。如果功能调用指令为后缀名称修改指令,则能够通过指令执行模块控制文件存储模块进行工作,以利用文件存储模块修改目标目录下一个或多个文件后缀名称,进而使被修改后缀名称的文件对应的功能页面上线或功能页面下线。
基于本发明一个或多个实施例提供的技术方案可知:本发明能够满足开发者利用功能调用指令实现软件项目中的服务功能,使开发者不再投入服务功能的重复性开发工作,而能够专注于新的待实现功能的代码编写,为开发者们提供了极大的便利,具有用户体验佳等突出优点。可见本发明能够显著提升开发效率,降低了软件项目的开发成本,特别适用于大规模软件项目的开发。
如图4所示,本发明一个或多个实施例中还能够具体提供一种计算机设备。该计算机设备包括存储器和处理器,存储器中可存储有计算机可读指令,在计算机可读指令被处理器执行时,使得一个或多个处理器执行本发明任一实施例中的软件项目开发方法的步骤;对于软件项目开发方法的具体步骤已在本发明说明书中记载,不再进行赘述。其中存储器可能包含高速随机存取存储器,也可能包含非易失性存储器(Non-Volatile Memory),例如一个磁盘存储器。处理器可以是一种集成电路芯片,具有信号处理的能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。处理器例如可以是通用处理器,包括中央处理器、网络处理器等,还可以是数字信号处理器、专用集成电路、现场可编程门阵列或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。系统总线例如可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或者EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。网络接口可用于实现计算机设备与其他设备之间的通信连接,其通信连接方式例如可以是互联网、广域网、本地网或者城域网等等。
本发明一个或多个实施例还可具体提供一种计算机存储介质,计算机存储介质上存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本发明任一实施例中的软件项目开发方法的步骤;对于软件项目开发方法的具体步骤在本发明说明书中记载,不再进行赘述。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读存储介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读存储介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM,Random Access Memory),只读存储器(ROM,Read-Only Memory),可擦除可编辑只读存储器(EPROM,Erasable Programmable Read-Only Memory,或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM,Compact Disc Read-Only Memory)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA,Programmable Gate Array),现场可编程门阵列(FPGA,Field Programmable Gate Array)等。
需要说明的是,附图中的流程图和框图可用于显示根据本发明的多个实施例系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。由此可知流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分可包含一个或多个用于实现规定的逻辑功能的可执行指令。应当注意的是,本发明一些可替换的实施方式中,方框中所标注的功能能够以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以并行地执行,也有可能按照相反的顺序执行,这依所涉及的功能而定。还要注意的是,流程图或框图中的每个方框以及这些方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统进行实现,或者也可以用专用硬件与专用计算机指令的组合进行实现,以能够实现本发明的技术方案为准。
在本说明书的描述中,参考术语“本实施例”、“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明实质内容上所作的任何修改、等同替换和简单改进等,均应包含在本发明的保护范围之内。