知识卡片

架构设计六步骤及其依赖关系

结构图卡

内容

整个架构设计过程包含六大步骤:需求分析、领域建模、确定关键需求、概念架构设计、细化架构设计、架构验证。这六步不是简单的先后顺序清单,而是有明确输入输出依赖的一条链——架构设计的开展非常依赖其上游活动,最上游是需求分析和领域建模两项活动。需求分析产出功能、质量、约束三方面的需求,这是后续所有活动的地基,没有全面认识需求就设计架构必然出问题。领域建模的目的是透过问题领域的表面现象,捕捉背后最稳固的领域概念及其关系,为团队成员之间、团队与客户之间提供交流的共同语言核心;领域模型随项目推进不断精化,最终成为软件的问题领域层,决定软件系统能力的范围——书中特别主张软件架构师应从项目前期就领导领域建模活动,避免”不同阶段领域模型由不同人负责”带来的割裂问题。确定关键需求这一步要求对功能需求做筛选、对非功能需求做综合权衡,最终确定对架构起关键作用的需求子集——”架构面前所有需求一律平等”是不成立的,这一步是大系统架构与小系统架构设计路径分道扬镳的”分水岭”。关键需求决定概念架构:概念架构要同时重视关键功能和关键质量,明确给出”1个决定、4个选型”(如何划分顶级子系统、架构风格选型、开发技术选型、集成技术选型、二次开发技术选型),业界”概念架构=不考虑非功能需求和具体技术的理想化架构”是一种流行的错误观点。概念架构设计思想之下,展开细化架构设计——细化架构和概念架构的关键区别是要关注到”模块+接口”一级,其输入既来自需求成果层面(要为需求本身设计,而不只是关键需求),也来自高层架构层面(在概念架构的设计思想下进行),领域模型同时影响逻辑架构视图的领域模型设计和数据架构视图的存储格式设计。最后是架构验证:产出”架构原型”,其开发目的不是完美无Bug地实现功能,而是在细化架构指导下,优先把存在风险的设计尽早开发出来并测试评审,验证结果不应只是”架构是否有效”的回答,还必须附带可实际运行的程序(垂直原型或可复用框架),为后续开发提供实在支持。

结构图

flowchart TD
    A[需求分析\n产出:功能/质量/约束需求] --> C[确定关键需求]
    B[领域建模\n产出:领域模型] --> C
    C -->|关键需求决定概念架构| D["概念架构设计\n产出:1个决定+4个选型"]
    D -->|在概念架构设计思想下展开| E["细化架构设计\n产出:模块+接口级设计"]
    A -.->|需求成果也直接输入| E
    B -.->|领域模型影响逻辑架构视图与数据架构视图| E
    E --> F["架构验证\n产出:架构原型/可复用框架"]

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第4章《架构设计过程》"4.1.2 掌握过程:6个步骤"节(源文件:_epub-src/OEBPS/text00007.html) - 结论依据:原文列出六大步骤并说明"架构设计的开展非常依赖其上游活动。总体而言,这些上游活动包括需求分析和领域建模",逐一说明各步骤输入输出(如"细化架构设计的输入既来自'需求成果'层面、也来自'高层架构'层面"),直接支撑本卡片结论与结构图。 - 原始内容:(1)需求分析(2)领域建模(3)确定关键需求(4)概念架构设计(5)细化架构设计(6)架构验证……细化架构要为"需求"而设计……细化架构要在"概念架构"的设计思想下进行……"领域模型",一方面影响着"逻辑架构视图"的"领域模型设计",另一方面影响着"数据架构视图"的"存储格式设计"。