软件工程基础

软件工程基础

甘特图(Gantt Chart)

关键字:开始、结束时间,并行关系

皮特图(PERT Chart)

关键字:开始、结束时间,依赖关系

黑盒测试

黑盒测试是一种软件测试方法,它专注于软件的功能性需求,而不关心其内部逻辑或结构,通过输入数据和观察输出来验证软件是否按预期工作。

例题:按等价类划分方式,哪个不是好用例,就看谁不在域内的样例多。

McCabe

McCabe(环) = 弧数 - 节点数 + 2

McCabe(环) = 闭合区域 + 1

例题:下图表示通过闭合区域+1,计算环路复杂度,答案为5。

通过弧数(10) - 节点数(7) + 2 同样等于5。

可以用两种方法验证答案正确性。

白盒测试

语句覆盖(行覆盖): 这种类型的白盒测试目的是执行每个语句或代码行至少一次。这有助于识别代码中的未执行语句和死代码。

判定覆盖(分支覆盖): 旨在测试每个条件语句的所有可能结果。通过对每个条件的真假情况进行测试,可以确保代码在不同情况下都能正确地工作。

条件覆盖: 测试每个逻辑条件的所有可能组合。这种测试可确保程序在各种条件下能够正确处理数据。

判定条件覆盖: 设计足够多的测试用例,使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次。

条件组合覆盖: 要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次。满足条件组合覆盖标准的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。

路径覆盖: 这是白盒测试中最严格的一种方法,目的是测试代码中的所有可能路径,以确保程序在所有情况下都正确执行。对于大型软件系统,路径覆盖测试可能过于复杂,但对于一些关键的代码模块,它仍然非常有用。

例1:

例2:同时满足语句、判定、条件、路径判断,此时选择最强的覆盖,即路径覆盖。

例3:

例4: 注意语句覆盖需要2个用例,路径覆盖需要4个样例(判断一不可以做回环),McCabe也是4。

软件维护类型

改正性: 原有需求未发现的错误进行改正

完善性: 新增或变更需求,进行修改

适应性: 不改变基本功能前提下,提升可扩展性或性能

面向对象测试的四个层次

算法层: 测试类中的方法(单元测试)

类层: 测试类中方法和属性的相互作用

模板层(主题层): [通过消息]测试一组类对象之间的相互作用(子系统测试)

系统层: 把各个子系统组装成完整的面向对象软件系统进行测试

设计模式原则

共同封闭原则: 当需要修改时,所有的修改都可以在一个包内进行,避免影响其他包。

共同重用原则: 强调分类的概念,即具有相同关系或关联比较紧密的类应该分到一组中,这样方便修改和客户端的调用。 即如果重用了这组接口(或类)中的一个,那么也应该重用这组接口(或类)中的其他部分

开放封闭原则: 对扩展开放、对修改关闭。

单一职责: 主张一个类应该只有一个引起它变化的原因,即一个类应该只有一个职责。

里氏替换原则: 子类型必须能够替换掉它们的父类型。这意味着,如果你使用的是父类型的对象,那么你可以在不改变程序行为的情况下,用子类型的对象替换它。

依赖倒置原则: 高层模块不应该依赖于低层模块,两者都应该依赖于抽象。代码应该依赖于抽象接口或基类,而不是具体的实现类。

接口分离原则: 当一个接口由于太大而显得臃肿时,应该将其拆分成多个更小的接口,每个接口只包含与一组特定客户端相关的操作。

数据库各阶段设计

需求分析: 数据流图、数据字典、需求说明书

概念结构设计: ER模型

逻辑结构设计: 关系模式(表)

UML序列图

用例图

类图

序列图

类的分类

  • 实体类 描述系统中的每个实体,如学生、用户、商品等,它们通常需要永久存储,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。
  • 控制类 用于实现应用程序的执行逻辑,将控制类抽象出来可以降低界面和数据库之间的耦合,身份验证属于控制类。
  • 边界类 用于描述外部参与者与系统之间的交互,位于系统与外界的交接处(接口),包括所有窗体、报表、打印机和扫描仪等硬件的接口,以及与其他系统的接口。

软件需求

  • 功能需求:产品必须具备的功能
  • 非功能需求:可靠性、性能、响应时间等品质
  • 设计约束:对解决方案的一些约束说明

软件开发流程

  • 需求分析:确定功能、非功能需求。 输出:数据流图、数据字典、实体联系图、状态迁移图。
  • 概要设计:将需求转化为软件的模块划分,确定模块间调用关系。
  • 详细设计:将模块进行细化,得到详细算法和数据结构
  • 编码
  • 测试
相关推荐
holeer2 天前
《软件工程概论》作业一:新冠疫情下软件产品设计
软件工程·axure·敏捷开发·原型设计
Wlq04152 天前
系统架构设计师-英文翻译题(2022年下半年)
软件工程
Wlq04153 天前
软件工程-数据流图
软件工程
陈俊杰13 天前
软件工程的详细学习要点和学习方向
学习·软件工程
张瑞东3 天前
系统架构设计师-知识产权与标准化
系统架构·软件工程
sp_fyf_20244 天前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-29
人工智能·深度学习·神经网络·测试工具·算法·语言模型·软件工程
Logrus IT4 天前
如何提高游戏本地化的质量使用QE门户网站Logrus IT
ui·软件工程·玩游戏
tealcwu4 天前
【软件工程】模块化思想概述
unity·游戏引擎·软件工程
雾江流5 天前
戏曲多多 1.0.6.0 专为电视端设计的戏曲与生活内容APP,同样适用于安卓手机,方便老年人使用
智能手机·生活·软件工程
以全速前进6 天前
[2024年]最新VMware Workstation虚拟机下载 带链接
java·软件工程