软考高级“系统架构设计师”学习笔记
本文更新于2025-09-06。
以下笔记摘录自:全国计算机技术与软件专业技术资格(水平)考试指定用书《系统架构设计师教程》。
绪论
架构师分为以下几类:业务架构师(Business Architect)、主题领域架构师(Domain Architect)、技术架构师(Technology Architect)、项目架构师(J2EE、.NET等)、系统架构师(System Architect)。
计算机与网络基础知识
操作系统的五大管理功能是:进程管理、文件管理、存储管理、设备管理、作业管理。
PV操作:S表示资源的可用数,P操作表示申请一个资源,V操作表示释放一个资源。
E-R图主要构件:
- 矩形:实体集。
- 菱形:联系集。
- 椭圆:属性。
- 线段:讲属性与实体集相连,或将实体集与联系集相连。
范式:1NF⊇2NF⊇3NF⊇BCNF⊇4NF⊇5NF
事务的4个特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。也称为事务的ACID性质。
开放系统互连参考模型(OSI/RM)由低层至高层分别为:物理层(physical layer)、数据链路层(datalink layer)、网络层(network layer)、传输层(transport layer)、会话层(session layer)、表示层(presentation layer)、应用层(application layer)。
TCP/IP模型:物理层、数据链路层、网络层、传输层、应用层。
网络互联设备根据工作的协议层进行分类:中继器(repeater)、网桥(bridge)、路由器(router)、网关(gateway)、交换机。
信息系统基础知识
CRM(Customer Relationship Management):客户关系管理。
ERP(Enterprise Resource Plannning):企业资源计划。
MRP(Material Requirement Planning):物料需求计划。
SCM(Supply Chain Management):供应链管理。
企业的所有资源包括三大流:物流、资金流、信息流。
EAI(Enterprise Application Integration):企业应用集成。
系统开发基础知识
软件开发模型:
- 瀑布模型(waterfall model):可以说是最早使用的软件生存周期模型之一。
- 原型模型(prototype model):又称为快速原型。
- 螺旋模型(spiral model):在快速原型的基础上扩展而成。
- 基于可重用构建的模型。
- 基于面向对象的模型。
- 基于四代技术的模型。
敏捷方法的核心思想:
- 敏捷方法是“适应性”(adaptive)而非“预设性”(predictive)的。
- 敏捷方法是“面向人”(people-oriented)而非“面向过程”(process-oriented)的。
- 迭代增量式的开发过程。
敏捷方法4个核心价值观:沟通、简单、反馈、勇气。
敏捷方法12条过程实践规则:简单设计、测试驱动、代码重构、结对编程、持续集成、现场客户、发行版本小型化、系统隐喻、代码集体所有制、规划策略、规范代码、40小时工作机制。
主要敏捷方法:XP(Extreme Programming)极限编程、Cockburn的水晶系列方法、开放式源码、SCRUM、Coad的FDD(Feature Driven Development)功用驱动开发方法、ASD(Adaptive Software Development)方法。
RUP(Rational Unified Process)“4+1”视图模型:
- 用例视图(Use Case View)
- 逻辑视图(Logical View)
- 实现视图(Implementation View)
- 进程视图(Process View)
- 部署视图(Deployment View)
CMM(Capability Maturity Model):过程能力成熟度模型。
软件架构设计
经典软件架构风格:
- 管道和过滤器:这里的构件被成为过滤器。每个构件都有一组输入和输出,数据输入构件,经过内部处理,产生数据输出。
- 数据抽象和面向对象组织:这种风格的构件是对象。建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。
- 事件驱动系统:构件不直接调用一个过程,而是触发或广播一个或多个事件,系统中的其它构件中的过程在一个或多个事件中注册。
- 分层系统:组成一个层次结构,每一层为上层服务,并作为下层客户。
- 仓库(repository)系统及知识库:有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行。一方面,若构件控制共享数据,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。
- C2风格:可以概括为通过连接件绑定在一起按照一组规则运作的并行构件网络。系统组织规则如下:
- 系统中的构件和连接件都有一个顶部和一个底部。
- 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部。构件与构件之间的直接连接是不允许的。
- 一个连接件可以和任意数量的其它构件和连接件连接。
- 当两个连接件进行直接连接时,必需由其中一个的底部到另一个的顶部。
客户/服务器(C/S)风格。
三层C/S结构风格。
浏览器/服务器(browser/server,B/S)风格。
DSSA(Domain Specific Software Architecture):特定领域软件体系结构。
系统的质量属性:
- 性能(performance)
- 可靠性(reliability):容错、健壮性。
- 可用性(availability)
- 安全性(security):机密性、完整性、不可否认性、可控性。
- 可修改性(modifiability):可维护性(maintainability)、可扩展性(extendibility)、结构重组(reassemble)、可移植性(portability)。
- 功能性(functionality)
- 可变性(changeability)
- 互操作性(inter-operation)
敏感点(sensitivity point)是一个或多个构件(和/或构件之间的关系)的特性。
权衡点(tradeoff point)是影响多个质量属性的特性,是多个质量属性的敏感点。
UML建模和架构文档化
UML共定义10种视图,分为4类:
- 用例图(use case diagram):显示一组用例、参与者(actor)以及它们之间关系的图。
- 静态图
- 类图(class diagram)
- 对象图(object diagram)
- 包图(package diagram)
- 行为图
- 交互图(interactive diagram):描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图。时序图和协作图之间可以相互转化。
- 时序图/顺序图(sequence diagram):显示对象之间交互的图,这些对象是按时间顺序排列的。
- 协作图/合作图(collaboration diagram):描述系统的行为是如何由系统的成分协作实现的图。
- 状态图(state chart diagram):描述对象在其生存期间的动态行为,表现对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随的动作(action)。状态图是用于显示状态机的。
- 活动图(active diagram):描述系统的工作流程和并发行为。基本概念:活动(activity)、泳道(swim lane)、分支(branch)、分叉(fork)、汇合(join)、对象流。
- 交互图(interactive diagram):描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图。时序图和协作图之间可以相互转化。
- 实现图(implementation diagram)
- 构件图(component diagram):显示一组构件以及它们之间的相互关系,包括编译、链接或执行时构件之间的依赖关系。
- 部署图/配置图/实施图(deployment diagram):显示系统中计算节点的拓扑结构和通信路径与节点上运行的软构件等。
用例间的关系:泛化(generalization)、包含(include)、扩展(extend)。
类之间的关系有:
- 关联(association):A ----- B
- 聚集(aggregation):GROUP ◇----- INDIVIDUAL
- 组合(composition):WHOLE ◆----- PART
- 泛化(generalization):SUPER ◁----- SUB
- 依赖(dependency):A - - - - -> B
架构模型:
- 逻辑视图(logical view):设计的对象模型。
- 过程视图(process view):捕捉设计的并发和同步特性。
- 物理视图(physical view):描述软件到硬件的映射,反映了分布式特性。
- 开发视图(development view):描述开发环境中软件的静态组织结构。
- 用例(use cases)或场景(scenarios)来说明,该视图是其它视图的冗余(“+1”)。
设计模式
- 创建型模式
- 抽象工厂(Abstract Factory)
- 建造者(Builder)
- 工厂方法(Factory Method)
- 原型(Prototype)
- 单例(Singleton)
- 结构型模式
- 适配器(Adapter)
- 桥接(Bridge)
- 组合(Composite)
- 装饰(Decorator)
- 外观(Facade)
- 享元(Flyweight)
- 代理(Proxy)
- 行为型模式
- 职责链(Chain of Responsibility)
- 命令(Command)
- 解释器(Interpreter)
- 迭代器(Iterator)
- 中介者(Mediator)
- 备忘录(Memento)
- 观察者(Observer)
- 状态(State)
- 策略(Strategy)
- 模板方法(Template Method)
- 访问者(Visitor)
XML技术
面向构件的软件设计
构件的特性:独立部署单元、作为第三方的组装单元、没有(外部的)可见状态。
构件体系两大阵营:OMG的CORBA、Sun的Java,微软的COM和CLR。
构件平台与典型架构
Java构件模型:Applet、JavaBean、EJB、servlet、应用客户端构件。
信息安全技术
系统安全架构设计
ISO开放系统互联安全体系的5类安全服务:鉴别(Authentication)、访问控制(Access Control)、数据机密性(Confidentiality)、数据完整性(Integrity)、抗抵赖性(Non-repudiation)。
系统的可靠性设计
软件可靠性设计:容错设计技术(恢复块设计、N版本程序设计、冗余设计)、检错技术、降低复杂度技术。
基于ODP的架构师实践
开放分布式处理(Open Distributed Processing,ODP)从5个标准的视点组织分析系统的架构:
- 企业业务架构
- 逻辑信息架构
- 计算接口架构
- 分布式工程架构
- 技术选择架构
架构师的管理实践
层次式架构设计
表现层、中间层(业务逻辑层)、数据访问层(持久层)。
MVC模式:
- 控制器(Controller):接受用户的输入并调用模型和视图去完成用户的需求。
- 模型(Model):应用程序的主体部分。模型表示业务数据和业务逻辑。
- 视图(View):用户看到并与之交互的界面。
方法调用:===>
事件: --->
(控制器)
接受用户请求
#===选择视图=== 调用模型响应用户请求 ===业务处理===#
# 选择视图显示响应结果 #
# ^ #
# | #
# | #
# 用户请求 #
V | V
(视图) | (模型)
显示模型状态 --------+ 代表应用程序状态
接受数据更新请求 ============状态查询=========> 响应状态查询
把用户输入数据传给 <---------通知数据更新-------- 处理业务流程
控制器 通知视图业务状态更新
业务逻辑组件分为接口和实现类两个部分。
在业务容器中,业务逻辑是按照Domain Model-Service-Control思想来实现的:
- Domain Model:领域层业务对象,仅仅包含业务相关的属性。
- Service:业务过程实现的组成部分,是应用程序的不同功能单元,通过在这些服务之间定义良好的接口和契约联系起来。
- Control:服务控制器,是服务之间的纽带,不同服务之间的切换就是通过它来实现的。
数据访问层5种数据访问逻辑:
- 在线访问
- Data Access Object
- Data Transfer Object
- 离线数据模式
- 对象/关系映射(Object/Relation Mapping,O/R Mapping)
企业集成架构设计
EIP(Enterprise Integration Platform):企业集成平台。
数据集成主要有以下三种模式:数据联邦、数据复制、基于接口的数据集成。
应用集成模式包括:适配器集成、信使集成、面板集成、代理集成。
面向方面的编程
嵌入式系统设计
嵌入式软件设计模式:状态机模型、数据流模型、并发进程模型、面向对象模型。
面向服务的架构
面向服务的体系结构(Service-Oriented Architecture,SOA)。
服务注册
A A
/ \
/ \
通过UDDI查找 通过UDDI发布
/ \
/ \
V <--用WSDL描述--> V
服务请求者 服务提供者
<-通过SOAP连接->
企业服务总线(Enterprise Service Bus,ESB)的核心功能:
- 提供位置透明性的消息路由和寻址服务。
- 提供服务注册和命名的管理功能。
- 支持多种消息传递范型(如请求/响应、发布/订阅等)。
- 支持多种可以广泛使用的传输协议。
- 支持多种昂数据格式及其互相转换。
- 提供日志和监控功能。
案例研究
以下笔记摘录自:全国计算机技术与软件专业技术资格(水平)考试指定用书《系统架构设计师2013至2018年试题分析与解答》。
与可用性质量属性相关的架构策略:心跳、Ping/Echo、主动冗余、被动冗余、选举。
与性能质量属性相关的架构策略:增加计算资源、减少计算开销、引入并发机制、采用资源调度。
与安全性质量属性相关的架构策略:入侵检测、用户认证、用户授权、追踪审计。
常见的体系结构风格:
- 数据流风格:批处理和管道/过滤器。
- 调用/返回风格:主程序/子程序、层次结构,客户机/服务器,面向对象风格。
- 独立部件风格:进程通信、事件驱动。
- 虚拟机风格:解释器、基于规则的系统。
- 数据共享风格:数据库系统、黑板系统。
一个质量属性会对多个设计决策造成影响,是敏感点。
一个质量属性会影响多个质量属性,是权衡点。
系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
敏感点是指威了实现某种特定的质量属性,一个或多个系统组件所具有的特性。
权衡点是指影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
EJB构件中的Bean分为:
- 会话构件(Session Bean):负责完成服务端与客户端的交互。
- 实体构件(Entity Bean):用于数据持久化来简化数据库开发工作。
- 消息驱动构件(Message Bean):主要用来处理并发和异步访问操作。