译:https://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html
想像一下,你正在看一栋大楼的蓝图。建筑师为你准备了一份修建大楼的计划文档,那你从这些计划文档中能知道些什么呢?
如果你看的计划书是针对单个家庭住户的话,那么你可能会看到一个前门,一个通向客厅或者是餐厅的门厅。靠近饭厅很可能离厨房有一段很短的距离。也许厨房的旁边是扇子区,也可能是一个卧室。当你看着这些计划,你毫无疑问的就会想到你正在看的是一套房子。该架构就叫做“房子”。
或者,如果你在一座图书馆的架构时,在这个图书馆里,你很可能看到一个宏伟的入口,一个出入检查区域,阅读区,小型会议室和一排排用于放书的书架。这种架构就叫做“图书馆”。
因此,你的应用架构重点是什么呢?当你看到顶层的目录结构和在最高级别的包的源文件时,重点是医疗保健系统,或者是会计系统,或者是库存管理系统?还是Rails, 或者 Spring/Hibernate, 或者ASP呢?
架构的主题
回过头来去读Ivar Jacobson关于软件架构一书《面向对象软件工程(Object Oriented Software Engineering)》。这本书的副标题是:一种用例驱动方法(A use case driven approach)。在这本书里Ivar明确指出,软件架构是支持系统用例的结构。就像一栋房子或者是一座图书馆的计划主要关注的是这