8、系统架构设计基础知识 核心考点与学习笔记

【软考架构师】系统架构设计基础知识 核心考点与学习笔记(超详细解析+图解)

摘要:本文为软考高级系统架构设计师(第7章:系统架构设计基础知识)的学习笔记。内容涵盖软件架构生命周期、基于架构的软件开发方法(ABSD)、5大经典软件架构风格、软件架构复用以及特定领域软件体系结构(DSSA)。针对易混淆的概念,本文利用 Mermaid 语法绘制了图表,助你快速记忆,顺利通过软考!

目录

  • [1. 软件架构概念与生命周期](#1. 软件架构概念与生命周期)
  • [2. 基于架构的软件开发方法(ABSD)](#2. 基于架构的软件开发方法(ABSD))
  • [3. 软件架构风格(⭐⭐⭐ 核心考点)](#3. 软件架构风格(⭐⭐⭐ 核心考点))
  • [4. 软件架构复用](#4. 软件架构复用)
  • [5. 特定领域软件体系结构(DSSA)](#5. 特定领域软件体系结构(DSSA))
  • [6. 总结与备考建议](#6. 总结与备考建议)

1. 软件架构概念与生命周期

软件架构设计的核心目标是获得满足功能需求、符合非功能需求(质量属性)的系统框架模型。在软件架构设计过程中,主要考虑系统的非功能性需求。

架构生命周期贯穿于软件开发的各个阶段:
#mermaid-svg-ZBjPFQVuWIQhRpp9{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .error-icon{fill:#552222;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .marker.cross{stroke:#333333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZBjPFQVuWIQhRpp9 p{margin:0;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .cluster-label text{fill:#333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .cluster-label span{color:#333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .cluster-label span p{background-color:transparent;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .label text,#mermaid-svg-ZBjPFQVuWIQhRpp9 span{fill:#333;color:#333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .node rect,#mermaid-svg-ZBjPFQVuWIQhRpp9 .node circle,#mermaid-svg-ZBjPFQVuWIQhRpp9 .node ellipse,#mermaid-svg-ZBjPFQVuWIQhRpp9 .node polygon,#mermaid-svg-ZBjPFQVuWIQhRpp9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .rough-node .label text,#mermaid-svg-ZBjPFQVuWIQhRpp9 .node .label text,#mermaid-svg-ZBjPFQVuWIQhRpp9 .image-shape .label,#mermaid-svg-ZBjPFQVuWIQhRpp9 .icon-shape .label{text-anchor:middle;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .rough-node .label,#mermaid-svg-ZBjPFQVuWIQhRpp9 .node .label,#mermaid-svg-ZBjPFQVuWIQhRpp9 .image-shape .label,#mermaid-svg-ZBjPFQVuWIQhRpp9 .icon-shape .label{text-align:center;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .node.clickable{cursor:pointer;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .arrowheadPath{fill:#333333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ZBjPFQVuWIQhRpp9 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ZBjPFQVuWIQhRpp9 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ZBjPFQVuWIQhRpp9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .cluster text{fill:#333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .cluster span{color:#333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ZBjPFQVuWIQhRpp9 rect.text{fill:none;stroke-width:0;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .icon-shape,#mermaid-svg-ZBjPFQVuWIQhRpp9 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .icon-shape p,#mermaid-svg-ZBjPFQVuWIQhRpp9 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .icon-shape .label rect,#mermaid-svg-ZBjPFQVuWIQhRpp9 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ZBjPFQVuWIQhRpp9 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ZBjPFQVuWIQhRpp9 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ZBjPFQVuWIQhRpp9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 需求阶段
设计阶段
实现阶段
构件组装阶段
部署阶段
后开发阶段

  • 设计阶段的核心三要素 :基本概念(构件 与连接子 )、体系结构描述语言(ADL )、多视图表示(如 4+1 视图)。
  • 构件组装阶段 :需重点解决体系结构失配问题(构件失配、连接子失配、全局体系结构假设冲突)。

2. 基于架构的软件开发方法(ABSD)

ABSD 方法是体系结构驱动的,即由构成体系结构的商业、质量和功能需求的组合驱动。

  • 三大基础 :
    1. 功能的分解(利用内聚与耦合技术)。
    2. 通过选择体系结构风格来实现质量和商业需求。
    3. 软件模板的使用。
  • 核心特点 :是一个自顶向下、递归细化的方法,直到产生软件构件和类。
  • 描述方式 :采用视角与视图 描述软件架构,采用用例 描述功能需求,采用质量场景描述质量需求。

ABSDM 模型(6个子过程):
#mermaid-svg-DytCHXZBz4dOQ6qC{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-DytCHXZBz4dOQ6qC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-DytCHXZBz4dOQ6qC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-DytCHXZBz4dOQ6qC .error-icon{fill:#552222;}#mermaid-svg-DytCHXZBz4dOQ6qC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-DytCHXZBz4dOQ6qC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-DytCHXZBz4dOQ6qC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-DytCHXZBz4dOQ6qC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-DytCHXZBz4dOQ6qC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-DytCHXZBz4dOQ6qC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-DytCHXZBz4dOQ6qC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-DytCHXZBz4dOQ6qC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-DytCHXZBz4dOQ6qC .marker.cross{stroke:#333333;}#mermaid-svg-DytCHXZBz4dOQ6qC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-DytCHXZBz4dOQ6qC p{margin:0;}#mermaid-svg-DytCHXZBz4dOQ6qC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-DytCHXZBz4dOQ6qC .cluster-label text{fill:#333;}#mermaid-svg-DytCHXZBz4dOQ6qC .cluster-label span{color:#333;}#mermaid-svg-DytCHXZBz4dOQ6qC .cluster-label span p{background-color:transparent;}#mermaid-svg-DytCHXZBz4dOQ6qC .label text,#mermaid-svg-DytCHXZBz4dOQ6qC span{fill:#333;color:#333;}#mermaid-svg-DytCHXZBz4dOQ6qC .node rect,#mermaid-svg-DytCHXZBz4dOQ6qC .node circle,#mermaid-svg-DytCHXZBz4dOQ6qC .node ellipse,#mermaid-svg-DytCHXZBz4dOQ6qC .node polygon,#mermaid-svg-DytCHXZBz4dOQ6qC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-DytCHXZBz4dOQ6qC .rough-node .label text,#mermaid-svg-DytCHXZBz4dOQ6qC .node .label text,#mermaid-svg-DytCHXZBz4dOQ6qC .image-shape .label,#mermaid-svg-DytCHXZBz4dOQ6qC .icon-shape .label{text-anchor:middle;}#mermaid-svg-DytCHXZBz4dOQ6qC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-DytCHXZBz4dOQ6qC .rough-node .label,#mermaid-svg-DytCHXZBz4dOQ6qC .node .label,#mermaid-svg-DytCHXZBz4dOQ6qC .image-shape .label,#mermaid-svg-DytCHXZBz4dOQ6qC .icon-shape .label{text-align:center;}#mermaid-svg-DytCHXZBz4dOQ6qC .node.clickable{cursor:pointer;}#mermaid-svg-DytCHXZBz4dOQ6qC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-DytCHXZBz4dOQ6qC .arrowheadPath{fill:#333333;}#mermaid-svg-DytCHXZBz4dOQ6qC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-DytCHXZBz4dOQ6qC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-DytCHXZBz4dOQ6qC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-DytCHXZBz4dOQ6qC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-DytCHXZBz4dOQ6qC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-DytCHXZBz4dOQ6qC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-DytCHXZBz4dOQ6qC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-DytCHXZBz4dOQ6qC .cluster text{fill:#333;}#mermaid-svg-DytCHXZBz4dOQ6qC .cluster span{color:#333;}#mermaid-svg-DytCHXZBz4dOQ6qC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-DytCHXZBz4dOQ6qC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-DytCHXZBz4dOQ6qC rect.text{fill:none;stroke-width:0;}#mermaid-svg-DytCHXZBz4dOQ6qC .icon-shape,#mermaid-svg-DytCHXZBz4dOQ6qC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-DytCHXZBz4dOQ6qC .icon-shape p,#mermaid-svg-DytCHXZBz4dOQ6qC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-DytCHXZBz4dOQ6qC .icon-shape .label rect,#mermaid-svg-DytCHXZBz4dOQ6qC .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-DytCHXZBz4dOQ6qC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-DytCHXZBz4dOQ6qC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-DytCHXZBz4dOQ6qC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 复审不通过
需求变化
体系结构需求
体系结构设计
体系结构文档化
体系结构复审
体系结构实现
体系结构演化

💡 注意 :体系结构文档化主要产出架构规格说明 和测试架构需求的质量设计说明书 。复审需由外部人员(独立于开发组织之外的人)参加。


3. 软件架构风格(⭐⭐⭐ 核心考点)

架构风格定义了特定应用领域中系统组织方式的惯用模式。常考的五大类风格如下:
#mermaid-svg-n9dTbe8t7n070qJA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-n9dTbe8t7n070qJA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-n9dTbe8t7n070qJA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-n9dTbe8t7n070qJA .error-icon{fill:#552222;}#mermaid-svg-n9dTbe8t7n070qJA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-n9dTbe8t7n070qJA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-n9dTbe8t7n070qJA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-n9dTbe8t7n070qJA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-n9dTbe8t7n070qJA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-n9dTbe8t7n070qJA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-n9dTbe8t7n070qJA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-n9dTbe8t7n070qJA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-n9dTbe8t7n070qJA .marker.cross{stroke:#333333;}#mermaid-svg-n9dTbe8t7n070qJA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-n9dTbe8t7n070qJA p{margin:0;}#mermaid-svg-n9dTbe8t7n070qJA .edge{stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .section--1 rect,#mermaid-svg-n9dTbe8t7n070qJA .section--1 path,#mermaid-svg-n9dTbe8t7n070qJA .section--1 circle,#mermaid-svg-n9dTbe8t7n070qJA .section--1 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section--1 text{fill:#ffffff;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth--1{stroke-width:17;}#mermaid-svg-n9dTbe8t7n070qJA .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-0 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-0 path,#mermaid-svg-n9dTbe8t7n070qJA .section-0 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-0 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-n9dTbe8t7n070qJA .section-0 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-0{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-0{stroke-width:14;}#mermaid-svg-n9dTbe8t7n070qJA .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-1 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-1 path,#mermaid-svg-n9dTbe8t7n070qJA .section-1 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-1 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-1 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-1{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-1{stroke-width:11;}#mermaid-svg-n9dTbe8t7n070qJA .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-2 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-2 path,#mermaid-svg-n9dTbe8t7n070qJA .section-2 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-2 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-2 text{fill:#ffffff;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-2{stroke-width:8;}#mermaid-svg-n9dTbe8t7n070qJA .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-3 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-3 path,#mermaid-svg-n9dTbe8t7n070qJA .section-3 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-3 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-3 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-3{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-3{stroke-width:5;}#mermaid-svg-n9dTbe8t7n070qJA .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-4 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-4 path,#mermaid-svg-n9dTbe8t7n070qJA .section-4 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-4 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-4 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-4{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-4{stroke-width:2;}#mermaid-svg-n9dTbe8t7n070qJA .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-5 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-5 path,#mermaid-svg-n9dTbe8t7n070qJA .section-5 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-5 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-5 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-5{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-5{stroke-width:-1;}#mermaid-svg-n9dTbe8t7n070qJA .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-6 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-6 path,#mermaid-svg-n9dTbe8t7n070qJA .section-6 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-6 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-6 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-6{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-6{stroke-width:-4;}#mermaid-svg-n9dTbe8t7n070qJA .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-7 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-7 path,#mermaid-svg-n9dTbe8t7n070qJA .section-7 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-7 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-7 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-7{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-7{stroke-width:-7;}#mermaid-svg-n9dTbe8t7n070qJA .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-8 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-8 path,#mermaid-svg-n9dTbe8t7n070qJA .section-8 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-8 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-8 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-8{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-8{stroke-width:-10;}#mermaid-svg-n9dTbe8t7n070qJA .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-9 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-9 path,#mermaid-svg-n9dTbe8t7n070qJA .section-9 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-9 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-9 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-9{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-9{stroke-width:-13;}#mermaid-svg-n9dTbe8t7n070qJA .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-10 rect,#mermaid-svg-n9dTbe8t7n070qJA .section-10 path,#mermaid-svg-n9dTbe8t7n070qJA .section-10 circle,#mermaid-svg-n9dTbe8t7n070qJA .section-10 polygon,#mermaid-svg-n9dTbe8t7n070qJA .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-10 text{fill:black;}#mermaid-svg-n9dTbe8t7n070qJA .node-icon-10{font-size:40px;color:black;}#mermaid-svg-n9dTbe8t7n070qJA .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .edge-depth-10{stroke-width:-16;}#mermaid-svg-n9dTbe8t7n070qJA .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-n9dTbe8t7n070qJA .disabled,#mermaid-svg-n9dTbe8t7n070qJA .disabled circle,#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:lightgray;}#mermaid-svg-n9dTbe8t7n070qJA .disabled text{fill:#efefef;}#mermaid-svg-n9dTbe8t7n070qJA .section-root rect,#mermaid-svg-n9dTbe8t7n070qJA .section-root path,#mermaid-svg-n9dTbe8t7n070qJA .section-root circle,#mermaid-svg-n9dTbe8t7n070qJA .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-n9dTbe8t7n070qJA .section-root text{fill:#ffffff;}#mermaid-svg-n9dTbe8t7n070qJA .section-root span{color:#ffffff;}#mermaid-svg-n9dTbe8t7n070qJA .section-2 span{color:#ffffff;}#mermaid-svg-n9dTbe8t7n070qJA .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-n9dTbe8t7n070qJA .edge{fill:none;}#mermaid-svg-n9dTbe8t7n070qJA .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-n9dTbe8t7n070qJA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 软件架构风格
数据流风格
批处理序列
管道/过滤器
调用/返回风格
主程序/子程序
面向对象
层次结构
客户端/服务器
独立构件风格
进程通信
事件驱动(隐式调用)
虚拟机风格
解释器
规则系统
仓库风格
数据库系统
黑板系统

3.1 常见架构风格辨析与场景

架构风格 核心特点及关键字 优点 缺点/场景
管道-过滤器 数据流、前一个输出是后一个输入、独立存储 高内聚、低耦合、支持并行 交互性差、性能差(需解析数据)。典型实例:传统编译器、网络报文处理。
主程序-子程序 单线程、显式调用、层次性 逻辑清晰 子程序错误影响主程序
层次结构 分层、每层最多影响上下两层、接口可见性控制 良好重用性、可扩展性 性能差(层次越多越差)、难以找到合适抽象方法
面向对象 数据抽象、封装、对象交互 重用性好 引入对象管理层会降低系统性能
事件驱动(隐式调用) 事件触发、发布-订阅、松耦合 松耦合、可扩展 放弃对系统计算的控制、正确性推理难。实例:语法高亮、错误提示。
解释器(虚拟机) 自定义规则、解释引擎、存储区 灵活应对自定义场景、业务灵活组合 执行效率低、复杂度高。实例:专家系统(部分)。
规则系统(虚拟机) 规则集、规则解释器、工作内存 业务规则随时改变 复杂度高。实例:DSS、人工智能、机器人。
仓库风格(数据库) 中央共享数据源、独立处理单元 以数据为中心 实例:现代编译器集成开发环境(IDE)。
黑板系统(仓库) 知识源、黑板数据结构、控制 解决复杂非结构化问题 实例:语音识别、知识推理(解空间大、过程不确定)。
闭环控制 设定参数、反馈、不断调整 适合嵌入式系统 涉及连续动作与状态。实例:空调控温、汽车巡航定速。
C2风格 构件与连接件、顶部与底部、并行网络 并行构件网络 构件顶部连连接件底部,底部连连接件顶部,构件之间不可直接相连。

4. 软件架构复用

软件架构复用是提高开发效率、降低成本的重要手段。

  • 复用类型 :
    • 机会复用:开发过程中,发现有可复用的资产就复用("碰运气")。
    • 系统复用:开发之前就规划好哪些需要复用("有预谋")。
  • 复用过程:

#mermaid-svg-CpnMSQgbhU3Vd1JN{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CpnMSQgbhU3Vd1JN .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CpnMSQgbhU3Vd1JN .error-icon{fill:#552222;}#mermaid-svg-CpnMSQgbhU3Vd1JN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CpnMSQgbhU3Vd1JN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CpnMSQgbhU3Vd1JN .marker.cross{stroke:#333333;}#mermaid-svg-CpnMSQgbhU3Vd1JN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CpnMSQgbhU3Vd1JN p{margin:0;}#mermaid-svg-CpnMSQgbhU3Vd1JN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-CpnMSQgbhU3Vd1JN .cluster-label text{fill:#333;}#mermaid-svg-CpnMSQgbhU3Vd1JN .cluster-label span{color:#333;}#mermaid-svg-CpnMSQgbhU3Vd1JN .cluster-label span p{background-color:transparent;}#mermaid-svg-CpnMSQgbhU3Vd1JN .label text,#mermaid-svg-CpnMSQgbhU3Vd1JN span{fill:#333;color:#333;}#mermaid-svg-CpnMSQgbhU3Vd1JN .node rect,#mermaid-svg-CpnMSQgbhU3Vd1JN .node circle,#mermaid-svg-CpnMSQgbhU3Vd1JN .node ellipse,#mermaid-svg-CpnMSQgbhU3Vd1JN .node polygon,#mermaid-svg-CpnMSQgbhU3Vd1JN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CpnMSQgbhU3Vd1JN .rough-node .label text,#mermaid-svg-CpnMSQgbhU3Vd1JN .node .label text,#mermaid-svg-CpnMSQgbhU3Vd1JN .image-shape .label,#mermaid-svg-CpnMSQgbhU3Vd1JN .icon-shape .label{text-anchor:middle;}#mermaid-svg-CpnMSQgbhU3Vd1JN .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CpnMSQgbhU3Vd1JN .rough-node .label,#mermaid-svg-CpnMSQgbhU3Vd1JN .node .label,#mermaid-svg-CpnMSQgbhU3Vd1JN .image-shape .label,#mermaid-svg-CpnMSQgbhU3Vd1JN .icon-shape .label{text-align:center;}#mermaid-svg-CpnMSQgbhU3Vd1JN .node.clickable{cursor:pointer;}#mermaid-svg-CpnMSQgbhU3Vd1JN .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CpnMSQgbhU3Vd1JN .arrowheadPath{fill:#333333;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CpnMSQgbhU3Vd1JN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CpnMSQgbhU3Vd1JN .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CpnMSQgbhU3Vd1JN .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CpnMSQgbhU3Vd1JN .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CpnMSQgbhU3Vd1JN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CpnMSQgbhU3Vd1JN .cluster text{fill:#333;}#mermaid-svg-CpnMSQgbhU3Vd1JN .cluster span{color:#333;}#mermaid-svg-CpnMSQgbhU3Vd1JN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CpnMSQgbhU3Vd1JN .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CpnMSQgbhU3Vd1JN rect.text{fill:none;stroke-width:0;}#mermaid-svg-CpnMSQgbhU3Vd1JN .icon-shape,#mermaid-svg-CpnMSQgbhU3Vd1JN .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CpnMSQgbhU3Vd1JN .icon-shape p,#mermaid-svg-CpnMSQgbhU3Vd1JN .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CpnMSQgbhU3Vd1JN .icon-shape .label rect,#mermaid-svg-CpnMSQgbhU3Vd1JN .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CpnMSQgbhU3Vd1JN .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CpnMSQgbhU3Vd1JN .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CpnMSQgbhU3Vd1JN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 关键问题
构造/获取可复用的软件资产
管理可复用资产
使用可复用的资产
构件分类
构件检索

  • 管理阶段的两个关键问题 :构件分类 (如何组织)和构件检索(如何快速找到)。

5. 特定领域软件体系结构(DSSA)

DSSA 是在一个特定领域中为一组应用提供组织结构参考的标准软件框架。

  • 领域的两个维度 :
    • 垂直域 :定义一个特定的系统族,包含多个系统(相同领域,深入)。
    • 水平域 :定义多个系统族中功能区域的共有部分(不同领域,平移),无法提供完整通用架构。
  • 基本活动(三步曲) :
    1. 领域分析 :目的是获得领域模型(描述共同需求)。
    2. 领域设计 :目的是获得 DSSA(高层次的设计,非单系统表示)。
    3. 领域实现 :依据领域模型及DSSA,开发和组织可重用信息。
  • 参与人员:领域专家、领域分析师、领域设计人员、领域实现人员。
  • 建立过程(并发、递归、反复、螺旋):定义领域范围 -> 定义特定元素 -> 定义设计实现约束 -> 定义模型和架构 -> 产生搜集可重用产品单元。

6. 总结与备考建议

本章是系统架构设计师考试的绝对重点,选择题和案例分析题都会大量涉及:

  1. ABSD方法:记住三个基础、6个子过程的顺序,以及"自顶向下、递归细化"的特点。
  2. 架构风格:必须能通过题目描述(关键字)准确判断出对应的架构风格。例如:看到"灵活组合/自定义规则"选解释器;看到"复杂/非结构化/语音识别"选黑板;看到"独立/前一个输出是后一个输入"选管道-过滤器。
  3. DSSA:区分垂直域和水平域,记住三个基本活动的产出物(领域模型、DSSA、可重用信息)。

建议在备考时,将架构风格的表格打印出来,结合历年真题反复记忆。祝各位考友逢考必过!


标签:#软考 #系统架构设计师 #软件架构 #架构风格 #ABSD #DSSA #学习笔记

相关推荐
墨子夕2 小时前
软件架构设计(第二篇)
架构·系统架构
行思理10 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
吴建旭 智宅焕13 小时前
智能家居交付商品化的系统架构设计与实现:从附属服务到标准化交付商品
系统架构·智能家居
楚山之石14 小时前
【Medical Image Analysis】深度学习医学图像合成综述:伪CT、合成MRI与合成PET的架构、性能与临床边界
图像处理·人工智能·学习·mr·mri
Li_RuiQi15 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
诚心呈意共享外卖配送系统17 小时前
即时零售配送系统怎么选?一份可落地的技术选型评估清单
架构·系统架构·创业创新·零售
SteveSenna18 小时前
aubo学习:realsense手眼标定
学习·机器人·视觉检测
深圳安锐科技有限公司18 小时前
从成像尺度到亚像素解算:变焦视觉位移监测如何让远近断面都稳
图像处理·人工智能·深度学习·算法·计算机视觉·系统架构·结构健康监测