读《程序员向架构师转型必备》

机会、人才、技术和产品是公司成长的主要牵动力。机会牵引人才,人才牵引技术,技术牵引产品,产品牵引更大机会。人才锁找我的知识处于最核心的部位。 – 《华为研发》

读完本书,颇有点相逢恰当时之感。内容翔实,而指导性又非常强,很多内容点自己在实际工作中深有感触。其纸质书亦作为自己又一本收藏案头书,进行查阅回顾温习。可惜的是没有正版电子版,只能下本不太清晰的盗版电子书放在手机随时查阅了。


分而治之

  • 聚焦不同方面,更有效思考。
  • 化大问题为子问题。

迭代式设计

  • 不同视图设计交替迭代展开。
  • 逻辑划分逐步清晰,促进物理分布设计;反之亦然。
逻辑视图 物理视图
浅层设计 >> 浅层设计
<< <<
深层设计 >> 深层设计

一个决定:

划分顶级子系统

四个选型:

组成派

软件架构将系统描述计算组件及组件间的交互。关注软件本身。

决策派

软件架构是在一些重要方面所作出的决策的集合。关注实践主体–人。

这些重要决策如下:

架构设计过程

技术经理:软件架构就是模块的划分和接口定义。 系统分析师:软件架构就是业务领域模型的关系建模。 数据库工程师:软件架构就是规定了数据结构,其他只不过是对数据的操作而已。 部署工程师:软件架构就是规定了软件部署到硬件的策略。 …

逻辑和物理架构设计

  1. 需求分析
  2. 领域建模

领域建模的目的在于:透过问题领域的重重现象,捕捉其背后最为稳固的概念以及这些概念之间的联系。架构师本人最好是作为领域建模的领导者。

  1. 确定关键需求
  2. 概念架构设计

概念架构设计必须给出“一个决定、4个选型”。

  1. 细化架构设计

指从五个不同视图进行设计:逻辑架构、开发架构、运行架构、物理架构、数据架构。

  1. 验证架构设计

需求分析工作

  1. 需求沟通。
  2. 确定非功能需求。

这是一个持续过程。

  1. 需求分析主线。

需求分析主线

需求分析主线

关键需求确认

关键需求确认

细化架构的位置

细化架构内容

细化架构输入输出

架构验证的位置

架构验证的位置

其中概念化阶段主要聚焦:

  1. 愿景分析
  2. 风险评估
  3. 可行性分析(比如硬件支撑等)
  4. 项目进度和成本预估
  1. 背景
  2. 业务机遇
  3. 业务目标
  4. 客户或市场需求
  5. 提供给客户的价值
  6. 业务风险
  1. 愿景陈述
  2. 主要特征
  3. 假设和依赖
  1. 首次发布范围
  2. 随后发布范围
  3. 局限性和专用性
  1. 客户或用户概貌
  2. 项目优先级
  1. 顶层数据流图。
  2. 将System处理成黑盒的用例图。
  3. Powerpoint绘制的框图。

愿景分析实践要领

愿景分析三剑客

  1. 需求捕获 – 理解沟通

  2. 需求分析 – 做什么

  3. 系统分析 – 怎么做

三者不是独立无关的阶段,而是相互伴随、交叉进行的。

需求分析三任务

第一纬度

第二纬度

需求类型

三横两纵

  1. 确定系统目标
  2. 研究高层需求
  3. 建立用例模型
  1. 需求沟通、需求启发、需求验证
  2. 确定非功能需求

三横

用例技术组

  1. 用例名称:

银行销户

  1. 简要说明:

xxxxxx。

  1. 事件流:

3.1 基本事件流

  1. 银行工作人员进入“活期账户销户”界面。
  2. 银行工作人员读取磁条卡片信息。
  3. 系统展示账户信息
  4. 工作人员核对证件材料

3.2 扩展事件流

  1. 如果磁卡读取失败,需手动输入账号
  1. 非功能需求:

  2. 前置条件:

  3. 后置条件:

  4. 优先级

高。

基于用例的需求分析方法