CN104615425A - 一种基于功件和功件树开发软件系统的方法和系统 - Google Patents
一种基于功件和功件树开发软件系统的方法和系统 Download PDFInfo
- Publication number
- CN104615425A CN104615425A CN201510024507.5A CN201510024507A CN104615425A CN 104615425 A CN104615425 A CN 104615425A CN 201510024507 A CN201510024507 A CN 201510024507A CN 104615425 A CN104615425 A CN 104615425A
- Authority
- CN
- China
- Prior art keywords
- merit part
- merit
- tree
- interface
- software
- 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等高级语言,如编程方法从面向机器、面向过程发展到面向对象、面向命令、面向服务等,都是在尝试提高软件复用率和加快软件开发速度。
但是,即使出现了各种组件技术(如CORBA、COM\DCOM),各种框架技术(如Spring、Struts),各种编程语言(如C\C++、JAVA、D),各种编程方法(如面向过程、面向对象、面向服务),各种网络协议(如TCP/IP、HTTP),各种网络服务技术(如WebService、REST),各种平台技术(如SAAS、PAAS、BAAS),以及虚拟容器技术(如虚拟机、Docker),都不能改变一个事实,即每开发一个新的软件系统或产品,都需要一个团队(可看作软件作坊)中的软件开发人员一行行编写代码来实现它;而这个软件系统一旦成型,再对它进行升级或更新,还是需要由软件开发人员一行行编写或改写代码来实现。在开发下一个新的软件系统时,即使已经使用了这样或那样的组件技术、构件技术、框架技术,还是要重复上述步骤。
发明内容
本发明针对如何解决软件系统或产品的开发、编译、打包、部署、运行、更新升级以及代码重用的技术问题,提供了一种基于功件和功件树开发软件系统的方法和系统。
本发明解决上述技术问题的技术方案如下:一种基于功件和功件树开发软件系统的方法,包括以下步骤,
步骤1,将使用者给出的描述目标软件系统功能的自然语言翻译为功件树描述语言;
步骤2,在已创建的功件和功件树的集合中,用功件树描述语言检索目标软件需要的第一功件以及与所述第一功件相关联或有调用关系的第二功件;所述功件为软件系统或产品中一个完整并且独立的功能模块,具备属性描述、配置事件参数、自完备数据存储以及对外连接接口,对外连接接口采用三级接口规范;所述功件树为通过关联关系或者接口调用关系组合在树形或网状结构中的功件的集合,所述功件树包含软件系统流程;
步骤3,提取所述第一功件和所述第二功件;
步骤4,将所述第一功件与所述第二功件进行匹配;
步骤5,对所述第一功件和所述第二功件进行组合,生成所述目标软件;
步骤6,将所述目标软件编译打包,并安装部署到目标硬件或软件系统环境中。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步地,步骤1中,所述功件树描述语言,包含功件的名称和功件出现的顺序,或功件的关联关系,用于精准的定位功件和功件树。
进一步地,每一个所述功件具有唯一的功件型号。
进一步地,在已创建的功件和功件树的集合中,还可以用链表、图谱、功件名称或目标软件需要的UI类型功件等方式检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件。
进一步地,步骤2中,所述三级接口规范的一级接口有3个,分别为主要接口、辅助接口和预留接口,所述一级接口的名称为字符、数字或词语,并且仅有1个输入参数和1个返回值或输出参数,所述一级接口根据属性参数规范、操作命令规范建立;所述三级接口规范的二级接口有4个,所述二级接口的名称为字符、数字或词语,并且仅有1个输入参数和1个返回值或输出参数,所述二级接口根据属性参数规范、操作命令规范建立;三级接口为多个,接口名称为字符、数字或词语,参数个数、类型和顺序统一、固定,所述三级接口根据属性参数规范、操作命令规范和开发语言建立;所述三级接口规范包含了系统权限控制信息。
进一步地,所述功件间的关联关系或者调用关系根据关联接口的等级不同分为一级关联或调用、二级关联或调用和三级关联或调用。
进一步地,所述基于功件和功件树开发软件系统的方法还包括管理所述功件和所述功件树,管理所述功件和所述功件树包括创建、显示、修改、升级、扩展、删除所述功件和功件树,以及功件关联和功件树关联。
进一步地,所述功件中单一功能的功件可组合形成复杂功件,所述复杂功件也遵循三级接口规范,并将其包含的功件接口暴露给其他功件或软件系统。
进一步地,所述功件间还包括包含与被包含、依赖与被依赖、引用与被引用、开发与开发于、运行与运行于的关系。
本发明解决上述技术问题的另一种技术方案如下:一种基于功件和功件树开发软件系统的系统,包括翻译模块,用于将使用者给出的描述目标软件系统功能的自然语言翻译为功件树描述语言;
检索模块,用于在已创建的功件和功件树的集合中,用功件树描述语言检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件;所述功件为软件系统或产品中一个完整并且独立的功能模块,具备属性描述、配置事件参数、自完备数据存储以及对外连接接口,对外连接接口采用三级接口规范;所述功件树为通过关联关系或者接口调用组合在树形或网状结构中的功件的集合,所述功件树包含软件系统流程;
提取模块,用于提取所述第一功件和所述第二功件;
匹配模块,用于将所述第一功件与所述第二功件进行匹配;
组合模块,用于对所述第一功件和所述第二功件进行组合,生成所述目标软件;
编译打包安装部署模块,用于将所述目标软件编译打包,并安装部署到目标硬件或软件系统环境中。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步地,所述功件树描述语言,包含功件的名称和功件出现的顺序,或功件的关联关系,用于精准的定位功件和功件树,所述翻译模块具有自然语言补全与纠错功能,用于自动补全和纠正使用者所需要的功件。
进一步地,所述的基于功件和功件树开发软件系统的系统,还包括管理存储模块,用于以链表或图谱的方式存储和管理所述功件和所述功件树,其中,管理所述功件和所述功件树包括创建、显示、修改、升级、扩展、删除所述功件和功件树,以及功件关联和功件树关联。
进一步地,在已创建的功件和功件树的集合中,还可以用链表、图谱、功件名称或目标软件需要的UI类型功件等方式检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件。
本发明的有益效果是:通过功件和功件树实现用零代码的模块化组合方式来生成软件系统或产品。
附图说明
图1为本发明所述基于功件和功件树开发软件系统的方法流程图;
图2为本发明所述基于功件和功件树开发软件系统的系统结构图;
图3为BBS网站的功件关联示意图;
图4为基于功件和功件树使用自然语言开发软件系统网站的功件关联示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
功件,即软件功能件,可以是软件系统或产品中的一个基本的逻辑或物理概念,也可以是一个多功能复合体,但其必须是一个完整而且独立的功能模块(类似现实当中的设备,具有各自特有功能,且能够组合在一起完成更复杂的功能或组成一个系统),以便可以快捷地将相关联的功件组合起来,从而不需要进行额外的开发工作,即可完成软件系统或产品的开发工作。
如果根据功件在软件系统中所处层次,可以用UI(用户界面)、控制、逻辑、数据等层次来区分。其中,UI层功件主要给用户提供人机交互的功能界面,控制层功件则包括控制部分、认证授权部分、校验部分等,逻辑层功件则包括功件的业务逻辑或功能,数据层功件则包括数据持久化部分,包括数据寻址、数据定义、数据的增删改查、数据存储、数据索引、数据分析统计等多个部分。
根据功件在软件系统或产品中的重要性以及在业务流程中所起的作用来区分,可以将功件分为主要功件和辅助功件等类别;其中主要功件,是指在软件系统中占据主导地位的软件功能件,能够体现软件系统所包含的功能特性和业务流程;辅助功件在软件系统中不能独立存在,必须依赖或辅助于主要功件,但它能够有效得将主要功件链接起来,或与主要功件组合在一起,共同完成某些功能和形成某种业务流程。而对于某些功件,尤其是组成应用类型软件的功件来说,必须要借助一些目前已存在的框架、类库和操作系统等环境,才能运行起来并发挥作用,而这些操作系统、浏览器、数据库、技术框架、类库、开发平台或技术组件等,它们不具备业务逻辑,但却是功件的必要组成部分或开发运行环境,也是功件能够组成软件系统的粘合剂,所以其也可以作为一种特殊辅助功件存在;比如浏览器可以视为一种特殊的辅助功件,是因为网页类型的UI功件要运行于浏览器中才能完成其功能,而网页与浏览器的关联关系是运行/运行于的关系。因此,上述功件又可以用业务功件和技术功件两个概念来区分。而业务功件和技术功件是相对而言的,比如某个功件,在A软件系统中是技术功件,不能反映A软件系统的业务流程,但是其在B软件系统中却是反映B软件系统流程的主要功件,主要功件和辅助功件也是如此。
根据功件的功能角色来区分,可以将功件分为基本、连接、转换、显示、控制、数据等类别。其中,基本功件是软件系统中的基本功能组件,代表了软件所具备的基本功能;连接功件是将两个或两个以上的基本功件连接或关联起来的功件;转换功件主要是指接口转换,可以将功件的接口转换为其他功件所需要的和匹配的接口;显示功件主要给用户提供显示和操作方面的功能;控制功件提供逻辑控制或授权认证等功能;数据功件主要用于数据的持久化部分。
功件的定义,可以从软件系统业务流程的角度来考虑,以物理或逻辑概念为主,抽象出主要功件,然后为了将这些主要功件联系组合起来,反映出各种业务流程,抽象出相应的辅助功件,这样定义出来的功件,最终才能够以符合软件业务流程的方式组合到功件树当中,除了上述业务功件外,操作系统、浏览器、数据库、某种技术框架、类库、开发平台、技术组件等,可以抽象为技术功件,作为特殊辅助功件组合到功件树中。单一功能的功件,可以组合成复杂功能的功件;将不同的功件有效的组织、衔接起来,并使其在一定硬件或软件环境下独立运行,即可成为一个软件系统或产品。
上述主要功件的关联组合,能够体现软件系统流程,辅助功件服务于主要功件。功件通过关联关系组合在一起,即可生成软件系统。
功件可具备完整的功能、对外连接接口(可以理解为设备接口)、详细的属性描述(可以理解为设备规格)和配置事件参数、自完备数据存储等。
1)对外连接接口:对外连接接口(或调用地址、方法等)可以有多个,是功件之间联系通讯的基本途径和手段。按接口的调用方式,可以分为两类,一类是暴露在外供其它功件或其它系统调用的接口,称之为被调接口或输入接口,一类是需要调用其他相关功件或其它系统的接口来完成业务流程功能操作,称之为主调接口或输出接口。接口调用方式、传输协议、数据格式可以多种多样,所以接口定义、实现、调用、通讯方式不限于特定协议或数据格式;接口内部功能实现一般包括逻辑控制部分、认证授权部分、校验部分、数据输入输出等;当调用功件的主调接口与被调用功件的被调接口,只有100%匹配,即保证接口调用方式匹配、方法名称一致、调用地址一致、输入参数一致和返回参数一致,才能连接或调用成功。
2)属性描述和配置事件参数:功件的属性包括名称、型号、规格、接口数量、接口调用方式、开发环境、运行环境等,配置参数则包括一些如地址、口令等的变量设置,事件参数则用于某些特殊的功件,如UI类型功件,当达到某种条件时激发的事件通知和响应处理等。某种功件的名称具有唯一性和排他性,但由于功件处于不同的业务流程(或功件树)中时,其有不同的实例存在,而每个实例根据实现方式不同、规格不同以及升级等原因,其有不同的版本存在,因此,为了区分同一种功件的不同版本或实例,可以用功件型号来唯一标识某一个具体功件。
3)自完备数据存储:有些功件包含数据持久化部分,其与一般的数据持久化不同,它包括数据寻址、数据定义、数据的增删改查、数据存储、数据索引、数据分析统计等多个部分,即可以视为程序功能与数据库的综合体;如果功件需要外部数据存储(如MySQL、Oracle数据库等)支持,则功件内部应具备数据库、表、索引等定义,以至于其可以作为独立的功能模块存在,而不需要额外的数据库相关开发工作;也就是说,数据类型的功件应具备数据自定义、自包含、自操作的特性,如果脱离这一点,那么就失去了功件的可组合、可插拔、可替换性。
功件的实现可以多种多样,不限于语言、开发环境和运行环境,功件存在方式也可以多种多样,如可以以源代码方式存在,也可以以二进制、字节码或其他计算机可以理解的方式存在,功件的作用也不限于进程内还是进程外,功件的运行不限于解释型或编译链接型,功件的调用方式也不限于静态或动态,功件的产生和实现,服务于其在软件系统或产品中所处位置、所起作用;因此,功件可能是一个类或方法集合,可能是一段程序代码或一些文件集合,也可能是一个独立的线程或进程。
功件之间的主要关联关系为调用和被调用关系,次要关联关系还包括如下:包含/被包含关系,如复杂功件包含单一功能的功件,业务功件包含技术功件,主要功件包含辅助功件;依赖/被依赖关系,如某个功件或某些功件依赖于某个技术框架或组件(特殊辅助功件);引用/被引用关系,比如某个功件要引入另外一个功件才能完成某些功能;开发/开发于关系,如功件使用某种开发平台或工具开发(特殊辅助功件);运行/运行于关系,如功件运行于某个服务程序或操作系统中(特殊辅助功件)。
功件所具备的功能、属性描述和配置事件参数,以及自完备数据存储等,都属于功件的内部实现,对于其他与其关联或有调用关系的功件来说,功件的对外接口才是它们所关心和使用的。
每个功件都要对外暴露接口供其他功件调用,各个功件或软件系统间产生、交互、通讯的数据,就是通过这些功件接口的调用和被调用来实现的,为了使得不同厂家、不同开发人员生产出来的功件能够有效地组合在一起完成一定的业务流程,就要保证调用功件的调用接口和被调用功件的被调用接口100%匹配。功件的存在方式可以多种多样,开发功件的编程语言也多种多样,那么,功件接口的实现方式也是多种多样,比如可以有设计时接口、运行时接口,进程内接口(方法)、进程外接口,有本地接口、网络接口等,有二机制层级接口、字节码层级接口(中间语言接口)、源代码层级接口等。
功件可以展示信息,可以完成某些业务逻辑功能,可以存储数据,而功件之间则是通过调用和被调用,才能组合在一起完成一定的业务功能或满足某种业务流程,那么这种调用和被调用所交互的信息,就是各种格式的数据,比如SQL、JSON数据、XML数据或其他。由此,我们可以得出以下结论:功件是能够实现“用零代码的模块化组合方式来生成软件系统或产品”的基础,包含界面、业务逻辑功能、数据和业务流程的功件才是模块化组合编程的发展方向。
综上所述,只要保证功件接口的规范性,就能够保证功件的可组合、可插拔、可替换性。
对于广大开发人员(包括程序员、设计师)来说,最常接触的是源代码,而广大开发人员是实现软件系统业务流程的生产工人,即功件的生产者。所以,通过源代码层级的功件接口规范,就可以使广大开发人员在同一个规范下,生产出同样规格、互相之间可以有效互动的制式功件(就像只有同样规格的螺杆和螺母才能够咬合在一起,起到固定物品的作用),这样的制式功件才能按照一定的业务流程自由组合,从而生成目标软件系统或产品。
所以,本发明从源代码层级接口出发来阐明一种功件开发规范,即一种功件的具体实现方法,只有按照规范生产的功件,才是制式功件,其才能随时以可插拔、可替换的方式组合进软件系统当中或功件树当中。其他类型、层级的接口或功件实现方法,可以参照本功件开发规范。
下面,先从源代码层级剖析一下功件接口(方法)常遇到的问题。
在实际编程中,我们经常遇到调用某个方法时,出现“方法未定义”或“方法不存在”的错误,这一般有两种原因,一种是方法名称不正确,一种是方法的参数不正确;方法的参数不正确,又分为参数个数不正确、参数顺序不正确、参数类型不正确。所以,对于一种编程语言来说,功件接口(方法)主要包括接口(方法)名称、参数(包括输入参数、输出参数或返回值,注意:这些参数就是功件之间交互的数据)两个部分。而接口(方法)名称不对、参数不对,则会直接导致接口(方法)的调用失败。比如在Java语言中:public static String add(String s,int i,boolean b),方法名称是add,方法参数个数是3,参数类型顺序分别是字符串类型、整型、布尔型,返回值是字符串类型,在调用这个方法时,方法名称不对、方法参数不是3个、参数类型不对、参数类型顺序不对,都会导致方法调用的失败。
所以,从源代码层级来看,主调功件的调用接口,只有和被调功件的被调接口的方法名称和参数的100%匹配(即符合编程语言要求的匹配),才能保证二者之间调用成功。所以,建立一种简洁、易懂的功件接口规范,是功件开发的关键。对于源代码层级的功件接口规范要求,各种编程语言可以有各自的特殊性,但其一致性的规范要求是:调用者和被调者的接口(方法)名称一致,参数一致,以及参数的个数、参数顺序、参数类型一致,返回值或输出参数一致。
接口(方法)名称保持一致是必须的,而且是容易实现的,难点在于输入输出参数的多样性上面。所以,参数个数越少、参数类型越简单,功件接口规范越简单,则功件和功件之间的调用关系越简单,从而开发人员越容易开发新的符合接口规范的功件。
功件作为包含自完备数据存储机制的软件功能件,可以看作是数据库和系统功能的综合体(数据库也可以看作是一种功件),而功件和功件之间产生、交互、通讯的就是数据。基于数据库理论我们可以知道,数据的CRUD操作是数据产生、交互的基础。由此可以设想:如果功件只有一个接口,只有一个输入参数和一个返回值(或输出参数),如果参数和返回值包含内容所表达的含义足够丰富,并能够完整地体现数据的CRUD操作,那么就可以实现,一个功件只需要一个接口,就可以完美地将其内部的功能暴露给其他功件来调用,从而实现功件之间的调用和被调用关系。这个设想,就是下面定义功件一级接口的源起。
对于大多数的高级编程语言来说,都有字符串的概念,而字符串可以包含任何内容,如SQL、JSON、XML等,而某些编程语言还支持一些其他的集合对象,也可以用来携带丰富的信息,如Java语言中的Map集合。因此,字符串(包含某种数据格式或语言)、键值对(比如java中的Map)等类型的数据或对象,都可以作为接口(方法)的唯一参数的唯一数据类型,虽然这样做,可能需要功件损失一些性能来进行参数解析工作,才能完成功件内部功能的调用,但这样可以保证参数的简单性,对于功件开发者来说,更容易记忆和使用,而不必去查繁杂的API手册才能知道参数要如何设置。
功件间的通讯信息就是数据,对于数据来说,就是CRUD,即增、查、改、删这4大类操作而已;而对于UI类型的功件,这4大类操作对应的是UI的创建、显示、移动或改变、隐藏或销毁,对于逻辑对象来说,这4大类操作对应的是对象的创建、呈现或运行、更改、销毁。那么功件对外的接口,只要保证提供这4大类功能,即可把功件内部的功能完全外在化,即把功件内部功能被其他功件从外部所调用,从而完成某种业务逻辑或业务流程。这4大类功能,就是下面定义功件二级接口的源起。
对于各种编程语言来说,原生的方法、函数或类的开发方式,是性能最高的,并且可以由开发人员随意定义和组织,但就是原生开发方式的这种灵活性,会导致不同开发人员开发的功件难以互相调用和组合,比如一个增加记录的方法名称,有些人愿意使用add,有些人可能使用insert,有些人用put。所以,即使要用各种语言原生的开发方式来开发功件及其接口,也要保证功件对外接口符合一定的接口规范,只有这样,才能保证功件的调用和被调用顺利实现。上述要求,也是下面定义的功件三级接口的实现要求。
本发明针对上述情况,提出了一种功件的具体实现方法,即确立了功件的一种开发规范,通过遵循本发明提出的功件开发规范开发的功件,将有利于建立功件树,有利于功件间的数据交互和接口访问,有利于实现可插拔、可替换的“用零代码的模块化组合方式来生成软件系统或产品”的开发方式。
综上所述,本发明阐述的功件开发规范的定义如下:
1.属性、参数规范:功件之间的产生、交互、通讯的信息,可以是任意一种计算机可以理解的数据格式,其中包含丰富的信息,比如可以是某种语言、某种协议等等。对于大多数编程语言来说,都包含字符串数据,而字符串类型的数据,表达能力强,其可以包含各种格式的复杂数据,如SQL、JSON、XML等,也可以是自然语言。那么,这些数据中包含的功件的属性信息或参数信息,假如以键值对来表达的话,那么键的名称一定要规范,值的类型一定要规范,才能保证功件之间的数据交换通畅。因此,本规范要求:每个功件的属性、参数的名称、数据类型要规范(内容省略,将遵循未来的业界标准),而所有功件共同的属性、参数名称要保持一致。下面给出一具体实例:如User功件,规范要求name属性代表用户名称,值为字符串类型“User”,age属性代表用户年龄,值为整型,那么其他功件在调用User功件时,不管是调用时的输入参数,还是调用后的返回值或输出参数,都要遵守此规范,而不能随意定义为其功件中的属性或参数为userName或userAge。同样,如Permission功件,规范要求name属性代表其名称,而不是permissionName。
2.操作命令与返回值规范:功件之间的通信语言或协议,可以是任意一种计算机可以理解的数据格式。那么,功件间的接口调用,就包括了数据的4大类操作:即著名的CRUD,其对应于数据库中常用的四个概念:增加、查询、更改、删除,或者对应UI的创建、显示、移动或改变、隐藏或销毁等操作,或者对应逻辑或物理对象的创建、呈现或运行、更改、销毁等操作。功件间表达这4大类操作的语言或协议可以有多种,比如SQL、JSON、XML等。本发明以类似JSON或Map的键值对为例,定义如下操作命令规范,以利于功件间的接口调用:用键值对中的键来作为操作命令,用键值对中的值作为操作对象;键的名称可定义abcd(注:也可以用其他任意字符或文字或数字等来表示,如CRUD)这4个字母为主要操作命令,分别代表上述的4大类操作,其中,a对应SQL语言中的insert或C,b对应SQL语言中的select或R,c对应SQL语言中的update或U,d对应SQL语言中的delete或D;另外,还有一些辅助操作命令,f对应子功件的名称,i代表子功件的接口名称,t对应参数类型或数据表名称,q对应要查询的字段或属性、参数信息,dt对应SQL语言中的distinct,w对应SQL语言中的where,ne对应SQL语言中的不等于,gt对应SQL语言中的大于,lt对应SQL语言中的小于,gte对应SQL语言中的大于等于,lte对应SQL语言中的小于等于,pn对应分页查询中的页码,pl对应分页查询中每页的记录数,so对应SQL语言中的order by,or对应SQL语言中的or,cnt对应Count计数,avg对应平均值,sum对应求和,max对应最大值,min对应最小值,fst对应第1条记录,lst对应最后1条记录,g对应SQL语言中的group by,h对应SQL语言中的having,最后是接口(方法)调用的返回值规范,r代表返回值编码,为int数据类型,m代表返回的文字消息,v代表返回的数据记录;为了更加明确abcd等属于命令范畴,而不是字段、属性名称或其他,为了更加利于开发人员阅读和程序处理,每个操作命令字符前面可加字符“”或其他标识字符,一起组合为操作命令,如“a”、“b”、“c”、“c”、“f”、“i”等。上述操作命令以及命令值所组成的键值对,以类似JSON或Map的数据格式封装为接口(或调用地址或方法)的参数,即可完成功件间的调用与通讯。
3.接口规范:功件对外接口(或者是外部可调用的URL、方法)分为三级:
(1)本发明定义功件的一级接口有3个,定义为x(可以用任意字母或文字或数字代替,比如中文的“一”、数字1或其他)、y(或中文的“二”或数字2或其他)和z(或中文的“三”或数字3或其他)。其中x接口为主要接口或万能接口,对于大多数功件(主要指未来开发的制式功件,而目前已存在的操作系统、类库等特殊辅助功件不具备此接口)来说只需具备此接口,此接口只有1个输入参数,参数为字符串或JSON或Map等复杂数据类型或对象,可以包含丰富的操作信息,包括上述的属性参数和操作命令,以至于仅通过这一个接口,就能保证每个功件都可以将其内部功能完整地暴露给外部,供其它功件调用,从而完成接口的调用和被调用操作。y、z接口为辅助接口或预留接口,用于未来可能出现的新需求,可选择实现,不是所有功件都需要,只有某些特殊功件才具备,其作用如配置参数、控制信息、事件响应等,或包含一些x接口不能或不便实现的功能、操作,或辅助x接口完成一些复杂功能、控制操作。一级接口的要求是:输入参数唯一、返回值或输出参数唯一。以Java语言为例,功件可以是一个类,此类对外仅提供一个公共静态方法,输入参数是JSON格式的字符串,返回值也是JSON格式的字符串,方法名称为x,则方法原型为public static String x(Strings),外部调用此功件的方式为“类名.x(s)”,如User功件的调用方式为User.x(s),其中s包含的信息假如为JSON格式的字符串,则其内容可为:{a:{id:1,name:'jzd'}}或{'a':{id:1,name:'jzd'}},对应SQL语言中的insert into user(id,name)values(1,'jzd');{b:{q:{name:1},w:{id:1}}}或{'b':{'q':{name:1},'w':{id:1}}},对应SQL语言中的select namefrom user where id=1;{c:{w:{id:1},q:{name:'jzd'}}}或{'c':{'w':{id:1},'q':{name:'jzd'}}},对应SQL语言中的update userset name='jzd'where id=1;{d:{w:{id:1}}}或{'d':{'w':{id:1}}},对应SQL语言中的delete from user where id=1;接口(方法)的返回值类似如下:{'r':0,'m':'添加记录成功。'},或包含返回多条数据记录信息:{'r':0,'m':'成功。','v':[{'key1':'value1','key2':'value2'},{'key1':'value3','key2':'value4'}]},其中,“r”代表接口执行后返回的结果编码,int类型,如果“r”的值为0,则认为成功,其他值为失败;“m”为返回的文字提示信息;“v”为返回的记录信息或其它数据,可为JSON格式的数据。
(2)本发明定义功件的二级接口有4个,可命名为a、b、c、d四大接口,即功件的abcd接口(abcd可用其他字母、文字或数字来定义),此级接口可选择实现,每个接口有1个输入参数,可命名为s,参数值为字符串或JSON或Map等复杂数据类型或对象,可以包含丰富的操作信息,包括上述的属性参数和操作命令等。以Java语言开发的User功件为例,这4个二级接口可用4个静态类方法来实现,a接口(方法)原型为public staticString a(String s),其中的s包含的信息假如为JSON格式的字符串,则为:{id:1,name:'jzd'},对应SQL语言中的insert into user(id,name)values(1,'jzd');b接口(方法)原型为public static String b(Strings),其中的s为{q:{name:1},w:{id:1}}或{'q':{name:1},'w':{id:1}},对应SQL语言中的select name from user where id=1;c接口(方法)原型为public static String c(String s),其中的s为{w:{id:1},q:{name:'jzd'}}或{'w':{id:1},'q':{name:'jzd'}},对应SQL语言中的update user set name='jzd'where id=1;d接口(方法)原型为public static String d(String s),其中的s为{w:{id:1}}或{'w':{id:1}},对应SQL语言中的delete from user where id=1;接口(方法)的返回值同一级接口。
(3)本发明定义功件的三级接口可以有多个,可选择实现。之所以定义功件的三级接口,是为了获得更好的性能,因为其可以减少接口参数的解析操作;同时,也是为了更贴近各种编程语言原生开发模式,以及兼容目前已有的技术功件,如每个操作系统都有各自的API,各种开发框架、技术组件也有各自的API,各种编程语言、服务程序或平台也有各自的API。因此,对于新开发的功件来说,三级接口(方法)的实现可根据各自不同的编程语言特点来实现,但要去掉接口(方法)名称定义的随意性,以及接口参数或返回值定义的随意性,否则不利于功件的组合或调用;因此,为了保证三级接口(方法)名称具有一定的规范性,三级接口名称中可包含功件的属性、参数(字段)名称来区分,如涉及多个或全部属性(字段)操作时,可将“all”等词语或者数字加入到接口名称中。本发明定义三级接口规范如下:要求每个功件接口(方法)的输入参数个数、输入参数类型、输入参数顺序要规范,去掉随意性定义,接口(方法)的返回值或输出参数,也要尽量做到个数唯一、类型唯一,如不能唯一也要保证参数顺序、数据类型顺序唯一。建议规范如下:首字母建议为小写,为给三级接口分类,接口名称前缀“a_”、“b_”、“c_”、“d_”等字符,代表其属于abcd四大类操作的某一类。
4.单一功能的功件,可以作为基本功件,多个单一功能的功件组合,可以形成一个复杂功件,此复杂类型的功件,其实也可以看作是一个小型的软件系统或子系统或软件设备,其与外部通讯时,也要遵循上述功件接口规范,同时,也可以将其本身包含的功件接口暴露给其他功件或软件系统。其他功件调用复杂类型功件的子功件的接口(方法),和调用其本身接口(方法)一样,也应包含在各级接口(方法)的参数中。以Java语言为例,有个复杂类型功件为UserSystem,其内部包含基本功件User,二者都有一个一级方法x,则通过UserSystem调用User中的删除方法的方式如下:UserSystem.x(s),其中的s为{f:'User',m:{d:{w:{id:1}}}}或{'f':'User','i':{'d':{'w':{id:1}}}}。
5.上述复杂类型功件的调用方法,同样也适用于连接、转换、控制类型的功件,比如对于“授权控制器”功件来说,如果某些功件要通过其授权访问其他功件的某一级的某个接口(方法或URL地址)时,调用方式同4中所述。因此,从权限控制角度来看,功件的各级接口,都可以作为某个权限来加以控制,从而定义和完成整个软件系统的权限控制流程、授权管理流程。
6.对于功件来说,只需实现三级接口中的某一级或某几级接口,即可完整暴露其内部功能给外部功件来调用或关联。对于底层的功件来说,如接近硬件层操作的功件,为获得更好的性能、更小的文件尺寸,所以其倾向于实现和使用三级接口;而对于应用层的功件,则倾向于实现和使用一、二级接口,因为它们更加注重的是应用的灵活性。对于功件间的关联关系,或者说调用关系来说,根据关联接口的等级不同,分别为一级关联(或调用)、二级关联(或调用)、三级关联(或调用),功件之间的关联关系,主要有以下几种:调用/被调用关系、包含/被包含关系、依赖/被依赖关系、引用/被引用关系、开发/开发于关系、运行/运行于关系。这些关联关系,由功件在其内部实现,是组成下面所述功件树的基础。
7.对于功件依赖的开发环境(开发功件或开发框架)、运行环境(如操作系统、虚拟容器)、依赖库、共享技术组件等特殊辅助功件,应放置于功件共同的命名空间(如f命名空间)、文件目录(如f目录)或特定位置(如f路径)中,以便功件间的关联或系统测试、编译、打包、部署和运行。比如,对于Web开发中的一组网页功件来说,多个网页可以共用一个导航条、一个页脚,共同使用一个开发框架或组件(如Jquery),则这些辅助功件作为UI类型功件的组成部分,应和UI功件位于同一目录下。而功件与这些特殊辅助功件的关联(或调用)关系,一般为三级关联(或调用)。
8.本开发规范,同样适用于其它类型的接口开发和使用不同编程语言的功件开发,运行于不同进程、不同设备和环境的上功件,只要符合上述接口规范来,就可以实现互相之间的有效通讯或调用。
基于功件树使用自然语言开发软件系统的方法
不同功件之间的基本关联关系是由接口的调用、包含、引用、依赖、开发于、运行于等关系来体现,同一种功件不同版本或同一种类型功件间的关联关系是通过相似性来体现的,为了有效地将功件的起始、承接关系表达出来,我们引入“功件树”这个概念。
一个软件类型的功件树代表一个用于某种目的的软件系统或产品,如一个操作系统、一个应用程序、一种类型的网站,其将某种软件系统或产品中所有相关的功件,以对外连接接口进行关联;一个以某种编程语言开发的所有功件组成的功件树,其中的功件也是按照软件系统业务流程关联在一起;一种功件不同版本组成的功件树,由某个或某些功件的不同版本分枝所构成;同类功件组成的功件树,是由同一种类别的功件所构成,如UI类型的功件或数据类型的功件。
因此,一个功件树,是一个为实现某种目的的软件系统所需要的所有功件的集合,或是以某种编程语言开发的所有功件的集合,或是某一种功件的不同版本的功件的集合,或是同一种类型的功件的集合,同时通过功件接口或关联关系将其中的功件组合在一种树形(或网状)的结构中。而当所有的功件树组合在一起,就是一个极其庞大的、完整的功件树。
功件树,既是软件系统所包含功件的超级集合,同时它也包含了软件系统的业务流程,而所有软件系统的所有的业务流程,就体现在功件树内各功件的关联关系或接口调用当中。由此我们可以得出以下结论:功件树也是实现“用零代码的模块化组合方式来生成软件系统或产品”的基础,是管理功件和业务流程的有效手段。
功件树中功件之间的关联关系,有两大类别,分别为业务类型的关联关系和技术类型的关联关系;其中,主要是调用/被调用的关系,其次还有包含/被包含、引用/被引用、依赖/被依赖、开发/开发于、运行/运行于等关系,而软件系统的业务流程的就体现在这些关联关系中。
在功件树中,每种功件(如User功件)都有一个唯一、排他的名称(如中文的“用户”),以区别于其他功件,即一个名称只对应一种功件;该功件在功件树中有多个实现版本或多个实例存在,因为针对不同的业务流程需求,同一种功件的属性、参数不同,需要实现的功能不同,甚至功件实现接口也不尽相同;但是在一个独立的软件系统或产品中,每种功件一般只能有一个实例存在,除非是有特殊需求的软件系统(比如有多个独立且相似业务流程的软件系统)。所以,某功件在功件树存在时,以“某种功件”来陈述,当某功件在软件系统中存在时,以“某个功件”来陈述。如User功件,在功件树中会有多个实例存在,存在于不同的功件树分支中,但是在一个软件系统或产品中,User功件一般只有一个实例存在。
功件树可以有,但不限于如下几种表现方式:
1)一个功件树的根是组成一个软件系统的一系列的主要功件构成,如User(用户)、Role(角色)、Permission(权限)为主要功件,可以组成一个用户管理系统;
2)一个功件树的根可以是某种或某些功件,每种功件可以根据不同需求衍生出不同的功件版本分枝,来组成完整的功件树;
3)功件树的根可以是某一类型的功件,每个功件可以根据不同需求衍生出不同的功件版本分枝,并以相应的其他类型功件为枝干,来组成完成的功件树;
4)功件树的根也可以是UI层的功件,以UI层的功件的组合形成整个软件工作流程的总体框架,其下面关联着控制逻辑或数据层的功件,从而组合为一个完整的功件树;
5)功件树可以编程语言为单位,每一种编程语言建立一个功件树;
6)功件树可以运行环境或开发环境为单位,建立功件树;
7)以功件依赖的开发环境、运行环境、依赖库、共享技术组件等特殊辅助功件为单位,建立功件树;
8)功件树可以是上述7种功件树中任意几种的组合。
用于同一目的的功件树,根据编程语言、开发运行环境不同,以至于接口调用方式、数据存储形式、数据格式的不同,都可以产生不同的功件树,其所含功件的实现方式也可以不同。
同功件类似,功件树也具备属性、参数和版本升级的概念,当一个功件树内部的功件和功件间的关系发生很大变化时,功件树可以进行版本升级。
基于功件和功件树开发生成软件的方法,首先创建功件树,再在功件树中创建大量的功件,然后在海量的功件的集合中,或在由大量功件组合成的某个功件树中,或在不同的功件树中,通过检索、提取、匹配、组合和/或编译链接等操作,来完成用于某种目的的软件系统或软件产品的开发。
功件和功件树的功能描述是必不可少的,其是使用者挑选合适功件的依据;同时,功件的接口定义、依赖关系、开发运行环境等功件规格参数,是进行自动检索、匹配、提取、组合功件成为软件系统或产品的关键。
对功件和功件树进行管理,包括:功件或功件树的创建、显示、编辑、升级、扩展、删除、功件关联,以及功件的查询检索、提取、接口匹配、组合等。
我们知道,一个完善的流程图可以完美的描述或体现一个软件系统,流程图也可以描述现实中的各种业务需求。所以我们可以把功件树比作流程图的一个超级集合,功件可以看作是流程图中的功能点或节点,而流程图中节点间的连线就是功件树中功件之间的接口调用或其他关联关系;既然流程图可以在逻辑上表达一个软件系统,那么功件树就可以在软件开发层次上组成一个软件系统。当功件树足够庞大,能够包含了所有业务流程时,这个功件树就可以满足所有软件需求。
因此,功件树反映了现实世界的需求,更确切地说反映的是现实中软件需求的各个领域,包括操作系统、机器人、游戏、物联网等所有领域对软件的界面和功能需求。大到一个企业应用系统,小到一个即时通讯程序或一个博客网站中所有的界面、功能、数据等,都可以具体化为一个功件,并按照一定的业务流程包含在功件树中;功件是功件树的节点,而业务流程即体现在将功件按照关联关系或接口调用串联起来组成的功件树中。所以,只要我们把反映现实世界需求的功件树建立起来,然后由全世界的开发人员(包括程序员、设计师等)开发出功件,将这个功件树填满、完善,那么根据目标软件需求,从这个功件树中按照一定业务流程取出一个或几个功件子树,就可以通过功件组合方式,实现零代码开发软件系统或产品。如果要给软件系统增加新功能,只需要从功件树中按照一定的业务流程(功件树的连线)提取相应的功件组合进来,还是零代码开发;如果需要更新软件系统的某些功能,只需要将对应的功件(取自功件树)进行替换即可,仍然是零代码开发。
要使用功件和功件树进行软件开发,首先要实现功件和功件树的有效生产、存储、更新、删除、关联、展示和检索机制,而功件的存储、展示和检索机制尤其重要;其次要实现功件的提取、组合和/或编译链接功件,从而生成软件系统或软件产品,并最终能够打包安装部署到目标环境中。
功件的存储可以用类似链表或知识图谱的方式,将功件和功件间的关联关系分别存储并管理,使得以某个功件为起点,通过关联关系可以将功件树包含的所有功件链接起来,从而组成功件树,功件树和功件树间的关联关系的存储管理也是如此。
所以,功件和功件树的展示可以用链表的方式,也可用类似图谱的方式来表达,从而在链表或图谱中以用直观的方式来检索、提取目标软件所需要的功件;也可以根据功件名称检索主要功件,然后检索关联功件的方式检索、提取功件;也可以根据目标软件对于UI功件的需求,用UI类型的功件组织、制定软件工作流程,然后根据关联关系检索、提取UI功件关联的其他类型功件,最终组合成目标软件。但是,从海量的功件和功件树当中,通过上述几种方式检索、提取符合某种需求的功件和功件子树,从而生成目标软件系统,对于广大用户来说,尤其是非开发人员来说,是困难的。因此,需要有一种新的方式,能够以一种更符合广大用户使用习惯的方式来检索、提取功件。对于广大使用者来说,最熟悉的是自然语言,而不是计算机语言,那么,如果能够通过组织自然语言就能完成软件系统的开发工作,无疑是软件业,尤其是软件开发方法的一个飞跃。
所以,本发明阐述以下基于功件树使用自然语言开发软件系统的方法及系统,以中文为例,说明如下:
1.功件树描述语言:为了完美的表达多个功件树分支或功件子树,并将其组合在一起,代表一个软件系统所包含的功件和业务流程,可用类似JSON格式的自然语言数据来描述。
功件树描述语言定义如下:每种功件有唯一的中文名称,如用户、角色、权限3种功件,其中间以逗号隔开,如“用户,角色,权限”,即可表述一个功件树分支,或者说是一个业务流程:用户具备角色,角色拥有权限;将其组合排列在花括号“{}”内,即其代表的是一个业务流程分支或功件子树,如“{用户,角色,权限}”;将一个或多个花括号内容,组合排列在方括号“[]”内,即代表的是一个或多个业务流程分支或功件子树,如“[{用户,角色,权限},{用户,角色,权限}]”;花括号“{}”内除了可以包含功件,也可以包含一个业务流程或功件子树,其间以逗号隔开,如“{用户,{角色,权限}}”,或包含多个业务流程或功件子树,如{[],[]};同样,方括号“[]”内也可以包含多个方括号“[]”或花括号“{}”,以代表多个流程分支或功件子树。如此往复包含,可以表达复杂的功件树,直至可以描述整个功件树。每种功件或业务流程分支或功件子树后面,可以跟随小括号“()”,其内包含功件或业务流程分支或功件子树的属性参数描述等,以便更加精准地定位功件和功件树,如“用户(Java)”代表用Java语言开发的User功件。属性参数描述可包括但不限于以下几种:运行环境类,如操作系统为Linux,其中运行环境又分为硬件层、硬件抽象层、操作系统、虚拟机、虚拟容器等;开发环境类,如编译/链接环境、开发平台或工具、依赖库等;业务分类,如操作系统、Web站点、企业应用、游戏、工控机;编程语言类,如C、Java、D语言等。功件树描述语言中的属性参数描述(内容省略,将遵循未来的业界标准)可用键值对来表示,键为属性参数的名称,值为属性参数的值,键与值的中间以冒号“:”分割,类似JSON数据格式中键值对的表现方式,如(os:linux,lang:java),代表运行操作系统为Linux,开发语言为Java。
2.自然开发语言:功件树描述语言,即可完美描述功件和功件树,即软件系统中的业务流程和界面、功能等,但对于非开发人员来说,还不够贴近自然语言的使用习惯,因此,需要一种符合普通大众习惯的自然开发语言来开发软件系统或产品。
本发明提出自然开发语言定义如下:可以用自然语言的一句话来表达一个软件业务流程,其中包含了功件名称和功件出现的顺序,或功件的关联关系,一个软件业务流程(或功件树分支)的描述也许很长,因此,可以用逗号分割开,并用句号表示一个流程的结束,即所提取的功件树某个分支的终点;顿号(、)用于分割名词、形容词等;冒号后面,表示包含的软件子流程;小括号用于功件的属性参数描述。对应于自然开发语言中的语法分类如下:名词类,对应功件的自然语言名称,如中文的“用户”、“权限”功件;动词类,对应于实际的操作,如“编译”、“部署”等动词,可将功件组合、编译完成后,部署于某种运行环境中;形容词类,用于详细描述功件的属性、参数,以便于更加精准的定位功件以及功件链接路径;介词,如中文中的“从”、“向”;连词,对应中文的就是如果、否则、和等。在使用自然开发语言描述软件系统流程和功能时,要尽量做到简洁、明确、准确、清晰,尤其对于功件名称来说,要确保正确,这样才能保证自然开发语言准确的被翻译为功件树描述语言。
3.为了把自然开发语言翻译为功件树描述语言,并完成使用自然语言开发软件系统的整个开发流程,和软件系统开发完成后的部署、维护等工作,需要实现一种系统:其能够将所有功件和功件树管理起来,能够将自然语言翻译成功件树描述语言,能够精准地定位功件和功件树,并具备自动补全和纠错功能(即如果使用者未能将所有功件描述准确或完整,本系统可以根据已有功件树,自动帮助使用者补全所需要功件,给出纠正后的正确功件);为了防止引进一些不必要的功件,仅补全相关功件的最近几个层级的相关功件,这个层级可以由使用者自定义;本系统还应能够将所需的第一功件和第二功件提取出来,组合在一起,编译、打包为一个软件系统(或产品),最终能够部署到特定的硬件或软件环境中,并能够对软件系统进行维护、升级等操作。
根据上述技术方案的描述,我们可以得出以下结论:功件和功件树是实现“用零代码的模块化组合方式来生成软件系统或产品”的基础,也是一种“用零代码的模块化组合方式来生成软件系统或产品”的实现技术和实现方法。
下面,以Java语言(以JSON数据作为数据交互格式)为例进行说明一种功件的具体实现方法,其他计算机编程语言或其他类型的功件开发规范,可参考本实现方法。
一级接口:对于一般功件来说,一级接口只需要实现x接口,x接口的输入参数只有一个,为字符串类型参数,可以命名为s,s的内容为JSON格式的字符串,如{'a':{'key1':'value1','key2':'value2'}};返回值唯一,为字符串类型,内容为JSON数据格式。一级接口中的x接口,通过增加(产生、创建)、查看(查找、显示)、修改(改变、变化)、删除(销毁、灭亡)等4大类型操作,即可完成所有功件的所有功能的调用。此x接口可定义为public static String x(String s)。如A功件要调用B功件的一级接口(方法)的增加功能:B.x("{'a':{'key1':'value1','key2':'value2'}}");如果B是一个复杂类型功件,其内部包含了一个C功件的增加方法,则调用方式为:B.x("{'f':'C','i':{'a':{'key1':'value1','key2':'value2'}}}");返回值类似如下:{'r':0,'m':'添加记录成功。'},或包含返回多条数据记录:{'r':0,'m':'成功。','v':[{'key1':'value1','key2':'value2'},{'key1':'value3','key2':'value4'}]}。
二级接口:共4个,可选择实现,可命名为a、b、c、d,分别代表增加(产生、创建)、查看(查找、显示)、修改(移动、变化)、删除(销毁、灭亡)等4大类操作;输入参数均只有一个,为字符串类型参数,可以命名为s,s的内容为JSON格式的字符串,如{'key1':'value1','key2':'value2'};返回值也均为JSON格式的字符串。4个二级接口可分别定义为public static String a(String s)、publicstatic String b(String s)、public static String c(String s)、publicstatic String d(String s)。如A功件要调用B功件的二级接口(方法)中的a接口:B.a("{'key1':'value1','key2':'value2'}"),如A功件要调用B功件的二级接口(方法)中的b接口:B.b("{'q':{'key1':'value1'},'w':{id:'id1'}}"),如A功件要调用B功件的二级接口(方法)中的c接口:B.c("{'q':{'key1':'value1'},'w':{id:'id1'}}"),如A功件要调用B功件的二级接口(方法)中的d接口:B.d("{'w':{id:'id1'}}");返回值同一级接口中所述。
三级接口:4大类接口的具体实现方法,即编程语言的原生函数或方法,也就是目前普遍采用的开发方法,其与前两级接口相比,其有更高的性能,但因为包含功能单一,方法名称和参数定义的多样性,所以不如前两级接口更具有通用性和可记忆性;因此,为了保证三级接口(方法)名称具有一定的规范性,三级接口名称中可包含功件的属性(字段)名称来区分,如涉及多个或全部属性(字段)操作时,可用“all”等词语或数字加入到接口名称中。如User功件的三级接口可定义如下:public static Stringa_all(String name,String password,int age),public static Stringb_name(String id),public static String c_password(String id,Stringpassword),public static String d_1(String id)。三级接口的返回值或输出参数,根据不同的编程语言,可以确定不同的数据格式,但前提是要保证返回值或输出参数的规范性、统一性。
下面,以开发一个BBS网站为例,说明基于功件和功件树使用自然语言开发软件系统或产品的方法,使用链表、图谱或其他方式检索、提取功件开发软件系统的方法,可以参照本方法。
使用者给出自然开发语言的描述:“一个网站,使用Java语言、MySQL数据库开发,有用户注册功能,用户具有角色,角色具有权限,用户从首页登陆后,进入论坛,可以发帖子、回复。”。
上述自然开发语言开发的BBS网站的描述,可翻译为如下的功件树描述语言,其中的部分功件,为自动补全功能实现:
[{首页,登陆页,注册页,BBS板块首页,帖子列表页,帖子内容页,授权控制器,用户,角色,权限,注册,BBS板块,帖子,回复}(type:web,lang:Java,db:MySQL)]
如图3为BBS网站的功件关联示意图,在上述功件树描述语言中,“首页”和“登陆页”等为UI类型的功件,“授权控制器”为控制层功件,“用户”和“帖子”等均为逻辑层功件。“用户”、“角色”、“权限”、“注册”和“注册页”等功件,共同完成注册流程,“用户”、“角色”、“权限”、“授权控制器”和“登陆页”等功件,共同完成登陆流程,“用户”、“角色”、“权限”、“BBS板块”、“帖子”、“回复”、“授权控制器”和“帖子内容页”等功件,共同完成BBS功能。最后小括号中的内容为BBS网站的属性描述:Web应用程序,Java语言开发,数据库为MySQL。
要将上述BBS网站的自然语言描述,翻译为功件树描述语言,并根据功件树描述语言,实现自动检索、提取、匹配、组合所需功件,甚至可以通过编译、打包操作,最后部署到某个硬件或软件环境中运行,需要实现一个自然语言开发软件系统的系统,此系统除了能够完成上述功能外,还应包括功件、功件树的管理功能,其中包括功件和功件树的创建、显示、修改(升级、扩展)、删除以及功件关联和功件树关联的管理功能。如果此系统是一个基于功件和功件树开发的网站(也可以是其他实现方式),如图4所示,则其功件树描述语言可如下:[{首页,登陆页,注册页,功件规范页,功件树列表页,功件树内容页,功件列表页,功件内容页,自然语言开发页,授权控制器,用户,角色,权限,功件规范,功件,功件树,自然开发语言翻译,功件检索,功件提取,功件匹配,功件组合,程序编译,程序打包,网站部署}(type:web,lang:java)]。
这样,通过上述基于功件和功件树使用自然语言开发软件系统的系统,就可以实现功件和功件树的管理,实现用自然语言检索、提取功件,完成功件的匹配、组合、编译、打包操作,并最终安装部署到目标硬件或软件系统环境中,从而完成一个符合某种特定业务需求的软件系统的开发工作,以及编译打包、安装部署等工作。
综上,如图1所示,一种基于功件和功件树开发软件系统的方法,包括以下步骤,
步骤1,将使用者给出的描述目标软件系统功能的自然语言翻译为功件树描述语言;
步骤2,在已创建的功件和功件树的集合中,用功件树描述语言检索目标软件需要的第一功件以及与所述第一功件相关联或有调用关系的第二功件;所述功件为软件系统或产品中一个完整并且独立的功能模块,具备属性描述、配置事件参数、自完备数据存储以及对外连接接口,对外连接接口采用三级接口规范;所述功件树为通过关联关系或者接口调用关系组合在树形或网状结构中的功件的集合,所述功件树包含软件系统流程;
步骤3,提取所述第一功件和所述第二功件;
步骤4,将所述第一功件与所述第二功件进行匹配;
步骤5,对所述第一功件和所述第二功件进行组合,生成所述目标软件;
步骤6,将所述目标软件编译打包,并安装部署到目标硬件或软件系统环境中。
步骤1中,所述功件树描述语言,包含功件的名称和功件出现的顺序,或功件的关联关系,用于精准的定位功件和功件树,其中每一个所述功件具有唯一的功件型号。
在已创建的功件和功件树的集合中,还可以用链表、图谱、功件名称或目标软件需要的UI类型功件等方式检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件。
步骤2中,所述三级接口规范的一级接口有3个,分别为主要接口、辅助接口和预留接口,可以分别定义为x、y和z;所述一级接口的名称为字符、数字或词语,并且仅有1个输入参数和1个返回值或输出参数,所述一级接口根据属性参数规范、操作命令规范建立;所述三级接口规范的二级接口有4个,可定义为a、b、c和d,所述二级接口的名称为字符、数字或词语,并且仅有1个输入参数和1个返回值或输出参数,所述二级接口根据属性参数规范、操作命令规范建立;三级接口为多个,接口名称为字符、数字或词语,参数个数、类型和顺序统一、固定,所述三级接口根据属性参数规范、操作命令规范和开发语言建立;所述三级接口规范包含了系统权限控制信息。功件中,仅需实现三级接口中的某一级接口或某几级接口,即可将功件内部的功能完美地暴露给外部调用。功件中的制式功件,仅需实现一级接口中的主要接口,即可将功件内部的功能完美地暴露给外部调用。功件间的关联关系或者调用关系根据关联接口的等级不同分为一级关联或调用、二级关联或调用和三级关联或调用。
基于功件和功件树开发软件系统的方法还包括管理功件和功件树,管理功件和功件树包括创建、显示、修改、升级、扩展、删除功件和功件树,以及功件关联和功件树关联。
功件中单一功能的功件可组合形成复杂功件,复杂功件也遵循三级接口规范,并将其包含的功件接口暴露给其他功件或软件系统。功件间还包括包含与被包含、依赖与被依赖、引用与被引用、开发与开发于、运行与运行于的关系。
如图2所示,一种基于功件和功件树开发软件系统的系统,包括翻译模块,用于将使用者给出的描述目标软件系统功能的自然语言翻译为功件树描述语言;
检索模块,用于在已创建的功件和功件树的集合中,用功件树描述语言检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件;功件为软件系统或产品中一个完整并且独立的功能模块,具备属性描述、配置事件参数、自完备数据存储以及对外连接接口,对外连接接口采用三级接口规范;功件树为通过关联关系或者接口调用组合在树形或网状结构中的功件的集合,所述功件树包含软件系统流程;功件树描述语言,包含功件的名称和功件出现的顺序,或功件的关联关系,用于精准的定位功件和功件树,所述翻译模块具有自然语言补全与纠错功能,用于自动补全和纠正使用者所需要的功件。
提取模块,用于提取所述第一功件和所述第二功件;
匹配模块,用于将所述第一功件与所述第二功件进行匹配;
组合模块,用于对所述第一功件和所述第二功件进行组合,生成所述目标软件;
编译打包安装部署模块,用于将所述目标软件编译打包,并安装部署到目标硬件或软件系统环境中。
基于功件和功件树开发软件系统的系统,还包括管理存储模块,用于以链表或图谱的方式存储和管理功件和功件树,其中,管理功件和功件树包括创建、显示、修改、升级、扩展、删除功件和功件树,以及功件关联和功件树关联;在已创建的功件和功件树的集合中,还可以用链表、图谱、功件名称或目标软件需要的UI类型功件等方式检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件。
根据上述技术方案的描述,我们可以得出以下结论:功件和功件树是实现“用零代码的模块化组合方式来生成软件系统或产品”的基础,也是一种“用零代码的模块化组合方式来生成软件系统或产品”的实现技术和实现方法。应用功件和功件树开发软件系统的意义在于:用已有功件树包含的软件系统业务流程覆盖未来软件系统的需求,用已有的功件满足未来软件的功能需求,因此,只需要开发未来系统中的功能和流程在已有功件和功件树中不存在的部分,即可满足未来所有软件系统的需求,如此,当功件和功件树足够庞大时,就能满足未来所有软件系统的需求。所以,我们只需要不断开发新的功件和功件树,就像现实中生产的设备一样,然后只需要把已有的功件组合在一起,即可生成目标软件系统或产品。
基于功件和功件树使用自然语言开发软件系统或产品,能够极大地简化软件的开发,能够真正实现“用零代码的模块化组合方式来生成软件系统或产品”,同时,它还使得普通人(非开发人员)也能够开发软件系统或产品。
因此,本发明真正摒弃了目前软件业中一行行编写代码的作坊式的软件开发方法,它将把软件开发引导向工厂化、大规模工程化、社会分工/协作化的未来,它是软件开发方法上的一个飞跃,它能够极大提高生产力。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种基于功件和功件树开发软件系统的方法,其特征在于,包括以下步骤,
步骤1,将使用者给出的描述目标软件系统功能的自然语言翻译为功件树描述语言;
步骤2,在已创建的功件和功件树的集合中,用功件树描述语言检索目标软件需要的第一功件以及与所述第一功件相关联或有调用关系的第二功件;所述功件为软件系统或产品中一个完整并且独立的功能模块,具备属性描述、配置事件参数、自完备数据存储以及对外连接接口,对外连接接口采用三级接口规范;所述功件树为通过关联关系或者接口调用关系组合在树形或网状结构中的功件的集合,所述功件树包含软件系统流程;
步骤3,提取所述第一功件和所述第二功件;
步骤4,将所述第一功件与所述第二功件进行匹配;
步骤5,对所述第一功件和所述第二功件进行组合,生成所述目标软件;
步骤6,将所述目标软件编译打包,并安装部署到目标硬件或软件系统环境中。
2.根据权利要求1所述的基于功件和功件树开发软件系统的方法,其特征在于,步骤1中,所述功件树描述语言,包含功件的名称和功件出现的顺序,或功件的关联关系,用于精准的定位功件和功件树。
3.根据权利要求1所述的基于功件和功件树开发软件系统的方法,其特征在于,每一个所述功件具有唯一的功件型号。
4.根据权利要求1所述的基于功件和功件树开发软件系统的方法,其特征在于,在已创建的功件和功件树的集合中,还可以用链表、图谱、功件名称或目标软件需要的UI类型功件等方式检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件。
5.根据权利要求1所述的基于功件和功件树开发软件系统的方法,其特征在于,步骤2中,所述三级接口规范的一级接口有3个,分别为主要接口、辅助接口和预留接口,所述一级接口的名称为字符、数字或词语,并且仅有1个输入参数和1个返回值或输出参数,所述一级接口根据属性参数规范、操作命令规范建立;所述三级接口规范的二级接口有4个,所述二级接口的名称为字符、数字或词语,并且仅有1个输入参数和1个返回值或输出参数,所述二级接口根据属性参数规范、操作命令规范建立;三级接口为多个,接口名称为字符、数字或词语,参数个数、类型和顺序统一、固定,所述三级接口根据属性参数规范、操作命令规范和开发语言建立;所述三级接口规范包含了系统权限控制信息。
6.根据权利要求5所述的基于功件和功件树开发软件系统的方法,其特征在于,所述功件间的关联关系或者调用关系根据关联接口的等级不同分为一级关联或调用、二级关联或调用和三级关联或调用。
7.根据权利要求1所述的基于功件和功件树开发软件系统的方法,其特征在于,所述基于功件和功件树开发软件系统的方法还包括管理所述功件和所述功件树,管理所述功件和所述功件树包括创建、显示、修改、升级、扩展、删除所述功件和功件树,以及功件关联和功件树关联。
8.根据权利要求1所述的基于功件和功件树开发软件系统的方法,其特征在于,所述功件中单一功能的功件可组合形成复杂功件,所述复杂功件也遵循三级接口规范,并将其包含的功件接口暴露给其他功件或软件系统。
9.根据权利要求1所述的基于功件和功件树开发软件系统的方法,其特征在于,所述功件间还包括包含与被包含、依赖与被依赖、引用与被引用、开发与开发于、运行与运行于的关系。
10.一种基于功件和功件树开发软件系统的系统,其特征在于,包括翻译模块,用于将使用者给出的描述目标软件系统功能的自然语言翻译为功件树描述语言;
检索模块,用于在已创建的功件和功件树的集合中,用功件树描述语言检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件;所述功件为软件系统或产品中一个完整并且独立的功能模块,具备属性描述、配置事件参数、自完备数据存储以及对外连接接口,对外连接接口采用三级接口规范;所述功件树为通过关联关系或者接口调用组合在树形或网状结构中的功件的集合,所述功件树包含软件系统流程;
提取模块,用于提取所述第一功件和所述第二功件;
匹配模块,用于将所述第一功件与所述第二功件进行匹配;
组合模块,用于对所述第一功件和所述第二功件进行组合,生成所述目标软件;
编译打包安装部署模块,用于将所述目标软件编译打包,并安装部署到目标硬件或软件系统环境中。
11.根据权利要求10所述的基于功件和功件树开发软件系统的系统,其特征在于,所述功件树描述语言,包含功件的名称和功件出现的顺序,或功件的关联关系,用于精准的定位功件和功件树,所述翻译模块具有自然语言补全与纠错功能,用于自动补全和纠正使用者所需要的功件。
12.根据权利要求10所述的基于功件和功件树开发软件系统的系统,其特征在于,还包括管理存储模块,用于以链表或图谱的方式存储和管理所述功件和所述功件树,其中,管理所述功件和所述功件树包括创建、显示、修改、升级、扩展、删除所述功件和功件树,以及功件关联和功件树关联。
13.根据权利要求12所述的基于功件和功件树开发软件系统的系统,其特征在于,在已创建的功件和功件树的集合中,还可以用链表、图谱、功件名称或目标软件需要的UI类型功件等方式检索目标软件需要的第一功件以及与所述第一功件相关联或调用的第二功件。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510024507.5A CN104615425A (zh) | 2015-01-16 | 2015-01-16 | 一种基于功件和功件树开发软件系统的方法和系统 |
CN201610028590.8A CN105718261B (zh) | 2015-01-16 | 2016-01-15 | 一种基于功件和功件树的目标产品生成方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510024507.5A CN104615425A (zh) | 2015-01-16 | 2015-01-16 | 一种基于功件和功件树开发软件系统的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104615425A true CN104615425A (zh) | 2015-05-13 |
Family
ID=53149887
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510024507.5A Pending CN104615425A (zh) | 2015-01-16 | 2015-01-16 | 一种基于功件和功件树开发软件系统的方法和系统 |
CN201610028590.8A Active CN105718261B (zh) | 2015-01-16 | 2016-01-15 | 一种基于功件和功件树的目标产品生成方法和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610028590.8A Active CN105718261B (zh) | 2015-01-16 | 2016-01-15 | 一种基于功件和功件树的目标产品生成方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN104615425A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224332A (zh) * | 2015-10-14 | 2016-01-06 | 深圳市金证科技股份有限公司 | 一种应用程序生成方法和装置 |
CN105930514A (zh) * | 2016-05-16 | 2016-09-07 | 珠海格力电器股份有限公司 | 配套关系检索方法和系统 |
CN106293703A (zh) * | 2016-07-27 | 2017-01-04 | 河南金色童年文化有限公司 | 基于特定模型下益智游戏软件自动生成的方法 |
CN106843827A (zh) * | 2016-11-30 | 2017-06-13 | 贾志东 | 一种基于功件树和功件库的目标软件生成方法及装置 |
CN106990973A (zh) * | 2017-05-25 | 2017-07-28 | 海南大学 | 一种基于数据图谱、信息图谱和知识图谱架构的价值驱动的服务软件开发方法 |
CN107272521A (zh) * | 2017-08-05 | 2017-10-20 | 曲阜师范大学 | 一种知识图谱驱动的智能硬件控制方法 |
CN107633008A (zh) * | 2017-08-10 | 2018-01-26 | 阿里巴巴集团控股有限公司 | Web工程数据处理方法、装置、服务器及系统 |
CN107945006A (zh) * | 2017-11-15 | 2018-04-20 | 深圳市买买提乐购金融服务有限公司 | 一种业务管理系统及方法 |
CN109213747A (zh) * | 2018-08-08 | 2019-01-15 | 麒麟合盛网络技术股份有限公司 | 一种数据管理方法及装置 |
CN109343831A (zh) * | 2018-08-22 | 2019-02-15 | 平安普惠企业管理有限公司 | 一种html组件的管理方法及装置 |
CN109471675A (zh) * | 2018-10-30 | 2019-03-15 | 张家口浩扬科技有限公司 | 一种对于硬件执行改变的方法及其系统 |
CN110276074A (zh) * | 2019-06-20 | 2019-09-24 | 出门问问信息科技有限公司 | 自然语言处理的分布式训练方法、装置、设备及存储介质 |
CN110287327A (zh) * | 2019-07-03 | 2019-09-27 | 中山大学 | 基于教材目录和有向超图的路径适应性知识图谱自动生成方法 |
CN110609686A (zh) * | 2018-06-15 | 2019-12-24 | 阿里巴巴集团控股有限公司 | 数据系统生成方法、装置、计算机设备、存储介质 |
CN110874431A (zh) * | 2019-11-20 | 2020-03-10 | 云南财经大学 | 基于JAVA Doc知识图谱的多维评估推荐方法 |
CN112307058A (zh) * | 2020-10-27 | 2021-02-02 | 北京健康之家科技有限公司 | 短链接的处理方法、装置、存储介质及计算机设备 |
CN113467774A (zh) * | 2021-07-30 | 2021-10-01 | 北京鼎普科技股份有限公司 | 一种web端业务软件开发框架及方法 |
CN113821203A (zh) * | 2020-06-20 | 2021-12-21 | 华为技术有限公司 | App开发平台、app开发方法及电子设备 |
CN116028101A (zh) * | 2022-12-26 | 2023-04-28 | 郑州云智信安安全技术有限公司 | 基于组件特征类别编排调取的方法 |
CN116304225A (zh) * | 2023-03-22 | 2023-06-23 | 联洋国融(上海)科技有限公司 | 一种基于mas系统的构件检索及评价方法 |
CN117348922A (zh) * | 2023-11-06 | 2024-01-05 | 中国海洋大学 | 一种物联网应用软件配置的对话交互式生成方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784520A (zh) * | 2017-10-16 | 2018-03-09 | 徐欣 | 一种航空公司营销数据整合系统及方法 |
CN108460096B (zh) * | 2018-01-31 | 2021-03-23 | 杭州优工品科技有限公司 | 基于规格化展现的数据处理方法及装置 |
CN110297658B (zh) * | 2018-03-21 | 2022-09-20 | 腾讯科技(深圳)有限公司 | 功能组件共享方法、装置和计算机设备 |
CN109871208B (zh) * | 2019-01-04 | 2023-10-17 | 平安科技(深圳)有限公司 | 软件系统生成方法、装置、计算机可读存储介质及服务器 |
CN113869069B (zh) * | 2021-09-10 | 2024-08-06 | 厦门大学 | 基于译文树结构解码路径动态选择的机器翻译方法 |
CN116893805B (zh) * | 2023-07-31 | 2024-03-15 | 红石阳光(北京)科技股份有限公司 | 一种满足定制化需求的代码生成方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333336C (zh) * | 2006-06-23 | 2007-08-22 | 清华大学 | 一种支持异构构件的构件库统一管理方法 |
CN102646040B (zh) * | 2012-04-19 | 2015-08-26 | 贾志东 | 基于功件和功件树的软件生成方法及装置 |
-
2015
- 2015-01-16 CN CN201510024507.5A patent/CN104615425A/zh active Pending
-
2016
- 2016-01-15 CN CN201610028590.8A patent/CN105718261B/zh active Active
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224332A (zh) * | 2015-10-14 | 2016-01-06 | 深圳市金证科技股份有限公司 | 一种应用程序生成方法和装置 |
CN105224332B (zh) * | 2015-10-14 | 2019-06-11 | 深圳市金证科技股份有限公司 | 一种应用程序生成方法和装置 |
CN105930514B (zh) * | 2016-05-16 | 2019-05-24 | 珠海格力电器股份有限公司 | 配套关系检索方法和系统 |
CN105930514A (zh) * | 2016-05-16 | 2016-09-07 | 珠海格力电器股份有限公司 | 配套关系检索方法和系统 |
CN106293703A (zh) * | 2016-07-27 | 2017-01-04 | 河南金色童年文化有限公司 | 基于特定模型下益智游戏软件自动生成的方法 |
CN106843827A (zh) * | 2016-11-30 | 2017-06-13 | 贾志东 | 一种基于功件树和功件库的目标软件生成方法及装置 |
CN106990973A (zh) * | 2017-05-25 | 2017-07-28 | 海南大学 | 一种基于数据图谱、信息图谱和知识图谱架构的价值驱动的服务软件开发方法 |
CN107272521A (zh) * | 2017-08-05 | 2017-10-20 | 曲阜师范大学 | 一种知识图谱驱动的智能硬件控制方法 |
CN107633008A (zh) * | 2017-08-10 | 2018-01-26 | 阿里巴巴集团控股有限公司 | Web工程数据处理方法、装置、服务器及系统 |
CN107945006A (zh) * | 2017-11-15 | 2018-04-20 | 深圳市买买提乐购金融服务有限公司 | 一种业务管理系统及方法 |
CN110609686A (zh) * | 2018-06-15 | 2019-12-24 | 阿里巴巴集团控股有限公司 | 数据系统生成方法、装置、计算机设备、存储介质 |
CN109213747A (zh) * | 2018-08-08 | 2019-01-15 | 麒麟合盛网络技术股份有限公司 | 一种数据管理方法及装置 |
CN109213747B (zh) * | 2018-08-08 | 2021-11-16 | 麒麟合盛网络技术股份有限公司 | 一种数据管理方法及装置 |
CN109343831A (zh) * | 2018-08-22 | 2019-02-15 | 平安普惠企业管理有限公司 | 一种html组件的管理方法及装置 |
CN109471675A (zh) * | 2018-10-30 | 2019-03-15 | 张家口浩扬科技有限公司 | 一种对于硬件执行改变的方法及其系统 |
CN109471675B (zh) * | 2018-10-30 | 2021-11-19 | 北京无限自在文化传媒股份有限公司 | 一种对于硬件执行改变的方法及其系统 |
CN110276074A (zh) * | 2019-06-20 | 2019-09-24 | 出门问问信息科技有限公司 | 自然语言处理的分布式训练方法、装置、设备及存储介质 |
CN110276074B (zh) * | 2019-06-20 | 2023-04-18 | 出门问问信息科技有限公司 | 自然语言处理的分布式训练方法、装置、设备及存储介质 |
CN110287327A (zh) * | 2019-07-03 | 2019-09-27 | 中山大学 | 基于教材目录和有向超图的路径适应性知识图谱自动生成方法 |
CN110287327B (zh) * | 2019-07-03 | 2022-04-12 | 中山大学 | 基于教材目录和有向超图的路径适应性知识图谱自动生成方法 |
CN110874431A (zh) * | 2019-11-20 | 2020-03-10 | 云南财经大学 | 基于JAVA Doc知识图谱的多维评估推荐方法 |
CN113821203A (zh) * | 2020-06-20 | 2021-12-21 | 华为技术有限公司 | App开发平台、app开发方法及电子设备 |
CN112307058A (zh) * | 2020-10-27 | 2021-02-02 | 北京健康之家科技有限公司 | 短链接的处理方法、装置、存储介质及计算机设备 |
CN112307058B (zh) * | 2020-10-27 | 2024-03-15 | 北京水滴科技集团有限公司 | 短链接的处理方法、装置、存储介质及计算机设备 |
CN113467774A (zh) * | 2021-07-30 | 2021-10-01 | 北京鼎普科技股份有限公司 | 一种web端业务软件开发框架及方法 |
CN113467774B (zh) * | 2021-07-30 | 2024-01-30 | 北京鼎普科技股份有限公司 | 一种web端业务软件开发框架及方法 |
CN116028101A (zh) * | 2022-12-26 | 2023-04-28 | 郑州云智信安安全技术有限公司 | 基于组件特征类别编排调取的方法 |
CN116304225A (zh) * | 2023-03-22 | 2023-06-23 | 联洋国融(上海)科技有限公司 | 一种基于mas系统的构件检索及评价方法 |
CN116304225B (zh) * | 2023-03-22 | 2024-05-17 | 联洋国融(上海)科技有限公司 | 一种基于mas系统的构件检索及评价方法 |
CN117348922A (zh) * | 2023-11-06 | 2024-01-05 | 中国海洋大学 | 一种物联网应用软件配置的对话交互式生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105718261A (zh) | 2016-06-29 |
CN105718261B (zh) | 2019-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615425A (zh) | 一种基于功件和功件树开发软件系统的方法和系统 | |
CN109597661B (zh) | 一种业务功能配置方法及装置 | |
CN103383645B (zh) | 代码生成方法及系统 | |
CN1333336C (zh) | 一种支持异构构件的构件库统一管理方法 | |
CN110825362A (zh) | 低代码应用软件开发系统及方法 | |
CN104111826A (zh) | 一种软件项目开发方法及装置 | |
US10379817B2 (en) | Computer-applied method for displaying software-type applications based on design specifications | |
CN106648587A (zh) | 一种基于注解的Web应用代码生成方法 | |
CN102646040B (zh) | 基于功件和功件树的软件生成方法及装置 | |
CN103810196A (zh) | 基于业务模型进行数据库性能测试的方法 | |
CN102750145A (zh) | 一种网络系统软件体系框架及其实现方法 | |
CN108694214A (zh) | 数据报表的生成方法、生成装置、可读介质及电子设备 | |
CN103853543A (zh) | 一种应用于企业信息系统开发过程中快速构建表单的方法 | |
CN104216708A (zh) | 一种数据监控的方法和装置 | |
CN108228762B (zh) | 用于配置主数据库通用模板的方法和系统 | |
CN107273425B (zh) | 一种基于orm框架的数据库开发方法及装置 | |
CN108701153B (zh) | 响应自然语言查询的方法、系统和计算机可读存储介质 | |
CN102289448B (zh) | 访问数据访问层的实体 | |
CN106326411A (zh) | 一种配置变更的方法及装置 | |
CN103678687A (zh) | 基于配置系统的项目创建方法及装置 | |
CN107533559A (zh) | 数据结构、用于填充数据结构的模型以及使用数据结构对处理装置进行编程的方法 | |
CN113626016A (zh) | 一种基于Vue+Element UI+Koa2的前后端分离的可重用组件 | |
CN113342399A (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
Samuel et al. | Demonstration of chestnut: An in-memory data layout designer for database applications | |
Mak et al. | Hibernate Recipes: A Problem-Solution Approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150513 |