首页 / simulink模型、软件集成系统、基于simulink模型的软件集成方法

simulink模型、软件集成系统、基于simulink模型的软件集成方法实质审查 发明

技术领域

[0001] 本发明涉及软件集成领域,尤其涉及一种simulink模型、软件集成系统、基于simulink模型的软件集成方法、电子设备及计算机可读存储介质。

相关背景技术

[0002] 软件集成是指将不同功能的组件进行整体模型集成。一个软件中通常有很多功能,且在每个功能下还会存在子功能。为了保证软件能够达到预期的质量要求,在启用前需通过软件集成测试发现和修复功能模型间的交互问题和系统级别的缺陷等。软件集成测试包括对整体模型进行集成测试,还包括对其中各个功能、子功能对应的组件进行集成测试以及多个功能组件进行合并集成测试。
[0003] 然而目前常用的建模方式为全平铺式建模,即将软件中不同功能的组件以水平方式展开,组件内部没有进行层次化架构设计。这种方式可能会导致模型庞大而复杂,难以管理和维护,且不便于组件内部各子功能进行集成测试。

具体实施方式

[0030] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0031] 首先需要说明的是,软件建模可以明确系统的功能需求,确保开发出符合用户期望的软件系统。在建模完成后,对该模型生成的代码进行集成,并对其进行集成测试,集成测试包括对整体模型的测试,也包括对单个功能以及单个功能下的子功能进行测试。
[0032] 目前,建模的方式通常为全平铺式建模,即对各组件进行详细设计时,其对应的组件模型以水平方式展开,没有进行层次化架构设计。详见图1,图1是现有的基于simulink模型的软件集成方法一示例性实施例的示意图。在simulink模型中创建架构模型,并在架构模型中定义各组件的接口和进程调度,架构模型中的各组件可以连接到组件模型,由组件模型对组件进行详细设计,在架构模型和组件模型中均可更新接口;对组件进行详细设计后,从架构模型中导出组件ARXML文件,由AAT(AUTOSAR authoring tool)基于ARXML文件生成RTE(Runtime Environment)代码,最后将组件模型生成的软件集成代码与RTE代码进行集成。其中,AAT是AUTOSAR设计工具,用于开发符合AUTOSAR规范的软件;ARXML文件是后缀名为.arxml的文件,包含simulink模型的组件信息、接口信息等;RTE代码用于各组件之间的通讯。
[0033] 可以看出,现有技术中组件内部模块化程度不高,特别对于大型系统及功能复杂的软件,平铺式建模可能导致模型的复杂度迅速增加,难以管理,并且不便于对组件内部的子功能进行集成测试。基于上述技术问题,本申请提供了一种simulink模型,能够提升组件内部的模块化程度,便于集成测试。具体请参阅图2,图2是本申请示出的simulink模型的一示例性实施例的结构示意图。
[0034] simulink模型10是一个用于建模、仿真和分析动态系统的工具。示例性的,可以通过simulink模型10进行软件开发。通过引入子组件模型122,将组件111对应的功能以及其子功能进行层次化架构设计,能够简化simulink模型10的复杂度,同时也便于软件的单个功能对应的组件模型121和单个功能下的子功能对应的子组件模型122进行集成测试。具体而言,该simulink模型10具体包括组件接口定义模块110和功能模块120。
[0035] 组件接口定义模块110包括多个组件111,组件接口定义模块110用于定义各组件111的组件111接口。
[0036] 组件111是指软件系统中可以独立部署和替换的模块化部分。示例性的,组件111可以是一个功能单元、库、服务、插件或其他独立的软件单元。示例性的,组件111还可以包括子组件,子组件所实现的功能为组件111所实现的功能的子功能。
[0037] 接口是一种定义组件111、模块或系统之间交互和通信方式的约定或协议。通过定义接口,组件111之间的解耦程度增强,各个组件111可以独立进行开发和测试,并且可以替换或升级其中的某个组件111而不影响其他组件111,最终合成一个完整的软件系统。
[0038] 功能模块120包括与各组件111对应的组件模型121和组件模型121对应的至少一个子组件模型122,组件模型121用于根据组件接口定义模块110中的组件111从对应的至少一个子组件模型122中调用目标子组件模型122,目标子组件模型122根据组件接口定义模块110中的组件111生成软件集成代码。
[0039] 组件模型121对软件组件111进行了详细设计,包括定义了组件111的内部结构和如何操作这个结构,以及组件111与外部系统进行交互的方式。
[0040] 子组件模型122是对组件111的子功能进行详细设计。示例性的,一个组件模型121中可以包括多个子组件模型122,例如组件模型A121里包括子组件模型A122以外,还可以包括子组件模型A’等。在另一些实施例中,若组件111的子功能下还包含子功能的子功能,则还可以在子组件模型122中再嵌套设计子组件模型122的子组件模型,依此类推。
[0041] 目标子组件模型122是指组件模型121所调用的子组件模型122。示例性的,可以通过设计接口实现组件模型121与子组件模型122之间的调用。当对组件111进行详细设计时,子组件模型122对组件111的子功能进行详细设计,组件模型121通过调用子组件模型122的方式对组件111进行详细设计。由此组件模型121与子组件模型122相互依赖且独立,即子组件模型122可以单独实现组件111的一个子功能,组件模型121又可以调用子组件模型122以实现组件111的整体功能。
[0042] 软件集成代码是将目标子组件模型122转换成目标平台上的可执行代码。示例性的,可以将目标子组件模型122转换为C、C++等编程语言,并结合目标平台的编译器和工具链,生成可部署的代码文件。需要注意的是,组件模型121同样也可以生成软件集成代码。示例性的,可以通过simulink模型10中的代码生成功能将组件模型121和子组件模型122转换为软件集成代码。
[0043] 可以看出,本申请实施例的simulink模型10包括组件接口定义模块110和功能模块120,组件接口定义模块110包括多个组件111,组件接口定义模块110用于定义各组件111的组件111接口;功能模块120,功能模块120包括与各组件111对应的组件模型121和组件模型121对应的至少一个子组件模型122,组件模型121用于根据组件接口定义模块110中的组件111从对应的至少一个子组件模型122中调用目标子组件模型122,目标子组件模型122根据组件接口定义模块110中的组件111生成软件集成代码。通过上述方式,引入子组件模型122实现组件111内的层次化架构设计,便于通过子组件模型122对对应的组件模型121中的功能分别进行集成测试子组件模型122。
[0044] 在上述实施例的基础上,本申请实施例采用图3结构图描述组件接口定义模块110中的复合组件112以及模块文件夹123,请参阅图3,图3是本申请示出的simulink模型10的另一示例性实施例的结构示意图。具体而言,组件接口定义模块110还包括多个复合组件112,每个复合组件112中至少包括一个实现对应复合组件112子功能的组件111。
[0045] 复合组件112是指实现同一功能中各个子功能对应的组件111的集合。示例性的,复合组件112内的组件111数量与其子功能的数量相对应,例如在控制油门这个功能里可以包含6个组件111,分别为两个油门位置传感器、一个踏板位置传感器、一个监视器、一个控制器以及一个执行器,这6个组件111可以组合成一个复合组件112。
[0046] 功能模块120包括与各复合组件112对应的模块文件夹123,模块文件夹123中包括与复合组件112中各组件111对应的组件模型121以及组件模型121对应的至少一个子组件模型122。
[0047] 模块文件夹123是指与复合组件112对应的文件夹,每一个复合组件112均对应一个模块文件夹123。示例性的,在模块文件夹123中包含了与其对应的复合组件112中各组件111对应的组件模型121以及组件模型121对应的至少一个子组件模型122,还可以包含对应复合组件112的接口信息、软件集成代码、手写代码以及其他与该复合组件112相关的内容。
[0048] 可以看出,本申请实施例的simulink模型10中的组件接口定义模块110包括多个复合组件112,每个复合组件112中包括至少一个实现对应复合组件112子功能的组件111;功能模块120包括与各复合组件112对应的模块文件夹123,模块文件夹123中包括与复合组件112中各组件111对应的组件模型121以及组件模型121对应的至少一个子组件模型122。
通过引入复合组件112以及与复合组件112相对应的模块文件夹123,可以使simulink模型
10的设计更加层次化,模块化程度更高,便于后期维护和管理。
[0049] 在上述实施例的基础上,本申请实施例采用图4结构图描述功能模块120中的组件文件夹124以及子组件文件夹125,请参阅图4,图4是本申请示出的simulink模型10的另一示例性实施例的结构示意图。具体而言,模块文件夹123中还包括与复合组件112中各组件111对应的组件文件夹124,组件文件夹124中包括与对应复合组件112中组件111对应的组件模型121以及与组件模型121对应的多个子组件文件夹125,子组件文件夹125中包括子组件模型122。
[0050] 对应同一复合组件112的模块文件夹123、组件文件夹124以及子组件文件夹125的层级依次降低,即模块文件夹123包含组件文件夹124,组件文件夹124包含子组件文件夹125;模块文件夹123对应复合组件112,组件文件夹124对应复合组件112中的各组件111,子组件文件夹125对应复合组件112中各组件111的子功能;组件文件夹124内包含各组件111对应的组件模型121,子组件文件夹125内包含各组件111的子组件111对应的子组件模型
122。示例性的,组件文件夹124以及子组件文件夹125中还可以包含对应组件模型121以及子组件模型122所生成的软件集成代码、接口信息以及其他与实现组件111功能相关的内容。
[0051] 可以看出,本申请实施例的simulink模型10中的模块文件夹123中还包括与复合组件112中各组件111对应的组件文件夹124,组件文件夹124中包括与对应复合组件112中组件111对应的组件模型121以及与组件模型121对应的多个子组件文件夹125,子组件文件夹125中包括子组件模型122。通过引入组件文件夹124和子组件文件夹125,使文件夹的结构与组件111架构设计层级关系完全对应,便于后期管理和维护。
[0052] 在上述实施例的基础上,本申请实施例采用图5结构图详细描述软件集成系统,请参阅图5,图5是本申请示出的软件集成系统的一示例性实施例的结构示意图。
[0053] 具体而言,软件集成系统包括进程调度模块130以及上述simulink模型10。进程调度模块130是负责协调和管理系统中各个组件111的执行顺序和资源分配的部分。进程调度模块130用于根据从simulink模型10中组件接口定义模块110导出的组件配置信息150进行进程调度,得到用于进行软件集成的调度代码。示例性的,可以通过第三方工具进行进程调度。其中,第三方工具可以是AAT(AUTOSAR authoring tool),AAT是AUTOSAR设计工具,用于开发符合AUTOSAR规范的软件。
[0054] 组件配置信息150包括软件simulink模型10的各种参数设置、接口信息和组件111等。示例性的,组件配置信息150可以通过后缀名为.arxml的文件格式导出。其中,后缀名为.arxml文件是AUTOSAR规范定义的特定文件格式。
[0055] 软件集成系统将simulink模型10中组件接口定义模块110中导出组件配置信息150到进程调度模块130中,由进程调度模块130对组件配置信息150进行进程调度,管理组件接口定义模块110中各个组件111的执行顺序以及资源分配。
[0056] 可以看出,本申请实施例的软件集成系统包括进程调度模块130以及上述simulink模型10;进程调度模块130用于根据从simulink模型10中组件接口定义模块110导出的组件配置信息150进行进程调度,得到用于进行软件集成的调度代码。上述方式,在利用simulink模型10做AUTOSAR架构设计时,将组件配置信息150导入到进程调度模块130中完成进程调度,无需在simulink模型10进行进程调度,提高了AUTOSAR工具的兼容性。
[0057] 软件集成系统还包括组件通讯模块140,组件通讯模块140用于根据从simulink模型10中组件接口定义模块110导出的组件配置信息150生成用于进行软件集成的组件111通讯代码。
[0058] 组件通讯模块140用于支持各组件111之间的通信。示例性的,组件111通信模块可以是AAT中的RTE(Runtime Environment)生成器。从simulink模型10中组件接口定义模块110导出的组件配置信息150到组件通讯模块140中,由组件通讯模块140生成用于通讯的组件111通讯代码。
[0059] 组件111通讯代码是指支持组件111之间的通讯和协作的代码。示例性的,可以通过组件通讯模块140生成组件111通讯代码,并将生成的组件111通讯代码与simulink模型10中所生成的代码进行集成。
[0060] 可以看出,本申请实施例的软件集成系统还包括组件通讯模块140,组件通讯模块140用于根据从simulink模型10中组件接口定义模块110导出的组件配置信息150生成用于进行软件集成的组件111通讯代码。通过组件通讯模块140生成组件111通讯代码能够实现组件111之间的通讯,以达到软件开发的目的。
[0061] 在上述实施例的基础上,本申请实施例还提出了一种基于simulink模型10的软件集成方法,该软件集成方法应用于上述软件集成系统,请参阅图6,图6是本申请示出的基于simulink模型10的软件集成方法一示例性实施例的流程示意图。具体而言,本实施例的基于simulink模型10的软件集成方法包括如下步骤:
[0062] S610:根据simulink模型10的组件接口定义模块110中组件111的组件111功能从simulink模型10的功能模块120中确定出目标组件模型121。
[0063] 目标组件模型121是指与组件接口定义模块110中组件111相对应的组件模型121。示例性的,对于组件接口定义模块110中的组件A111,在功能模块120中与之相对应的为组件模型A121,组件模型A121是对组件A111所要实现的功能的详细设计。
[0064] 软件集成系统根据simulink模型10的组件接口定义模块110中组件111的组件111功能,从simulink模型10的功能模块120中确定对对应的组件111功能进行详细设计的目标组件模型121。
[0065] S620:根据simulink模型10的组件接口定义模块110中组件111的组件111子功能从目标组件模型121对应的子组件模型122中确定出目标子组件模型122。
[0066] 子组件模型122是对组件111的子功能进行详细设计。目标子组件模型122是指与组件接口定义模块110中组件111的子功能所对应的子组件模型122。示例性的,当组件模型A121与组件A111相对应,根据组件A111中的一个子功能确定组件模型A121中的子组件模型A122,子组件模型A122对该子功能的详细设计。在另一些实施例中,若组件A111对应多个子功能,则组件模型A121还可以包括其他子组件模型122,以对组件A111的多个子功能进行详细设计。
[0067] 软件集成系统在确定组件111所对应的组件模型121后,根据组件111的子功能确定组件模型121中的子组件模型122。
[0068] S630:基于目标组件模型121和目标子组件模型122生成软件集成代码。
[0069] Simulink模型10具有代码生成功能,当目标组件模型121和目标子组件模型122对对应的组件111进行详细设计后,可以由simulink模型10根据目标组件模型121和目标子组件模型122生成对应的软件集成代码,由软件集成代码实现组件111的功能。
[0070] 软件集成系统在获取到目标组件模型121和目标子组件模型122后,根据设计的目标组件模型121和目标子组件模型122生成对应的软件集成代码。
[0071] S640:基于软件集成代码进行软件集成。
[0072] Simulink模型10中每一组件111都有对应的组件模型121,根据实际需要还可以在组件模型121中设计子组件模型122。将所有组件模型121和子组件模型122生成的软件集成代码进行软件集成。
[0073] 软件集成系统根据目标组件模型121和目标子组件模型122生成软件集成代码,并根据生成的软件集成代码进行软件集成。
[0074] 可以看出,本申请实施例的软件集成方法根据simulink模型10的组件接口定义模块110中组件111的组件111功能从simulink模型10的功能模块120中确定出目标组件模型121;根据simulink模型10的组件接口定义模块110中组件111的组件111子功能从目标组件模型121对应的子组件模型122中确定出目标子组件模型122;基于目标组件模型121和目标子组件模型122生成软件集成代码;基于软件集成代码进行软件集成。通过组件模型121和子组件模型122生成能够实现对应组件111功能的代码,每一组件模型121和每一子组件模型122均可生成对应功能的代码,由此可以实现子组件模型122的集成测试。
[0075] 在上述实施例的基础上,请参阅图7,图7是本申请示出的基于simulink模型10的软件集成方法另一示例性实施例的流程示意图。具体而言,本实施例的基于simulink模型10的软件集成方法包括如下步骤:
[0076] S710:通过软件集成系统中的进程调度模块130对从组件接口定义模块110导出的组件配置信息150进行进程调度,得到进程调度代码。
[0077] 软件集成系统从simulink模型10的组件接口定义模块110导出组件配置信息150到进程调度模块130,由进程调度模块130根据组件配置信息150进行进程调度,得到进程调度代码。
[0078] S720:通过软件集成系统中的组件通讯模块140对从组件接口定义模块110导出的组件配置信息150进行通讯连接处理,得到组件111通讯代码。
[0079] 软件集成系统从simulink模型10的组件接口定义模块110导出组件配置信息150到组件通讯模块140,由组件通讯模块140根据组件配置信息150生成组件通讯代码。
[0080] S730:根据软件集成代码、组件通讯代码和进程调度代码进行软件集成。
[0081] 软件集成系统将生成的软件集成代码、组件111通讯代码和进程调度代码进行软件集成,完成软件开发。
[0082] 可以看出,本申请实施例的软件集成方法通过软件集成系统中的组件通讯模块140对从组件接口定义模块110导出的组件配置信息150进行通讯连接处理,得到组件通讯代码;根据软件集成代码、组件通讯代码和进程调度代码进行软件集成。由此可以通过进程调度模块130以及组件通讯模块140生成用于软件集成的进程调度代码以及组件通讯代码,以实现软件集成。
[0083] 在上述实施例的基础上,请参阅图8,图8是本申请示出的基于simulink模型10的软件集成方法另一示例性实施例的流程示意图。具体而言,本实施例的基于simulink模型10的软件集成方法包括如下步骤:
[0084] S810:功能模块120中的组件模型121或子组件模型122响应于无法实现与组件接口定义模块110中对应组件111的组件111功能,发送接口更新指令至组件接口定义模块110。
[0085] 需要注意的是,无法实现可以表示指在组件接口定义模块110中定义的组件111接口不能完成对应组件111的组件111功能,也可以表示在在组件接口定义模块110中定义的组件111接口在实现对应组件111的组件111功能时存在可解决的阻碍,也即组件111接口定义的不合理但可以实现对应组件111的组件111功能,在此不具体限定接口更新情况,只需能够优化组件111功能的实现即可。
[0086] 当功能模块120中的组件模型121或子组件模型122无法实现与组件接口定义模块110中对应组件111的组件111功能时,可以由功能模块120对组件111接口进行更改,并在改变组件111接口后,向组件接口定义模块110发送接口更新指令,确保组件接口定义模块110中的组件111接口与功能模块120中对应的组件模型121和子组件模型122的组件111接口一致。
[0087] 在另一些实施例中,组件接口定义模块110也可以改变组件111接口,在组件接口定义模块110中改变组件111接口后,发送接口更新指令至功能模块120中对应的组件模型121和子组件模型122,以使对应的组件模型121和子组件模型122更新组件111接口。
[0088] 软件集成系统中功能模块120的组件模型121或子组件模型122响应于不能实现与组件接口定义模块110中对应组件111的组件111功能,或者在实现组件111功能时存在不合理,则可以在功能模块120中修改组件111接口并发送接口更新指令至组件接口定义模块110;或者在组件接口定义模块110中修改组件111接口并发送接口更新指令至功能模块
120。
[0089] S820:组件接口定义模块110对对应组件111进行接口更新。
[0090] 在组件接口定义模块110接收到接口更新指令后,根据接口更新指令对对应组件111的组件111接口进行更新,确保组件接口定义模块110中的组件111接口与功能模块120中对应的组件模型121和子组件模型122的组件111接口一致。
[0091] 在另一些实施例中,由组件接口定义模块110中改变组件111接口,并发送接口更新指令至功能模块120中对应的组件模型121和子组件模型122,功能模块120接收到接口更新指令后,根据接收到的接口更新指令对对应的组件模型121和子组件模型122进行接口更新,确保组件接口定义模块110中的组件111接口与功能模块120中对应的组件模型121和子组件模型122的组件111接口一致。
[0092] 软件集成系统中的组件接口定义模块110在接收到接口更新指令后,对对应组件111进行接口更新,或者功能模块120在接收到接口更新指令后,对对应组件模型121和子组件模型122进行接口更新。
[0093] 可以看出,本申请实施例的软件集成方法在功能模块120中的组件模型121或子组件模型122响应于无法实现与组件接口定义模块110中对应组件111的组件111功能,发送接口更新指令至组件接口定义模块110;组件接口定义模块110对对应组件111进行接口更新。由此可以实现接口更新,确保组件接口定义模块110中的组件111接口与功能模块120中对应的组件模型121和子组件模型122的组件111接口一致。
[0094] 为了详细阐述本申请的应用于基于simulink模型10的软件集成方法,以图9所示示意图对其进行进一步说明,详情如下:
[0095] 在simulink模型10中包括架构模型,即组件接口定义模块110,在架构模型中定义各组件111的组件111接口,架构模型中包含组件A、组件B、组件C和组件D,其中组件A和组件B属于复合组件1,组件C和组件D属于复合组件2;复合组件1对应一个模块文件夹123,该模块文件夹123中包括与复合组件1中组件A对应的组件模型A以及与组件模型A对应的子组件模型122,模块文件夹123还包括与组件A对应的组件文件夹124,组件文件夹124中包含组件模型A和子组件文件夹125,子组件文件夹125中包含子组件模型122。由此可以类推其余组件111对应的文件夹设计和组件模型121设计。
[0096] 架构模型和组件模型121均可修改组件111接口,在架构模型中修改组件111接口后,会相应地对组件模型121和子组件模型122进行接口更新;在组件模型121或者子组件模型122中修改组件111接口后,会相应地对架构模型中的组件111进行接口更新。
[0097] 在simulink模型10中建模完成后,由架构模型导出组件配置信息150ARXML文件到进程调度模块130和组件通讯模块140,由进程调度模块130以及RTE生成器生成进程调度代码和组件111通讯代码;将进程调度代码、组件111通讯代码以及由各组件模型121和子组件模型122生成的对应软件集成代码进行软件集成,至此完成软件开发。
[0098] 为实现上述实施例的基于simulink模型10的软件集成方法,本申请提出了另一种电子设备,具体请参阅图10,图10是本申请提供的电子设备一示例性实施例的结构示意图。
[0099] 电子设备1000包括存储器1001和处理器1002,其中,存储器1001和处理器1002耦接。
[0100] 存储器1001用于存储程序数据,处理器1002用于执行程序数据以实现上述实施例的基于simulink模型10的软件集成方法。
[0101] 在本实施例中,处理器1002还可以称为CPU(Central Processing Unit,中央处理单元)。处理器1002可能是一种集成电路芯片,具有信号的处理能力。处理器1002还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件111。通用处理器可以是微处理器或者该处理器1002也可以是任何常规的处理器等。
[0102] 本申请还提供一种计算机可读存储介质,如图11所示,计算机可读存储介质1100用于存储程序数据1101,程序数据1101在被处理器执行时,用以实现如本申请方法实施例中的基于simulink模型10的软件集成方法。
[0103] 本申请基于simulink模型10的软件集成方法实施例中所涉及到的方法,在实现时以软件功能单元的形式存在并作为独立的产品销售或使用时,可以存储在装置中,例如一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0104] 以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页 第1页 第2页 第3页
相关技术
系统模型相关技术
软件集成相关技术
陈涵发明人的其他相关专利技术