专栏名称: 逸言
文学与软件,诗意地想念。
目录
相关文章推荐
程序员小灰  ·  疯了!下载 DeepSeek 最高判20年! ·  4 天前  
程序员的那些事  ·  热搜第一!DeepSeek百万年薪招AI人才 ... ·  2 天前  
OSC开源社区  ·  国内AI适配再下一城:天数智芯加入,Deep ... ·  4 天前  
51好读  ›  专栏  ›  逸言

项目札记007:报表引擎模块的设计

逸言  · 公众号  · 程序员  · 2024-12-02 08:30

主要观点总结

文章主要介绍了EISaaS中的报表引擎模块,包括其核心功能、子模块、命名空间、项目名称及其设计思路。文章还提到了架构的一致性原则和隐喻在软件设计中的应用。

关键观点总结

关键观点1: EISaaS报表引擎模块的核心功能

报表引擎是EISaaS平台的核心,用于生成数据分析报表,包含service、runtime、exporter三个子模块。

关键观点2: 报表引擎模块的命名空间与项目名称

报表引擎模块的命名空间为xxx.eisaas.framework.engine.report,项目名称为eisaas-framework-engine-report。

关键观点3: 报表引擎模块的设计思路

报表引擎模块遵循与其他模块一致的设计思路,内部子模块对象相互协作,提供统一的门面类封装,提高API的易用性。这种设计遵循了架构的“一致”原则。

关键观点4: 隐喻在软件设计中的应用

隐喻是软件设计中的重要概念,有助于理解软件的本质和正确使用。在EISaaS设计中,隐喻如引擎的概念被用来描述数据引擎、实体引擎、报表引擎和功能引擎等核心组成部分。


正文

由于EISaaS的核心功能就是生成各种数据分析报表,因此,报表引擎模块就是整个平台的核心。它一共包含三个子模块,分别是service,runtime,exporter,子模块之间的关系如下图所示:

报表引擎模块的命名空间为:xxx.eisaas.framework.engine.report,项目名称为eisaas-framework-engine-report。如前文所述,该模块依赖于eisaas.framework.engine.entity与eisaas.infrastructure.xml包。

报表引擎模块的设计并无出彩之处,遵循了与其他模块相同的设计思路,即内部由各个子模块的对象相互协作,对外提供统一的门面类封装不必暴露的细节,提升API的易用性。

看起来,这样的设计稍显平庸,但窃以为却是明智的决策,因为 它遵循了架构的“一致”原则 。Brooks就认为:“好的架构应该是直接的,人们掌握了部分系统后就可以推测出其他部分。「Brooks《设计原本》,转引自Blaauw《Hardware requirements for the Fourth Generation》」”这一说法也就是古人常说的“窥一斑而知全豹”,设计的雷同可以有效降低人们的学习成本,也是降低复杂度的有效原则。

说完一致性原则,再来说说 隐喻(metaphor) 。隐喻是文学中的修辞手法,而我最初知道在软件设计领域用到隐喻,则来自Kent Beck的XP实践,如下图所示:







请到「今天看啥」查看全文