CN106843827A - 一种基于功件树和功件库的目标软件生成方法及装置 - Google Patents
一种基于功件树和功件库的目标软件生成方法及装置 Download PDFInfo
- Publication number
- CN106843827A CN106843827A CN201611090023.1A CN201611090023A CN106843827A CN 106843827 A CN106843827 A CN 106843827A CN 201611090023 A CN201611090023 A CN 201611090023A CN 106843827 A CN106843827 A CN 106843827A
- Authority
- CN
- China
- Prior art keywords
- work
- tree
- target software
- part tree
- information
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于功件树和功件库的目标软件生成方法及装置,所述方法包括:接收用户输入的目标软件的需求信息,将所述目标软件的需求信息转化为与目标软件需求信息对应的检索信息;根据检索信息,在已创建的功件树集合中检索与目标软件的需求信息相匹配的第一功件树,根据第一功件树,生成目标软件;或者,根据检索信息,在已创建的功件库中检索与目标软件的需求信息对应的第一功件,和/或第二功件;将第一功件和/或第二功件进行组合,生成第二功件树;根据第二功件树生成目标软件,其中,功件树集合中所有功件树,以及功件库中所有功件,均遵循预定的功件规范。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种基于功件树和功件库的目标软件生成方法及装置。
背景技术
从软件这个概念诞生以来,软件开发从二进制、汇编语言,发展到C、Java、Rust等高级语言,从面向机器、面向过程发展到面向对象、面向命令、面向服务,以及虚拟机、容器、微服务、AI、DevOps、Scrum、JPMS等技术、方法的出现,都是在尝试提高软件复用率和加快软件产品的开发、部署速度,简化软件产品的运维管理。
但是,上述情况都没有改变软件行业的传统生产模式:一个软件需求过来,先要成立一个开发团队(可能是一个人),经过需求分析、设计、开发、测试、编译打包、部署安装等阶段,一个软件项目才算开发完成。而这个软件项目一旦成型,再对它进行升级或更新,还是需要由软件开发人员一行行编写或改写代码来实现。在开发下一个新的软件项目时,重复上述步骤,即使已经使用了这样或那样的组件技术、构件技术、框架技术。
上述传统开发软件的模式,与古代的手工作坊非常相似,一个人或一个团队包揽产品生产的所有阶段的所有工作内容。所以,传统开发软件模式,可以称为软件作坊模式。
软件作坊模式开发软件的弊端:首先是开发周期长,即使同一个团队开发同一个类型的不同需求的软件项目,也要经过分析、设计、开发、测试等诸多流程;其次是劳动力浪费,工作成果无法再利用,不同开发团队生产的软件功能模块,不能相互利用,一个软件项目一旦开发完成,这个软件所有相关工作成果、相关业务和技术经验等很难直接应用到其他软件项目。
那么如何快速地将已经开发的软件成果、相关业务和技术经验等直接应用到新的软件项目上,并提高软件行业的生产能力,是软件行业亟待解决的技术问题,是软件行业实现工业化生产的关键。
发明内容
本发明所要解决的技术问题是如何快速地将已经开发的软件成果、相关业务和技术经验等直接应用到新的软件项目上,并提高软件行业的生产能力。
本发明解决上述技术问题的技术方案如下:
第一方面,本发明实施例提供了一种基于功件树和功件库的目标软件生成方法,该方法包括:
接收用户输入的目标软件的需求信息;
将所述目标软件的需求信息转化为与所述目标软件需求信息对应的检索信息;
根据所述检索信息,在已创建的功件树集合中检索与所述目标软件的需求信息相匹配的第一功件树;
根据所述第一功件树,生成所述目标软件;
或者,
根据所述检索信息,在已创建的功件库中检索与所述目标软件的需求信息对应的第一功件,和/或第二功件;
将所述第一功件和/或第二功件进行组合,生成第二功件树;
根据所述第二功件树生成所述目标软件,其中,所述功件树集合中所有功件树,以及所述功件库中所有功件,均遵循预定的功件规范。
本发明的有益效果是:对于有软件需求的用户而言,直接输入目标软件需求信息,系统可以自动将该需求信息转换为可以识别的检索信息,例如包括与所述目标软件对应的功件名称,和/或,功件和/或功件树属性描述信息;又或者是直接将需求信息翻译为功件树语言等。
系统可以根据检索信息,自动检索功件树集合中已有的第一功件树,或者检索功件库中的第一功件和/或第二功件,并将第一功件和/或第二功件进行组合形成第二功件树。从而使检索到的第一功件树或者组合成的第二功件树满足目标软件的需求,根据第一功件树或者第二功件树,生成目标软件。在调用功件或者功件树时,无需考虑是否出自同一个开发团队,因为功件和功件树均遵循预定的功件规范。因此,可以快速的将已经开发的软件成果、相关业务和技术经验等应用到新的软件项目上,以便于提高软件行业的生产能力。
进一步,当根据所述检索信息,在已创建的功件树集合中未查找到与所述目标软件的需求信息相匹配的功件树时,所述方法还包括:
根据所述检索信息,开发新的功件树;
并将所述新的功件树加入所述功件树集合中,其中所述新的功件树遵循所述预定的功件规范。
采用上述进一步的方案的有益技术效果在于,当通过上述检索条件未检测到用户所需要的功件树时,还可以开发新的功件树,以满足用户的需求。而且,新开发的功件树同样遵循预定的功件规范,以便于其他软件产品还可以再利用新的功件树。
进一步,根据所述检索信息,开发新的功件树包括:
将已创建的功件树为模板创建新的功件树,其中,所述开发的新的功件树遵循所述预定的功件规范。
采用上述进一步的技术方案的有益技术效果在于,将已创建的功件树作为模板,创建新的功件树,可以在保证原有功件树所具备的所有功能的前提下,对已有的功件树的功能进行完善或者拓展,以使新的功件树能够满足用户的需求。
进一步的,当根据所述检索信息,在已创建的功件库中未检索到与所述目标软件的需求信息对应的第一功件,和/或第二功件时,所述方法还包括:
根据所述检索信息,开发与所述目标软件需求信息对应的新的功件;
并将所述新的功件加入所述功件库中,其中所述开发的新的功件遵循所述预定的功件规范。
采用上述进一步的技术方案的有益技术效果在于:为了满足用户需求,不止包括创建新的功件树这一种可用的实施方式,还可以包括创建新的功件,以满足用户的需求,或者,将新的功件和功件库中已有的其他功件组合,创建新的功件树,以满足用户的需求。
进一步的,开发与所述目标软件需求信息对应的新的功件,包括:
将已有的功件为模板开发新的功件。
采用上述进一步的技术方案的有益技术效果在于:将已创建的功件作为模板,创建新的功件,可以在保证原有功件所具备的所有功能的前提下,对已有的功件的功能进行完善或者拓展,以使新的功件能够满足用户的需求。
进一步的,预定的功件规范包括:
创建与所述功件树对应的第一根目录;
以及,创建与同类型的功件对应的第二根目录。
采用上述进一步的技术方案的有益技术效果在于:遵循同一种规范的功件或者功件树中,每一个功件树对应创建一个或多个功件树根目录,以及同一类型的功件根据其所遵循功件规范对应创建一个功件根目录。将功件所对应的文件、文件夹分别放入对应的功件根目录中。可以保证遵循同一种功件规范的功件之间可以相互调用和不覆盖。同时还可以保证不同规范开发的功件互相不会覆盖。
进一步的,任一功件均包括与之对应的一个功件主文件和/或一个功件主目录。
进一步的,所述功件树包含的同类型的功件对应的第二根目录存储于所述功件树对应的第一根目录内,所述功件主文件和/或功件主目录存储于所述同类型功件对应第二根目录内。
采用上述进一步的技术方案的有益技术效果在于,将属于同一功件树的所有功件的根目录全部存放于功件树对应的根目录下,目的是可以方便同一功件树之间的不同功件之间可以方便调用,以及编译、打包、部署和安装。
进一步的,预定的功件规范还包括:
所述任一功件均包含与之对应的帮助文档、问题和开发协作信息;
所述功件树所包含的帮助文档、问题和开发协作信息,为所述功件树所包含的所有功件分别对应的帮助文档、问题和开发协作信息的集合。
采用上述进一步的技术方案的有益技术效果在于,每一个功件都包含有对应的帮助文档、问题和开发协作信息,而功件树所包含的帮助文档、问题和开发协作信息,则是该功件树中所有功件对应的帮助文档、问题和开发协作信息的一个集合。这个技术效果易于不同功件组合生成新的功件树后,新功件树相关的帮助文档、问题、开发协作信息的生成和使用,即工作成果、业务和技术经验的有效积累和使用。
进一步的,功件树包括:主功件树、发布功件树和分枝功件树。
采用上述进一步的技术方案的有益技术效果在于,每一个功件树均可以包括主功件树、发布功件树和分枝功件树等不同的功件子树,每一个功件子树执行的功能不同,使功件树的管理和使用更加的完善。
进一步的,功件包括:主功件、发布功件和分枝功件。
采用上述进一步的技术方案的有益技术效果在于,每一个功件都可以独立的方式进行开发,有利于功件开发和使用上精益求精,便于更高级功件的开发和使用。
进一步的,所述功件树集合中所有的功件树均具有扩散机制和扬弃机制。
采用上述进一步的技术方案的有益技术效果在于,每一个功件树均具有扩散机制和扬弃机制,当功件树中产生一个新的功件时,则可以用主动或者被动的方式复制、扩散到其他功件树中。从而使得功件树可以获得自我生长的能力。
第二方面,本发明实施例提供了一种基于功件树和功件库的目标软件生成装置,其中,该装置包括:
接收模块,用于接收用户输入的目标软件的需求信息;
转换模块,用于将所述目标软件的需求信息,转化为与所述目标软件需求信息对应的检索信息;
检索模块,用于根据所述检索信息,在已创建的功件树集合中检索与所述目标软件的需求信息相匹配的第一功件树;
处理模块,用于根据所述第一功件树,生成所述目标软件;
或者,
所述检索模块用于,根据所述检索信息,在已创建的功件库中检索与所述目标软件的需求信息对应的第一功件,和/或第二功件;
所述处理模块用于,将所述第一功件和/或第二功件进行组合,生成第二功件树;
根据所述第二功件树生成所述目标软件,其中,所述功件树集合中所有功件树,以及所述功件库中所有功件,均遵循预定的功件规范。
上述方案的有益技术效果在于,对于有软件需求的用户而言,直接输入目标软件需求信息,系统可以自动将该需求信息转换为可以识别的检索信息,例如包括与所述目标软件对应的功件名称,和/或,功件和/或功件树属性描述信息;又或者是直接将需求信息翻译为功件树语言等。
系统可以根据检索信息,自动检索功件树集合中已有的第一功件树,或者检索功件库中的第一功件和/或第二功件,并将第一功件和/或第二功件进行组合形成第二功件树。从而使检索到的第一功件树或者组合成的第二功件树满足目标软件的需求,根据第一功件树或者第二功件树,生成目标软件。在调用功件或者功件树时,无需考虑是否出自同一个开发团队,因为功件和功件树均遵循预定的功件规范。因此,可以快速的将已经开发的软件成果、相关业务和技术经验等应用到新的软件项目上,以便于提高软件行业的生产能力。
进一步的,处理模块还用于:根据所述检索信息,开发新的功件树;
并将所述新的功件树加入所述功件树集合中,其中所述新的功件树遵循所述预定的功件规范。
采用上述进一步的技术方案的有益技术效果在于,当通过上述检索条件未检测到用户所需要的功件树时,还可以开发新的功件树,以便于能够满足用户的需求。而且,新开发的功件树同样遵循预定的功件规范,以便于其他软件产品还可以再利用新的功件树。
进一步的,处理模块具体用于:
将已创建的功件树为模板创建新的功件树,其中,所述开发的新的功件树遵循所述预定的功件规范。
采用上述进一步的技术方案的有益技术效果在于,将已创建的功件树作为模板,创建新的功件树,可以在保证原有功件树所具备的所有功能的前提下,对已有的功件树的功能进行完善或者拓展,以使新的功件树能够满足用户的需求。
进一步的,所述处理模块还用于:根据所述检索信息,开发与所述目标软件需求信息对应的新的功件;
并将所述新的功件加入所述功件库中,其中所述开发的新的功件遵循所述预定的功件规范。
采用上述进一步的技术方案的有益技术效果在于:为了满足用户需求,不止包括创建新的功件树这一种可用的实施方式,还可以包括创建新的功件,以满足用户的需求,或者,将新的功件和功件库中已有的其他功件组合,创建新的功件树,以满足用户的需求。
处理模块具体用于:
将已有的功件为模板开发新的功件。
采用上述进一步的技术方案的有益技术效果在于:将已创建的功件作为模板,创建新的功件,可以在保证原有功件所具备的所有功能的前提下,对已有的功件的功能进行完善或者拓展,以使新的功件能够满足用户的需求。
进一步的,处理模块还用于目标软件的编译、打包、下载、安装部署、升级维护的自动化管理。
采用上述进一步的技术方案的有益技术效果在于:自动化地完成了目标软件的编译、打包、下载、安装部署、升级维护工作,从而降低了用户的软件使用维护成本,提高了软件生产力。
进一步的,装置还包括:功件树管理模块:用于管理功件树及其功件子树、功件树关联关系;
功件管理模块:用于管理功件及其子版本、功件关联关系。
附图说明
图1为本发明提供的主功件树、发布功件树和分枝功件树的关系连接示意图;
图2为本发明实施例提供的一种基于功件树和功件库的目标软件生成方法的流程示意图;
图3为本发明实施例提供的另一种基于功件树和功件库的目标软件生成方法流程图;
图4为本发明实施例提供的一种基于功件树和功件库的目标软件生成装置的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透切理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、技术以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
一个软件产品,是由用户界面(User Interface,简称UI)(可见)、功能(不可见)和数据等部分按照一定的技术或业务流程组合在一起,并可以在某些硬件或软件环境中直接运行的程序。软件产品内部所产生、交互的信息,以及与其他软件产品通讯的信息,就是各种格式的数据,因为,整个计算机世界都是由二进制数据组成的。
一个软件项目,可以包括一个或多个软件产品,也可以不对应软件产品,而仅仅是某些文档或软件功能模块的集合。
一个开发团队开发一个软件产品,这个软件产品一旦完成,其一定可以分解为一个或多个软件功能模块,即多个软件功能模块是能够组合成一个软件产品的。如果一个团队开发的多个软件功能模块,可以有效地组合成一个软件产品,那么,世界上不相干的两个团队开发的软件功能模块,理论上也可以有效地组合成一个软件产品。同一个开发团队开发的软件功能模块能够组合成一个软件产品,是因为功能模块间交互的接口、属性参数等是匹配的,是其遵循同一个开发规范所致;假如世界上不相干的两个团队使用同一个规范开发的软件功能模块,也是完全有可能组合在一起生成一个软件产品的。因此,世界上所有开发团队都遵循的软件开发规范的建立,是实现软件工业化的必要条件。
因此,本发明实施例提供了一种基于功件树和功件库的目标软件生成方法。在生成功件和功件树时,均遵循预定的功件规范。
在介绍本发明提供的方法之前,为了更加方便读者理解,本文首先介绍在本发明中,功件、功件库和功件树的定义、功件和功件树的种类,功件与功件、功件树与功件树之间的关联关系,以及功件树集合、功件树语言等。
功件:一个软件产品,其一定可以分解为一个或多个软件功能模块,而这个软件功能模块就可以理解为是一个功件。功件,可以是软件项目或产品中的一个基本的逻辑或物理概念,也可以是一个多功能复合体,但其必须是一个完整而且独立的功能模块。单一功能的功件,可以组合成复杂功能的功件。将不同的功件有效的组织、衔接起来,经过编译打包部署安装等步骤,使其在特定硬件或软件环境下独立运行,即可成为一个软件产品。
功件的定义,还可以用自然语言的文字或词汇来定义,比如中文中的词汇用户、角色、权限(英文则为User、Role、Permission)。
功件树:一个功件树,对应一个软件项目(Project)或一个软件仓库(Repository),是一个或多个功件的集合,是遵循某种功件规范,使用一种或多种编程语言、依赖数据库或程序库开发的,其一个满足某种软件需求的功件树及其包含的功件子树或功件子树的功件集合子集可以直接生成满足某种业务需求的软件产品。
一个功件树中的不同功件之间以各种功件关联关系组合在一起,形成一种类似树型或者网状结构,所以称之为功件树,即一个功件树,是由一个或多个功件组合而成的。
功件树的创建,可以由软件开发者发起,也可以由软件使用者发起,还可以由软件设计者发起;可以创建满足某种业务需求的功件树,我们称之为“独立功件树”;也可以创建满足广泛业务需求的功件树,可称之为“全栈功件树”。
在本发明中,从零创建一个功件树或将多个已有功件组合生成一个新功件树,即这个功件树在没有父功件树的情况下,此功件树称为主干(Trunk)功件树或主(Master)功件树或根(Root)功件树。在主功件树的开发进程中,随着功件数量不断增加、功件功能及流程的不断变化与完善,可以不断创建新的发布版本,即发布功件树,以标记功件树开发进程和功件树业务功能组成,并可生成一个稳定的、能够满足特定业务需求的软件产品;根据开发需要或软件需求,比如技术架构的变迁或建立复杂软件产品的多个子产品,还随时可以创建新的分枝功件树,以与主功件树不同的开发轨迹进行功件的开发和管理。主功件树、发布功件树和分枝功件树,都可以无限创建新的发布版本或分枝,如此往复,从而形成以该主功件树为根,具有无数个发布功件树、分枝功件树的复杂树形结构;所以一个主功件树下可以建立无数层级的无数个功件子树,而所有主功件树、发布功件树或分枝功件树,又随时可以作为模板创建新的主功件树,并重复上述开发过程。
因此,一个功件树中可以包括三种基本类型的功件子树:主功件树、发布功件树、分枝功件树;主功件树类似于树的根和干,分枝功件树类似于树的分枝,而发布功件树则类似于树的叶子或果实;发布功件树作为可发布的版本,其功能已经固定并且经过严格测试和bug修复,所以其可以直接生成一个稳定可用的软件产品,同时其也可以产生新的分枝功件树。而主功件树和分枝功件树,则属于开发版本,由开发者不断加入新的功能,并可以不断的产生新的发布功件树以适应不同的软件需求。主功件树、发布功件树和分枝功件树的之间的连接关系见图1。
树这个概念,不仅体现在功件树内部功件的关联关系上,也体现在主功件树、发布功件树、分枝功件树等功件子树之间的关联关系上,还体现在功件树和功件树的关联关系上。
一个功件树一旦创建,其具有扩散和扬弃机制:即当其主功件树或分枝功件树中,产生一个新的功件时,其可以用主动或被动的方式复制、扩散到其他分枝功件树或主功件树中,从而使得该功件树可以获得自我生长的能力;而其他分枝功件树或主功件树,可自定义是否接受这种扩散机制,或满足什么条件才接受这种扩散机制;当一个功件树中的某个发布功件树或分枝功件树或其内部的某些功件过时或者不适用的时候,其可以被删除或标记为过期,而对于有推广价值的,则标记为可推荐或优先开发,从而保证该功件树以正确的方式成长。
用于同一目的的功件树,根据编程语言、开发运行环境不同,以及接口调用方式、数据格式、数据存储形式的不同,都可以产生不同的功件树,其所含功件的实现方式,根据功件树所遵循预定的功件规范的不同而不同。
一个功件树可代表一个用于某种目的的软件产品,如一个操作系统、一个应用程序、某种类型的网站,其中的功件也是按照某种流程关联在一起。因此,功件树既是软件产品所包含功能的集合,同时它也包含了软件产品相关的技术、业务流程,而软件产品的流程,就体现在功件树内各功件或功件子树的关联关系中。
一个功件树也可能是某种类型功件的集合,以便于该类型功件的管理和使用和升级,便于给设计者和使用者在需要的时候挑选和使用。
一个功件树,还可以成为其他功件树下的一个功件,因为,一个多功能的功件,其下可包含多个单一功能的子功件。
所有功件树,包括其所有功件子树,组合在一起即形成了功件树集合,可命名其为“全球功件树”或“功件树森林”。
软件产品中的软件功能模块,是按照一定的关联关系组合在一起的,这些关联关系体现了软件产品的流程,也体现了软件功能模块之间的相互作用、相互组合的路径。同样,一个对应某个软件产品的功件树中的功件之间,具备了天然的关联关系,其包括功件间的接口调用关系,因为功件的开发本身就是在软件产品需求的指导下进行的,体现了软件产品的功能和流程,这个关联关系是功件得以组合为功件树的基本要素,也是功件树可以生成软件产品的必要条件;而不同功件树中的某些遵循同一功件规范开发的功件之间,具备隐式的关联关系,根据这种关联关系,可以把不同功件树的某些功件组合在一起,生成新的功件树,进而生成新的软件产品。
不仅功件与功件之间存在关联关系,功件子树和功件子树之间,功件树与功件树之间也存在关联关系,因为不同软件产品也可以组合在一起形成一个更加复制的软件产品。同样,功件树与功件之间也存在关联关系,最明显的例子就是一个功件树包含了一个或多个功件。
上述这些关联关系具有在时间维度上不断变化的特征,因为随着时间的变迁,某些关联关系可能会不断发生变化。
将上述关联关系展开,其类似于流程图和电路图,其中功件或功件树就是流程图和电路图的节点,关联关系就是其中的连线或导线。连线表示节点间的前后或上下方向的承接关系,是静态的,而导线则代表两个节点之间存在信息的交换,是动态的。
所以,关联关系可分为静态和动态两种:静态关联关系描述的是两个功件之间存在一种静态或虚拟的关联,这种关联不涉及数据等信息的交换,静态关联关系在功件树中表现为功件之间存在连线关系,其代表一个关系簇,即一组关系记录;动态关联关系则说明两个功件之间会有数据等信息的交换,这种动态的关联关系,在功件关联关系中体现在功件对外接口之间的相互作用上。
关联关系还可以分为技术和业务两种:技术关联关系描述的是功件之间的技术关联性,如一个功件依赖于另一个功件,而业务关联关系则体现了软件产品的流程,如在满足某种业务条件下,A功件调用B功件的某个功能。技术关联关系具有确定性、不可更改的特性,业务关联关系则体现在功件的可插拔、可替换性上。关联关系包括调用与被调用、包含与被包含、引用与被引用、依赖与被依赖、开发与开发于、运行与运行于,以及具备、指向、连接等,这些关联关系是功件得以组合成功件树和功件树可以生成软件产品的必要条件。
所有功件树中的功件以及通过其他任何方式创建的功件,共同组成了功件库,功件库中功件之间的关联关系,可由人工或自动化工具来维护,以便于通过关联关系检索相关联功件,使其可以组成新的功件树,进而生成新的软件产品。
本发明定义了一种功件树语言,其可用于定义、设计、开发、描述、检索功件(一个多功能功件,可以由多个单一功能功件组合而成),也可用于定义、描述、检索功件树以及描述功件和功件树关联关系,还可用于设计、开发和使用基于功件树和功件的软件产品。因此,任何可以翻译为功件树语言的信息,都可以作为设计、开发、使用软件产品的最原始信息,其可作为信息(语音、文字、图片/图像)驱动进行软件产品设计、开发、使用的基础。
下面以中文为例(其他种类的自然语言类似),说明功件树语言如下:
1.标识符:冒号(:)用于分隔名称/值对,每个名称/值对代表一个功件或功件树,冒号前为功件名称,冒号后面为功件或功件树包含的子功件或功件树分支或子功件树;逗号(,)用于分隔不同的功件或功件树或功件树分支;方括号([])用于表达数组的概念,可包含多个功件树分支;花括号({})用于表达对象的概念,其内部可包含多个名称/值对,代表多个功件的组合或一个功件树分支;小括号(())内包含的是功件或功件树的属性参数信息或判定条件;引入指向符号(->)代表引用或指向到其他功件树中的功件或功件树分支;等号(=)则作为控制结构中的判定条件使用;点(.)为功件的属性定义符号。
2.每种功件可由唯一的名称来标识,其针对不同的自然语言(如中文、英文等),可有不同的本地化名称,如“用户”功件,中英文名称分别为“用户”、“User”;针对每种功件的不同功能版本,其使用型号来唯一标识,如“用户-1型”、“User-1”;每个功件实例、功件树实例则使用ID和型号作为其唯一标识。
3.顺序结构:为了完美的表达多个功件树或功件内部的功件组合情况,以代表一个目标产品所包含的功件和流程,可用类似JSON格式的自然语言数据来定义和描述:以功件名称标识功件,其中间以逗号隔开,根据功件名称出现的顺序进行排列组合,如“用户,角色,权限”,即可表述一个功件树分支,或者说是一个用户管理软件产品的流程:即用户具备角色,角色拥有权限。每种功件后面可紧随一个英文冒号和方括号“[]”或花括号“{}”,代表这种功件内部包含的多个或一个流程分支,如“{功件1:[],功件2:[],功件3:[]}”或“{功件1:{},功件2:{},功件3:{}}”;将一个或多个花括号内容,组合排列在方括号“[]”内,即代表的是一个或多个流程分支,如“[{功件1:{},功件2:{},功件3:{}},{功件4:{},功件5:{},功件6:{}}]”;花括号“{}”内除了可以包含功件,也可以包含一个流程,其间以逗号隔开,如“{功件1:{功件2,{功件3:{},功件4:{}}}}”,或包含多个流程,如{[功件1,功件2],[功件3,功件4]};同样,方括号“[]”内也可以包含多个方括号“[]”或花括号“{}”,以代表多个流程分支;如此往复包含,可以表达复杂的功件树,直至可以描述“全球功件树”。每种功件或功件树后面,可以跟随小括号“()”,其内包含功件或功件树的属性参数描述等,以便更加精准地定位功件和功件树,功件树语言中的属性参数描述(内容省略,应遵循功件规范)用键值对来表示,键为属性参数的名称,值为属性参数的值,键与值的中间以冒号“:”分割,类似JSON数据格式中键值对的表现方式,如“{用户(lang:"java")}”代表用Java语言开发的“用户”功件。由于有些功件树过于庞大,因此在功件树的定义中,可以引入“命名空间”(Namespace)这个概念,以描述某一层级或某一小范围的功件树分枝;而对于一个功件树中的功件或功件树分枝,引用其他功件树中的功件或功件树分枝时,则可以使用“->”这个引用指向符号,如“{功件1,功件2->{功件树2:{功件3}}}”。
4.控制结构:类似编程语言,功件树语言也包含控制结构语法。通过控制结构,根据不同的判定条件,选择不同的功件树分枝。控制结构语法类似如下:如果(用户.lang="java"){}否则{}(对应英文为IF(User.lang="java"){}ELSE{}),如果(对应IF)后面的小括号()中的内容为判定条件,花括号{}中的内容则为上述的功件树分枝的功件和流程的顺序结构描述。
介绍上述内容之后,下面具体介绍本发明实施例提供的一种基于功件树和功件库的目标软件生成方法。具体如图2所示,图2为本发明实施例提供的一种基于功件树和功件库的目标软件生成方法的流程示意图。其中,本实施例中所述的功件和功件树均遵循预定的功件规范。其中,一个功件树包含一个或多个功件子树,每个功件子树都对应一个软件项目或软件产品,其为一个或多个包含特定功能的功件的集合,其内部功件之间具有天然的关联关系,功件为组成软件产品的部件在计算机系统中抽象出来的完整且独立的功能模块,且功件和功件树的开发均遵循预定的功件规范,所有功件树内部的功件以及通过其他任何方式生产的功件,共同组成了功件库,功件库内部功件之间具有可维护的关联关系。具体的,该方法包括以下步骤:
步骤210,接收用户输入的目标软件的需求信息。
步骤220,将目标软件的需求信息转化为与目标软件需求信息对应的检索信息。
具体的,可以将用户输入的自然语言或可翻译为自然语言的语音、文字、图片、图像、肢体语言等信息,转化为检索信息,其中,检索信息可以包括功件名称或功件、功件树的属性描述信息,或功件树语言。
对于用户而言,直接输入与目标软件需求或者目标软件功能对应的自然语言或可翻译为自然语言的语音、文字、图片、图像、肢体语言等信息更加的简单、便捷,而具体到输入目标软件需求或者目标软件功能,搜索出的功件将会更加的精确。而如何将自然语言转换为功件名称、功件或功件树属性描述信息、功件树语言已经是现有的,这里将不再赘述。
步骤230,根据检索信息,在已创建的功件树集合中检索与目标软件的需求信息相匹配的第一功件树。
步骤240,根据第一功件树,生成目标软件。
与上述方案并列的,本发明实施例还提供了另一种基于功件树和功件库的目标软件生成方法的流程示意图,具体如图3所示,该方法除了包括步骤210和步骤220外,还包括:
步骤250,根据检索信息,在已创建的功件库中检索与目标软件的需求信息对应的第一功件,和/或第二功件。
步骤260,将第一功件和/或第二功件进行组合,生成第二功件树;
步骤270,根据第二功件树生成目标软件。
具体的,在功件库中检索与目标软件需求或者与目标软件功能对应的第一功件,以及与第一功件相关联的第二功件。通过关联关系提取出来的功件才能组合在一起生成新的功件树,进而生成软件产品。具体的功件和功件之间的关联关系,以及功件树和功件树之间的关联关系已经在上文中做了详细介绍,这里不再赘述。
不过,读者应理解,根据用户的需求信息,可以通过上述两种方式,获取第一功件树或者第二功件树,然后根据第一功件树或者第二功件树,生成目标软件。这两种方式可以择一使用,当然也可以同时使用后,获取与目标软件需求更贴近的目标软件。而且,还需说明的是,上述功件树集合中所有功件树,以及所述功件库中所有功件,均遵循预定的功件规范。当然,这里包括第一功件树和第二功件树,同样遵循预定的功件规范。
基于上述两种方法,可能会出现下述情况之一,具体包括:
在另一种情况中,当未检索到与目标软件需求或者与目标软件功能对应的功件树时,该方法还包括:根据检索信息,开发新的功件树。并将新的功件树加入功件树集合中,其中新的功件树遵循预定的功件规范。
具体的,可以将已创建的功件树为模板创建新的功件树。
在另一种情况中,当根据检索信息,在已创建的功件库中未检索到与目标软件的需求信息对应的第一功件,和/或第二功件时,该方法还包括:
根据检索信息,开发与目标软件需求信息对应的新的功件;
并将新的功件加入功件库中,其中开发的新的功件遵循预定的功件规范。
具体的,可以将已有的功件为模板开发新的功件。
其中,上述所述的预定的功件规范包括:创建与所述功件树对应的第一根目录,以及,创建与同类型的功件对应的第二根目录。而任一功件均包括与之对应的一个功件主文件和/或一个功件主目录。
优选的,功件树包含的同类型的功件对应的第二根目录存储于功件树对应的第一根目录内,功件主文件和/或功件主目录存储于同类型功件对应第二根目录内。
此外,预定的功件规范还包括:任一功件均包含与之对应的帮助文档、问题和开发协作信息。而功件树所包含的帮助文档、问题和开发协作信息,为功件树所包含的所有功件分别对应的帮助文档、问题和开发协作信息的集合。
优选的,上述功件树可以包括:主功件树、发布功件树和分枝功件树。
上述包括主功件树、发布功件树和分枝功件树,预定的功件规范,预定的功件规范中所包括的与功件树对应的第一根目录,以及,创建与同类型的功件对应的第二根目录等内容,将在下文中做详细介绍:
具体的,功件树对应一个软件项目,创建一个功件树,就是要创建一个能够满足某种需求的软件项目以便生成对应的软件产品,或者某种类型功件的集合。创建功件树流程包括:首先根据目标软件的类型、所遵循的功件规范、编程语言、功件树名称、功件树根目录名称等创建功件树,这个功件树就是主功件树,这个主功件树下有个功件列表显示其下包含所有的功件,然后根据这个主功件树对应的软件产品所要包含的功能模块,在此主功件树下创建功件,每个功件包含一个功件主文件和/或一个功件主目录,功件主文件可以是功件主程序文件或功件程序入口文件,功件主目录(可以理解文件夹)中包含了该功件下的所有附属程序文件和资源文件。功件树根目录、功件根目录、功件主文件和功件主目录的存储关系,上文做了详细介绍,这里不再赘述。
从已创建的功件树中开发包括:在主功件树开发过程中,开发者可以不断地创建发布功件树,标识一个成熟的软件发布版本,即对应一个版本的具有特定功能的软件产品;开发者还可以不断的创建分枝功件树,每个分枝功件树都可以不断地创建发布功件树和分枝功件树,同样,每个发布功件树也可以不断地创建分枝功件树;每个分枝功件树,都对应一个软件产品,虽然这些分枝功件树来源于主功件树,但其生成的软件产品可以和主功件树完全不同,而且不仅仅是包含的功能不同、界面不同,就是说分枝功件树与主功件树、分枝功件树与分枝功件树之间完全具有各自独立的开发轨迹和目标软件需求,在分枝功件树中创建功件的流程与主功件树相同。
从已创建的功件中开发包括:每个功件树中的每个功件,可以称之为主功件,在不改变其接口等外部可见特征的情况下,可以在其基础创建不同的功件版本分枝,可以称之为发布功件、分枝功件,其中发布功件代表了一个稳定的功件发布版本,分枝功件代表一个正在开发中的功件。主功件、发布功件、分枝功件之间的关系和开发流程,与主功件树、发布功件树、分枝功件树类似。
实际上,一个功件树,是由一个主功件树和多个层级的多个发布功件、分枝功件树所组成的,而每个功件子树下可以包含了一个或多个主功件;而每个主功件下又可以创建多个发布功件和分枝功件;而每个功件又包含了一个功件主文件和/或一个功件主目录,其中包含功件相关的所有程序文件和资源文件,而这些程序文件或资源文件,又可能是具备多个子功能,或者说是多个子功件组成了这个功件。
所有功件树中包含的所有类型的功件,其实是在一个统一的功件库当中,这些功件之间默认是没有关联关系的,那么就需要建立关联关系。首先,一个功件子树中的功件之间是具备天然关联关系的,因为它们之间本来就是互相调用、互相组合在一起形成了一个功件树,进而可以生成一个软件产品的;而主功件、发布功件、分枝功件是可以互相替换的,从而可以和主功件所在功件树中的功件建立关联关系。其次,不同功件树、不同功件子树中的功件之间的关联关系,需要通过人工或自动化工具去发现、建立和验证。
在初始创建功件树和功件的时候,大部分是由开发者手工创建的,当功件树和功件积累到一定阶段的时候,可以这样创建或生产某个功件树下的功件:以功件需求为输入条件,以已有的功件树和功件为数据基础,以人工智能技术为手段,自动生产出功件及其相关程序文件和资源文件,这个自动生产出的功件,可以直接和功件树中的其他功件组合在一起,也可以作为一个模板生成不同的功件。
如此,开发一个新的功件或者一个新的功件树,可以包括多种形式,由此可以降低开发新的功件或者功件树时所受到的限制性。
这里,需要说明的是,“目录”对应的是计算机系统中的文件夹。功件树下的功件相关的程序文件和资源文件,在计算机系统中的存储形式就是文件和文件夹。一个功件树下可以包含多个功件树根目录,比如lib目录存放这个功件树需要的所有的程序库文件,src目录存放这个功件树下所有的逻辑层功件源代码及其相关程序文件,web目存放这个功件树下所有的显示层功件源代码及其相关程序文件,bin目录是这个功件树下的源代码程序文件经过编译后生成的二进制功件及其程序文件,test目录是存放的是这个功件树相关的测试类型功件及其程序文件。
所以每个功件树下,可以创建多个功件树根目录,用于不同的目的;而创建功件的时候,根据这个功件的类型,要将其存放于不同的功件树根目录中。
在功件树中创建功件的时候,是在某个功件树下创建的属于这个功件树的功件;就是说,正常情况下,是先创建功件树,然后再进入这个功件树去创建功件,因为要创建什么样的功件,功件要满足什么样的功能需求,是由功件树所对应产品要满足什么需求这个大前提所决定的。而通过关联关系从功件库中提取已有的功件组合成新的功件树,是提取功件的复制体,并将其存放在新功件树的功件树根目录下的。
也即是,上文中所述的同一类型的功件的前提是同一功件树中,同一类型的功件对应一个功件根目录。而同一功件树的所有功件的根目录,将都会存储在功件树对应的根目录下。所以二者之间并不矛盾。
当然,读者应理解,预定的功件规范不止包括上述三种情况,还可以包括其他情况。
在一个具体的例子中,假设功件规范为源代码层级的功件规范,其命名为FX功件规范(其他软件类型和其他代码层级的功件规范的制定,可以参照FX功件规范):
1.在一个功件树中,所有功件均位于f目录(包、空间)下,功件树中有一种特殊功件,名称为X或以X字母开头,命名为X型功件,其作为首页、入口、唯一公共类等给其他功件提供支持,X型功件对应的x目录(包、空间)则作为公共区域,驻留包含页、公共文件、公共类等。
2.功件树的功件数量、功件功能呈递增趋势,如果需要删除功件或者改变功件树用途等重大属性更改时,应创建新的功件树分枝,或者创建新的主干功件树。
3.功件树的发布版本,根据功件数量的增加或功件功能的增加,创建递增的版本号。其中,新版本增加大的功能模块或者数据结构不向下兼容时,递增主版本号。如v1.0.0至2.0.0,增加功件数量时,递增次级版本号,如v1.8.0、至v1.9.0,增加功件功能时,递增三级版本号,如v1.9.0至v1.9.1,对于bug修复,则递增四级版本号,如v1.9.0.0至v1.9.0.1。
4.每个功件树可包含多个根目录,如:src目录作为源代码类型功件文件目录,web目录作为网页类型功件文件目录,bin目录作为编译后的功件文件或可执行文件目录,lib目录作为依赖库文件目录,doc目录作为文档目录,dist作为发布文件目录,test作为测试文件目录。
5.每个功件树的根目录下均有一个f目录(包、空间),作为功件的根目录,其内驻留各种类型的功件,如:src/f目录中可包含逻辑功件或数据功件或显示功件相关源代码程序文件,web/f目录中可包含网页功件相关程序文件;功件树目录结构见图1。
6.功件,即软件功能件,功件树内部的所有功能点,都可以抽象为功件;功件为功件树的基本组合单元,每个功件在功件树内部具有唯一性。
7.每个功件可包含一个主文件和/或一个主目录,并与功件名称一一对应,其中主文件名称为功件名称+文件后缀,主目录名称为全小写的功件名称,主目录下为功件内部程序文件。
8.每个功件由主文件和/或主目录中的程序文件对外提供可访问的方法(接口)。
9.功件的对外方法(接口)共分为三级:
一级方法(接口)仅有一个,以x命名,参数唯一,返回值唯一;
二级方法(接口)有四个,以a、b、c、d命名,参数唯一,返回值唯一;
三级方法(接口)可以有无数个,但均可以归属于a、b、c、d这四大类方法(接口),其方法(接口)名称、参数和返回值可按照下述规范自定义;
功件可实现上述三级方法(接口)中的任一级或几级。
10.功件树内部的功能点也是分级或者分层次存在的,因此功件内部也可以包含子功件,如用户(User)功件,代表“用户”相关的功能集合体,而用户登录、用户注册则可以作为User功件的子功件存在。
11.目录名称、包名、空间名称、统一资源定位符路径名称、数据库名称等,严格限定采用小写英文字母、数字、“.”、“_”、“-”等字符,如f、userpage、v1.8.0。
12.功件树名称、功件名称、类文件名称、数据表名称等,严格限定首字母大写,单词之间首字母大写,如Functree、FuncPage、FunctreeTeam;功件的主文件名称为功件名称+文件后缀,如FuncPage.html、FuncTeam.java、XPage.jsp。
13.功件属性变量名称、方法(接口)参数名称、数据字段名称,严格限定采用“骆驼法则”,首字母小写,单词之间首字母大写,如userId、userCount、pageLimit。功件常量名称,严格限定采用全大写英文字母,单词之间以“_”分割,如FUNCTREE_NAME、READ_COUNT。
14.功件的一级方法(接口)名称为x,二级方法(接口)名称为a、b、c、d,三级方法(接口)名称,严格限定以“a”、“b”、“c”、“d”四个字母开头,代表其属于a、b、c、d四大类方法中的某一类,后面可跟随需要处理的字段信息或功能信息,字段之间以“_”分割,如b_userInfo、c_password等。
15.功件中的一级和二级方法(接口)输入参数和返回值均只有一个,为字符串、Map、Dictionary、Struct、Hash、Object、List、Array等复杂结构类型,可包含类似JSON格式的键值对信息对象或数组,其中的键为命令关键字,值为需要处理的信息,可包含List、Array等列表、数组数据;功件的三级方法(接口)可有多个,其参数和返回值根据编程语言的不同,参数数量、数据类型和返回值可自定义,以保证方法(接口)的性能,但其中的名称定义应严格遵循上述规范。
-命令关键字说明($标识符可由其他符号替换,如@):
-**f或$f:代表功件或子功件,用于定位某项功能,可以嵌套多层命令,以调用多级子功件的功能;**
-**x或$x:代表未知、公用、首页、入口,可作为一级接口名称、唯一参数名称等;**
-**a或$a:代表增加(add)、创建(create)等含义,功件的二级方法(接口)之一,即a方法(接口),对应SQL中的insert into;**
-**b或$b:代表浏览(browse)、查询(retrieve)等含义,功件的二级方法(接口)之一,即b方法(接口),对应SQL中的select;**
-**c或$c:代表改变(change)、更新(update)等含义,功件的二级方法(接口)之一,即c方法(接口),对应SQL中的update;**
-**d或$d:代表删除(delete)、销毁(destroy)等含义,功件的二级方法(接口)之一,即d方法(接口),对应SQL中的delete;**
-**n或$n**:代表功件名称(或表名称),标示使用哪个功件(或哪个数据表),因为功件的名称在一个功件树中具有唯一性;在功件的方法(接口)或参数中,其对应SQL中的from;
-**o或$o**:代表对象、记录内容,在功件的方法(接口)或参数中,对应SQL中的fields信息;
-**w或$w**:代表什么、那里、哪个的含义,在功件的方法(接口)或参数中,对应SQL中的where;
-**s或$s**:代表排序的含义,在功件的方法(接口)或参数中,对应SQL中的orderby;
-g或$g:代表分组、组织等含义,在功件的方法(接口)或参数中,对应SQL中的group by;
-h或$h:代表具有、具备等含义,在功件的方法(接口)或参数中,对应SQL中的having;
-gt或$gt:代表大于,在功件的方法(接口)或参数中,对应SQL中的“>”号;
-lt或$lt:代表小于,在功件的方法(接口)或参数中,对应SQL中的“<”号;
-ne或$ne:代表不等于,在功件的方法(接口)或参数中,对应SQL中的“<>”号;
-or或$or:代表或的关系,在功件的方法(接口)或参数中,对应SQL中的“or”;
-mn或$mn:代表最小的含义,对应SQL中的min;
-mx或$mx:代表最大的含义,对应SQL中的max;
-bc或$bc:代表查询记录数量的含义,对应SQL中的select count;
-bd或$bd:代表查询不重复记录的含义,对应SQL中的select distinct;
-pn或$pn:代表查询数据页码:pageNo;
-pl或$pl:代表查询记录返回限制数量:pageLimit;
-r或$r:代表返回结果编码,作为功件的方法(接口)返回值的一部分,标示成功或失败;
-m或$m:代表返回或显示的信息,作为功件的方法(接口)返回值的一部分,说明原因或结果描述;
-v或$v:代表返回数据内容,作为功件的方法(接口)返回值的一部分,是具体的返回记录或对象。
16.尽可能由功件主文件集中对外提供的可访问的方法(接口),以提高功件的可维护、可替换、可插拔的特性;尽可能保证功件主目录中的程序文件中的方法(接口),仅供功件内部使用。
17.功件的一级方法(接口)、二级方法(接口)应用于不同进程、不同程序、不同服务之间时,尽可能使用包含JSON格式数据的字符串作为参数和返回值,因为大部分编程语言都支持字符串类型,而JSON支持多层嵌套命令和数据格式。
18.功件的三级方法(接口)参数和返回值类型可以使用复杂结构类型,以尽可能减少参数的数量,以及参数顺序不同而导致的方法(接口)的不确定性,从而尽可能减少三级方法(接口)的数量。
本发明实施例提供的一种基于功件树和功件库的目标软件生成方法,对于用户而言,直接输入与目标软件需求或者目标软件功能对应的自然语言或可翻译为自然语言的语音、文字、图片、图像、肢体语言等信息更加的简单、便捷。在根据目标软件需求或者目标软件功能对应的检索信息(包括:功件名称、功件和功件树属性描述信息、功件树语言)搜索时,更加的精确。而且,在调用功件或者功件树时,无需考虑是否出自同一个开发团队,因为功件和功件树均遵循预定的功件规范。因此,可以快速的将已经开发的软件成果、相关业务和技术经验等应用到新的软件项目上,以便于提高软件行业的生产能力。
相应地,本发明实施例还提供了一种基于功件树和功件库的目标软件生成装置。具体如图4所示,图4为本发明实施例提供的一种基于功件树和功件库的目标软件生成装置结构示意图。如图4所示,该装置包括:接收模块401、转换模块402、检索模块403以及处理模块404。
接收模块401,用于接收用户输入的目标软件的需求信息。
转换模块402,用于将目标软件的需求信息,转化为与目标软件需求信息对应的检索信息。
检索模块403,用于根据检索信息,在已创建的功件树集合中检索与目标软件的需求信息相匹配的第一功件树。
处理模块404,用于根据第一功件树,生成目标软件。
或者,
检索模块403,用于根据检索信息,在已创建的功件库中检索与目标软件的需求信息对应的第一功件,和/或第二功件。
处理模块404用于,将第一功件和/或第二功件进行组合,生成第二功件树,根据第二功件树生成目标软件,其中,功件树集合中所有功件树,以及功件库中所有功件,均遵循预定的功件规范。
优选的,处理模块404还用于:根据所述检索信息,开发新的功件树,并将新的功件树加入功件树集合中,其中新的功件树遵循预定的功件规范。
具体的,将已创建的功件树为模板创建新的功件树,其中,开发的新的功件树遵循预定的功件规范。
进一步优选的,处理模块404还用于:根据检索信息,开发与目标软件需求信息对应的新的功件,并将新的功件加入所述功件库中,其中开发的新的功件遵循预定的功件规范。具体的,将已有的功件为模板开发新的功件。
此外,该装置还可以包括:功件树管理模块405:用于管理功件树及其功件子树、功件树关联关系。具体包括相关提交、问题、帮助等信息创建、查找、更新、删除的协作开发机制,功件树关联关系维护机制,以及功件树扩散、扬弃机制。以及,功件管理模块406:用于管理功件及其子版本、功件关联关系,包括相关提交、问题、帮助等信息创建、查找、更新、删除的协作开发机制,功件关联关系维护机制,以及功件自动化生产和维护、可替换和可插拔机制。
本发明提供的基于功件树和功件库的目标软件生成装置中各部件所执行的功能已经在上述实施例一种基于功件树和功件库的目标软件生成方法中做了详细的介绍,这里不再赘述。
本发明实施例提供的一种基于功件树和功件库的目标软件生成装置,对于用户而言,在接收模块直接输入与目标软件需求或者目标软件功能对应的自然语言或可翻译为自然语言的语音、文字、图片、图像、肢体语言等信息更加的简单、便捷。而具体到输入目标软件需求或者目标软件功能,搜索出的功件树或功件将会更加的精确。检索模块则可以根据检索信息(包括功件名称、功件和功件树属性描述信息、功件树语言等),实现在已有功件树集合中查找匹配功件树,检索功件库中与目标软件需求或目标软件功能对应的第一功件,以及与第一功件相关联的第二功件。采用与目标软件需求或者目标软件功能对应的功件名称、功件和功件树属性描述信息、功件树语言,使搜索更加的精确。而在调用功件或者功件树时,无需考虑是否出自同一个开发团队,因为功件和功件树均遵循预定的功件规范。因此,可以快速的将已经开发的软件成果、相关业务和技术经验等应用到新的软件项目上,以便于提高软件行业的生产能力。
此外,本发明还提供了一种基于功件树和功件库的目标软件管理系统,包括上述实施例所述的基于功件树和功件库的目标软件生成装置,其中从应用方的角度理解,上述实施例中所述的装置是由该管理系统所对应的应用方中的开发者开发并使用的一种装置。而该管理系统对应的应用方还可以包括设计者和使用者。
其中,设计者对应的装置可以包括:需求管理模块,用于收集符合市场需要的软件需求,或接受使用者的软件需求,其中可以包括对软件需求的增、查、改、删等功能,以及设计软件需求的问题、讨论、回复等功能。设计管理模块:用于设计文档的增、查、改、删,以及设计相关的问题、讨论、回复等功能;设计者根据需求,给出设计文档,包括功件树和功件相关的设计图或设计说明文档;设计者还可以创建一个新功件树,然后根据需求内容将需求转化为相应的功件需求,并给出功件的相关功能和设计参数要求,其可以从已有功件树和功件库中搜索匹配的功件,将这些功件加入到新功件树中,而对于那些不存在的功件,设计者可以创建并发布给开发者进行开发。
使用者使用的一套装置可以包括:软件产品管理模块,用于对用户自己的软件产品管理。还可以用于对基于功件树和功件库的目标软件管理系统中的所有软件产品的管理。具体的,对用户的软件产品管理,可以包括对软件产品的收藏和购买功能,使得用户可以收藏或购买其他用户或功件树管理系统提供的软件产品,例如功件树产品和功件产品。而对该系统中所有的软件产品进行管理则可以包括:检索、下载、部署软件产品;还可以直接将软件产品下载、部署、安装到用户指定的软件或硬件运行环境中,同时系统管理员也可对其进行管理和维护操作。
此外,使用者对应装置中的软件产品管理模块,同样具有软件开发功能。可以根据自然语言开发软件。具体的,基于功件树和功件库的目标软件管理系统首先提供一个UI界面,由用户输入或选择语音、文字、图片、图像、肢体语言或其他信息(如软件类型、编程语言、后台数据库等信息),以代表其对目标产品的需求,系统将这些信息转化为自然语言(使用者的本地语言,涉及语音识别、图片图像识别技术),然后通过自然语言解析转化为功件名称、属性、描述和功件树属性、描述等检索条件,查找符合需求的已有软件产品或功件树(主要是发布功件树,因为其已经过测试和bug修复)供用户选择和确定,当没有符合需求的软件产品或功件树时,通过自然语言解析将用户需求转化为功件树语言,通过关联关系从功件库中提取所需功件形成功件列表供用户选择、更换和确定,并将最终确定的功件组合在一起,生成新的功件树,进而生成目标软件产品;当某些功件不存在或提取的功件不符合需求时,用户可通过功件发布功能发布给开发者进行开发或修改。软件产品管理模块还用于购买功件、开发功件任务发布、自动化部署软件产品等。这样,借助于上述功件树管理系统,就可以将信息(语音、文字、图片、图像、肢体语言或其他)转化为功件名称、功件和功件树属性描述信息、功件树语言,检索相关功件和功件树,进而完成目标产品的需求分析、研发设计、制造生产、安装部署、运行使用、维护升级等工作。
优选的,该系统还包含用户管理模块,用于执行包括用户的注册、登录、修改密码,以及角色、权限的分配等相关功能。
进一步优选的,还包含用户授权模块,用于根据已登录的用户对应的不同角色,给予不同的管理权限。这里已登录的用户可以是开发者、使用者、设计者。而根据不同的角色,授予的权限不同。可以使三方能够进行分工、协作式开发软件。
读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (17)
1.一种基于功件树和功件库的目标软件生成方法,其特征在于,所述方法包括:
接收用户输入的目标软件的需求信息;
将所述目标软件的需求信息转化为与所述目标软件需求信息对应的检索信息;
根据所述检索信息,在已创建的功件树集合中检索与所述目标软件的需求信息相匹配的第一功件树;
根据所述第一功件树,生成所述目标软件;
或者,
根据所述检索信息,在已创建的功件库中检索与所述目标软件的需求信息对应的第一功件,和/或第二功件;
将所述第一功件和/或第二功件进行组合,生成第二功件树;
根据所述第二功件树生成所述目标软件,其中,所述功件树集合中所有功件树,以及所述功件库中所有功件,均遵循预定的功件规范。
2.根据权利要求1所述的方法,其特征在于,当根据所述检索信息,在已创建的功件树集合中未查找到与所述目标软件的需求信息相匹配的功件树时,所述方法还包括:
根据所述检索信息,开发新的功件树;
并将所述新的功件树加入所述功件树集合中,其中所述新的功件树遵循所述预定的功件规范。
3.根据权利要求2所述的方法,其特征在于,所述根据所述检索信息,开发新的功件树包括:
将已创建的功件树为模板创建新的功件树。
4.根据权利要求1所述的方法,其特征在于,当根据所述检索信息,在已创建的功件库中未检索到与所述目标软件的需求信息对应的第一功件,和/或第二功件时,所述方法还包括:
根据所述检索信息,开发与所述目标软件需求信息对应的新的功件;
并将所述新的功件加入所述功件库中,其中所述开发的新的功件遵循所述预定的功件规范。
5.根据权利要求4所述的方法,其特征在于,所述开发与所述目标软件需求信息对应的新的功件,包括:
将已有的功件为模板开发新的功件。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述预定的功件规范包括:
创建与所述功件树对应的第一根目录;
以及,创建与同类型的功件对应的第二根目录。
7.根据权利要求6所述的方法,其特征在于,任一功件均包括与之对应的一个功件主文件和/或一个功件主目录。
8.根据权利要求7所述的方法,其特征在于,所述功件树包含的同类型的功件对应的第二根目录存储于所述功件树对应的第一根目录内,所述功件主文件和/或功件主目录存储于所述同类型功件对应第二根目录内。
9.根据权利要求1-5任一项所述的方法,其特征在于,所述预定的功件规范还包括:
所述任一功件均包含与之对应的帮助文档、问题和开发协作信息;
所述功件树所包含的帮助文档、问题和开发协作信息,为所述功件树所包含的所有功件分别对应的帮助文档、问题和开发协作信息的集合。
10.根据权利要求3所述的方法,其特征在于,所述功件树包括:主功件树、发布功件树和分枝功件树。
11.根据权利要求1-5任一项所述的方法,其特征在于,所述功件树集合中所有的功件树均具有扩散机制和扬弃机制。
12.一种基于功件树和功件库的目标软件生成装置,其特征在于,所述装置包括:
接收模块,用于接收用户输入的目标软件的需求信息;
转换模块,用于将所述目标软件的需求信息,转化为与所述目标软件需求信息对应的检索信息;
检索模块,用于根据所述检索信息,在已创建的功件树集合中检索与所述目标软件的需求信息相匹配的第一功件树;
处理模块,用于根据所述第一功件树,生成所述目标软件;
或者,
所述检索模块用于,根据所述检索信息,在已创建的功件库中检索与所述目标软件的需求信息对应的第一功件,和/或第二功件;
所述处理模块用于,将所述第一功件和/或第二功件进行组合,生成第二功件树;
根据所述第二功件树生成所述目标软件,其中,所述功件树集合中所有功件树,以及所述功件库中所有功件,均遵循预定的功件规范。
13.根据权利要求12所述的装置,其特征在于,所述处理模块还用于:
根据所述检索信息,开发新的功件树;
并将所述新的功件树加入所述功件树集合中,其中所述新的功件树遵循所述预定的功件规范。
14.根据权利要求13所述的装置,其特征在于,所述处理模块具体用于:
将已创建的功件树为模板创建新的功件树。
15.根据权利要求12所述的装置,其特征在于,所述处理模块还用于:根据所述检索信息,开发与所述目标软件需求信息对应的新的功件;
并将所述新的功件加入所述功件库中,其中所述开发的新的功件遵循所述预定的功件规范。
16.根据权利要求15所述的装置,其特征在于,所述处理模块具体用于:
将已有的功件为模板开发新的功件。
17.根据权利要求12-16任一项所述装置,其特征在于,所述装置还包括:功件树管理模块:用于管理功件树及其功件子树、功件树关联关系;
功件管理模块:用于管理功件及其子版本、功件关联关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611090023.1A CN106843827A (zh) | 2016-11-30 | 2016-11-30 | 一种基于功件树和功件库的目标软件生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611090023.1A CN106843827A (zh) | 2016-11-30 | 2016-11-30 | 一种基于功件树和功件库的目标软件生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106843827A true CN106843827A (zh) | 2017-06-13 |
Family
ID=59145964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611090023.1A Pending CN106843827A (zh) | 2016-11-30 | 2016-11-30 | 一种基于功件树和功件库的目标软件生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106843827A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107360219A (zh) * | 2017-06-22 | 2017-11-17 | 普奥云信息科技(北京)有限公司 | 服务目录生成装置、云端服务器以及物联网系统 |
CN109343831A (zh) * | 2018-08-22 | 2019-02-15 | 平安普惠企业管理有限公司 | 一种html组件的管理方法及装置 |
CN109445771A (zh) * | 2018-10-25 | 2019-03-08 | 北京和普威视科技股份有限公司 | 一种cs架构下网络层模块代码自动生成工具及方法 |
CN109710300A (zh) * | 2018-11-29 | 2019-05-03 | 中国北方车辆研究所 | 一种标定与诊断软件版本管理的软件构架 |
CN110134707A (zh) * | 2019-04-12 | 2019-08-16 | 平安普惠企业管理有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN111158746A (zh) * | 2019-12-31 | 2020-05-15 | 中国银行股份有限公司 | 一种调用关系的获取方法及装置 |
WO2020124283A1 (zh) * | 2018-12-16 | 2020-06-25 | 吉安市井冈山开发区金庐陵经济发展有限公司 | 信息处理装置 |
CN112685326A (zh) * | 2021-01-26 | 2021-04-20 | 政采云有限公司 | 一种软件测试方法、系统、设备及可读存储介质 |
CN117093205A (zh) * | 2023-08-24 | 2023-11-21 | 武汉人云智物科技有限公司 | 一种软件开发全流程低代码工程构建方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615425A (zh) * | 2015-01-16 | 2015-05-13 | 贾志东 | 一种基于功件和功件树开发软件系统的方法和系统 |
-
2016
- 2016-11-30 CN CN201611090023.1A patent/CN106843827A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615425A (zh) * | 2015-01-16 | 2015-05-13 | 贾志东 | 一种基于功件和功件树开发软件系统的方法和系统 |
CN105718261A (zh) * | 2015-01-16 | 2016-06-29 | 贾志东 | 一种基于功件和功件树的目标产品生成方法和系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107360219A (zh) * | 2017-06-22 | 2017-11-17 | 普奥云信息科技(北京)有限公司 | 服务目录生成装置、云端服务器以及物联网系统 |
CN109343831A (zh) * | 2018-08-22 | 2019-02-15 | 平安普惠企业管理有限公司 | 一种html组件的管理方法及装置 |
CN109445771A (zh) * | 2018-10-25 | 2019-03-08 | 北京和普威视科技股份有限公司 | 一种cs架构下网络层模块代码自动生成工具及方法 |
CN109710300A (zh) * | 2018-11-29 | 2019-05-03 | 中国北方车辆研究所 | 一种标定与诊断软件版本管理的软件构架 |
WO2020124283A1 (zh) * | 2018-12-16 | 2020-06-25 | 吉安市井冈山开发区金庐陵经济发展有限公司 | 信息处理装置 |
CN110134707A (zh) * | 2019-04-12 | 2019-08-16 | 平安普惠企业管理有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN111158746A (zh) * | 2019-12-31 | 2020-05-15 | 中国银行股份有限公司 | 一种调用关系的获取方法及装置 |
CN111158746B (zh) * | 2019-12-31 | 2024-01-23 | 中国银行股份有限公司 | 一种调用关系的获取方法及装置 |
CN112685326A (zh) * | 2021-01-26 | 2021-04-20 | 政采云有限公司 | 一种软件测试方法、系统、设备及可读存储介质 |
CN117093205A (zh) * | 2023-08-24 | 2023-11-21 | 武汉人云智物科技有限公司 | 一种软件开发全流程低代码工程构建方法 |
CN117093205B (zh) * | 2023-08-24 | 2024-02-20 | 武汉人云智物科技有限公司 | 一种软件开发全流程低代码工程构建方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106843827A (zh) | 一种基于功件树和功件库的目标软件生成方法及装置 | |
Chambers et al. | Spark: The definitive guide: Big data processing made simple | |
CN101297268B (zh) | 用于设计自动业务过程应用程序的集成系统、工具和方法 | |
CN102656557B (zh) | 自动化企业软件开发 | |
US9087296B2 (en) | Navigable semantic network that processes a specification to and uses a set of declaritive statements to produce a semantic network model | |
Corcho et al. | Ontological engineering: what are ontologies and how can we build them? | |
JP2003514283A (ja) | ウェブ・サイトのコンテンツを自動的に更新するための方法および装置 | |
WO2007050110A2 (en) | Method and model for enterprise system development and execution | |
CN112860260B (zh) | 一种在高校场景下基于web的跨平台应用构建工具及方法 | |
CN115237380A (zh) | 一种基于元代码的低代码开发系统及方法 | |
CN112764743B (zh) | 一种基于数据模型驱动自动生成软件的方法 | |
CN108959626A (zh) | 一种跨平台异构数据简报高效自动生成方法 | |
Shklar et al. | Putting legacy data on the Web: A repository definition language | |
Rahmouni et al. | Approach by modeling to generate an e-commerce web code from laravel model | |
Pons et al. | Schema evolution in object databases by catalogs | |
US10067749B2 (en) | Generating consumer-oriented APIs from a UI model | |
Cavalcanti et al. | Web site synthesis based on computational logic | |
Hauptmann et al. | Supporting derivation and customization of user interfaces in software product lines using the example of web applications | |
Loskyll et al. | UbisEditor 3.0: Collaborative ontology development on the Web | |
JP2005202612A (ja) | データベース生成プログラム作成装置 | |
Guay Paz et al. | Working with an Azure Cosmos DB Database | |
Vlachidis et al. | CrossCult D2. 4 Refined digital cultural resource data & data structure | |
Pohjonen et al. | Interactive television applications using metaedit+ | |
Luburić et al. | A code generator for building front-end tier of REST-based rich client web applications | |
CN117850752A (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 | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20201106 |