系统架构师复习笔记
本笔记是基于在刷历年真题时发现常考的知识点的总结
选择题知识点
分布数据库特性
- 分片透明性:指用户或应用程序不需要知道逻辑上访问的表具体是怎么分块存储的;
- 复制透明性:指采用复制技术的分布方法,用户不需要知道数据是复制到哪些节点上;
- 逻辑透明性:指局部数据模型透明,用户或应用程序无需知道局部场地使用的是那种数据模型;
- 计算机软件保护条例第十二条:受他人委托开发的软件,其著作权的归属由委托者与受委托者签订书面协议约定,如无书面协议或者在协议中未作明确约定,其著作权属于受委托者(考选择题)。
UML(Unified Modeling Language 统一建模语言)
UML 2.0共有十四种图:用例图、类图、对象图、状态图、活动图、序列图(顺序图、时序图)、协作图、组件图(构件图)、部署图、包图、通信图、组合结构图、交互概览图和计时图。
其中,序列图、通信图、交互概览图和计时图均被称为交互图。一般常用的图也就是其中九种。
- 用例图(UseCase Diagrams)
用例图之间的关系主要有包含、扩展和泛化。
2.1 包含关系。当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
2.2 扩展关系。如果一个用例明显地混合了两种或两种以上的不同场景。
2.3 泛化关系。当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。
-
类图(Class Diagrams)
用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
-
对象图(Object Diagrams)
是UML中用于显示一组对象和他们之间关系的图形化表示。它是类图的一个实例化表示,即在某一特定时间点或状态下,系统中实际存在的对象及其相互关系的快照。
-
状态图 (Statechart Diagrams)
是一种展示状态机的图,用于描述一个对象在其生命周期中的各种状态及状态的转换。状态机是一种行为,它定义了对象如何根据外部或内部事件来改变其状态。一般包含状态、转换、事件、动作和活动。
-
活动图(Activity Diagrams)
它通过一系列活动节点、动作节点、转换节点以及控制流(如顺序流、分支流、合并流等)来表示系统的执行流程。活动图有助于清晰地展示系统中各个活动是如何按照特定的顺序执行的,以及这些活动是如何相互关联的。
-
序列图
序列图通过二维图形表示法来展示对象之间的交互过程。在序列图中,纵向轴代表时间轴,时间沿竖线向下延伸;横向轴代表在协作中各独立对象的类元角色,这些对象通过生命线来表示。生命线是一条垂直的虚线,表示对象在交互过程中的存在时间。对象间的消息传递通过从发送者生命线到接收者生命线的箭头来表示,这些箭头指明了消息传递的方向和时间点。
-
协作图(Collaboration Diagram)
也称为合作图或通信图,是UML(Unified Modeling Language,统一建模语言)中的一种交互图。它主要关注对象在参与具体交互时,对象之间如何链接以及传递什么消息。协作图按时间和空间的顺序描述系统元素之间的交互和关系,侧重于描述消息的组成关系。
-
组件图
组件图是用来表示系统中组件与组件之间关系的模型图。它通过显示系统的构件以及接口等之间的接口关系,形成系统的更大的一个设计单元。组件图不仅关注组件的外部接口和行为,还通过组件的封装性、可替换性和可重用性来优化系统设计。
-
部署图
部署图是一种结构图,通过图形化的方式展示系统中组件、节点和连接之间的物理部署关系。它关注的是系统运行时,软件组件如何在硬件节点上进行部署和配置,以及这些组件之间的交互方式。
-
包图
面向对象设计模型中包图是用来表示软件体系结构图
软件架构风格
- 数据流风格
1.1 批处理架构风格
1.2 管道/过滤风格
架构风格 | 子架构风格 | 详细描述 |
数据流体系结构风格 | 批处理体系结构风格 | 每个处理步骤是一个单独的程序,每一步必 须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递。 |
管道-过滤器体系结构风格 | 每个处理步骤由一个过滤器 (Filter) 实现,处理步骤之间的数据传输由管道 (Pipe) 负责。 | |
调用/返回体系结构风格 | 主程序/子程序风格 | 一般采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。 |
面向对象体系结构风格 | 这种 风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。 | |
层次型体系结构风格 | 每一层为上层提供服务,并作为下层的客户。 | |
客户端/服务器体系结构风格 | 两层 C/S 体系结构有3个主要组成部分:数据库服务器、客户应用程序和网络。服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务,称为“胖客户机,瘦服务器”。 | |
以数据为中心的体系结构风格 | 仓库体系结构风格 | 仓 库 (Repository) 是存储和维护数据的中心场所。这种风格的连接件即为仓库与独立构件之间的交互。/td> |
黑板体系结构风格 | 黑板体系结构风格适用于解决复杂的非结构化的问题,能在求解过程中综合运用多种不同知识源,使得问题的表达、组织和求解变得比较容易。黑板系统是一种问题求解模型,是组织推理步骤、控制状态数据和问题求解之领域知识的概念框架。 | |
虚拟机体系结构风格 | 解释器体系结构风格 | 具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。 |
规则系统体系结构风格 | 基于规则的系统(见图7-16)包括规则集、规则解释器、规则/数据选择器及工作内存。 | |
独立构件体系结构风格 | 进程通信体系结构风格 | 在进程通信结构体系结构风格中,构件是独立的过程,连接件是消息传递。 |
事件系统体系结构风格 | 事件系统风格基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。 |
参考文章点击连接跳转
面向对象设计原则
- 单一职责原则:设计目的单一的类。
- 开放-封闭原则:对扩展开放,对修改封闭。
- 李氏(Liskov)替换原则:子类可以替换父类。
- 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。
- 接口隔离原则:使用多个专门的接口比使用单一的总接口要好。
- 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的。
- 迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解。
软件架构开发
- 基于软件架构的开发(Architecture Based Software Development,ABSD)强调由商业、质量和功能需求的组合驱动软件架构设计。它强调采用视角和视图 来描述软件架构,采用用例和质量属性场景来描述需求。
软件测试
- 软件集成测试将已通过单元测试的模块集成在一起,主要测试模块之间的协作性。从组装策略而言,可以分为(
一次性组装和增量式组装
)。集成测试计划通常是在(软件概要设计
)阶段完成,集成测试一般采用黑盒测试方法。
安全
非法使用(非授权访问):某一资源被某个非授权的人,或以非授权的方式使用。
破坏信息的完整性:数据被非授权地进行增删、修改或破坏而受到损失。
授权侵犯(内部攻击):被授权以某一目的使用某一系统或资源的某个人,却将此权限用于其他非授权的目的。
计算机病毒:一种在计算机系统运行过程中能够实现传染和侵害功能的程序。
拒绝服务:对信息或其他资源的合法访问被无条件地阻止。
陷阱门:在某个系统或某个部件中设置的“机关”,使得在特定的数据输入时,允许违反安全策略。
旁路控制:攻击者利用系统的安全缺陷或安全性上的脆弱之处获得非授权的权利或特权。
业务欺骗:某一系统或系统部件欺骗合法的用户或系统自愿地放弃敏感信息等。
特洛伊木马:软件中含有一个觉察不出的有害的程序段,当它被执行时,会破坏用户的安全,这种应用程序称为特洛伊木马。
物理侵入:侵入者绕过物理控制而获得对系统的访问。
业务流分析:通过对系统进行长期监听,利用统计分析方法对诸如通信频度、通信的信息流向、通信总量的变化等参数进行研究,从中发现有价值的信息和规律。
风险点
风险点是指在架构设计中可能会引发严重问题或失败的部分、因素或环节。这些点通常具有潜在的隐患,如果不加以妥善管理和控制,可能会对系统的稳定性和成功造成重大影响。
非风险点
非风险点是指对系统的稳定性和成功影响较小的部分、因素或环节。这些点在设计和评估过程中不需要投入过多精力,因为它们的风险较低。
敏感点
敏感点是一个或多个构件之间的特性,指容易受到外部因素影响,并且一旦发生变化就可能对系统的性能、功能或安全产生重大影响的部分。
权衡点
权衡点是影响多个质量属性的特性,指不同质量属性之间进行取舍或平衡的关键位置或环节。。
题目
- 某计算机系统采用5级流水线结构执行指令,设每条指令的执行由取指令(2 At)分析指令(1At)、取操作数(3At)、运算(1At)和写回结果(2At)组成,并分别用 5个子部完成,该流水线的最大吞吐率为(1);若连续向流水线输入 10 条指令,则该流水线的加速比为(2)
(1)A.1/90 B. 1/3 ΔtC.1/2At D.1/1t
B,因为吞吐率一般是指令周期的倒数
T P m a x = lim n → ∞ n ( k + n − 1 ) △ t = 1 △ t TP_{max}= \lim_{n \to \infty} \frac{n}{(k+n-1)\triangle t}=\frac{1}{\triangle t} TPmax=n→∞lim(k+n−1)△tn=△t1
(2)A.1:10 B.2:1C.5:2 D.3:1
了at
C,没有使用流水线 t=(2+1+3+1+2)10 = 90
采用流水线 t = (2+1+3+1+2)+3(10-1) = 36