你好,我是七牛云许式伟。 我们第三章 “服务端开发篇” 就快要结束了。我们原计划的第三章会分拆为两章: - 第三章:服务端开发篇。主要介绍服务端的基础架构与业务架构。 - 第四章:服务治理篇。主要介绍服务端程序上线与线上服务如何管理的问题。 原先计划的 “第五章:通用架构范式篇” 会取消,核心内容会融合到其他的章节中。详细的调整结果,近期我们会与大家同步新的大纲。 今天我们把话题重新回到架构上。 关于架构,前面我们已经聊了第一步的需求分析和第二步系统的概要设计: - [17 | 架构:需求分析(上)](https://time.geekbang.org/column/article/100140) - [18 | 架构:需求分析(下)- 实战案例](https://time.geekbang.org/column/article/100930) - [32 | 架构:系统的概要设计](https://time.geekbang.org/column/article/117783) 需求分析并不是纯技术的东西,和编程这件事情无关。它关乎的是用户需求的梳理、产品的清晰定义、可能的演变方向。 需求分析的目标和最终结果,都是要最终形成清晰的产品定义。产品定义将明确产品的元素,明确产品的边界,与产业上下游、合作伙伴的分工。 在需求分析阶段,我们关注用户需求的精确表述。我们会引入角色,也就是系统的各类参与方,以及角色间的交互方式,也就是用户故事。 在概要设计阶段,我们一般以子系统为维度来阐述系统各个角色之间的关系。对于关键的子系统,我们还会进一步分解它,甚至详细到把该子系统的所有模块的职责和接口都确定下来。 这个阶段我们的核心意图并不是确定系统完整的模块列表,我们的焦点是整个系统如何被有效地串联起来。如果某个子系统不做进一步的分解也不会在项目上有什么风险,那么我们并不需要在这个阶段对其细化。 为了降低风险,概要设计阶段也应该有代码产出。 这样做的好处是,一上来我们就关注了全局系统性风险的消除,并且给了每个子系统或模块的负责人一个更具象且确定性的认知。 代码即文档。代码是理解一致性更强的文档。 经过系统的概要设计,整个系统的概貌就了然于胸了。详细设计阶段,是需要各个子系统或模块的负责人,对他负责的部分进行进一步的细化。 详细设计关注的是子系统或模块的全貌。 请记住,详细设计并不是只谈实现就完事,更不是一个架构图。它包括以下这些内容。
  • **现状与需求**