一种平台插件化软件研发构架及其设计方法、系统与流程

文档序号:22469631发布日期:2020-10-09 21:58阅读:302来源:国知局
一种平台插件化软件研发构架及其设计方法、系统与流程

本发明属于软件设计技术领域,尤其涉及一种平台插件化软件研发构架及其设计方法、系统。



背景技术:

以面向java的动态模型系统osgi为代表的插件化开发架构,此架构历经十多年的打磨,已经形成了业内的标准化可插拔框架。osgi的思想为组件bundle的自治,但存在组件bundle之间的依赖,如某impl包需要通过导入导出包的形式引用另外一个impl包的接口,但是服务的调用通过组件bundle之间注册的接口服务进行,并不直接方法级别调用,从而明确了组件bundle的边界。但是由此带来一个问题,无需的组件bundle可以服务没有加入,但是依赖必须加入,也就是说,组件bundle之间如果存在导入导出的情况,依赖就必须是全量的,由此软件的安装包就比所需的大的多。而且osgi包的研发方式与普通maven研发存在多引用源无关的问题,无法确定以哪个为标准,必须另外借助其他插件,也就给软件代码的迁移带来了负担。任何架构设计均有利弊,osgi为了其他方面的便捷,因此就舍弃了此依赖的问题。

一个产品的诞生,必然经历mvp的阶段,也就是说,每个产品都会存在一些核心的软件功能。这些功能在整个产品的迭代过程中都是重中之重,也是期望能够稳定运行的。因此,这些功能的包能够独立为一个最小化的产品部署,也不期望对此部分内容进行大量的改动,希望能够稳定下来。可是,如果有某个细分市场出现了定制化或者衍生产品,再想利用此mvp就变得极为困难,原因有二点。一,细分市场必然存在需求不一致,变动如何修改,一旦修改就无法共用mvp。二,一旦没有共用同一库的最小可行性产品mvp,必然会导致mvp的缺陷不能及时分析、及时同步到各个细分市场中。那么,产品的质量就会大打折扣,mvp期望的效果也就荡然无存。



技术实现要素:

针对现有技术中的缺陷,本发明提供了一种既能消除osgi全量引用,又能解决mvp复用问题的平台插件化软件研发构架。

本发明所提供的技术方案是:一种平台插件化软件研发构架,包括独立平台数据库lego、软件研发包和若干个功能自治包;

其中,所述独立平台数据库lego包含有表征其功能的标识,所述软件研发包表征所述独立平台数据库lego的北向能力,每一个所述功能自治包面向接口开发且每一个功能自治包之间相互独立。

作为一种改进的方案,所述软件研发包内包含有在研发设计过程中所必需的各类bean、interface内容,所述软件研发包遵循最小化依赖原则,每一个所述功能自治包内提供实现。

作为一种改进的方案,若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务。

作为一种改进的方案,当所述功能自治包的接口处于无用状态时,对所述接口进行重写。

本发明的另一目的在于提供一种基于平台插件化软件研发构架的平台插件化软件研发构架的设计方法,所述方法包括下述步骤:

定义一个独立平台数据库lego,其中,所述独立平台数据库lego包含有表征其功能的标识;

定义一基于研发平台的软件开发包,其中,所述软件研发包表征所述独立平台数据库lego的北向能力;

定义若干个基于所述研发平台的功能自治包,其中,每一个所述功能自治包面向接口开发且每一个功能自治包之间相互独立。

作为一种改进的方案,所述方法还包括下述步骤:

依据所述研发平台的功能需求,将若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务;

其中,所述软件研发包内包含有在研发设计过程中所必需的各类bean、interface内容,所述软件研发包遵循最小化依赖原则,每一个所述功能自治包内提供实现;

若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务。

作为一种改进的方案,所述方法还包括下述步骤:

当所述功能自治包的接口处于无用状态时,对所述接口进行重写。

本发明的另一目的在于提供一种基于权利要求5所述的平台插件化软件研发构架的设计方法的设计系统,所述系统包括:

独立平台数据库定义模块,用于定义一个独立平台数据库lego,其中,所述独立平台数据库lego包含有表征其功能的标识;

软件开发包定义模块,用于定义一基于研发平台的软件开发包,其中,所述软件研发包表征所述独立平台数据库lego的北向能力;

功能自治包定义模块,用于定义若干个基于所述研发平台的功能自治包,其中,每一个所述功能自治包面向接口开发且每一个功能自治包之间相互独立。

作为一种改进的方案,所述系统还包括:

服务生成模块,用于依据所述研发平台的功能需求,将若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务;

其中,所述软件研发包内包含有在研发设计过程中所必需的各类bean、interface内容,所述软件研发包遵循最小化依赖原则,每一个所述功能自治包内提供实现;

若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务。

作为一种改进的方案,所述系统还包括:

重写模块,用于当所述功能自治包的接口处于无用状态时,对所述接口进行重写。

在本发明实施例中,平台插件化软件研发构架包括独立平台数据库lego、软件研发包和若干个功能自治包;其中,所述独立平台数据库lego包含有表征其功能的标识,所述软件研发包表征所述独立平台数据库lego的北向能力,每一个所述功能自治包面向接口开发且每一个功能自治包之间相互独立,从而解决了传统osgi框架的全量引用问题和细分市场的定制化服务组装、覆盖问题,严格的分层面向接口架构,同时又能够带来软件质量、稳定性的保障。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1是本发明提供的平台插件化软件研发构架的设计方法的实现流程图;

图2是本发明提供的平台插件化软件研发构架的设计系统的结构框图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的、技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。

本发明提供的平台插件化软件研发构架,包括独立平台数据库lego、软件研发包和若干个功能自治包;其中,所述独立平台数据库lego包含有表征其功能的标识,所述软件研发包表征所述独立平台数据库lego的北向能力,每一个所述功能自治包面向接口开发且每一个功能自治包之间相互独立,从而解决了传统osgi框架的全量引用问题和细分市场的定制化服务组装、覆盖问题,严格的分层面向接口架构,同时又能够带来软件质量、稳定性的保障。

在该实施例中,软件研发包内包含有在研发设计过程中所必需的各类bean、interface内容,所述软件研发包遵循最小化依赖原则,每一个所述功能自治包内提供实现。

在本发明实施例中,若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务;

当所述功能自治包的接口处于无用状态时,对所述接口进行重写。

图1示出了本发明提供的平台插件化软件研发构架的设计方法的实现流程图,其具体包括下述步骤:

在步骤s101中,定义一个独立平台数据库lego,其中,所述独立平台数据库lego包含有表征其功能的标识;

在步骤s102中,定义一基于研发平台的软件开发包,其中,所述软件研发包表征所述独立平台数据库lego的北向能力;

在步骤s103中,定义若干个基于所述研发平台的功能自治包,其中,每一个所述功能自治包面向接口开发且每一个功能自治包之间相互独立.

在该实施例中,依据所述研发平台的功能需求,将若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务;

其中,所述软件研发包内包含有在研发设计过程中所必需的各类bean、interface内容,所述软件研发包遵循最小化依赖原则,每一个所述功能自治包内提供实现;

若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务。

在该实施例中,上述方法还包括下述步骤:

当所述功能自治包的接口处于无用状态时,对所述接口进行重写。

在本发明实施例中,为了便于说明,下述给出该具体的实现:

1)定义独立平台数据库

软件研发平台化必须与各个细分市场进行区别开来。平台化内容为满足各个定制化及其衍生产品而生,所以必须作为最底层的实现,上层业务可以依赖平台数据库,但是平台数据库不能依赖任何上层内容。

实现方案:

a.定义平台库:lego

b.根据需求定义平台表,平台表应该携带特殊的标识,以便于上层业务的作为区别,如模板(t_lego_[模块名]_[功能名])。

2)定义软件研发包:

osgi以bundle作为自治,无需启动但是代码依赖的bundle必须携带,这样就造成了连同实现一起打入软件包的情况。所以,本方案定义软件研发包,此软件研发包代表了整个lego的北向能力,只具备能力接口及附带定义,并不包含任何实现。

实现方案:

a.独立软件研发包为com.xxx.lego.sdk。

b.将研发必须的各类bean、interface按照模块写入此包。

c.依据引用最小化依赖,理论上无需任何依赖。

3)实现功能自治包:

各个功能按照模块划分cbb。但是必须为面向接口的形式进行开发。模块之间无需类似osgi强制引用。

实现方案:

a.建立某模块实现包,如com.xxx.lego.cbb.security。

b.将该模块对外的接口及依赖的bean全部放入security中,从而实现面向接口开发。

c.自身包内提供实现,满足mvc分层思想。

4)实现服务组装,确定最小化的依赖关系:

各个功能自治包都由com.xxx.lego.sdk及其自身组成,本身并没有其他模块的实现,所以,服务的组装必须依赖具体实现。各个细分市场也可以剔除无需的服务,自定义自身定制化需求,同时,不影响平台的质量。

实现方案:

a.依据需求在平台内选取需要的功能模块。

b.携带sdk进行打包组装。

c.上层实现服务按需组装,启动。

5)实现复用关系:

各个功能自治包可以独立拉出来使用,如果存在某包不用的情况,但是还调用了该包的接口,用户可以覆盖该接口。

实现方案:

a.用户覆盖重写无用接口。

b.按照4中步骤组装服务。

图2示出了本发明提供的平台插件化软件研发构架的设计系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分。

平台插件化软件研发构架的设计系统包括:

独立平台数据库定义模块11,用于定义一个独立平台数据库lego,其中,所述独立平台数据库lego包含有表征其功能的标识;

软件开发包定义模块12,用于定义一基于研发平台的软件开发包,其中,所述软件研发包表征所述独立平台数据库lego的北向能力;

功能自治包定义模块13,用于定义若干个基于所述研发平台的功能自治包,其中,每一个所述功能自治包面向接口开发且每一个功能自治包之间相互独立。

在该实施例中,所述系统还包括:

服务生成模块14,用于依据所述研发平台的功能需求,将若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务;

其中,所述软件研发包内包含有在研发设计过程中所必需的各类bean、interface内容,所述软件研发包遵循最小化依赖原则,每一个所述功能自治包内提供实现;

若干个所述功能自治包中的其中几个功能自治包结合所述软件研发包打包生成新的服务。

其中,重写模块15,用于当所述功能自治包的接口处于无用状态时,对所述接口进行重写。

在该实施例中,上述各个模块的功能如上述方法实施例所记载,在此不再赘述。

在本发明实施例中,平台插件化软件研发构架包括独立平台数据库lego、软件研发包和若干个功能自治包;其中,所述独立平台数据库lego包含有表征其功能的标识,所述软件研发包表征所述独立平台数据库lego的北向能力,每一个所述功能自治包面向接口开发且每一个功能自治包之间相互独立,从而解决了传统osgi框架的全量引用问题和细分市场的定制化服务组装、覆盖问题,严格的分层面向接口架构,同时又能够带来软件质量、稳定性的保障。

以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1