软件架构设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 本书价值

本书包含3部分,分别是:

· 第1部分:基础概念篇。

· 第2部分:实践过程篇。

· 第3部分:模块划分专题。

读者可以根据自身发展状况、实际工作需要,选择合适的阅读路径(如图1-2所示)。

图1-2 不同目的,不同阅读路径

1.2.1 阅读路径1:架构设计入门

对于架构还未入门的程序员,推荐先重点阅读“基础概念篇”和“模块划分专题”:

· 基础概念篇解析架构概念(第2章)之后,讲解如何运用“逻辑视图+物理视图”设计架构(第3章)。

· 模块划分专题讲解模块划分的不同方法,将讨论功能模块、分层架构、用例驱动的模块划分过程等内容(第12~15章)。

架构设计入门必过“架构视图关”。本书细致讲解“逻辑视图+物理视图”的运用,如图1-3所示,体会了“分而治之”和“迭代式设计”这两点关键思想,运用“逻辑视图+物理视图”设计一个系统的架构也就不那么难了。

图1-3 两视图法的“分而治之”和“迭代”思想

架构设计入门必过“模块划分关”。本书“模块划分专题”总结了模块划分的4种方式,如图1-4所示。这其中,既有“水平分层”、“垂直划分功能模块”和“从用例到类、再到模块”等设计思想,也有不推荐的想到哪“切”到哪的设计方式。

图1-4 业界模块划分的4种做法

当一个程序员,看懂了他们团队的架构师是如何划分模块的(甚至问“你为啥只垂直切子系统没分层呢”),那他离成为架构师还远吗?

1.2.2 阅读路径2:领会大系统架构设计

入门之后,进一步学习大型系统架构成败的关键——概念架构设计。推荐精读如下两章:

· 第8章。如何确定影响架构设计的关键需求。

· 第9章。概念架构如何设计。

小系统和大系统的架构设计之不同,首先是“概念架构”上的不同,而归根溯源这是由于架构所支撑的“关键需求”不同造成的。整个架构设计过程中的“确定关键需求”这一环节,可谓小系统和大系统架构设计的“分水岭”,架构设计走向从此大不相同。

概念架构是直指系统目标的设计思想、重大选择,因而非常重要。《方案建议书》《技术白皮书》和市场彩页中,都有它的身影,以说明产品/项目/方案的技术优势。因此,也有人称它为“市场架构”。

概念架构设计什么?从设计任务上,概念架构要明确“1个决定、4个选型”,如图1-5所示。

图1-5 概念架构设计什么?

概念架构如何设计?从设计步骤的顺序上,本书推荐(如图1-6所示):

图1-6 概念架构如何设计?

· 首先,选择架构风格、划分顶级子系统。这两项设计任务是相互影响、相辅相成的。

· 然后,开发技术选型、集成技术选型、二次开发技术选型。这三项设计任务紧密相关、同时进行。另外可能不需要集成支持,也可以决定不支持二次开发。

1.2.3 阅读路径3:从需求到架构的全过程

专业的架构设计师,必须掌握架构设计的“工程化过程”。以此为目标的读者,请精读“实践过程篇”的内容。

· 第4章。概述从需求到架构的全过程,还提供了一节叫“速查手册”,供快速查阅每个环节的工作内容。

· 第5~11章。按如下6个环节的展开讨论:需求分析、领域建模、确定关键需求、概念架构设计、细化架构设计、架构验证。

内容虽多,用一幅图概括也不是不可能,在为企业培训架构时我们就经常这么做——图1-7即,展示了从需求到架构整个过程中的关键任务项。

图1-7 架构设计的全过程

1.2.4 阅读路径4:结合工作,解决实际问题

最后,按照经典名著《如何阅读一本书》中所说的“主动阅读”法,读者还可以“带着问题”、“以我为主”地“跳读”。

【实际问题1】开发人员的一个很经典的困惑是:领域经验不足怎么办?

本书第7章,给出了建议。破解“领域知识不足”死结的一个有效方法,是把领域模型作为“理解领域的手段”。领域模型的“强项”是“理顺概念关系、搞清业务规则”——通过对复杂的领域进行“概念抽象”和“关系抽象”建立模型、获得对领域知识总体上的把握,就不会掉入杂乱无章的概念“堆”里了。

【实际问题2】又例如,你所在的部门,是否存在这样的问题:不同的人对架构有不同的理解?

本书第2章,推荐结合部门的实际工作,来理解架构的含义,统一团队不同成员对架构的理解。

【实际问题3】用例建模够不够?流程建模要不要?笔者接触的很多实践者,都有此困惑。

本书第6章,简述了需求分析“三套实践论”的观点,提出“大、中、小”三套可根据系统特点选择的需求实践策略,可供实践者参考。如图1-8、图1-9和图1-10所示。

图1-8 需求实践论之小型方法

图1-9 需求分析实践论之中型方法

图1-10 需求实践论之大型方法

由此可见,是实践决定方法,不是方法一刀切实践。

更多问题的解决思路在此不再列举,祝阅读之旅愉快!