架构师当聚焦于边界与接口

作者:埃纳尔·兰德雷(EinarLandre)

自纳尔逊勋爵(Lord Nelson)在1805年的特拉法尔加(Trafalgar)海战中推毁了法西联军舰队以来,“分而治之(divide and conquer)”己经成为处理复杂难题的神咒。表达相同的意思但更为人所知的另外一个术语,则是“关注分离(separation of concern)”。为了分离关注点,人们发明了封装(encopsulation)的办法,从封装又引出了边界(boundary)和接口(interface)的概念。

从架构师的角度看,困难的所在,是要找到设置边界的自然之处(natural place)、并定义出构建可工作系统(a working system)所需的合适接口。大型的企业系统,其自然边界稀少及多个领域之间互有纠缠,做到这点尤其困难。在此情况下,古老的智慧诸如“低耦合,高内聚(Minimize coupling,maximize cohesion)”和“避免横向切分需要高度信息交换的区域(Do not slice through regions where high rates of informationexchange are required)”提供了一些指导方针,但它们并没有提及如何以一种简易的方式与利益相关者(stakeholder)就问题和潜在解决方案(potential solutions)进行沟通。

埃里克·埃尔斯(EricEvans)在他的著作《领域驱动设计(Domain-Driven Design)》(Addiosn-Wesley Professional)中描述的“有界情境(boundedcontext)”和“情境地图(context mapping)”的概念,对此颇有助益。有界情境是用以唯一定义一个模型或概念的区域,通常以一朵云或一个气泡来表示,同是还赋予一个在当前领域中能够定义其角色和职责的描述性名称。举例而言,在航运系统中,可能包括诸如“货运操作”、“货运调度”和“港口运送”情境。在其他领域中,也有相应的适合名称。

识别出这些有界情境并在白板上绘制出来之后,就到了开始绘制出各个情境之间关系的时候了。这些关系可能会揭示出在组织、功能或技术上的依赖。这项工作的成界,便是一个情境地图(context mapping),它包含了一系列有界情境及它们之间的接口。

这样的一个情境地图,为架构师提供了一个种强大的工具,使得他们可以聚焦于“哪些应该归在一起,而哪些应该分开”,从而使他们能够以一种可顺畅沟通的方式,实施明智的分而治之。他们可以十分容易地采用该技术来记录和分析系统当前的状况(as-is situation),并从该点出发,断续指导对系统的重新设计,以获得一个具有低耦合、高内聚和接口定义良好(well-defined interface)等特征的更好的系统。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章