网络设备应用软件中低耦合的系统初始化方法与流程

文档序号:37183017发布日期:2024-03-01 12:43阅读:17来源:国知局
网络设备应用软件中低耦合的系统初始化方法与流程

本发明涉及应用软件运行领域。更具体地说,本发明涉及一种用在网络设备应用软件中低耦合的系统初始化方法。


背景技术:

1、为了适应更加灵活多变的应用场景,网络设备这种大型应用软件会需要开发越来越多的子模块功能以支持产品需求。绝大多数子模块都会要求在应用软件系统初始化阶段对其进行功能的初始化任务,因此在应用软件初始化部分往往会成为一个耦合性较高的软件部分,不同的合作开发者会经常根据需要来增加子模块初始化任务函数,并根据设计需求来调整初始化任务的先后顺序。

2、常规的系统初始化软件,是在应用软件的入口处按照初始化流程,逐个对各个子模块初始化函数进行调用来实现。应用软件在需要增加子模块时,都需要修改初始化代码,增加引用相应子模块的头文件。这种实现方式在大型软件中非常不利于应用软件的系统分层,初始化代码中调用的子模块函数往往包含各个层级的软件内容,会破坏已有的软件层级设计,增加引用的头文件也会给不相关的模块暴露过多的私有数据结构和函数声明,进而增大软件的设计风险。初级的子模块开发者因为对整体初始化流程缺乏足够认识、会随意调整初始化流程,也会导致在软件调试时经常出现异常退出及子模块运行不符合预期等结果,降低软件调试效率。

3、而应用软件初始化几乎涉及所有的子模块,子模块初始化需要根据子模块任务的重要性和通用性,按照一定的顺序进行排列,因此需要设计一种对软件系统初始化进行统一管理的初始化方法,用于降低软件系统初始化的耦合性,增强软件运行稳定性,方便子模块开发者调用。


技术实现思路

1、本发明的一个目的是解决至少上述问题和/或缺陷,并提供至少后面将说明的优点。

2、为了实现本发明的这些目的和其它优点,提供了一种网络设备应用软件中低耦合的系统初始化方法,包括:在网络设备的应用软件中,基于软件编译分段技术,以及在应用软件中增加一个初始化中间层模块,以在初始化阶段通过中间层模块的调用来完成对子模块的统一初始化,进而对软件低耦合。

3、优选的是,在初始化中间层模块的中间层文件包括:子模块初始化任务的注册,子模块初始化函数的优先级排序和调用,以及已声明的子模块初始化函数的状态查询。

4、优选的是,所述子模块初始化任务的注册流程被配置为包括:

5、s10、对全局初始化管理数据结构进行定义;

6、s11、对使用netop_entry_def宏定义初始化任务按照注册的先后分配不同的任务id,并根据子模块初始化任务优先级和任务id计算出总优先级;

7、s12、对使用netop_entry_def宏定义的初始化任务注册进全局初始化管理数据结构中。

8、优选的是,所述子模块初始化函数的优先级排序和调用步骤如下:

9、s20、遍历全局初始化管理数据结构,判断子模块初始化任务优先级是否越界,如果越界,重新检索下一个子模块初始任务,否则执行下一步;

10、s21、对子模块初始化任务优先级进行排序;

11、s22、对排序完成的模块按照优先级高低进行顺序调用,并输出相应的调用信息;

12、s23、判断遍历是否结束,如果未结束则从s20开始重新执行,否则程序运行结束,函数返回。

13、优选的是,子模块初始化任务的综合优先级为:子模块基础优先级+子模块任务初始化优先级+子模块id号;

14、所述子模块初始化任务被包括以下五类:

15、与配置文件读取,设备类型配置相关的系统初始化任务;

16、与硬件驱动初始化相关的硬件驱动初始化任务;

17、与任务管理,线程管理相关的平台初始化任务;

18、与网络协议相关的应用程序初始化任务;

19、与交互命令行相关的命令行接口初始化任务

20、上述五类初始化任务从系统初始化任务到命令行接口初始化任务,优先级等级依次减小,且每个优先级区间的基础优先级为0、10000、20000、30000、40000,区间长度为10000。

21、优选的是,中间层文件中定义了子模块初始化专用宏定义,且宏定义的输入参数包括任务名称、任务优先级、任务实现回调函数以及回调函数的传递参数,宏定义方式如下:

22、netop_entry_def(name,pri_base+pri_offset,xxx_init_callback,argc,argv);

23、其中,name代表子模块任务名称,pri_base代表子模块所归属的任务大类基础优先级,pri_offset代表子模块自有优先级,xxx_init_callback代表子模块初始化函数,argc和argv代表子模块初始化函数的输入参数。

24、优选的是,在使用netop_entry_def声明以后的初始化函数,在子模块源程序的编译阶段,通过编译技术将相应的初始化函数设定到可执行程序文件的私有代码段netop_mod_entry中。

25、优选的是,所述应用软件的加载方式为:启动初始化中间层模块运行,初始化中间层模块基于优先级顺序逐一调用按照专用宏定义的子模块初始化任务函数,直至子模块初始化任务执行完成,转入后续运行阶段。

26、优选的是,应用软件加载运行步骤如下:

27、s30、调用初始化中间层模块的注册函数,将所有子模块的初始化函数注册进全局初始化管理数据结构中;

28、s31、对已注册进全局初始化管理数据结构中的初始化函数进行优先级排序;

29、s32、按照子模块初始化任务的综合优先级进行顺序调用,完成应用软件的初始化功能,在子模块初始化任务调用时,采用分类分区间的方法按照优先级的高低进行初始化相关工作,且在各个分类区间之间可以设计私有代码满足系统设计整体需要;

30、s33、应用软件初始化工作完成,并转入应用软件后续运行阶段。

31、本发明至少包括以下有益效果:本发明提供一种应用软件低耦合的系统初始化方法,是一种对软件系统初始化进行统一管理的初始化方法,能有效降低软件系统初始化的耦合性,增强软件运行稳定性,方便子模块开发者调用。

32、具体来说,本次发明是对此类问题的一种有效解决方式,其主要是利用计算机系统的软件编译分段技术和在应用软件中增加一个初始化管理中间层文件来实现应用软件在初始化阶段各个子模块函数调用低耦合。子模块函数在其文件内部通过调用这个公共的中间层头文件,将需要初始化的模块函数在执行子模块编译时,从通用代码段中分离出来,编译进子模块静态库的私有代码段中。在应用软件最终目标文件链接前,使用编译工具软件将这些函数信息从静态库的私有代码段中提取出来,生成新的中间层的源文件并编译链接至最终的目标文件中。从而应用软件在增加子模块时仅需要调用中间层的初始化管理头文件,即可达到将初始化任务添加至应用软件整体初始化任务中的目的。

33、本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

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