1、面向对象设计得四种关系
关系类型 | 概念 | 特点 | 例子 |
关联关系 | 表示不同类的对象之间有联系,但是一方并不完全拥有另一方,也不对其生命周期负责。关联关系可以是单向的也可以是双向的。耦合度高 | 通常用来表示不同类的对象之间的联系,如“使用”或“参与”等。关联关系有方向,表示数据的流向或者控制流向。 | 学生和课程之间的关系。一个学生可以选多门课程,一门课程也可以被多个学生选择。 |
依赖关系 | 一种使用关系,指一个类的实现需要依赖于另一个类的定义。通常,一个类的变更会影响到依赖它的类。依赖关系比关联关系的耦合度更低。 | 表示一个类使用另一个类的方法或资源,但是两者之间不是强关联。 | 一个报表类(Report)可能依赖于数据库连接类(DatabaseConnection)来获取数据。 |
实现关系 | 在类与接口之间的关系。类通过实现接口来实现接口中定义的所有抽象方法。 | 接口定义了一组方法,而实现该接口的类必须实现这些方法。实现关系体现了接口和实现分离的设计原则。 | 一个汽车类实现了一个可驾驶接口,表明汽车类必须实现可驾驶接口中的方法。 |
泛化关系 | 是一种继承关系,表示一般与特殊的关系,即子类是父类的一个特殊化。 | 在泛化关系中,子类继承了父类的所有特性和行为,并可以添加新的特性和行为或重写父类的方法。 | 动物类可以被泛化为哺乳动物类和鸟类,哺乳动物类和鸟类是动物类的特殊化。 |
2、主动攻击与被动攻击
1)主动攻击
主动攻击是指攻击者直接对目标系统进行破坏或干扰的行为,这种攻击通常会对系统造成明显的影响或改变。主动攻击的主要类型包括:
拒绝服务攻击(DoS/DDoS):通过消耗目标网络资源或干扰通信,使服务不可用。
中间人攻击(MITM):攻击者置身于通信双方之间,秘密拦截或篡改双方通信内容。
SQL注入攻击:通过在Web应用的查询表单中输入恶意SQL代码,攻击者可以执行非法数据库操作。
跨站脚本攻击(XSS):攻击者通过将恶意脚本注入网页,当用户浏览该页时,脚本会执行,可能窃取用户信息。
2)被动攻击
被动攻击是指攻击者试图获取系统的信息而不影响系统资源的行为,通常不易被发现。被动攻击的主要类型包括:
流量分析:通过分析网络流量,攻击者尝试获取有关网络通信的信息,如发送和接收方、传输频率
电子侦听/嗅探:攻击者通过嗅探工具监听网络上的数据传输,寻找未加密的数据或通信内容。
社交工程:虽然通常被认为是主动攻击,但某些形式如钓鱼攻击,在早期阶段可以看作是通过收集用户信息的被动攻击。
侧信道攻击:通过分析系统的物理实现(如功耗、电磁泄露等)来获取加密密钥信息,而不直接攻击加密算法本身。
3、CMMI 能力成熟度模型集成
1)阶段表示法
初始:无质量管理
已管理:有项目过程管理
已定义:有组织级别的标准流程、文档化
量化管理:量化
优化:组织持续进行过程改进
2)连续表示法
4、软件过程模型
瀑布模型:是最早的软件开发模型,它将软件开发流程划分为顺序阶段,每个阶段完成后才开始下一个。需求明确、自顶向下
原型模型:这种模型适用于需求不明确的项目。它通过构建一个工作的原型(一个可展示的软件初版)来帮助理解需求,然后根据反馈迭代改进。
螺旋模型:结合瀑布模型的系统性和原型模型的灵活性。它在每次迭代中增加新的功能,同时考虑风险。
V模型:也称为验证和验证模型,强调开发过程中的测试。它将测试阶段与相应的开发阶段对应起来,以早期发现和解决问题。
增量模型:将项目划分为多个小块,逐一完成,每完成一个小块就是一个可交付的增量。
喷泉模型:是面向对象软件开发的迭代模型,不强调固定阶段,开发过程看起来像是不断循环的喷泉。自底向上
敏捷开发:以人为本、强调快速响应变化,小团队合作,频繁交付小的、可工作的软件版本。
形式化方法模型:通过数学方法来定义、开发和验证软件,适用于对可靠性和安全性要求极高的软件项目。
基于构件的开发模型 (CBSD):重用现有的软件构件来加速开发过程,适用于可以找到可重用构件的项目。
统一过程RUP:大型项目、用例驱动、面向架构、早期识别和解决项目中的高风险。