ONEPSOFT | 软考学习知识库
speedrun1|第1章 绪论
第 1 章 绪论 — 知识点速通
一、章节定位
一句话概括:本章讲 " 什么是系统架构、什么是系统架构设计师、怎样从工程师成长为架构设计师 ",是整套教材的入门与定位章;在考试中约占 5%\\~8% 权重,属于综合知识选择题重点区,论文可作为 " 架构师角色认知 " 的引言素材。
二、本章在讲什么(系统性阐述)
本章是整本《系统架构设计师教程(第 2 版)》的 " 总纲 " 与 " 入场券 "。它解决三个递进的问题:第一,什么是系统架构——从 IEEE 1471-2000 的标准定义切入,把架构理解为系统的骨架与根基,并回顾从 1968 年 NATO 会议提出 " 软件架构 " 术语,到 2000 年 IEEE 标准发布、再到今天普及应用的发展脉络。第二,软件架构有哪些常见分类与建模方法——分层、事件驱动、微核、微服务、云架构五类典型模型,以及结构/框架/动态/过程四种建模视角和 "4+1" 视图。第三,系统架构设计师这个角色到底是什么——定义、职责、任务、专业素质(8 项)与知识结构(10 项),并回答 " 怎样从一名普通工程师成长为优秀架构设计师 "(六阶段演化)。
对土木工程背景的考生,本章类比很直观:系统架构就像一栋建筑的 " 结构体系与总体设计 "——它决定哪几层承重、哪些专业分包、管线怎么走;架构设计师就像 " 项目总工程师/设计总监 ",要对结构安全(非功能属性:性能、可靠性、可维护性等)负责,而不仅仅画某一张施工图。本章虽不考深,却是后续所有章节的基础,务必把概念记准、记全。
三、教材原文精摘(原封不动,逐子章节全覆盖)
下列段落直接摘自官方教材,未做任何改写,是本章各子章节最核心的原文。请先读原文,再结合下方讲解理解。
【1.1 系统架构概述 原文】" 系统架构 (System Architecture) 是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范以及指导这些内容设计与演化的原理,它是刻画系统整体抽象结构的一种手段。"
" 架构设计在系统开发过程中起着关键性作用,架构设计的优劣决定了系统的健壮性和生命周期的长短。"
【1.1.1 系统架构的定义及发展历程 原文】" 架构是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系及指导它的设计和发展的原则。"(IEEE 1471-2000)
" 软件架构自概念诞生以来,大致经历了四个发展阶段:基础研究阶段 (1968—1994 年);概念体系和核心技术形成阶段 (1999—2000 年);普及应用阶段 (2000 年至今)。"
【1.1.2 软件架构的常用分类及建模方法 原文】" 分层架构 (Layered Architecture) 是最常见的软件架构,也是事实上的标准架构。这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工……最常见的是四层结构:表现层、业务层、持久层、数据库。"
" 事件驱动架构 (Event-driven Architecture) 是通过事件进行通信的软件架构,它分成四个部分:事件队列、分发器、事件通道、事件处理器。"
" 微核架构 (Microkernel Architecture) 又称为插件架构 (Plug-in Architecture),是指软件的内核相对较小,主要功能和业务逻辑都通过插件实现。"
" 微服务架构 (Microservices Architecture) 是服务导向架构 (SOA) 的升级。每一个服务就是一个独立的部署单元。"
" 云架构 (Cloud Architecture) 主要解决扩展性和并发的问题,是最容易扩展的架构。"
" 根据建模的侧重点的不同,可以将软件架构的模型分成 4 种:结构模型、框架模型、动态模型和过程模型。""Philippe Kruchten 在 1995 年提出了一个 '4+1' 视角模型:从逻辑、过程、物理、开发视角和场景视角来描述软件架构。"
【1.1.3 软件架构的应用场景 原文】" 软件架构风格在实践中已被反复使用,不同的架构风格具有各自的优缺点和应用场景,比如管道 - 过滤器风格适用于将系统分成若干独立的步骤;C/S 和 B/S 风格适合于数据和处理分布在一定范围;MVC 风格被广泛地应用于用户交互程序的设计;SOA 风格应用在企业集成等方面。"
" 对于现代大型软件,很少使用单一的架构风格进行设计与开发,而是混合多种风格。"
【1.1.4 软件架构的发展未来 原文】" 架构发展的主线可以归纳为模块化编程/面向对象编程、构件技术、面向服务开发技术和云技术。"
【1.2 系统架构设计师概述 原文】" 架构设计师是负责系统架构的人、团队或组织 (IEEE 1471-2000)。架构设计师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求……给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件和接口进行总体设计并澄清关键技术细节的高级技术人员。"
【1.2.1 架构设计师的定义、职责和任务 原文】" 架构设计师的职责应该是技术领导,这意味着架构设计师除了拥有专门技能外,还必须拥有领导能力。"
" 架构设计师在项目中的主要任务可概述如下:(1) 领导与协调整个项目中的技术活动。(2) 推动主要的技术决策并最终表达为系统架构。(3) 确定系统架构,并促使其架构设计的文档化。"
" 从技术角度看,架构设计师的职责就是抽象设计、非功能设计和关键技术设计等三大任务。"
【1.2.2 架构设计师应具备的专业素质 原文】" 架构设计师应该具备以下专业知识:1.掌握业务领域的知识;2.掌握技术知识;3.掌握设计技能;4.具备编程技能;5.具备沟通能力;6.具备决策能力;7.知道组织策略;8.应是谈判专家。"
【1.2.3 架构设计师的知识结构 原文】" 架构设计师综合的知识能力结构主要包括 10 个方面:(1) 战略规划能力。(2) 业务流程建模能力。(3) 信息数据架构能力。(4) 技术架构设计和实现能力。(5) 应用系统架构的解决和实现能力。(6) 基础 IT 知识及基础设施、资源调配的能力。(7) 信息安全技术支持与管理保障能力。(8) IT 审计、治理与基本需求的分析和获取能力。(9) 面向软件系统可靠性与系统生命周期的质量保障服务能力。(10) 对新技术与新概念的理解、掌握和分析能力。"
【1.3 如何成为一名好的系统架构设计师 原文】" 工程师和架构设计师的本质区别主要体现在技术、组织和个人成长上。"
【1.3.1 如何衡量一名优秀架构设计师 原文】" 一个好的架构设计师是技术全面的,并给出了成为一个技术全面的架构设计师必须具备的 6 个角色特质:作为领导者;作为开发者;作为系统综合者;具备企业家思维;具备战略技术专家的权衡思维与战术思维;具备良好的沟通能力。"
【1.3.2 从工程师到系统架构设计师的演化 原文】" 系统架构设计师一般都具备计算机科学或软件工程的知识由工程师做起,然后再慢慢成长为架构设计师。"
" 工程师阶段:' 在别人的指导下完成开发 '(1\\~3 年)。高级工程师阶段:' 独立完成开发 '(3\\~5 年)。技术专家阶段:' 某个领域的专家 '(4\\~8 年)。系统架构设计师 (初级):' 独立完成一个系统的架构设计 '(5\\~8 年)。系统架构设计师 (中级):' 能够完成复杂系统的架构设计 '(8\\~10 年以上)。系统架构设计师 (高级):' 创造新的架构模式 '(10 年以上)。"
逐段讲解(紧贴上面原文,一段一解):
四、核心知识树
层级树状骨架,3 层以内,每节点 ≤10 字,覆盖本章全部主干。
第 1 章 绪论
├── 系统架构概述
│ ├── 定义 (IEEE1471)
│ ├── 五类架构
│ └── 四模型 +4+1
├── 架构设计师角色
│ ├── 定义职责
│ ├── 八项素质
│ └── 十项结构
└── 成长路径
└── 六阶段演化
五、知识脑图总结
思维导图(结构化呈现)
六、关键概念速解
| 概念 | 教材定义(原文关键词) | 大白话速解 | 考试怎么考 |
|---|---|---|---|
| 系统架构 | " 系统的骨架和根基,支撑和链接各个部分,包括组件、连接件、约束规范 " | 建筑的 " 结构体系总图 ",决定整体怎么搭 | 选择/概念辨析 |
| 分层架构 | " 最常见的软件架构,事实上的标准,最常见四层:表现/业务/持久/数据库 " | 像楼房分层(地下设备层/标准层/屋面层) | 选择/分类 |
| 微服务架构 | "SOA 的升级,每个服务是独立的部署单元 " | 把总包拆成多个专业分包,各自独立施工、接口衔接 | 选择/案例 |
| 架构设计师 | " 系统或产品线的设计责任人……高级技术人员 " | 项目总工程师,对结构安全(非功能)负责 | 选择/论文素材 |
| 4+1 视图 | " 逻辑、过程、物理、开发视角和场景视角 " | 从多角度画同一栋楼(平面/立面/剖面/管线/使用场景) | 选择 |
七、记忆口诀 & 类比
口诀只服务于 " 整体概念 / 主流程 " 的记忆。
八、易混淆点对比
| 易混项 A | 易混项 B | 核心区别 |
|---|---|---|
| 架构设计师(总体设计/非功能) | 普通软件工程师(编码实现) | 架构师对系统骨架与非功能需求负责、是技术领导;工程师侧重编码 |
| 分层架构 | 微核 (插件) 架构 | 分层是 " 水平切层、层间接口通信 ";微核是 " 小内核 + 独立插件 " |
| 微服务架构 | 事件驱动架构 | 微服务强调 " 独立部署单元 + 远程通信 ";事件驱动强调 " 事件队列/分发器/通道/处理器 " 通信机制 |
九、与其他章节的关联
十、考试出题方式