一种面向软件定义卫星的软件快速开发系统与方法转让专利
申请号 : CN202011413751.8
文献号 : CN112214215B
文献日 : 2021-11-02
发明人 : 赵军锁 , 李丹 , 高航
申请人 : 中国科学院软件研究所
摘要 :
权利要求 :
1.一种面向软件定义卫星的软件快速开发系统,其特征在于,所述面向软件定义卫星的软件快速开发系统包括:
至少一个交互端,被配置为接收用户输入的命令消息并发送,接收应答消息,其中,所述命令消息的类型包括创建空项目、根据模板创建项目、进入项目、退出项目、检索项目、修改项目属性、修改项目配置文件、进入函数上下文、进入变量上下文、进入数据类型上下文、退出函数上下文、退出变量上下文、退出数据类型上下文、创建变量、修改变量、删除变量、检索变量、创建数据类型、修改数据类型、删除数据类型、检索数据类型、创建函数、修改函数、删除函数和检索函数;
编译器,被配置为:
接收多个所述命令消息,并根据所述命令消息完成针对项目、函数、变量或者数据类型的操作获取操作结果,得到源代码,并对所述源代码经增量编译及链接后生成可执行代码,其中,所述操作包括创建、删除、查询或者修改;
当识别到所述函数发生变化时自动触发完成所述增量编译得到目标代码,其中,所述增量编译对应的编译服务为后台服务;通过识别开发者主动修改函数或修改函数使用的数据结构、全局变量来确定所述函数发生变化并启动所述增量编译,所述主动修改函数包括对所述函数进行创建、删除或者修改操作;
生成用于表征针对所述命令消息的操作情况的所述应答消息;
源码数据记录装置,被配置为以细粒度元素为存储单位存储所述操作结果和所述可执行代码,其中,所述细粒度元素包括所述函数、所述变量和所述数据类型。
2.如权利要求1所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述至少一个交互端包括微信程序、浏览器或者PC的应用程序。
3.如权利要求2所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述面向软件定义卫星的软件快速开发系统还包括:认证及消息转发装置,与所述至少一个交互端连接以接收所述命令消息,被配置为对用户身份进行认证并将所述命令消息根据至少一个所述编译器的负载情况向目标编译器发送。
4.如权利要求3所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述认证及消息转发装置还被配置为:处理来自于开发者的注册操作和支付请求,或者被配置为对信道加密,或者被配置为广播所述命令消息。
5.如权利要求3所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述面向软件定义卫星的软件快速开发系统还包括消息处理装置,被配置为依次对所述命令消息进行解析、存储以及命令归一化处理;
其中,所述编译器根据归一化处理后的所述命令消息完成针对所述元素的所述操作。
6.如权利要求5所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述消息处理装置包括:
消息解析装置,被配置为:
解析所述命令消息,得到解析命令信息;
接收所述应答消息;
解析消息及应答消息记录装置,被配置为存储所述解析命令信息以及所述应答消息;
命令归一化和任务调度装置,被配置为:对所述解析命令信息进行归一化处理,以确定所述解析命令信息属于项目管理命令、函数管理命令、变量管理命令、数据类型管理命令或者链接命令;生成所述应答消息,至少用以表征用户对所述命令消息无操作权限和所述命令消息的格式不满足要求;
接收所述应答消息。
7.如权利要求6所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述面向软件定义卫星的软件快速开发系统还包括:命令记录装置,所述命令记录装置设置于所述命令归一化和任务调度装置与所述编译器之间,被配置为分类别记录所述项目管理命令、所述函数管理命令、所述变量管理命令、所述数据类型管理命令以及所述链接命令;
所述编译器被配置为根据所述项目管理命令完成针对所述项目的操作;
所述编译器被配置为根据所述函数管理命令完成针对所述函数的操作;
所述编译器被配置为根据所述变量管理命令完成针对所述变量的操作;
所述编译器被配置为根据所述数据类型管理命令完成针对所述数据类型的操作;
所述编译器被配置为根据所述链接命令完成针对目标代码的操作得到所述可执行代码。
8.如权利要求7所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述面向软件定义卫星的软件快速开发系统还包括:可复用代码及数据资源记录装置,被配置为存储可复用的代码或者数据;
代码检索装置,与所述源码数据记录装置连接,被配置为接收通过所述至少一个交互端输入的查询命令并基于所述查询命令从所述可复用代码及数据资源记录装置中获取目标可复用代码或者目标可复用数据。
9.如权利要求1所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述编译器还被配置为:
当根据所述命令消息创建、修改或删除所述元素时,自动抽取元素信息并抽取元素引用信息得到引用关系,其中,所述源码数据记录装置还被配置为存储包括所述元素信息的元素数据表,并存储包括所述引用关系的元素引用关系表;
当收到检索元素命令消息时,抽取所述检索元素命令消息中的检索元素并从所述元素引用关系表和所述元素数据表中抽取所需元素通过应答消息反馈检索结果。
10.如权利要求8所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述命令归一化和任务调度装置还被配置为:当第一云端装置不存在,负责动态创建所述第一云端装置;或者当第二云端装置不可用时,负责动态重新启动所述第二云端装置;
其中,
所述第一云端装置包括所述命令记录装置、所述编译器、所述源码数据记录装置和所述代码检索装置中的至少一个;
所述第二云端装置包括所述命令记录装置、所述编译器、所述源码数据记录装置和所述代码检索装置中的至少一个。
11.如权利要求1‑10中任一项所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述源码数据记录装置包括关系型数据库、实时数据库和、NoSQL数据库的一种。
12.如权利要求6所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述解析消息及应当消息记录装置包括关系型数据库、实时数据库和NoSQL数据库中的一种。
13.如权利要求8所述的面向软件定义卫星的软件快速开发系统,其特征在于,所述可复用代码及数据资源记录装置包括关系型数据库、实时数据库和NoSQL数据库中的一种。
14.一种面向软件定义卫星的软件快速开发方法,其特征在于,所述面向软件定义卫星的软件快速开发方法包括:
接收用户输入的命令消息,其中,所述命令消息的类型包括创建空项目、根据模板创建项目、进入项目、退出项目、检索项目、修改项目属性、修改项目配置文件、进入函数上下文、进入变量上下文、进入数据类型上下文、退出函数上下文、退出变量上下文、退出数据类型上下文、创建变量、修改变量、删除变量、检索变量、创建数据类型、修改数据类型、删除数据类型、检索数据类型、创建函数、修改函数、删除函数和检索函数;
根据多个所述命令消息完成针对项目、函数、变量或者数据类型的操作获取操作结果,得到源代码,并对所述源代码经增量编译及链接后生成可执行代码,其中,所述操作包括创建、删除、查询或者修改;
当识别到所述函数发生变化时自动触发完成所述增量编译得到目标代码,其中,所述增量编译对应的编译服务为后台服务;通过识别开发者主动修改函数或修改函数使用的数据结构、全局变量来确定所述函数发生变化并启动所述增量编译,所述主动修改函数包括对所述函数进行创建、删除或者修改操作;
以细粒度元素为存储单位存储所述操作结果并存储所述可执行代码,其中所述细粒度元素包括所述数据类型、所述函数和所述变量。
15.如权利要求14所述的面向软件定义卫星的软件快速开发方法,其特征在于,所述根据所述命令消息完成针对项目、函数、变量或者数据类型的操作得到操作结果,并经增量编译及链接后生产可执行文件之前,所述面向软件定义卫星的软件快速开发方法还包括:完成对所述用户的身份和权限认证。
16.如权利要求14所述的面向软件定义卫星的软件快速开发方法,其特征在于,所述根据所述命令消息完成针对项目、函数、变量或者数据类型的操作得到操作结果,并经增量编译及链接后生产可执行文件之前,所述面向软件定义卫星的软件快速开发方法还包括:预处理所述命令消息,将所述命令消息划分为项目管理命令、函数管理命令、变量管理命令、数据类型管理命令以及链接命令;
所述根据所述命令消息完成针对项目、函数、变量或者数据类型的操作得到操作结果,并经增量编译及链接后生产可执行文件,包括:根据所述项目管理命令完成对所述项目的操作;
根据所述函数管理命令完成对所述函数的操作;
根据所述变量管理命令完成对所述变量的操作;
根据所述数据类型管理命令完成对所述数据类型的操作;或者根据所述链接命令完成对目标代码的链接得到所述可执行代码,其中,所述目标代码是对源代码编译得到的。
17.如权利要求14所述的面向软件定义卫星的软件快速开发方法,其特征在于,所述根据所述命令消息完成针对项目、函数、变量或者数据类型的操作,经增量编译及链接后生产可执行文件,包括:根据所述命令消息确认需要可复用代码,并将所述可复用代码写入源代码中。
18.如权利要求14所述的面向软件定义卫星的软件快速开发方法,其特征在于,所述面向软件定义卫星的软件快速开发方法还包括:向所述用户发送针对所述命令消息的处理结果的应答消息。
说明书 :
一种面向软件定义卫星的软件快速开发系统与方法
技术领域
背景技术
但并没有将全部的源文件作为一个整体来对待。编译器的这种工作方式或者说习惯对开发
者编写每个源文件和组织整个源码树提出了较高的要求,不但要确保每个源文件信息完整
(不完整不能正确编译),还要确保各个源文件之间信息一致(不一致不能正确连接)。这样
一来,如何科学合理地组织源码树就成为困扰开发者的一大难题,源码规模越大,难度越
大。无论如何科学论证、精心设计,一个大型的软件项目到最后都无可避免地会形成一棵交
织在一起的有着复杂依赖关系的源码树,导致其维护成本逐年升高、大幅攀升。
荷等功能以软件方式实现,总体上将各类敏感器和执行机构通过软件连接为一个整体,最
终实现大部分卫星功能的软件化。软件定义卫星解除了卫星产品软硬件之间的耦合关系,
使得卫星软件可以独立演化、按需加载、动态重构,从而可以在不改变硬件的情况下实现更
多的功能,完成更多的任务。软件定义卫星与传统卫星的重大区别,导致了面向传统卫星软
件设计的开发方法及系统难以面向软件定义卫星,或导致开发效率大幅度降低。
碍,同时也不利于代码复用。源代码的这种落后的组织方式和编译器形成了相互制约的紧
耦合关系,一方不改,另一方也改不了;再加上兼容性的问题,导致这个领域几十年来一直
发展缓慢。
发明内容
收应答,即可以交互的方式完成开发工作。
输入的命令消息并发送,接收应答消息;编译器,被配置为:接收所述命令消息,并根据所述
命令消息完成针对项目、函数、变量或者数据类型的操作得到操作结果,并经增量编译及链
接后可执行代码,其中,所述操作包括创建、删除、查询或者修改;当识别到所述函数发生变
化时自动触发完成所述增量编译得到目标代码;生成用于表征针对所述命令消息的操作情
况的所述应答消息;源码数据记录装置,被配置为以细粒度元素为存储单位存储所述操作
结果和所述可执行代码,其中,所述细粒度元素包括所述函数、所述变量和所述数据类型。
并进行显示。
认证并将所述命令消息根据至少一个所述编译器的负载情况向目标编译器发送。
或者被配置为广播所述命令消息。
根据归一化处理后的所述命令消息生成所述源代码。
为存储所述解析命令信息以及所述应答消息;命令归一化和任务调度装置,被配置为对所
述解析命令信息进行归一化处理,以确定所述解析命令信息属于项目管理命令、函数管理
命令、变量管理命令、数据类型管理命令或者链接命令;生成所述应答消息,至少用以表征
用户对所述命令消息无操作权限和所述命令消息的格式不满足要求;接收所述应答消息。
置为分类别记录所述项目管理命令、所述函数管理命令、所述变量管理命令、所述数据类型
管理命令以及所述链接命令;所述编译器被配置为根据所述项目管理命令完成针对所述项
目的操作;所述编译器被配置为根据所述函数管理命令完成针对所述函数的操作;所述编
译器被配置为根据所述变量管理命令完成针对所述变量的操作;所述编译器被配置为根据
所述数据类型管理命令完成针对所述数据类型的操作;所述编译器被配置为根据所述链接
命令完成针对目标代码的操作得到所述可执行代码。
数据记录装置连接,被配置为接收通过所述至少一个交互端输入的查询命令并基于所述查
询命令从所述可复用代码及数据资源记录装置中获取目标可复用代码或者目标可复用数
据。
录装置还被配置为存储包括所述元素信息的元素数据表,并存储包括所述引用关系的元素
引用关系表;当收到检索元素命令消息时,抽取所述检索元素命令消息中的检索元素并从
所述元素引用关系表和所述元素数据列表中抽取所需元素通过应答消息反馈检索结果。
动所述第二云端装置;其中,所述第一云端装置包括所述命令记录装置、所述编译器、所述
源码数据记录装置和所述代码检索装置中的至少一个;所述第二云端装置包括所述命令记
录装置、所述编译器、所述源码数据记录装置和所述代码检索装置中的至少一个。
命令消息完成针对项目、函数、变量或者数据类型的操作得到操作结果,并经增量编译及链
接后生产可执行代码,其中,所述操作包括创建、删除、查询或者修改;以细粒度元素为存储
单位存储所述操作结果并存储所述可执行代码,其中所述细粒度元素包括所述数据类型、
所述函数和所述变量。
星的软件快速开发方法还包括:完成对所述用户的身份和权限认证。
性,防止项目内容被没有权限的用户篡改或者使用。
星的软件快速开发方法还包括:预处理所述命令消息,将所述命令消息划分为项目管理命
令、函数管理命令、变量管理命令、数据类型管理命令、编译命令以及链接命令;所述根据所
述命令消息完成针对项目、函数、变量或者数据类型的操作得到操作结果,并经增量编译及
链接后生产可执行文件,包括:根据所述项目管理命令完成对所述项目的操作;根据所述函
数管理命令完成对所述函数的操作;根据所述变量管理命令完成对所述变量的操作;根据
所述数据类型管理命令完成对所述数据类型的操作;或者根据所述链接命令完成对所述目
标代码的链接得到所述可执行代码,其中,所述目标代码是对源代码编译得到的。
化是由于对所述函数进行所述操作导致的或者所述函数的变化是由于对所述函数使用的
所述数据结构或者全局变量的变化引起的。
用的大量编译时间,从而缩短开发者整体开发时间;其次可以提前发现原来某些代码编译
时才能发现的错误,错误越早被发现,修改错误的代价就越低。
认需要可复用代码,并将所述可复用代码写入源代码中。
附图说明
作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他相关的附图。
具体实施方式
描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
互,编译器根据开发者的命令(意图)执行相关操作,例如生成源代码、构建目标程序等;可
以将原来由开发者承担的源代码管理和维护工作(尤其是可见范围、一致性和依赖关系等)
全都交给了编译器。在本申请一些实施例的技术架构下,编译器的基本编译单位从源文件
缩小到了函数级别,灵活性大大提高。本申请的一些实施例采用数据库存储源代码中的函
数、数据类型和变量等元素可以实现变量的即时声明即时使用;本申请一些实施例的编译
器提供的服务为后台服务,即不需要用户使用命令、且不占用用户开发时间亦被不被用户
感知的服务。这样的即时编译服务首先省去了传统的编译器占用的大量编译时间,从而缩
短开发者整体开发时间;其次可以提前发现原来某些代码编译时才能发现的错误,错误越
早被发现,修改错误的代价就越低。
个交互端),被配置为接收用户输入的命令消息并发送,接收应答消息;编译器701,被配置
为:接收所述命令消息,并根据所述命令消息完成针对项目、函数、变量或者数据类型的操
作,得到操作结果,其中,所述操作包括创建、删除、查询或者修改;当识别到所述函数发生
变化时自动触发完成增量编译得到目标代码(例如,当获取到所述函数发生变化时自动触
发完成所述增量编译得到所述目标代码,其中,所述函数的变化是由于修改或删除所述函
数导致的或者所述函数的变化是由于修改或删除所述函数使用的所述数据结构或者全局
变量的引起的);生成用于表征针对所述命令消息的操作情况的所述应答消息;源码数据记
录装置801,被配置为以细粒度元素为存储单位存储所述操作结果和所述可执行代码,其
中,所述细粒度元素包括所述函数、所述变量和所述数据类型。本申请的一些实施例提供一
种更细粒度的源码组织和存放方式,并在此基础提供了一种并行编译的编译器最可以实现
支持异地协同和交互式编程。也就是说,本申请实施例中的并行编译是指:编译器可同时对
多用户的多处源代码多个开发动作(表现为输入的多个命令信息)进行并行分析、处理和转
换。
元素(例如,元素包括函数、变量以及数据类型)上下文、退出元素上下文、新增(即创建)变
量、修改变量、删除变量、检索变量、新增(即创建)数据类型、修改数据类型、删除数据类型、
检索数据类型、新增(即创建)函数、修改函数、删除函数、检索函数等。
置,开发者可以向编译服务器发送命令消息、从编译器接收应答消息并进行显示。
息转发装置201,该认证及消息转发装置201与所述至少一个交互端连接以接收所述命令消
息,被配置为对所述用户身份进行认证并将所述命令消息根据多个编译器的负载情况向目
标编译器发送。在另一些实施例中,所述认证及消息转发装置还被配置为:处理来自于开发
者的注册操作和支付请求,或者被配置为对信道加密,或者被配置为广播所述命令消息。
300被配置为依次对所述命令消息进行解析、存储以及命令归一化处理;其中,所述编译器
701根据归一化处理后的所述命令消息完成针对所述元素的所述操作。如图1所示,在一些
实施例中,所述消息处理装置300包括:消息解析装置301,被配置为解析所述命令消息,得
到解析命令信息;解析消息及应答消息记录装置401,被配置为存储所述解析命令信息以及
所述应答消息;命令归一化和任务调度装置501,被配置为对所述解析命令信息进行归一化
处理,以确定所述解析命令信息属于项目管理命令、函数管理命令、变量管理命令、数据类
型管理命令或者链接命令。
录装置601设置于命令归一化和任务调度装置501与编译器701之间,命令记录装置601被配
置为分类别记录项目管理命令、函数管理命令、变量管理命令、数据类型管理命令以及链接
命令。相应的,编译器701被配置为根据项目管理命令完成针对项目的操作;编译器701被配
置为根据函数管理命令完成针对函数的操作;编译器701被配置为根据变量管理命令完成
针对变量的操作;编译器701被配置为根据数据类型管理命令完成针对数据类型的操作;所
述编译器被配置为根据所述链接命令完成针对目标代码的操作得到所述可执行代码。具体
的操作过程详见图5‑图8,为避免重复在此不做过多赘述。
可复用的代码或者数据;代码检索装置901,与源码数据记录装置801连接,被配置为接收通
过所述至少一个交互端输入的查询命令并基于所述查询命令等命令从可复用代码及数据
资源记录装置1001中获取目标可复用代码或者目标可复用数据。需要说明的是,编译器701
在执行部分函数管理、数据类型管理、变量管理等也会触发从可复用代码及数据资源记录
装置1001读取数据,如新增函数A,函数A需要调用可复用代码及数据资源记录装置中存储
的B函数,此时会触发从可复用代码及数据资源记录装置读取函数B,并将函数B存储至源码
数据记录装置。
动所述第二云端装置;其中,所述第一云端装置包括所述命令记录装置、所述编译器、所述
源码数据记录装置和所述代码检索装置中的至少一个;所述第二云端装置包括所述命令记
录装置、所述编译器、所述源码数据记录装置和所述代码检索装置中的至少一个。
和NoSQL数据库及其它存储装置中的一种。
出命令消息。作为一个示例,人机交互装置110采用移动终端,具体地,开发者可以通过在移
动终端上的微信客户端通过文字向编译器发出命令消息。命令消息的类型可以参照上文描
述,为避免重复在此不做过多赘述。
信公众账号之后,系统将为其创建一个私有库,并以其微信号进行命名。系统将记录开发者
向集成开发云发送的每一条命令消息,和集成开发云给出的每一条应答消息。例如,开发者
可以使用的命令消息的类型包括:CD和DC用于切换工作场景;New、del、list用于创建、删除
和检索元素,其中,所述元素包括:数据类型、变量、函数、类、宏定义等;Set用于设置或修改
元素的属性值;Help用于获取系统帮助;Debug、test、analyze、build、distribute用于调
试、测试、分析、构建和发布源代码。
理项目中的函数、数据类型和变量,第三级工作场景用于操作函数、数据类型和变量的属
性。在不同的场景下可以执行不同的命令(如上段列举的命令)操控不同的对象。
开发工作实际上就是通过一长串的命令和编译器701进行实时交互,最终完成应用程序的
开发工作。本申请实施例的交互式编程系统支持大规模的异地协同和并行开发。
定义等)的权利,可以授权或邀约某个开发者成为本项目的高级程序员和初级程序员,管理
员也可以将其管理员身份让渡给项目开发团队中的某个高级程序员。高级程序员有创建、
删除、查询和修改自己创建的对象以及初级程序员创建的对象的权利。初级程序员只能创
建、删除、查询和修改自己创建的对象。
要说明的是,在本申请的一些实施例中可动态扩展的大规模认证及消息转发装置210还被
配置为借助第三方的现有服务(例如微信公众平台),用于提供注册、身份认证、支付、信道
加密、消息转发、广播等功能。
证及消息转发装置210提交上来的用户输入的命令消息并解析,将解析后的命令消息写入
第四层消息解析及应答数据记录装置410(对应于图1的解析消息及应答消息记录装置
401)。需要说明的是,消息解析及应答装置310还被配置为从消息解析及应答数据记录装置
410读取编译器701给出的应答消息,将其可动态扩展的大规模认证及消息转发装置210分
发给人机交互装置110。
的消息解析及应答数据记录装置410即可以供消息解析及应答装置310写入解析后的命令
消息,也可以从第五层的命令归一化及任务调度装置501(对应于图1的命令归一化和任务
调度装置501)读取编译器701的应答消息。
取的命令消息进行归一化和任务调度。图3为本申请一些实施例的命令归一化及任务调度
装置501的工作流程。如图3所示,一方面命令归一化及任务调度装置501从第四层的消息解
析及应答数据记录装置410读取数据并进行处理。另一方面,命令归一化及任务调度装置
501从第六层读取来自于编译器701的消息并进行处理。
括的用户ID判断用户权限;S512,判断用户是否有执行当前命令消息的权限;S513,当确定
用户具有权限时根据当前上下文判断命令类型并确定应该写入哪个命令装置(即确定写入
如下文记载的第六层的项目管理命令记录装置611、函数管理命令记录装置612、变量管理
命令记录装置613、数据类型管理命令记录装置614以及链接命令记录装置615中的一个装
置中);S515将命令写入对应的命令记录装置(例如,写入链接命令记录装置615),否则执行
S516将应答消息写入第四层的消息解析及应答数据记录装置410。S521命令归一化和任务
调度装置从第六层读取应答消息;S522,将应答消息更新至第四层的消息解析及应答数据
记录装置410。S531命令归一化和任务调度装置判断是否存在可用的命令记录装置、编译
器、源码数据记录装置、以及代码检索装置;S532,当不存在这些装置或者这些装置不可用
时则启动或者创建这些装置。
框消息):命令框消息;消息:del sum。
有权限则将不具有处理权限的应答消息写入消息解析及应答数据记录装置410,否则判断
“del sum”命令格式是否正确,如果命令格式错误则将命令格式错误导致不能被处理的应
答消息写入消息解析及应答数据记录装置410中,否则将命令写入变量管理记录装置603。
变量管理命令记录装置613、数据类型管理命令记录装置614以及链接命令记录装置615,这
些数据记录装置(可以是关系型数据库、实时数据库、NoSQL数据库等)。一方面命令记录装
置601供命令归一化及任务调度装置501写入命令消息,读取应答消息。另一方面命令记录
装置601分别图1的编译器701读取命令消息和写入应答消息。
714、编译单元715以及链接单元716,这些单元能够提供源代码生成、构建、分析、仿真和模
拟执行等服务。图2的第七层的多种编译单元分别与第六层的相应种类的命令记录装置对
应,且与第8层源码数据记录装置801链接。
执行文件存储至源码数据记录装置801。需要说明的是,目标程序是一个可执行文件,目标
程序可以通过操作系统直接访问。
元提供创建、删除、查询以及修改服务。
象。当源码数据记录装置801采用结构数据库时,一个项目中的源代码在数据库中表现为一
组数据表。例如,数据类型的存放方式包括:数据类型表(例如,该表可以进一步包括数据类
型编号、名称、定义、类别、组别、创建时间、创建人、最后一次修改时间、修改人、备注)、数据
类型成员表(例如,该表可以进一步包括数据类型编号,成员类型、成员名称、成员默认值、
成员序号、成员备注)、数据类型白名单表(例如,该表可以包括:数据类型编号、函数编号、
可用标志);变量的存放方式包括变量表(例如,该表可以包括:变量编号、变量类型、变量名
称、变量初值、变量类别、变量组别、是否常量、变量备注、创建时间、创建人、修改时间、修改
人)以及变量白名单表(例如,该表可以包括:变量编号、函数编号、是否允许读、是否允许
写);函数的存放方式包括:函数表(例如,该表可以包括:函数编号、返回值类型、函数名称、
函数类别、函数组别、函数备注、创建时间、创建人、修改时间、修改人)、函数参数表(例如,
该表可以包括函数编号、参数序号、参数类型、参数名称、参数默认值、参数备注)、局部变量
表(例如,该表可以包括函数编号、变量序号、变量类型、变量名称、变量初值、变量备注)、函
数语句表(例如,该表可以包括函数编号、语句序号、语句标号、语句内容、语句备注、语句类
型)或者函数白名单表(例如,该表可以包括:函数编号、函数编号、是否允许调用标志),其
中,函数白名单表用于表征该函数的可见域及是否可以被调用。
和相关数据后将其写入对应的源码数据记录装置801。
层的代码检索装置901根据需要进行检索和取用。
(例如类、宏定义等);图2中第一层与第二层之间传输的请求消息、第二层和第三层之间传
输的消息均由以下信息组成:用户编号(或称为用户ID)、项目编号(或称为项目ID)、消息上
下文、消息类别(命令框消息/编辑框消息)、消息正文内容;图2传输线上的应答和消息应答
均由以下信息组成:消息编号(或称为消息ID)、用户ID(或称为用户编号)、消息上下文、应
答框应答消息、编辑框应答消息;图2的消息解析及应答装置310将来自第一层请求或者第
二层的消息按定义拆分成如下各部分得到解析后的数据(或称为解析后的命令信息)并存
储至第四层的消息解析及应答数据记录装置410:用户ID、项目ID、消息上下文、消息类别
(命令框消息/编辑框消息)、消息;图2的消息应答或者命令应答将消息ID、用户ID、消息上
下文、应答框应答消息、编辑框应答消息组成消息应答的格式;图2的项目管理命令包含:创
建项目命令、根据模板创建项目命令、进入项目命令、退出项目命令、检索项目命令、修改项
目属性命令、修改项目配置文件命令;图2的函数管理命令包含:新增函数命令、删除函数命
令、修改函数命令、检索函数命令;图2的变量管理命令包含:新增变量命令、删除变量命令、
修改变量命令、检索变量命令;数据类型管理命令包含:新增数据类型命令、删除数据类型
命令、修改数据类型命令、检索数据类型命令;项目信息包含以下信息:项目属性;项目管理
辅助信息包含一下信息:用户项目关系记录、用户权限、项目ID、项目表记录、项目ID、项目
表内容、配置文件路径、模板内容、默认配置文件、项目配置文件、模板ID;函数信息包含以
下信息:函数表信息、函数参数信息表信息、函数语句表信息;函数管理辅助信息包含以下
信息:数据类型表信息、元素引用表信息、用户项目关系表信息、函数表信息、函数参数信息
表信息、函数语句表信息;变量信息包含以下信息:变量表信息;变量管理辅助信息包含以
下信息:数据类型表信息、元素引用表信息、用户项目关系表信息、变量表信息;数据类型信
息包含以下信息:数据类型表信息、数据类型成员表信息;数据类型管理辅助信息包含以下
信息:元素引用表信息、用户项目关系表信息、数据类型表信息、数据类型成员表信息;图2
第八层向第七层提供的元素信息包括:函数表信息、函数参数信息表信息、函数语句表信
息、变量表信息、数据类型表信息、数据类型成员表信息、元素引用表信息;中间代码包含符
号信息、抽象语法树;目标代码即编译后的文件;可执行文件即可执行程序;代码/数据即可
复用代码及数据。
或者数据类型的操作得到操作结果,并经增量编译及链接后生成可执行文件,其中,所述操
作包括创建、删除、查询或者修改;S103,以细粒度元素为存储单位存储所述操作结果并存
储所述可执行代码,其中所述细粒度存元素包括所述数据类型、所述函数和所述变量。
实施例,在一个项目中,开发者分为三种角色:管理员、高级程序员、初级程序员。管理员拥
有创建、删除、查询以及修改项目中所有对象(即函数、数据类型、变量、类、宏定义等元素)
的权利,可以授权或邀约某个开发者成为本项目的高级程序员和初级程序员,管理员也可
以将其管理员身份让渡给项目开发团队中的某个高级程序员。高级程序员有创建、删除、查
询以及修改自己创建的对象以及初级程序员创建的对象的权利。初级程序员只能创建、删
除、查询以及修改自己创建的对象。
令消息划分为项目管理命令、函数管理命令、变量管理命令、数据类型管理命令、编译命令
以及链接命令;相应的S102包括:根据所述项目管理命令完成对所述项目的操作;根据所述
函数管理命令完成对所述函数的操作;根据所述变量管理命令完成对所述变量的操作;根
据所述数据类型管理命令完成对所述数据类型的操作;根据所述链接命令完成对目标代码
的链接得到所述可执行代码。
项目),如果已经存在待开发的项目则执行S506;
S509;
于函数则执行S511进入函数场景(即函数上下文)并继续执行图6步骤以完成对函数的操
作,如果操作类型属于数据类型则执行S512进入数据类型场景(即数据类型上下文)并继续
执行图7的步骤以完成对数据类型的操作,如果操作类型属于全局变量则执行S513进入变
量场景(即进入变量上下文)并继续执行图8的步骤以完成对全局变量的操作。
函数,如果函数管理类型属于检索则执行S605检索函数;
需要创建新函数,则在交互端输入“新增函数”命令创建函数。当系统接收到新增函数命令
时,判断函数名称是否已存在,函数是否存在词法语法错误,函数是否与其他元素存在引用
关系等作出相应操作,并给出应答;如果用户需要删除函数,则在交互端输入“删除函数”命
令删除函数,当系统接收到删除函数命令时,判断函数是否与其他元素存在引用关系等作
出相应操作,并给出应答;如果用户需要修改函数,则在交互端输入“修改函数”命令修改函
数,当系统接收到修改函数命令时,判断函数是否存在词法语法错误,函数是否与其他元素
存在引用关系等作出相应操作,并给出应答;如果用户需要检索函数,则在交互端输入“检
索函数”命令检索函数,当系统接收到检索函数命令时,根据用户给出的检索条件进行函数
检索,并给出应答。
型属于修改则执行S704修改数据类型,如果函数管理类型属于检索则执行S705检索数据类
型;
如果用户需要创建新数据类型,则在交互端输入“新增数据类型”命令创建数据类型,当系
统接收到新增数据类型命令时,判断数据类型名称是否已存在,数据类型是否存在词法语
法错误,数据类型是否与其他元素存在引用关系等作出相应操作,并给出应答。如果用户需
要删除数据类型,则在交互端输入“删除数据类型”命令删除数据类型,当系统接收到删除
数据类型命令时,判断数据类型是否与其他元素存在引用关系等作出相应操作,并给出应
答。如果用户需要修改数据类型,则在交互端输入“修改数据类型”命令修改数据类型,当系
统接收到修改数据类型命令时,判断数据类型是否存在词法语法错误,数据类型是否与其
他元素存在引用关系等作出相应操作,并给出应答。如果用户需要检索数据类型,则在交互
端输入“检索数据类型”命令检索数据类型,当系统接收到检索数据类型命令时,根据用户
给出的检索条件进行数据类型检索,并给出应答。
执行S804修改变量类型,如果变量管理类型属于检索则执行S805检索变量类型;
需要创建新变量,则在交互端输入“新增变量”命令创建变量,当系统接收到新增变量命令
时,判断变量名称是否已存在,变量是否存在词法语法错误,变量是否与其他元素存在引用
关系等作出相应操作,并给出应答。如果用户需要删除变量,则在交互端输入“删除变量”命
令删除变量,当系统接收到删除变量命令时,判断变量是否与其他元素存在引用关系等作
出相应操作,并给出应答。如果用户需要修改变量,则在交互端输入“修改变量”命令修改变
量,当系统接收到修改变量命令时,判断变量是否存在词法语法错误,变量是否与其他元素
存在引用关系等作出相应操作,并给出应答。如果用户需要检索变量,则在交互端输入“检
索变量”命令检索变量,当系统接收到检索变量命令时,根据用户给出的检索条件进行变量
检索,并给出应答。当用户不需再对变量进行编辑时,退出变量上下文(场景)。
得到可执行代码,其中,所述函数的变化是由于对所述函数进行所述操作导致的或者所述
函数的变化是由于对所述函数使用的所述数据结构或者全局变量的变化引起的。具体地,
交互式编程系统采用基于函数元素变化的增量编译方法,函数元素的变化原因包含:开发
者主动修改函数(例如,对函数进行创建、删除或者修改等操作)或因函数使用的数据结构、
全局变量的变化引起的函数的修改。在源码数据记录装置801对应的数据库中保存经编码
压缩后的抽象语法树及符号信息,当数据库中的函数元素(也就是说,函数表、函数信息表、
函数语句表中的信息发送变化)发生变更时,系统读取上一次编译时的语法树、更新后的元
素信息,并进行增量编译。
代码中。也就是说,本申请的一些实施例还建立开发者可以直接引用的源码资源库和数据
资源库,由编译器701根据引用要求从中检索和抽取必要的元素,提高了复用效率,降低了
复用门槛。具体地,如图9所示,开发者通过人机交互装置(即图1的交互端)的用户界面输入
命令消息,命令消息包括创建、删除或者修改元素命令,当编译器701根据这些命令消息创
建、修改或删除元素(元素可以包含函数、数据类型以及变量、类、宏)时由编译器701自动抽
取元素信息并将抽取的元素信息存入源码数据记录装置801的包括的元素数据表(即上文
记载的各种数据表格,包括,变量表、数据类型表、数据类型成员表等)中,同时编译器701自
动抽取元素引用消息得到引用关系并将抽取得到的元素引用信息存储到源码数据记录装
置801的数据库的元素引用关系表中。在一些实施例中,命令消息包括检索元素的命令,具
体地,当用户通过用户界面输入用于检索元素命令的命令消息时,由编译器701抽取命令消
息的检索元素并从元素引用关系表和元素数据列表中抽取所需元素通过应答消息向用户
反馈检索结果。本申请的一些实施例通过检索添加可复用代码来提升软件开发人员的开发
速度。元素引用关系表中的内容包括引用元素类型、引用元素项目ID、引用元素ID、被引用
元素类型、被引用元素项目ID以及被引用元素ID。
素。本申请的一些实施例提供了不同层次粒度的可复用代码,最小粒度可复用代码提供单
一功能,即满足单一职责原则,高层次的可复用代码提供一组功能。本申请一些实施例中的
可复用代码采用特定的描述框架来定义其信息,描述框架由基本属性及扩展属性组成,其
中基本属性包含:可复用单元名称、可复用单元标识符、应用范围、领域范围、使用环境、功
能描述。用户通过属性描述检索可复用代码。本申请的一些实施例可以根据搜索匹配度及
可复用代码评分值综合计算出检索结果排序,用户可查看可复用代码的所有属性描述。本
申请的一些实施例将给出一个可复用单元的外部接口(包含函数、全局变量、数据结构描
述),用户通过调用(使用)外部接口也可以完成可复用代码的复用。
对用户命令的处理,用户可以第一时间发现软件错误,减少软件定义卫星软件修改成本。通
过对用户命令的记录,可支持逐级回溯的细粒度版本管理及快速定位代码编写者,提高软
件定义卫星软件修改效率。
显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、
功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一
部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执
行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于
附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也
可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每
个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基
于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计
算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个
人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存
储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和
字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图
中不需要对其进行进一步定义和解释。
盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要
素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。