当前位置: 首页 > news >正文

软件工程 考试重点

结构化分析

考虑数据和处理的需求分析方法,称为结构分析方法(SA)

结构化分析基于 分解、抽象 的基本思想

分解:对于复杂的系统,为将复杂度降低到可以掌握的程度,可以把大问题分解为若干个小问题,然后分别解决

最顶层:自顶向下 逐层分解

表示软件系统最本质的属性的方法:抽象

结构化分析是面向数据流的需求分析方法,数据作为独立实体转换,数据流定义了数据的属性和关系,操作数据的处理建模表明当数据在系统流动时处理如何转换数据。

结构化分析的基本步骤:
1)建立当前系统的“具体模型”
2)抽象出当前系统的逻辑模型
3)建立目标系统的逻辑模型
4)为了对目标系统进行完整的描述,还需要考虑人机界面和其他一些问题

结构化分析模型的核心:数据字典

”数据流图“指出当数据在软件系统中移动时怎样被变换,并描述变换数据流的功能和子功能,用于功能建模
”实体-关系图“(E-R图)描绘数据对象之间的关系,用于数据建模
”状态转换图“指明了作为外部事件结果的系统行为,用于行为建模

数据流图的表示符号:
1)外部实体
2)数据流
3)数据变换
4)数据存储

环境图(系统顶层数据流图 / 0层数据流图),仅包含一个数据处理过程-要开发的目标系统
环境图的作用:确定系统在环境中的位置,通过确定系统的输入、输出与外部实体的关系确定边界
基本思想:自顶向下、从外到内、逐层分解

数据流图的导出是 逐步求精 的过程

数据建模思想:在较高的抽象层次(概念层)上对数据库结构进行建模
用实体关系图表示

E-R图的三个基本概念概括数据的基本结构:实体、关系、属性
实体:矩形框
属性:椭圆形
实体与属性用 无向边 连接,实体由若干个属性组成
关系:菱形
E-R图不具有唯一性

状态转换图:描述系统对内部 / 外部事件响应的行为模型
适合描述实时系统,这类系统大多由外部环境的激励而驱动

状态是可以被观察的系统行为模型
初态:每张只有一个
终态:可没有,可多个

状态变迁由事件触发

数据字典以系统化的方式定义在分析模型中出现的数据对象及控制信息的特性

最底层数据流图的数据处理 / 基本加工 / 原子加工,对每一个基本加工都须进一步说明,称为加工规格说明
主要表达”做什么“,而不是”怎么做“
用结构化语言(PDL / 伪代码)、判定表、判定树 来表述

结构化设计

结构化软件设计的任务从软件需求规格说明书出发,设计整体结构,形成具体设计方案,解决”怎么做“。

概要设计:将软件需求转化为数据结构和系统结构
详细设计:也称过程设计

结构化设计:面向数据流、面向数据结构

面向数据流:概要设计阶段
数据流:变换型、事务型
变换:将输入数据处理后转变为另外的输出数据
事务:非数据变换的处理

通过变换将数据流图映射为变换结构

面向数据结构:Jackson、Warnier
Jackson把数据结构分为:顺序、选择、循环

概要设计中的接口设计用于子系统 / 模块之间或内部系统和外部系统进行各种交互

数据设计将需求分析阶段定义的数据对象(E-R图、数据字典)转换为设计阶段的数据结构和数据库

流程图:数据、程序、系统流程图、程序网格图、系统资源图
程序流程图的5中基本的控制结构:顺序、选择型、先判定、后判定型循环、多分支选择型

N-S图:又称盒图

PAD图:又称问题分析图

面向对象分析

面向对象分析以用例模型为基础
用例模型;用例图+相关文字描述
用例:系统中的一个功能单元,描述参与者与系统之间的一次交互,常用来收集用户需求
可把参与者执行的每一个系统功能都看做一个用例

目标系统类:边界类、控制类、实体类

对象或类之间的关系:依赖、关联、聚合、组合、泛化、实现
1)依赖:”非结构化“,短暂,一个对象会影响另一个对象
2)关联:”结构化“,对象之间的连接
3)聚合和组合:特殊的关联,强调整体和部分之间的从属性,组合是聚合的一种,组合的整体和部分具有很强的归属关系和一致的生命周期
4)泛化和类间的继承相似
5)实现针对类与接口的关系

面向对象分析的基础:对象模型
对象模型:问题域中对象+相互关系

面向对象建模:描述系统数据结构对象模型、描述系统控制结构的动态模型、描述系统功能的功能模型

对象和关系的生命周期用动态模型来描述

功能模型:数据之间的依赖关系+数据处理功能,由一组数据流图组成

用例之间的关系:扩展、包含、泛化

面向对象设计

类中封装 属性+方法

面向对象分析到面向对象设计是平滑的过渡

面向对象设计原则:
1)模块化
2)抽象化
3)信息隐藏
4)低耦合
5)高内聚
6)复用性

动态模型:若干张状态图组成
每张状态图描绘一个对象的生命周期

状态图中状态转换=功能模型中数据流图

黑盒测试

软件测试:静态、动态
静态测试:审查、走查
动态:黑盒
静态:白盒

黑盒测试:将软件系统看作黑盒子,不关心盒子的内部结构和特性,只关注软件的输入数据和输出结果
大的功能模块
等价类划分法、边界值分析法、错误推测法、因果图法、正交实验设计法
等价类划分法:有效、无效等价类
边界值分析法:选择等价类边界的测试用例
错误推测法:直觉+经验
因果图法:输入条件的各种组合方式、各个输入条件之间的相互制约关系

白盒测试

又称玻璃盒测试,将被观测程序看作透明盒子,关注软件产品的内部细节、逻辑结构
小的构件
逻辑覆盖测试方法、基本路径测试

代码检查法:桌面检查、代码审查、走查

静态结构分析法:以图的形式表现程序的内部i结构

程序代码结构方式是白盒测试的主要依据

程序插桩技术: 插入打印语句,通过打印有关信息了解程序执行时的动态特性。

逻辑覆盖法:语句、分支、条件、分支-条件、条件组合、路径覆盖
语句覆盖:设计若干测试样例,运行被测试程序,每个可执行程序至少执行一次
分支覆盖:每个判断的取真、取假分支至少执行一次
条件覆盖:每个判断的所有逻辑条件的每种可能取值至少执行一次
分支-条件覆盖:同时满足分支覆盖和条件覆盖的要求
条件组合覆盖:每个判断语句的所有逻辑条件的可能取值组合至少执行一次
路径覆盖:覆盖被测试程序中所有可能的路径

路径覆盖的覆盖率最高,语句覆盖的覆盖率最低

基本路径法:在程序控制流程图的基础上,通过分析控制构造的环路复杂度,导出基本可执行程序的路径集合,从而设计测试用例的方法
设计出的用例测试用例在每条可执行语句中至少执行一次
用软件的控制流图表达

环路复杂度为程序逻辑复杂度性提供定量测度的软件度量

白盒测试方法:
先静后动,先进行代码检查和静态结构分析,在进行覆盖检查
利用静态分析的结果作引导,通过代码检查和动态测试的方法对静态分析的结果进一步确认
覆盖测试是白盒测试的重点,用基本路径测试法达到语句覆盖标准,对于软件的重点模块,应使用多种软件覆盖标准衡量测试的覆盖度。
单元测试:代码检查、覆盖测试
集成测试:静态结构分析
系统测试:根据黑盒测试的结果,采用相应的白盒测试方法

白盒测试成本比黑盒测试高

灰盒测试介于白盒测试和黑盒测试之间

软件测试步骤:
单元测试、集成测试、系统测试、验收测试

单元测试是软件测试的基础
侧重模块的内部处理逻辑、数据结构,利用构件级设计描述作为指南,测试重要的控制路径以发现模块内的错误
测试用例设计与复审设计结合,根据设计规则选取数据

集成测试:多个单元的集合,单元组合成模块,模块聚合成子系统 / 系统
体系结构设计、模块设计、接口设计、集成测试策略分析
非增量式集成测试、增量式集成测试
非增量式集成测试:”一步到位“
增量式集成测试:自顶向下、自底向上

最后的测试是:α、β测试
α测试:开发人员+测试人员
β测试:用户,最主观的

相关文章:

软件工程 考试重点

结构化分析 考虑数据和处理的需求分析方法,称为结构分析方法(SA) 结构化分析基于 分解、抽象 的基本思想 分解:对于复杂的系统,为将复杂度降低到可以掌握的程度,可以把大问题分解为若干个小问题&#xf…...

swing快速入门(六)

注释很详细,直接上代码 上一篇 本篇新增内容 Gridlayout(网格布局) Textfield组件的最大限定长度 Panel()的默认布局方式 Gridlayout的默认布局位置 import java.awt.*;public class swing_test_4 {public static void main(String[]ar…...

《opencv实用探索·十四》VideoCapture播放视频和视像头调用

1、VideoCapture播放视频 #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main() {// 定义相关VideoCapture对象VideoCapture capture;// 打开视频文件capture.open("1.avi");// 判断视频流读取是否正…...

Vue中$props、$attrs和$listeners的使用详解

文章目录 透传属性如何禁止“透传属性和事件”多根节点设置透传访问“透传属性和事件” $props、$attrs和$listeners的使用详解 透传属性 透传属性和事件并没有在子组件中用props和emits声明透传属性和事件最常见的如click和class、id、style当子组件只有一个根元素时&#xf…...

爱智EdgerOS之深入解析AI图像引擎如何实现AI视觉开发

一、前言 AI 视觉是为了让计算机利用摄像机来替代人眼对目标进行识别&#xff0c;跟踪并进一步完成一些更加复杂的图像处理。这一领域的学术研究已经存在了很长时间&#xff0c;但直到 20 世纪 70 年代后期&#xff0c;当计算机的性能提高到足以处理图片这样大规模的数据时&am…...

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中&#xff0c;有unittestHTMLTestRunner自动化测试报告&#xff0c;但是生成的测试报告不够美观详细&#xff0c;今天我们来学习一下PytestAllure生成自动化测试报告。 一&#xff1a;安装python中的allure依赖库 在dos窗口中&#xff0c;输入下面三个命令…...

HTMLTestRunner

HTMLTestRunner是Python的标准库unittest单元测试框架的一个扩 展&#xff0c;用于生成HTML测试报告 下载地址&#xff1a; http://tungwaiyip.info/software/HTMLTestRunner.html HTML测试结果 HTMLTestRunner.py下载地址http://tungwaiyip.info/software/HTMLTestRunner.htm…...

ELK架构监控MySQL慢日志

目录 一、架构概述 二、安装部署 三、Filebeat配置 四、Logstash配置 一、架构概述 本文使用将使用filebeat收集mysql日志信息&#xff0c;发送到redis中缓存&#xff0c;由logstash从redis中取出&#xff0c;发送es中存储&#xff0c;再从kibana中展示。 二、安装部署 ELK…...

Linux命令---关机

介绍 使用命令关闭linux服务器或计算机 命令 立即关机&#xff1a; shutdown -h now指定十分钟后关机&#xff1a; shutdown -h 10...

点云从入门到精通技术详解100篇-基于拓扑约束的3D点云实例分割(续)

目录 3.6实验结果与分析 3.6.1实验数据集 3.6.2实验设置 3.6.3定量结果 3.6.4定性评价...

java版Spring Cloud+Spring Boot+Mybatis之隐私计算 FATE - 多分类神经网络算法测试

一、说明 本文分享基于 Fate 使用 横向联邦 神经网络算法 对 多分类 的数据进行 模型训练&#xff0c;并使用该模型对数据进行 多分类预测。 二分类算法&#xff1a;是指待预测的 label 标签的取值只有两种&#xff1b;直白来讲就是每个实例的可能类别只有两种 (0 或者 1)&…...

Java之时间类2(JDK8新增)

一、Date类 &#xff08;一&#xff09;、ZoneId&#xff1a;时区 1、概述 ZoneId是Java 8中处理时区的类。它用于表示时区标识符&#xff0c;例如“America/New_York”或“Asia/Tokyo”。一共有600个时区。 2、常用方法: static Set<String> getAvailableZoneIds()获…...

MySQL InnoDB Replication部署方案与实践

1. 概述 MySQL Innodb ReplicaSet 是 MySQL 团队在 2020 年推出的一款产品&#xff0c;用来帮助用户快速部署和管理主从复制&#xff0c;在数据库层仍然使用的是主从复制技术。 ReplicaSet 主要包含三个组件&#xff1a;MySQL Router、MySQL Server 以及 MySQL Shell 高级客户…...

进程的同步和异步、进程互斥

一、进程同步和异步 同步&#xff08;Synchronous&#xff09;&#xff1a; 同步指的是程序按照顺序执行&#xff0c;一个操作完成后才能进行下一个操作。在多进程或多线程的环境中&#xff0c;同步意味着一个进程&#xff08;或线程&#xff09;在执行某个任务时&#xff0c;…...

搞定课件录制,新手必备指南!

“有人知道课件怎么录制吗&#xff1f;学校要求我们师范专业的学生出去实习&#xff0c;现在需要录制一个课件视频&#xff0c;以便在课堂上播放&#xff0c;可是我不会录制教学视频&#xff0c;真的很头疼&#xff0c;有人能帮帮我吗。” 随着在线教育的崛起&#xff0c;课件…...

DevOps搭建(九)-Jenkins实现基础CI、CD详细操作

1、创建可运行SpringBoot项目 1.1、创建一个新工程 在idea里创建一个项目,这里叫devops-test,如下图: String Boot版本要选择2.x的,依赖直选中Spring Web选项即可: 修改pom.xml文件,在build标签中增加如下内容,目的是简化jar包名称。 <finalName>devops-test&l…...

十指波课堂:让学习编程不再是难事

十指波课堂是一家致力于发展线上私教平台的教育机构&#xff0c;主要的科目是计算机编程相关语言。由于学习编程的过程较为困难&#xff0c;学习者没有具体的学习方向&#xff0c;将要达到的就业水平不明&#xff0c;总会因为一些小问题困扰几个小时&#xff0c;这样会严重的影…...

IDEA卡顿,进行性能优化设置(亲测有效)——情况二

问题背景与现象 IDEA今天突然显示到期&#xff0c;于是从同事那边搞到一个很好用的破解方式&#xff0c;说实话&#xff0c;非常方便&#xff08;后续在安前码后中分享&#xff09; 破解之后呢&#xff0c;香了一阵子&#xff0c;但是突然显示开始卡顿&#xff0c;界面几乎是…...

利用Python和OpenCV实现将图像识别为Excel表格的便捷方法

当今社会&#xff0c;图像识别技术的发展为我们提供了许多便利&#xff0c;比如将图像中的文本信息转化为可编辑的电子表格。在本文中&#xff0c;我们将介绍如何利用Python结合OpenCV和pytesseract库&#xff0c;来实现将图像识别为Excel表格的过程。 首先&#xff0c;我们需…...

mysql:查看一个表的索引信息

可以使用命令SHOW INDEX FROM table_name;查看一个表的索引信息&#xff0c;例如&#xff1a;...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...