目录
第一章 软件工程基础知识
1.1 软件开发模型
(理解+重复记忆+软考通刷三遍题型+对题型中关键词敏感)
-
瀑布模型(Waterfall Model):
- 关键特征:线性的阶段流程,每个阶段必须完成才能进入下一个阶段;文档驱动;严格的阶段划分。
- 适用性:适用于需求明确、稳定不变的小型项目;适用于已有成熟解决方案的项目。
-
演化模型(Evolutionary Prototyping Model):
- 关键特征:以原型为基础,逐步迭代和进化;早期交付可运行版本;用户反馈驱动。
- 适用性:适用于需求不明确或易变的项目;适合需要快速响应市场变化的情况。
-
增量模型(Incremental Model):
- 关键特征:分阶段交付、独立可交付。
- 适用性:适合大型复杂系统;允许早期交付核心功能;灵活应对变更;适合有阶段性目标的项目。
-
螺旋模型(Spiral Model):
- 关键特征:风险驱动:结合了迭代和增量,强调风险评估;多阶段:每个迭代包含规划、风险分析、工程、评估等多个阶段。
- 适用性:适用于高风险项目;适合需求不明确、规模较大且复杂的项目。
-
快速原型模型(Rapid Prototyping Model):
- 关键特征:(快速迭代,逐步完善)快速构建一个可交互的原型供用户试用;根据用户反馈修改和完善原型。
- 适用性:适用于需求模糊或不确定的情况;有利于用户参与,提高最终产品的满意度;
- 缺点:不适合大型系统开发;
-
V模型(V-Model):
- 关键特征:强调验证和确认活动与开发阶段对应;测试计划与开发同步进行。
- 适用性:适用于对测试要求严格、安全性要求高的项目;适合需求明确且稳定的情 况;不适合需求频繁变化的项目。
-
喷泉模型(Fountain Model):
- 关键特征:强调迭代性和无间隙;适合面向对象的软件开发过程。
- 适用性:灵活性强,适合变化频繁的项目;适用于面向对象的开发;适合持续集成和演进的需求。
-
基于构件的开发模型(Component-Based Development Model):
- 关键特征:组合重用:以已有软件构件为基础进行快速开发,减少重复工作。模块化 设计:强调软件的模块化设计,方便构件的替换和更新。。
- 适用性:适用于重用度高的项目;适合于有现成组件可用的场合;可以加快开发速度,降低开发成本。
1.2 系统设计---采用了结构化方法的结构化设计
(理解)
1.高内聚:指一个模块内部的各个元素之间紧密相关,功能集中。高内聚的模块完成特定的任务或功能,易于理解和维护。例如,一个处理用户身份验证的模块只包含与用户身份验证相关的代码和数据。
2.低耦合:指不同模块之间的依赖关系尽量减少。低耦合使得一个模块的变化对其他模块的影响降到最低,减少了维护的复杂性。例如,两个模块之间通过接口或消息传递来交互,而不是直接访问彼此的内部数据。
1.3 软件开发项目管理
(刷题型+熟练求最早开始时间/最晚开始时间)
1.Gantt图:水平条形图,以日历为基准描述项目任务。
Gantt图能清晰地描述每个任务从何时开始,到何时结束,任务的进展情况以及各个任务之间的并行性。但它不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在,也不能反映计划中有潜力的部分。
2.PERT图(Program Evaluation Review Technique,程序评估与审查技术):主要用于分析和表示项目任务之间的相互依赖关系。PERT图帮助团队识别项目的关键路径,评估可能的时间和成本,进而合理安排项目进度。
3.CPM(Critical Path Method,关键路线法)
3.1 最早开始时间(earliest start time,ES)是指某项活动能够开始的最早时间。
3.2 最早结束时间(earliest finish time,EF)是指某项活动能够完成的最早时间。
EF=ES+工期估计
3.3 最迟结束时间(latest finish time, LF)是指为了使项目在要求完工时间内完成,某项活动必须完成的最迟时间。
3.4 最迟开始时间(latest start time, LS)是指为了使项目在要求完工时间内完成,某项活动必须开始的最迟时间。
LS=LF﹣工期估计(LS和LF通过反向推出)
4. 做题思路
.正向计算
· 目的:计算最早时间 ·方法:根据逻辑关系
· 方向:从网络图始端向终端计算
. 第一个任务的开始为项目开始时间
. 任务完成时间为开始时间加持续时间
. 后续任务开始时间根据前置任务的时间和搭接时间而定
·多个前置任务存在时,根据最迟的任务时间定
· 反向计算﹣计算最晚时间
· 目的:计算最晚时间
· 方法:根据逻辑关系
.方向:从网络图终端向始端计算
. 最后一个任务的完成时间为项目完成时间
· 任务开始时间为完成时间减持续时间
· 前置任务完成时间根据后续任务的时间和搭接时间而定
.多个后续任务存在时,根据最早的任务时间定
题型1:(比较简单)
题型2:(不易掌握,B站+软考通刷题型,熟能手巧)
1.4 软件质量
1.软件质量模型由三层构成:
第一层 质量特性
第二层 质量子特性
第三层 度量指标
2.质量特性和质量子特性含义:
(选择题,软考通辅助刷题记忆,多刷几遍)
(1)功能性 :与一组功能及其指定的性质有关的一组属性。这里的功能是指满足明
确或隐含需求的那些功能。
· 适合性 : 与规定任务能否提供-一组功能以及这组功能的适合程度有关的软件属性
· 准确性 : 与能否得到正确的或相符的结果或效果有关的软件属性。
· 互用性 : 与同其他指定系统进行交互操作的能力有关的软件属性。
· 依从性 : 使软件服从有关的标准、约定、法规及类似规定的软件属性。
· 安全性 : 与避免对程序及数据的非授权的故意或意外访问的能力有关的软件属性
(2)可靠性 :在规定的一段时间内和规定的条件下,软件维持其性能水平的
能力有关的一组属性。
· 成熟性 : 与由软件故障引起失效的频度有关的软件属性
· 容错性 : 与在软件错误或违反指定接口情况下,维持指定的性能水平的能有关
的软件属性。
· 易恢复性 : 与在故障发生后重新建立其性能水平并恢复直接受影响数据的能力
以及为达此目的所需的时间有关的软件属性。
(3) 易使用性 : 与为使用所需的努力和由一组规定的或隐合的用户对这样的使用所
做的个别评价有关的一组属性。
· 易理解性 : 与用户为理解逻辑概念及其应用范围所需努力有关的软件属性。
· 易学性 : 与用户为学习软件应用所需努力有关的软件属性。
· 易操作性 : 与用户为进行操作或控制所需努力有关的软件属性。
(4) 效率 : 与在规定条件下,软件的性能水平与所用资源量之间的关系有关的一组属性,
· 时间特性 : 与软件执行其功能时的响应和处理时间以及吞吐量有关的软件属性。
· 资源特性 : 与软件执行其功能时所使用的资源量以及使用资源的持续时间有关的
软件属性。
(5) 可维护性 : 与进行规定的修改所需努力有关的一组属性。
· 易分析性 : 与为诊断缺陷或失效原因,或为判定待修改的部分所需努力有关
的软件属性。
· 易改变性 : 与进行修改、调试或适应环境变化所需努力有关的软件属性
· 稳定性 : 与修改造成的未预料后果的风险有关的软件属性。
· 易测试性 : 与为 确认经修改软件所需努力有关的软件属性
(6)可移植性 : 与软件从一种环境转移到另一种环境的能力有关的一组属性。
· 适应性 : 与软件无须采用有别于为该软件准备的处理和手段就能适应规定
的环境有关的软件属性。
· 易安装性 : 与在指定环境下安装软件所需努力有关的软件属性。
· 一致性 : 使软件服从与可移植性有关的标准或约定的软件属性。
· 易替换性 : 与软件在该软件环境中用来替代指定的其他软件的可能和努力
有关的软件属性。
3.软件度量
(找几个题练一练,知道怎么算就行,超级简单)
McCabe度量法,又称为环路复杂度,具体的求法为:假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为
V(G)= m - n + 2
V(G)为有向图G中的环路数,
m为图G中弧的个数(数有几条边),
n为图G中的节点数。
1.5 数据流图
(考大题,15分,一般难度,直接上软考通把题都刷了就会了)
1.通过一道题理解顶层数据流图,eg:
答案:
错误1:外部实体A和B之间不能存在数据流;
错误2:外部实体A和数据存储H之间不能存在数据流;
错误3:加工2的输入/输出数据流名字相同;
错误4:加工4只有输入没有输出;
错误5:加工5只有输出没有输入。
2. 考法:父图和子图是否平衡?
解题关键:任何一张DFD子图边界上的输入/输出数据流必须与其父图中对应的加工的输入输出数据流保持一致。两张图片理解,
下午题第一题第三、四小问:
一个加工至少有一个输入数据流和一个输出数据流
加工只有输入没有输出称为:黑洞
加工只有输出没有输入称为:白洞
加工的输入数据不足以产生输出数据:灰洞
1.6软件设计
(选择题,看到要能反应过来描述的是什么内聚、什么耦合)
1.内聚性:模块内部各个元素彼此紧密结合的程度的度量;
2.耦合性:模块间互相连接的紧密程度的度量;
1.8 UML建模
(15分大题)
软件设计师备考(三)——UML(关系和UML图)_软件设计师uml图-CSDN博客
1.统一建模语言(Unified Modeling Language,UML)
UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图。
HTML语法基础
UML一些名词解释
软件设计师备考(四)——UML设计模式_软考uml设计模式-CSDN博客
用例图(Use Case Diagram):
• 用途:用来描述系统的功能需求和系统与外部用户(参与者)之间的交互。
• 描述:展示了系统提供的功能以及用户如何与这些功能交互。用例图关注于系统的功能性需求和用户视角。
• 类图(Class Diagram):
• 用途:用来描述系统的静态结构,特别是系统的类、接口、它们的属性、方法以及它们之间的关系。
• 描述:展示了系统中的类和接口的结构,以及它们如何相互关联。类图关注于系统的静态视图,即系统的结构。
• 对象图(Object Diagram):
• 用途:用来展示类图中的一个特定实例的状态,即对象的实例化视图。
• 描述:是对类图中的一个或多个类的实例的具体表示,展示了在特定时间点对象的属性值和它们之间的关系。对象图是类图的一个实例,关注于系统的动态视图。
• 协作图(Collaboration Diagram):
• 用途:用来展示对象之间的交互,强调对象间如何协作来完成一个特定的用例或功能。
• 描述:展示了对象之间的动态合作关系,以及它们如何通过消息传递来交互。协作图关注于系统的动态视图,即对象之间的交互过程。
• 交互图
• 用于对系统的动态方面进行建模。
• 交互图的表现:序列图。通信图、交互概览图、计时图。
• 3 通常会情况包括:对类、接口、构建和结点的具体的或原型化的实例以及他们之间传递的消息进行建模。
• 生成器模式(Builder Pattern):
• 目的:用于构建一个复杂的对象,其构建过程需要多个步骤,且对象的构建过程可能变化。
• 结构:包含`Builder`接口、`ConcreteBuilder`实现类、`Director`类和`Product`产品类。
• 用途:当创建复杂对象的步骤很多,或者对象的创建过程需要灵活变化时使用。
• 策略模式(Strategy Pattern):
• 目的:定义一系列算法,并将每个算法封装起来,使它们可以互换使用。
• 结构:包含`Strategy`接口、`ConcreteStrategy`实现类和`Context`上下文环境。
• 用途:当需要在运行时选择不同的算法或行为,或者算法可能会频繁变化时使用。
• 单例模式(Singleton Pattern):
• 目的:确保一个类只有一个实例,并提供一个全局访问点。
• 结构:包含一个私有的静态实例和一个公有的静态方法来获取这个实例。
• 用途:当需要严格控制对资源的访问,或者需要一个全局访问点时使用,如配置管理器、线程池等。
• 原型模式(Prototype Pattern):
• 目的:原型模式的主要思想是通过复制 现有的对象来创建新的对象,从而避免创建过程中的重复工作。
• 结构:包含`Prototype`接口和`ConcretePrototype`实现类。
• 用途:当创建对象成本较高,或者需要复制对象时使用,如深拷贝、浅拷贝等。
eg:
算法题知识点:
java知识点
· 面向对象的三大特征:继承性、封装性、多态性;
构造方法
this
继承(Inheritance)
super
封装
final
抽象方法和抽象类(abstract)
抽象方法:只有方法声明,没有具体实现的方法。
eg:public abstract void attack();
注:· 方法声明以分号结束,不含{};
· 类型为 public 或 protected;
抽象类的特性:
· 抽象类无法实例化。
· 抽象类为了继承而生,如果不继承,则毫无意义。
· 抽象类也可以含有普通成员变量和普通成员方法。
抽象类的继承:
· 如果一个类继承一个抽象类,则可以对抽象类的抽象方法进行实现;
· 如果子类选择不实现父类的所有抽象方法,则子类也为抽象类。
eg:
abstract class Animal {
abstract void sound(); // 抽象方法
void sleep() { // 具体方法
System.out.println("Sleeping...");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Bark");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
dog.sound(); // 输出 "Bark"
dog.sleep(); // 输出 "Sleeping..."
Animal cat = new Cat();
cat.sound(); // 输出 "Meow"
cat.sleep(); // 输出 "Sleeping..."
}
}
接口(interface)
接口的主要目的:
-
解耦合:允许一个类可以调用另一个类的方法和属性,即使这两个类在类没有继承关系。
-
扩展:允许一个类可以扩展现有类的功能,添加新方法和属性。
-
标准化:定义一组方法和属性,这些方法和属性可以被其他类实现。
-
模块化:将类和接口组织成模块,以提供更清晰的结构和复用性。
-
类型安全:确保接口方法的实现是类型安全和行为正确。
注:· 接口的所有成员方法都具有public和abstract属性;
· 在接口中定义的成员变量会被默认添加关键字:public static final。
// 定义一个接口
interface Animal {
void sound(); // 接口中的抽象方法
}
// 实现接口的类
class Dog implements Animal {
@Override
public void sound() {
System.out.println("Bark");
}
}
class Cat implements Animal {
@Override
public void sound() {
System.out.println("Meow");
}
}
// 使用接口
public class Main {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
dog.sound(); // 输出 "Bark"
cat.sound(); // 输出 "Meow"
}
}
案例分析第六题 Java 代码注意事项总结:
①注意是否有权限修饰词并拼写对(public,protected,private)
②注意是接口(interfàce)还是抽象类(abstract class)?
如果是接口,抽象方法前不用加修饰词,如果是抽象类,抽象方法前 要加 public abstmct 或者
abstract
③继承类关键字是:extends,实现接口关键字是:implements,注意是小写并拼写对!
④)注意检查好方法是否有返回值?是否有入参?方法返回值和入参要写对!
⑤ 多态情况要注意:ncw对象,不能实例化一个接口,即-new 右侧的类不能是 interface
⑥ 调用父类构造方法:super (有参/无参),调用父类方法:superxxx(),获取父类属性:super.xx.
注意是 super不是 super()
⑦注意详细看题目的中的中文说明,注意看代码注释,注意看打印结果,跟答题有关系
⑧原型模式的 clone 方法返回值是 Object,要强制转换。例:(Rcsume)a.clone()
|||网络与信息安全
||网络协议
TCP/IP协议层级与常考协议表
层级 | 协议名称 |
---|---|
网络接口层 | Ethernet(以太网协议) PPP(点到点协议) HDLC(高级数据链路控制协议) |
网际层 | IP(网际协议) ICMP(互联网控制报文协议) IGMP(互联网组管理协议) ARP(地址解析协议) RARP(反向地址解析协议) |
传输层 | TCP(传输控制协议) UDP(用户数据报协议) |
应用层 | HTTP(超文本传输协议) HTTPS(安全超文本传输协议) SMTP(简单邮件传输协议) POP3(邮局协议版本 3) IMAP(互联网消息访问协议) DNS(域名系统) FTP(文件传输协议) Telnet(远程登录协议) SNMP(简单网络管理协议) |
各协议作用简述如下:
Ethernet(以太网协议):定义局域网物理层和数据链路层标准,实现局域网内设备间高速数据传输。
PPP(点到点协议):用于在点到点链路上建立、配置和测试数据链路连接,常被用于拨号上网等场景。
HDLC(高级数据链路控制协议):面向比特的数据链路层协议,提供可靠的数据传输,常用于广域网通信。
IP(网际协议):网络层核心协议,为数据包在不同网络间传输提供逻辑地址和路由功能。
ICMP(互联网控制报文协议):用于在 IP 主机、路由器之间传递控制消息,如报告错误、查询网络状态等。
IGMP(互联网组管理协议):用于管理多播组,让路由器知晓哪些主机属于哪些多播组,实现多播数据转发。
ARP(地址解析协议,Address Resolution Protocol):将 IP 地址解析为 MAC 地址,以实现局域网内数据帧的正确传输。
RARP(反向地址解析协议):与 ARP 相反,将 MAC 地址解析为 IP 地址,不过使用较少。
TCP(传输控制协议,Transmission Control Protocol):提供面向连接、可靠的字节流传输服务,确保数据准确无误地到达目的地。
UDP(用户数据报协议,User Datagram Protocol):提供无连接、不可靠的数据传输服务,适用于对实时性要求高但能容忍一定数据丢失的应用。
HTTP(超文本传输协议):用于 Web 浏览器和服务器之间传输超文本信息,是网页浏览的基础协议。
HTTPS(安全超文本传输协议):在 HTTP 基础上加入加密和认证机制,保障数据传输的安全。
SMTP(简单邮件传输协议):负责将邮件从发件人邮件服务器发送到收件人邮件服务器。
POP3(邮局协议版本 3):用于用户从邮件服务器下载邮件到本地客户端。
IMAP(互联网消息访问协议):允许用户在服务器上管理邮件,可在不下载邮件的情况下对服务器上的邮件进行操作。
DNS(域名系统, Domain Name System):将域名转换为 IP 地址,使用户能通过易记的域名访问网络资源。
FTP(文件传输协议,File Transfer Protocol):用于在不同主机间进行文件的上传和下载,提供可靠的文件传输服务。
Telnet(远程登录协议):允许用户远程登录到其他主机,进行命令执行和操作,但安全性差,逐渐被替代。
SNMP(简单网络管理协议,Simple Network Management Protocol):用于网络设备的管理与监控,方便管理员获取设备信息和进行配置。
||Internet服务(端口号考察)
1.DNS服务
使用UDP端口,端口号是:53
2.远程登录服务
Telnet协议,TCP端口,端口号:23
3.电子邮件服务(都用TCP端口)
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),端口号:25
· POP3(Post Office Protocol v3,邮局协议第3版),接收邮件,端口号:11
4.www服务
交互式图形界面,TCP端口,端口号:80
5.文件传输服务(用于客户机与服务器之间传输文件)
内部建立两条链接:
· 控制连接(用于传输命令和参数),端口号:21
· 数据连接(用于传送文件),端口号:20
|||计算机网络||访问控制策略的分类
1. 自主访问控制(DAC,Discretionary Access Control):由资源的所有者决定谁可以访问资源。
2. 强制访问控制(MAC,Mandatory Access Control):由系统强制实施访问控制规则,用户和管理员不能随意更改。
3. 基于角色的访问控制(RBAC,Role-Based Access Control):根据用户的角色来分配访问权限。
参考原文链接:
https://blog.csdn.net/weixin_39291021/article/details/140889718
软件设计师备考(三)——UML(关系和UML图)_软件设计师uml图-CSDN博客
【软考】中级软件设计师 23年上半年 早上 综合知识 下午案例真题_软件设计师中级真题-CSDN博客
刷题总结
(很乱,放在这里只是为了能在手机上随时复习,建议自己整理适合自己的)
A.若Y∈X∈U ,则X→Y为F所蕴含。这是自反律,也称为自反规则,表示一个属性集合X决定了其中的一个属性Y
B.若X→Y, Y→Z ,则X→Z为F所蕴含。这是传递律,表示如果一个属性集合X决定 了另一个属性集合Y ,而Y又决定了另一个属性集合Z ,那么X也决定了Z
C.若X→Y, Z∈Y ,则X→Z为F所蕴含。这是增广律,表示如果一个属性集合X决定 了另一个属性集合Y ,而Z属于Y ,那么X也决定了Z
D.若X→Y, X→Z ,则X→YZ为F所蕴含。这是合并律,表示如果一个属性集合X同时决定了另一个属性集合Y和属性集合Z ,那么X也决定了YZ
稳定排序算法:
- 冒泡排序(Bubble Sort):相同元素的相对顺序不会改变。
- 插入排序(Insertion Sort):相同元素的相对顺序保持不变。
- 归并排序(Merge Sort):采用分治法,能够保持相同元素的相对顺序。
- 计数排序(Counting Sort):通过统计元素出现的次数,保持相对顺序。
- 基数排序(Radix Sort):基于稳定的子排序,能够保持相同元素的相对顺序。
不稳定排序算法:
- 选择排序(Selection Sort):在选择最小(或最大)元素的过程中可能会改变相同元素的相对顺序。
- 快速排序(Quick Sort):在划分过程中可能会改变相同元素的相对顺序。
- 堆排序(Heap Sort):由于堆的性质,相同元素的相对顺序可能会被打乱。
2025/5月之前,不定时更新