知识卡片

从上下文图到分层设计:识别四种外部事物

普通读书笔记卡

内容

[[分层架构的核心思想封装外部交互]]把分层设计的判断标准落回了需求层面:”哪种需求技巧能简单利索地把系统和外部的关系刻画清楚”——答案就是[[上下文图的内容原则与形式原则]]。无论采用哪种画法(顶层数据流图、把System处理成黑盒的用例图、或PowerPoint框图),架构师都要借助上下文图把系统外部的四种事物识别到位。一是外部用户:终端用户、管理员等。二是文件或数据库等持久化存储设施:关系数据库、实时数据库、Flash、一般文件、分布式文件系统等。三是外部系统与底层硬件:比如在线订票系统里的银行账务系统或第三方支付系统就是外部系统,网管系统要管理的硬件设备也算”外部系统”——因为底层硬件内部往往有处理器和嵌入式程序,从这个意义上它本身就是一个”系统”。四是时限触发机制:在用例图中表现为一个”脑袋是时钟的小人儿”,表达”时间到……则……”的触发条件,虽然时限触发机制最终实现时不一定都属于”系统外部”,但识别出它有利于设计架构时决定是否要单独引入”时限任务触发层”。识别出这四类外部事物之后,就能直接映射到具体的分层设计问题上:UI交互层是否存在(比如程控交换机的呼叫处理软件就没有UI层)、UI交互层包含哪几部分(管理员界面/业务用户界面/报表功能界面);系统交互层是否存在、包含哪几部分(和哪些外部系统交互,用专用SDK还是特定协议);数据管理层是否存在、包含哪几部分(没有持久化需要就不包含这一层);问题领域层的职责包含哪几部分(这一层一定存在)。这条技巧的价值在于:只要上下文图研究到位,分层架构该怎么设计几乎是可以照着”读”出来的,而不需要凭空猜测该分几层、每层该干什么。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第13章《如何分层》"13.2.2 实践技巧:设计分层架构,从上下文图开始"节(源文件:_epub-src/OEBPS/text00016.html) - 结论依据:原文说明架构师要借助上下文图识别"外部用户、文件或数据库等持久化存储设施、外部系统与底层硬件、时限触发机制"四类事物,并逐一给出对应的分层设计问题("UI交互层是否存在?……系统交互层是否存在、包含哪几部分?……"),直接支撑本卡片结论。 - 原始内容:笔者推荐,无论采取哪种画法,架构师都要借助上下文图这种"需求技巧",把系统外部的如下4种事物都识别到位……如果把上下文图研究到位,就能够给分层架构的具体设计方式提供实实在在的启发。