当前业界,大多数架构师都认同“需求决定架构”,但对需求“如何决定”架构还知之不深。……不同需求影响架构的不同原理,才是架构设计思维的基础。 ——温昱,《一线架构师实践指南》

本篇记录6大步骤中的第一步:需求分析。包括如下内容:

  • 需求从哪里来?
  • 如何知道当前已掌握的需求是否全面?
  • 从需求向设计转化的思维方式是什么?

1.需求从哪里来

需求分析的前期工作是愿景描述及愿景分析。有很多的书籍、论坛在介绍。这部分内容不是本书的重点和核心。输出《愿景与范围文档》
下面说一下需求分析。

需求分析

从软件过程来看,需求分析是一个承上启下的阶段–“上承”愿景,“下接”设计。需求分析的工作内容包含如下三方面:

  • 需求捕获。
  • 需求分析。
  • 系统分析。

需求捕获及分析也有非常多的书籍或文章涉足。输出《软件需求设计说明书》。

2.掌握的需求全不全

二维需求观

本书提到了二维需求观的概念,将“需求=列表”的传统观念,一下子拓宽了维度。有了视野和思维上的提升。这里应用的也是分类的思维方式。
关于思维方式及阅读感悟,请参考我的另一篇博文《软件架构设计》学习笔记–1–阅读感悟

那么,什么是“二维需求观”呢?
首先,需求是分层次的。
有组织级的需求,用户级的需求,和开发级的需求。
其次,需求还必须从不同方面考虑。
需求可分类为三类:

  • 功能需求:更多体现各级直接目标要求。
  • 质量需求:运行期质量 + 开发期质量
  • 约束需求:业务环境因素 + 使用环境因素 + 构建环境因素 + 技术环境因素

软件架构设计题目 软件架构设计 温昱_软件架构设计题目


书中提到了一个工具,即ADMEMS矩阵,可作为需求梳理和需求评审的工具,以直观易行的checklist帮助设计人员梳理和评审需求。

软件架构设计题目 软件架构设计 温昱_需求分析_02


该矩阵由CSAI顾问团架构设计专家组于2009年提出。本书中的内容,包括二维需求观、5视图方法等观念,和概念架构设计、细化架构设计等步骤,也均出自该专家组。读者可浏览下面的博文以概观。

一个软件架构设计的方法体系

3.从需求向设计转化的密码

不同需求(及功能、质量、约束)影响架构的不同原理,是从需求向设计转化的密码。

软件架构设计题目 软件架构设计 温昱_架构设计_03


如上表所示,

  • 功能:体现的是职责协作链
  • 质量:是完善架构的驱动力
  • 约束:说明了设计并不自由

关于更多的理论介绍及实例解读,请阅读该书第5章和第6章。