软件工程基础

软件工程基础

甘特图(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序列图

用例图

在这里插入图片描述

类图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

序列图

在这里插入图片描述

类的分类

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

软件需求

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

软件开发流程

  • 需求分析:确定功能、非功能需求。 输出:数据流图、数据字典、实体联系图、状态迁移图。
  • 概要设计:将需求转化为软件的模块划分,确定模块间调用关系。
  • 详细设计:将模块进行细化,得到详细算法和数据结构
  • 编码
  • 测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/649520.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频号小店应该怎么操作呢?不了解的小伙伴快来看!

大家好,我是电商小V 普通人想利用视频号小店赚钱,奈何自己不会直播,不会拍视频,那么普通人应该怎么在视频号中赚钱呢?今天咱们就来详细的说一下, 其实不直播,不拍视频也是可以在视频号上面卖货赚…

学校智慧公厕的有线与无线方案,怎样去选择才合适

在当今数字化时代,学校也在积极引入智慧公厕系统,以提升校园环境的舒适度和管理效率。然而,面对智慧公厕的有线与无线方案,如何做出合适的选择成为了一个关键问题。 一、智慧公厕无线方案优势 首先来看无线方案。如前文所述&#…

[SMB协议][问题][解决方法]电视访问共享视频 | 该共享设备尚未共享任何文件 | 音频格式不支持 | 播放卡顿

1.该共享设备尚未共享任何文件 | 一些智能电视(比如价格比较美丽,或者比较老的)兼容性可能较差, 1. 一般而言win 10默认关闭smb 1.0默认开启着smb 2.0,smb 1.0不安全,比较过时的技术,且微软建议…

SpringBoot 上传文件示例

示例效果&#xff1a; 前端代码&#xff1a; <html> <head><title>上传文件示例</title></head> <body> <h2>方式一&#xff1a;普通表单上传</h2> <form action"/admin/upload" method"post" enctyp…

Flink DataStream API 介绍

一、介绍 官网 DataStream API 得名于特殊的 DataStream 类&#xff0c;该类用于表示 Flink 程序中的数据集合。你可以认为 它们是可以包含重复项的不可变数据集合。这些数据可以是有界&#xff08;有限&#xff09;的&#xff0c;也可以是无界&#xff08;无限&#xff09;的…

视觉语言模型详解【VLM】

视觉语言模型&#xff08;Visual Language Models&#xff09;是可以同时从图像和文本中学习以处理许多任务的模型&#xff0c;从视觉问答到图像字幕。在这篇文章中&#xff0c;我们将介绍视觉语言模型的主要组成部分&#xff1a;概述&#xff0c;了解它们的工作原理&#xff0…

[自动驾驶技术]-8 Tesla自动驾驶方案之硬件(AI Day 2022)

特斯拉在AI Day 2022先介绍了AI编译器&#xff0c;后面又介绍了Dojo的硬件软件&#xff0c;软件部分和AI编译器有部分重叠&#xff0c;本文介绍还是延用AI Day的思路&#xff0c;分为三部分&#xff1a;AI编译和推理&#xff0c;Dojo硬件&#xff0c;Dojo软件。 特斯拉车道检测…

MATLAB导入导出Excel的方法|读与写Excel的命令|附例程的github下载链接

前言 前段时间遇到一个需求&#xff1a;导出变量到Excel里面&#xff0c;这里给出一些命令&#xff0c;同时给一个示例供大家参考。 MATLAB读/写Excel的命令 在MATLAB中&#xff0c;可以使用以下命令来读写Excel文件&#xff1a; 读取Excel文件&#xff1a; xlsread(filen…

Jlink卡死 JFlash keil 盗版JLINK

现象&#xff1a;用Keil打开Jlink配置页&#xff0c;会卡死。 解决方法&#xff1a;用旧版本的Jlink软件&#xff0c;因为淘宝买的很多JLINK下载器是盗版的&#xff0c;不支持新版本的JLINK软件。到https://www.segger.com/downloads/jlink下载旧版本的软件。 如果必须要用新版…

Pytorch深度学习实践笔记8(b站刘二大人)

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;pytorch深度学习 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

上海市港股通交易佣金手续费最低是多少?万0.8?恒生港股通ETF今起发行!港股通的价值如何?

港股通交易佣金概述 港股通的交易佣金可能会因证券公司和投资者的不同而有所差异。 上海市港股通交易佣金最低可以万分之零点八&#xff08;0.008%&#xff09;&#xff0c;但这需要投资者与证券公司客户经理了解&#xff0c;进行沟通和申请。 一般来说&#xff0c;证券公司…

[CISCN2024]-PWN:orange_cat_diary(glibc2.23.,仅可修改最新堆块,house of orange)

查看保护 查看ida 这里我们仅可以修改最新申请出来的堆块&#xff0c;但是有uaf漏洞。 完整exp&#xff1a; from pwn import* #context(log_leveldebug) pprocess(./orange) free_got0x201F78def alloc(size,content):p.sendlineafter(bPlease input your choice:,b1)p.send…

【Spring Cloud】服务熔断

目录 服务雪崩效应服务雪崩效应形成的原因及应对策略小结 Hystrix介绍Hystrix可以做什么1.资源隔离2.请求熔断3.服务降级 小结 Hystrix实现服务降级方式一&#xff1a;HystrixCommand注解方式1.服务提供者1.1业务接口和业务实现中添加方法hystrixTimeout1.2控制器中处理/provid…

信息安全基础(补充)

&#xff09;的内容主要有数据备份、数据修复、系统恢复等。响应&#xff08;Respons&#xff09;的内容主要有应急策略、应急机制、应急手段、入侵过程分析及安全状态评估等。 面向数据挖掘的隐私保护技术主要解决高层应用中的隐私保护问题&#xff0c;致力于研究如何根据不同…

html5各行各业官网模板源码下载(2)

文章目录 1.来源2.源码模板2.1 HTML5好看的旅行网站模板源码2.2 HTML5自适应医院叫号大屏模板源码2.3 HTML5好看的高科技登录页面模板源码2.4 HTML5宠物美容服务公司网站模板源码2.5 HTML5创意品牌广告设计公司网站模板源码2.6 HTML5实现室内设计模板源码2.7 HTML5黄金首饰网站…

PL5358A 单芯锂离子/聚合物电池保护IC芯片

一般说明 PL5358A系列产品是锂离子/聚合物电池保护的高集成解决方案。PL5358A包含先进 的功率MOSFET&#xff0c;高精度电压检测电路和延迟电路。5358A被放入一个超小的SOT23-5封装&#xff0c;只有一个外部元件&#xff0c;使其成为理想的解决方案&#xff0c;在有限的…

美业SaaS收银系统源码-已过期卡项需要延期怎么操作?美业系统实操

美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 1.询问会员手机号和需要延期的卡项 2.PC运营后端-数据导入-修改已售卡项&#xff0c;搜索手机号 3.把需要卡项选…

D - Permutation Subsequence(AtCoder Beginner Contest 352)

题目链接: D - Permutation Subsequence (atcoder.jp) 题目大意&#xff1a; 分析&#xff1a; 相对于是记录一下每个数的位置 然后再长度为k的区间进行移动 然后看最大的pos和最小的pos的最小值是多少 有点类似于滑动窗口 用到了java里面的 TreeSet和Map TreeSet存的是数…

Vue3中如何自定义消息总线

前言 在 Vue 开发中&#xff0c;组件之间的通信是一个常见的需求&#xff0c;无论是父组件向子组件传递数据&#xff0c;还是子组件向父组件传递数据&#xff0c;甚至是兄弟组件之间的数据交换。这些通信需求在构建复杂的 Vue 应用时尤为关键。 Vue 提供了多种组件通信的方式…

Linux系统安装AMH服务器管理面板并实现远程访问管理维护

目录 前言 1. Linux 安装AMH 面板 2. 本地访问AMH 面板 3. Linux安装Cpolar 4. 配置AMH面板公网地址 5. 远程访问AMH面板 6. 固定AMH面板公网地址 1. 部署Docker Registry 2. 本地测试推送镜像 3. Linux 安装cpolar 4. 配置Docker Registry公网访问地址 5. 公网远程…