软件设计师考点总结
![](https://up.ctext.top/article/2024/02/software.png)
AI-摘要(由百度千帆大模型提供生成摘要能力)
Tianli GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
软件设计师考点总结
伴随《软件设计师》考点总结
为了方便背诵,某些概念做了隐藏,点击即可显示CPU主要组成
-
运算单元:
- 包括 ALU、FPU。
-
控制单元:
- 包括 指令控制器,时序控制器,总线控制器,中断控制器。
-
存储单元:
- 包括 通用寄存器,状态寄存器,cache。
多态
- 参数多态
- 应用广泛、最纯的多态。
- 包含多态
- 同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。
- 强制多态:
- 编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
- 过载多态:
- 同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。 目前软设考查比较多的是过载多态。
软件测试三个阶段
- 单元测试
- 白盒测试
- 测试来源来源于详细设计
- 集成测试 (模块间的接口测试)
- 黑盒测试和白盒测试
- 测试来源于概要设计
- 系统测试 (功能测试)
- 黑盒测试bang
- 测试来源于需求分析
软件四种维护
- 改正性维护。
- 为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。
- 适应性维护。
- 在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
- 完善性维护。
- 在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。
- 预防性维护。
- 这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。
数据库范式理论简单记忆
-
第一范式(1NF):
- 关系中的每个属性都是不可分割的原子项
- 简单来说,就是确保每一列中的数据都是原子性的,没有重复的属性或集合。
-
第二范式(2NF):
- 每一个非主属性完全函数依赖于码
- 换句话说,表中的数据行必须能通过主键唯一标识,并且表中的非主键列不能仅依赖于主键的一部分。
-
第三范式(3NF):
- 非主属性不传递依赖于码
- 这意味着非主键列不能依赖于其他非主键列,每个非主键列都必须直接依赖于主键。
-
BCNF(Boyce-Codd Normal Form):
- 所有决定因素(即决定其他属性的属性组合)都必须是候选键
- 设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有超码(属性集A可以唯一地标识关系r中的一个元组,则称属性集A为关系r的一个超码),那么R∈BCNF。
- 这进一步减少了数据冗余和更新异常的可能性,确保数据的完整性和一致性。
数据库模式
- 外模式(External Schema)
定义:外模式也称为用户模式,它是数据库的最外层,直接面向最终用户或应用程序- 外模式可以是数据库中的一个子集,包含虚拟视图或表
- 模式(Conceptual Schema)
定义:模式(或概念模式)是数据库的中间层,定义了整个数据库的逻辑结构,是所有外模式的公共基础。- 概念模式包括所有的数据表、字段及其关系,但不包含物理存储的细节
- 内模式(Internal Schema)
定义:内模式是数据库的最底层,直接面向数据库管理系统(DBMS),定义了数据库的物理存储结构和访问方式。- 内模式包含物理存储的细节,如数据文件的分布、存取路径、索引设计等。
函数依赖
符号介绍
- A ⊂ B:A包含B
- A ⊆ B:真子集,A的所有元素都属于B,但B中至少有一个元素不属于A
- X → Y:表示X函数决定Y或Y函数依赖于X
- a ∊ A:元素a属于集合A
Armstrong公理系统
- 自反律(Reflexivity Rule
若 Y ⊆ X ⊆ U ,则 X → Y 为 F 所蕴涵。 - 增广律(augmentation rule)
若X→Y为F所蕴涵,且Z⊆U,则XZ→YZ为F所蕴涵。 - 传递律(transitivity rule)
若X→Y及Y→Z为F所蕴涵,则X→Z为F所蕴涵。
依赖
- 平凡函数依赖:
平凡函数依赖是指一个属性或一组属性完全地决定了自身。换句话说,如果一个属性 X 完全地决定了属性 Y,那么这种函数依赖被称为平凡函数依赖。例如,如果有 X→X 这样的函数依赖,那么它就是一个平凡函数依赖,因为 X 决定了自身的值。 - 非平凡函数依赖:
非平凡函数依赖是指一个属性或一组属性不完全地决定自身,而是由其他属性决定。如果一个属性 X 决定了另一个属性 Y,且 X 和 Y 不是同一个属性,那么这种函数依赖就是非平凡函数依赖。例如,如果有 X→Y 这样的函数依赖,其中 X 和 Y 是不同的属性,那么它就是一个非平凡函数依赖。 - 完全函数依赖:
完全函数依赖是指一个属性组合完全地决定了其他属性,而不能通过去掉其中的任何一个属性来维持该函数依赖。如果一个属性组合 X 完全地决定了属性 Y,但是去掉其中任何一个属性都不能维持该函数依赖,那么这种函数依赖就是完全函数依赖。 - 部分函数依赖
某些属性决定了另一个属性,但并非所有属性都对其决定。换句话说,如果一个属性组合中的一部分属性能够确定另一个属性的值,而不是整个属性组合。
个人理解:如果一个属性不依赖任何一个属性,那么就可以认为这个属性是一个平凡函数依赖;如果两个集合XY,只有X中全部属性才能推导出Y,那么就是完全函数依赖
树相关的计算公式
- 节点总数
- 一个高度(根节点高度为0 )为 h 的二叉树,节点,最多有 2^(h+1) −1 个,最少有 h+1 个
- 叶子节点数量
- 一个高度为 n 的二叉树叶子节点,2^h,最少为 1
- 二叉树节点和形态的关系
- 节点书为n的二叉树共有 (2n)! / n!(n+1)! 种形态
- 假如节点数为4,那么87654321/432543*2 = 14
软件成熟度模型(CMM)的五个等级
- 初始级(Initial)
- 特点:在这一级别,软件过程基本上是无序和混乱的。项目的成功往往依赖于个人的技能和努力,而非系统性的过程。项目管理缺乏标准化和可重复性,工作常常处于救火状态,无法有效预防和解决问题。
- 问题:由于没有明确的软件开发流程,项目的进度、质量和成本往往难以控制。这导致项目的成功率低下,客户满意度不高。
- 可重复级(Repeatable)
- 特点:在这一级别,组织开始建立基本的项目管理过程,如需求管理、项目计划、跟踪和监控等。这些过程为项目的执行提供了必要的指导和规范,使得类似的项目可以重复之前的成功经验。
- 进步:通过实施这些基本过程,组织能够更好地控制项目的进度和成本,提高软件的质量。同时,由于过程的可重复性,项目的成功率也得到了提升。
- 已定义级(Defined)
- 特点:在这一级别,软件管理和工程两方面的过程都已经文档化、标准化,并整合到组织的标准软件过程中。所有项目都使用经过批准、剪裁的标准软件过程来开发和维护软件。
- 优势:通过文档化和标准化过程,组织能够确保项目的一致性和可预测性。同时,这也为团队成员提供了清晰的指导,使得他们能够更好地理解和执行任务。
- 已管理级(Managed)
- 特点:在这一级别,组织能够收集并分析软件过程和产品质量的详细度量数据。这使得组织能够在定量的范围内预测性能,并作出基于客观依据的决策。
- 意义:通过收集和分析度量数据,组织可以深入了解其软件开发过程的优点和不足,从而制定针对性的改进措施。同时,这也为组织提供了持续监控和优化过程的能力。
- 优化级(Optimizing)
- 特点:在这一级别,组织通过反馈和持续改进,不断优化其软件开发过程。组织能够利用新技术和先进思想来改进过程,从而提高软件质量和客户满意度。
- 成果:通过持续优化过程,组织能够不断提高其软件开发能力,降低项目的风险和成本。同时,这也使得组织能够更好地满足客户的需求,提高市场竞争力。
七层网络模型
物理层(Physical Layer)
:数据链路层(Data Link Layer)
:网络层(Network Layer)
:传输层(Transport Layer)
:会话层(Session Layer)
:表示层(Presentation Layer)
:应用层(Application Layer)
:
软件设计模型
-
原型模型:
-
瀑布模型:
-
演化模型:
-
增量模型:
-
螺旋模型:
-
喷泉模型:
-
V模型:
-
UP:
设计模式
- 创建型模式(Creational Patterns):
这些模式关注对象的创建机制,以确保在系统中适当地创建和配置对象。- 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。
- 工厂方法模式(Factory Method Pattern):定义一个创建对象的接口,但让子类决定具体实例化哪个类。
- 抽象工厂模式(Abstract Factory Pattern):提供一个接口,用于创建一系列相关或依赖对象的家族,而不需要指定具体类。
- 建造者模式(Builder Pattern):
- 原型模式(Prototype Pattern):
- 结构型模式(Structural Patterns):
这些模式关注对象之间的组合,以形成更大的结构。适配器模式
(Adapter Pattern):装饰器模式
(Decorator Pattern):- 桥接模式(Bridge Pattern):
- 组合模式(Composite Pattern):将对象组合成树结构以表示部分-整体层次结构。
- 外观模式(Facade Pattern):为子系统提供一个一致的接口,以简化与子系统的交互。
- 享元模式(Flyweight Pattern):
- 代理模式(Proxy Pattern):为其他对象提供一个代理以控制对这个对象的访问。
- 行为型模式(Behavioral Patterns):
这些模式关注对象之间的职责分配,以及如何在对象之间进行通信。责任链模式
(Chain of Responsibility Pattern):- 命令模式(Command Pattern):将请求封装为对象,以使调用操作的对象参数化、排队、记录和撤销操作。
- 解释器模式(Interpreter Pattern):为语言创建解释器,用于解释特定的语法。
迭代器模式
(Iterator Pattern):中介者模式
(Mediator Pattern):- 备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获和恢复对象的内部状态。
观察者模式
(Observer Pattern):- 状态模式(State Pattern):允许对象在其内部状态改变时改变其行为。
- 策略模式(Strategy Pattern):
- 模板方法模式(Template Method Pattern):定义算法的骨架,但将一些步骤的实现延迟到子类。
访问者模式
(Visitor Pattern):
算法策略
分治法(Divide and Conquer)
:- 分治法是一种将问题划分为更小的子问题,然后递归地解决这些子问题,最后将子问题的解合并以得到原问题的解的算法。
- 归并排序、快速排序、整数乘法、棋盘覆盖、循环赛日程安排、斐波那契数列
动态规划法(Dynamic Programming)
:- 动态规划法是一种通过将问题分解为更小的子问题并存储子问题的解来解决复杂问题的方法。
- 背包问题、最长公共子序列、矩阵链乘法、最短路径问题
贪心法(Greedy Algorithm)
:- 贪心法是一种每次选择局部最优解的策略,以期望最终获得全局最优解。
- 活动选择问题、哈夫曼编码、最小生成树(Kruskal和Prim算法)、单源最短路径(Dijkstra算法)
回溯法(Backtracking)
:- 回溯法是一种通过尝试不同的选择并在不满足条件时回溯到先前的状态来解决问题的方法。
- N皇后问题、0-1背包问题、图着色问题、旅行商问题
分支限界法(Branch and Bound)
:- 分支限界法是一种通过分支问题并定义上下界来限制搜索空间的方法,以找到最优解。
- 0-1背包问题、旅行商问题、作业调度问题、资源分配问题
UML常用图
- 类图:一组对象、接口、写作和他们之间的关系
- 对象图:一组对象以及他们之间的关系
- 用例图:用力、参与者以及他们之间的关系
- 序列图:场景的图像化表示,以时间顺序组织的对象间的交互活动
- 通讯图:强调手法消息的对象之间的组织结构
- 状态图:展现了一个状态机,由状态、转换、事件和活动组成
- 活动图:专注于系统的动态视图,一个活动到另一个活动的流程
类图
泛化(继承):
- 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。
实现:
- 在这里插入图片描述是一种类与接口的关系,表示类是接口所有特征和行为的实现.
依赖:
- 一个类依赖于另一个类的定义。一般而言,依赖关系在Java语言中体现为成员变量、局域变量、方法的形参、方法返回值,或者对静态方法的调用
关联:
- 是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生
聚合:
- 聚合是一种较弱的关联关系,表示一个对象包含另一个对象,
但包含的对象的生命周期不一定依赖于包含对象。
- 例如:
一个大学(整体)包含多个学生(部分)
。学生可以毕业或转学,但他们的生命周期不仅仅取决于大学的存在。
组合:
- 组合是一种较强的关联关系,表示一个对象包含另一个对象,
且包含的对象的生命周期依赖于包含对象
。如果包含对象被销毁,那么它所包含的对象也会被销毁。 - 例如:
一辆汽车(整体)包括引擎、轮胎、座位等部分
。如果汽车被销毁,那么引擎、轮胎、座位等部分也将被销毁
用例图
1.包含关系(include):
-
用例图中的包含关系表示一个用例包含了另一个用例,即包含用例需要在执行过程中引入被包含用例的行为。
-
通常用带有虚线箭头的箭头表示,箭头从包含用例指向被包含用例。箭头的标签描述了包含用例的条件。
-
这种关系表示被包含用例的执行是可选的,它会在包含用例的执行中根据条件来引入。
2.扩展关系(extend):
- 扩展关系表示一个用例可以在一定条件下扩展另一个用例的行为,即扩展用例提供了在基础用例执行时可能发生的额外行为。
- 通常用带有虚线箭头的箭头表示,箭头从扩展用例指向被扩展用例。箭头的标签描述了扩展用例的条件。
- 这种关系表示扩展用例的执行是可选的,它只有在满足条件时才会被触发。
3.泛化关系(generalize):
- 泛化关系表示用例之间的继承关系,其中一个用例(子用例)继承了另一个用例(父用例)的行为。
- 用实线箭头表示,箭头从子用例指向父用例。
- 子用例继承了父用例的特征和行为,通常用于表示用例的层次结构。
内聚
时间聚合
:
过程聚合
:
通信聚合
:
顺序聚合
:
功能聚合
:
非直接耦合
:
耦合
数据耦合
:
标记耦合
:
控制耦合
:
外部耦合
:
公共耦合
:
内容耦合
:
常用协议
带T的除了TFTP,均为TCP 不带T的除了POP3,均为UDP
- FTP:20数据端口/21控制端口,文件传输协议
- HTTP:80端口,超文本传输协议,网页传输
- DHCP:67端口,IP地址自动分配
- SNMP:161端口,简单网络管理协议
- DNS:53端口,域名解析协议,记录域名与IP的映射关系
- TCP:可靠的传输层协议
- UDP:不可靠的传输层协议
- ICMP:因特网控制协议,PING命令来自该协议
- IGMP:组播协议
- ARP:地址解析协议,IP地址转换为MAC地址
- PPP:PPP是一种数据链路层协议,通常用于在两个点之间建立直接连接,例如,个人计算机通过调制解调器拨号连接到互联网服务提供商(ISP)的服务器
- PPPOE:以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。
- PPTP:即点对点隧道协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可以通过密码验证协议(PAP)、可扩展认证协议(EAP)等方法增强安全性。
邮件相关
- SMTP(Simple Mail Transfer Protocol):SMTP是用于发送电子邮件的标准协议。它定义了如何将电子邮件从发件人的邮件服务器传输到接收人的邮件服务器。SMTP通常使用TCP端口25进行通信。
- POP3(Post Office Protocol, Version 3):POP3是用于接收电子邮件的协议。它允许电子邮件客户端从邮件服务器上下载电子邮件,并通常使用TCP端口110。POP3将电子邮件下载到本地设备,并通常将电子邮件从服务器上删除。
- IMAP(Internet Message Access Protocol):IMAP也是用于接收电子邮件的协议,
但与POP3不同
,它允许电子邮件客户端在邮件服务器上管理电子邮件,而不是直接下载到本地设备。IMAP通常使用TCP端口143。 - SMTPS(SMTP Secure):SMTPS是SMTP的安全版本,使用TLS/SSL来加密SMTP通信,以保护电子邮件的隐私和安全。通常使用TCP端口465或587。
- POP3S和IMAPS:这是安全的POP3和IMAP协议,它们使用TLS/SSL来加密电子邮件客户端与邮件服务器之间的通信,以确保数据的机密性。
- MIME(Multipurpose Internet Mail Extensions):MIME是一种标准,用于在电子邮件中传输多媒体内容、附件和非文本数据。它允许电子邮件包含图像、音频、视频和其他多媒体元素
对称加密算法:
AES (Advanced Encryption Standard)
:这是目前广泛使用的对称加密算法之一,具有高度的安全性和性能。DES (Data Encryption Standard)
:虽然已经被认为不安全,但仍然在一些旧系统中使用。3DES (Triple Data Encryption Standard)
:对DES的改进版本,使用多轮加密操作来提高安全性。RC4 (Rivest Cipher 4)
:虽然在过去广泛使用,但由于安全漏洞而不再建议使用。
非对称加密算法:
RSA (Rivest-Shamir-Adleman)
:一种常用的非对称加密算法,广泛用于数字签名和安全通信,https证书常用加密算法
。DSA (Digital Signature Algorithm)
:主要用于数字签名,常与其他加密算法一起使用。ECC (Elliptic Curve Cryptography)
:一种使用椭圆曲线密码学的非对称加密方法,具有高度的安全性和效率。
哈希函数:
SHA-256和SHA-3
:SHA-256是一种安全散列算法,用于生成固定长度的哈希值,通常用于数据完整性检查和密码存储。MD5
:尽管已经不再安全,但在某些应用中仍在使用。
评论
匿名评论隐私政策