系统架构-第 1 章 绪论 核心知识点笔记
一、系统架构
- 定义:系统的高层次整体结构表示(骨架与根基),体现组件的基本组织、组件间关系、与环境的关系及设计 / 演化原则,是刻画系统整体抽象结构的手段。
- 核心作用:解决复杂需求分析、非功能属性设计、长生命周期 / 高扩展性系统结构、组件集成、业务流程再造问题。
- 关键影响:决定系统健壮性与生命周期长短,是需求分析后、系统设计前的关键步骤。
二、系统架构师
- 定义(IEEE 1471-2000):负责系统架构的人 / 团队 / 组织,是确认评估非功能性需求(可维护性、性能、复用性等)、制定开发规范、搭建核心构架、总体设计软件架构 / 关键构件 / 接口、澄清技术细节的高级技术人员。
- 核心职责:技术领导(组织技术活动、推动技术决策、架构文档化)+ 抽象设计、非功能设计、关键技术设计。
三、架构师必备素质
- 业务领域知识:理解业务模型,预见需求变化;
- 技术知识:掌握核心平台 / 框架,跟进技术发展;
- 设计技能:识别关键设计决策,具备实践积累;
- 编程技能:理解开发实现,可参与代码实践;
- 沟通能力:口头 + 书面表达,对接利益相关方;
- 决策能力:模糊场景下果断决策,及时纠正错误;
- 组织策略认知:了解组织权利结构,争取项目支持;
- 谈判技巧:平衡需求与技术,降低项目风险。
四、架构师知识结构
- 战略规划能力;
- 业务流程建模能力;
- 信息数据架构能力;
- 技术架构设计和实现能力;
- 应用系统架构解决与实现能力;
- 基础 IT 知识及基础设施、资源调配能力;
- 信息安全技术支持与管理保障能力;
- IT 审计、治理与需求分析获取能力;
- 软件系统可靠性与生命周期质量保障能力;
- 新技术 / 新概念理解、掌握与分析能力。
五、优秀架构师的 6 大特质
- 技术领导者:以愿景引领团队,协调冲突;
- 开发者:结合系统现状选型,避免 “象牙塔式设计”;
- 系统综合者:兼顾代码、部署、性能、安全等多维度需求;
- 企业家思维:权衡技术选型的成本与收益,控制风险;
- 策略与战术思维:平衡技术敏捷度与一致性,建立技术雷达;
- 沟通专家:用听众适配的术语交流,通过图表 / 文档记录决策。
六、模块化开发 6 大规则
- 最高模块内聚:模块内部元素高度关联,优先实现单一功能;
- 最低耦合:模块间关系尽可能弱,便于升级扩展;
- 模块大小适度:避免过大(维护难)或过小(耦合增加);
- 调用链深度适中:嵌套层次不宜过多;
- 接口简单精炼:扇入扇出数合理,具备信息隐蔽能力;
- 复用已有模块:减少重复开发。
七、软件架构风格(David Garland 和 Mary Shaw 分类)
数据流风格、调用 / 返回风格、独立组件风格、虚拟机风格、仓库风格。
八、典型软件架构
- 分层架构:表现层(用户交互)→业务层(逻辑实现)→持久层(数据提供)→数据库层(数据存储);
- 事件驱动架构:事件队列→分发器→事件通道→事件处理器;
- 微核(插件)架构:内核仅含系统运行最小功能,插件独立低耦合;
- 微服务架构:服务独立部署,分布式解耦;实现模式:RESTful API 模式、RESTful 应用模式、集中消息模式;
- 云架构:解决扩展性与并发问题,含处理单元(业务逻辑)+ 虚拟中间件(消息 / 数据 / 处理 / 部署中间件)。
九、软件架构应用场景
现代大型软件:混合多种架构风格,保障可靠性、可扩展性、可维护性等非功能属性。
单一风格适用场景:
管道 – 过滤器:系统需拆分独立步骤;
主程序 / 子系统 / 面向对象:组件内部设计;
虚拟机风格:构造解释器 / 专家系统;
C/S/B/S:数据与处理分布式,需网络连接;
平台 / 插件:需插件扩展的应用;
MVC:用户交互程序;
SOA:企业集成;
C2 风格:GUI 软件开发(灵活可扩展)。