J04 测试
J04 测试
验证与确认 (Vérification
et Validation)
验证 (Vérification)
确认我们是否正确地制作了产品。
软件是否符合其规格说明?
确认 (Validation)
确认我们是否制作了正确的产品。
软件是否满足用户需求?
验证方法 (Méthodes de
vérification)
检查 (Inspection)
静态测试,包括规格说明和代码的审查。
测试 (Test)
动态测试,通过输入数据运行代码。
符号验证 (Vérification symbolique)
抽象执行,生成输入数据或验证特定点(如代码覆盖、计算精度等)。
形式验证 (Vérification formelle)
基于证明或模型检测(Model Checking)。
为什么要测试?(Pourquoi tester
?)
研究表明,设计阶段修复错误的成本与生产阶段相比,成本比为
1:100。
在开发 NASA 卫星嵌入式软件时,测试占开发预算的
...
J03.5 质量 qualité
J03.5 质量 qualité
SOLID
单一职责原则(SRP: Single Responsibility
Principle)
开闭原则(OCP: Open/Closed Principle)
里氏替换原则(LSP: Liskov Substitution
Principle)
接口隔离原则(ISP: Interface Segregation
Principle)
依赖反转原则(DIP: Dependency Inversion
Principle)
SRP:单一职责原则
一个类(一个函数、一个方法)应该只承担一个职责。
每个职责的变更会引发类的修改(规范的变动)。
一个承担多重职责的类会导致职责之间的耦合。
OCP:开闭原则(Open/Closed Principle)
一个模块(类、包)应对扩展开放,对修改关闭:
对扩展开放:模块可以通过新行为扩展。
对修改关闭:这些扩展不需要修改已有代码。
使用面向对象机制:组合、继承、抽象类、接口等。
根据以下需求识别开闭点:
客户的可扩展性需求。
...
J03 Java基础 04:补充
J03 Java基础 04:补充
Java修饰符
访问控制修饰符
访问控制修饰符用于控制类、方法、变量等的访问权限。
修饰符
同类
同包
子类
其他包
private
✅
❌
❌
❌
无修饰符
✅
✅
❌
❌
protected
✅
✅
✅
❌
public
✅
✅
✅
✅
类级别修饰符
final
表示类不能被继承:
12final class Example {}
abstract
表示类是抽象类,不能实例化,必须由子类实现:
1234abstract class Example { abstract void display();}
strictfp
用于限制浮点运算精度,确保结果一致(跨平台):
12strictfp class Example {}
方法级别修饰符
final
方法不能被重写:
1234class Example { ...
J03 Java基础 03:集合框架
J03 Java基础 03:集合框架
集合框架
Java 集合框架(Java Collections Framework, JCF) 是 Java
提供的一套标准化 API,用于处理集合(Collection)类的数据结构。
Java 集合框架包含以下几个核心部分:
接口(Interfaces):定义了集合的基本行为规范,即上图黄色部分。
实现类(Implementations):为接口提供具体实现,即上图蓝色和紫色部分。
工具类(Utility
Classes):提供对集合的操作支持,如排序、查找等。
在使用时,接口是不能直接实现的,需要使用具体的类实现。
collection接口
collection接口是所有集合类的跟接口,可以使用集合类的6种方式实现。
例如学生成绩储存的例子:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546public class StudentScoreManager { pub ...
J03 Java基础 02:面向对象
J03 Java基础 02:面向对象
Java类
类是一组对象的描述,一个对象是其类的示例。
类和对象和引用
一个简单的类可以如下定义:
1234public class Complex{ public double real; public double imag;}
这个类用实部和虚部两个属性描述了复数。
我们可以使用new
来实现一个对象:complex c = new Complex()
。由于我们没有在类中定义构造方法,程序会按照默认的构造方法,以默认值初始黄两个双精度浮点数。
在上一条语句中,c
是对象的一个引用而不是对象本身。可以通过对象的引用访问public
属性。
类的方法
接下来,我们可以给类增加一些方法。基于面向对象的思想,我们不应该直接访问类的属性,类应该提供一些接口,来帮助我们获取和设置属性。
123456789101112131415161718192021222324public class Complex { private double real; // 实部 priv ...
J03 Java基础 01:基本语法
J03 Java基础 01:基本语法
概述
Java由Sun
Microsystems于1995年开发(后被Oracle收购),语法源自C++,最初设计用于交互式电视,随后用于在浏览器中执行代码,是最广泛使用的编程语言之一。
不同语言的工作方式
Python
12345def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1)
解释器通过读取和执行代码,将指令翻译为二进制代码,并请求处理器执行相应的操作。
编译语言(C, C++)
123456int factorial(int n) { if (n == 0) return 1; else return n * factorial(n - 1); }
源代码通过编译器翻译为等效的二进制代码,并直接在处理器上执行。
虚拟机语言(Java)
12345678public class Math { ...
J02 统一建模语言 UML
J02 统一建模语言 UML
简介
概述
统一建模语言(Unified Modeling Language, UML)是一种计算机建模语言
以图形化的符号表示系统的结构与行为
由对象管理组织(OMG)制定的标准语言,支持多种建模工具,同时具备良好的可扩展性
语言的定义
UML 作为一种语言,由以下部分组成:
基本元素:包括词汇和构造元素,是语言的基本构建块。
抽象语法:定义如何从现有元素中构造新元素的规则。
具体语法:定义元素的呈现方式(例如符号或标记)。
语义:为基本元素和构造元素赋予意义,这些语义可以是正式的或非正式的。
模型与图表
模型:一个包含建模元素的集合,用于描述系统的特定方面。
图表:模型的子集,通过图形表示选定的建模元素。图表聚焦于模型的某一特定视角,但并不完整表示模型本身。
建模元素的关系:建模元素可以出现在零个、一个或多个图表中。删除图表中的元素不等于从模型中移除该元素。
建模元素的组织
包(Paquetage):一种管理建模元素的组织机制,适用于结构实体、行为实体及其他包的管理。
包之 ...
J01 引言:面向对象和程序设计
J01 引言:面向对象和程序设计
在一年之前学过一次面向对象的程序设计,上次课程侧重于编程,这次可能会更加侧重一些面向对象和程序设计方法一些,当然,如果课程涉及的话。
软件工程
软件工程是设计conception和实施mise en œuvres软件产品与程序的一系列活动,旨在合理化rationnaliser软件的生产和维护production et son suivi。
软件工程包括指定spécifier、开发développer和演化软件faire évoluer的所有活动,同时需要运用方法méthode、技术technique、工具outil并考虑成本coût。
开发流程
领域建模 Modélisation du domaine:
例如企业或业务背景建模,独立于特定软件。
近似于本体论(Ontology)。
需求表达/需求工程
Expression des besoins / ingénierie des exigences:
功能需求FP:系统必须提供的服务。
非功能需求FC:运行限制条件。
使用不同场景或用例描 ...
RM6 4G 和 5G
RM6 4G 和 5G
4G中的资源分配
正交频分复用(Orthogonal Frequency Division Multiplexing, OFDM)
将频带分为窄的子载波。
OFDM接入(OFDMA)确保资源分配的灵活性
在时间和频率上分配资源。
根据用户需求分配资源。
LTE协议
频率划分
一个子带称为资源块(Resource Block,
RB)或物理资源块(Physical Resource Block, PRB)。
时间视角:每0.5毫秒发射7个符号到一个子载波。
Radio Element
(RE):在一个子载波上的一个符号发射单位:
\[
1 \, \text{RE} = 15 \, \text{kHz} \times 0.072 \, \text{ms}
\]
时间划分
1帧由10毫秒构成,由2个slot形成1个子帧,10个子帧构成1帧。
1个格子 = 1个Radio Element (RE)
不同RE的用途:
参考信号(Reference Signal, RS): ...
RM5 Erlang 容量
RM5 Erlang 容量
流量、容量和 QoS
覆盖的维度设计:
确保在小区边缘的用户能够以较高概率解码信号,同时考虑干扰的影响。
例如,2G 网络中,使用 200 kHz 带宽的用户发射功率为 1W 时,\(N=7\) 的簇覆盖半径为 1.8 公里,\(N=9\) 的簇覆盖半径为 2 公里。
服务质量 (QoS):
用户感知的质量与服务类型相关,因此有服务质量 (QoS) 的定义:
语音呼叫的阻塞率。
数据服务(如邮件、网页)的传输时间。
流量分析的必要性:
需要明确每种服务的流量特性及其资源需求。
→无记忆性,泊松过程和马尔可夫链
无记忆性
若随机变量 \(X\)
表示某事件的持续时间,当以下条件成立时,称 \(X\) 具有无记忆性:\(P(X > x + t | X > t) = P(X >
x)\)
对于任意具有无记忆性的随机变量 \(X\),如果我们定义 \(F(t) = P(X > t)\),则存在一个常数 \(\lambda > 0\),使得 \(F(t) = ...