自动化测试平台化[v1.0.0][模块化设计方法]
程序员文章站
2024-01-01 08:51:04
在定义模块的时候首先要做的就是定义边界,并且对调用接口进行严格的定义和封装,模块内的逻辑不可再暴露在外界,模块间只能通过标准定义的接口进行访问...
最早的软件架构被称为Monolith架构,所有产品功能都放在一个巨大的工程项目里,并且功能之间的代码相互纠缠和调用,如图所示,在这种设计模式下,各种功能没有严格的边界,依赖关系混乱,牵一发而动全身,维护成本相当高,后期的迭代维护都是灾难性的
模块化设计思想出来之后,大大缓解了这个问题,在定义模块的时候首先要做的就是定义边界,并且对调用接口进行严格的定义和封装,模块内的逻辑不可再暴露在外界,模块间只能通过标准定义的接口进行访问,如图所示,所有调用只能到模块的边界,而非模块内部
边界接口设计方面,解耦合是强要求,举一个非常典型的例子,假如某个模块提供的是数据库检索能力,而如果提供的查询方式是SQL语句,那么就产生了强耦合,不同的数据库SQL语法略微不同,相同的SQL语句并不通用,如果一开始用的是Microsoft SQL Server,而后来换成了MySQL,那么原本的SQL语句就不再适用新数据库的查询,模块化的意义也就大打折扣,需要做的是将查询行为封装,参数化后使其与SQL无关
分层架构和洋葱圈架构是业内被反复讨论的概念,而他们无疑都实现了调用关系的单向性
无数次的被证明的一件事情是,要将设计混乱的Monolith架构平滑的演进到模块化架构,几乎是不可能的事情,原本的设计中不能完全的做到单向调用则就无法简单的映射成为模块,抱着先做能用的部分,然后将来再重构的想法最终导致的很可能就是只能重写
将模块思想应用于测试平台设计,便会的到如下三层架构设计
本文地址:https://blog.csdn.net/dawei_yang000000/article/details/107501823