首页/文章/ 详情

谈谈SimCloud的架构

4年前浏览5217

评价或衡量一个软件架构的好坏,首先要回归到软件的原始需求,软件架构若满足了当初的软件需求,基本上是一个不坏的架构,若还能更进一步地应对未来需求的变化,则是一个好的架构。

一个软件的需求和架构是一个很大的话题,限于篇幅,本文只对SimCloud软件的需求分析与架构设计做一个简单的概述。

需求分析

SimCloud最初的需求来源于SimCube中的Automation软件可视化需求,主要对基于列的表数据绘制曲线类的图表,后来为了满足更多的需求,如读取有限元计算结果数据进行可视化与后处理,导入有限元网格模型并集成求解器充当其的前后处理器等等。需求列表大概如下图所示:

                           

从下至上简单分析各个需求,跨操作系统与国际化支持属于非功能性需求。

易扩展和定制

易扩展和定制实际包含两个方面的内容,举个例子,SimCloud最早实现了对ANSYS有限元计算结果的解读,那么从软件架构考虑对加入新的有限元软件计算结果解读的难易程度如何呢,如果容易加入,那么就满足了易扩展的需求。易扩展是通过软件研发者来实现的,而易定制则既可以是软件研发者,也可以是最终用户实现,还举个例子,基于有限元的计算结果使用某些规范对计算结果进行评定,这个需求非常广泛,不可能交给软件研发者一网打尽,因此软件应提供一种机制便于定制出这些功能,具体实现者可以是最终用户。

求解器集成

该需求是最初在16年8月启动SimCloud开发时定义的,但直到17年9月才真正开始面对一个具体案例的输入,最终通过该输入产生了一款中高频噪声分析软件ProNas。因此,通过集成不同求解器,SimCloud可孵化出更多的相互独立的软件,当然这必须通过软件的可扩展性保证。

结构化与有限元类数据处理

这是SimCloud软件的核心需求,提供对分门别类的各种数据的解读功能,对不同的数据有不同的可视化手段,并可对数据进行分析以及后处理。

结构化数据可来自于文本文件,Excel文件等。有限元类数据主要是大型通用的有限元软件的模型文件或者计算结果文件。在不安装这些软件的情况下,通过SimCloud也可解读并对这些文件进行可视化与后处理,提供一个统一的,便携式的工具操作各种有限元文件。

架构设计

为了提供跨操作系统与国际化支持,软件架构的基础框架采用Qt框架,为了保证运行效率,使用C++编程语言开发。

为了满足易扩展的需求,SimCloud采用插件架构,下图是软件中各个模块的依赖关系图,简洁起见,与软件中真实模块相比此处有简化。

上图中绿色模块都是插件,有三种类型的插件,CloudChart与CloudFeaGui两个插件实现了二维图表与三维图形(包含有限元模型)的功能;CloudGeneralProject与CloudNoiseProject插件实现了项目接口,分别代表一般项目和噪声分析项目,利用此种机制可单独分发噪声分析软件,也可把噪声软件作为一个模块纳入SimCloud之中。当新建项目时,若存在多个项目插件,则会弹出如下项目列表供用户选择。未来集成更多的求解器时,这里的项目插件也随之扩充。

模块依赖图中的其它插件都是针对具体的待解读文件类型定义的插件,如针对解读ANSYS有限元计算结果的插件CloudAnsys,针对解读ABAQUS有限元计算结果的插件CloudAbaqus。类似这样插件的扩充将扩展SimCloud解读各种文件类型的能力。

总结

在实现上,SimCloud软件从最初只提供结构化数据的可视化以及大型通用有限元计算结果的后处理发展为可集成特定求解器并提供前后处理器功能,所有这些功能实际上在前期需求分析时都有过一定的考虑,因此,当在SimCloud中集成噪声分析求解器时,基本没有遇到跨不过去的技术障碍,同时,借助于ProNas的实现,夯实了底层框架的稳定性,也提高了SimCloud对于不同项目的管理能力。后续类似ProNas这样的项目,将可以快速轻松**,这就是好的软件架构的特点。

SimCube代码&命令
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2020-03-27
最近编辑:4年前
谭立方
硕士 | SimCube部经理 签名征集中
获赞 3粉丝 39文章 5课程 1
点赞
收藏

作者推荐

未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈