软件工程(最简式总结)
目录
第一章:概述
1.软件危机的表现原因
2.常见的软件开发方法包括:
3.软件工程基本原则
4.软件工程三要素
5.设计模式的分类
6.针对变换型数据流设计步骤
7.针对事务型数据流设计步骤
第二章:软件过程
1.软件生命周期
2.软件过程模型
(1)瀑布模型(特点:带反馈)
(2)快速原型模型
(3)增量模型(判断标准:系统是否被模块化)
(4)螺旋模型
(5)喷泉模型
第三章:可行性研究及需求分析
1.需求分析常用方法
2.需求分析步骤
3.可行性研究步骤
4.需求分析的任务
第四章:结构化分析
1.数据流图(简称DFD图)
2.环境图(顶层数据流图)
3.数据流图的分解
第5章:软件设计
1.软件设计的原则
2.软件设计包括
3.UML具有以下几个特点:
第6章:结构化设计
1.表示软件结构的图:
(1)层次图
(2)结构图
2.体系结构设计
第7章:面向对象方法与UML
1.面向对象方法
2.统一建模语言UML
3.动态建模机制
第8章:面向对象分析
1.面向对象分析原则:
2.面向对象建模:
3.例题:
(1)编写脚本
(2)画UML顺序图
(3)画状态图
(4)总行状态图
(5)分行状态图
第10章 面向对象设计
1.设计原则
2.面向对象结构设计步骤
3.系统设计
第12章 :软件测试概述
1.软件测试的原则
2.分类
第13章 :软件测试方法与过程
1.黑盒测试
2.白盒测试
3.集成测试
第一章:概述
1.软件危机的表现原因
表现:软件危机是指人们在开发软件和维护软件过程中所遇到的一系列的问题。
软件开发的过程中,不能按时完成任务、产品质量得不到保证、工作效率低下和开发经费严重超支等现象。
原因:(软件本身的特点及开发方法)
(1)忽视软件开发前期的调研和需求分析工作
(2)缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定
(3)开发过程缺乏统一的、规范化的方法论指导
(4)忽视与用户、开发组成员间的及时有效的沟通
(5)文档资料不规范或不准确。导致开发者失去工作的基础,管理者失去管理的依据
(6)没有完善的质量保证体系
(7)忽略测试的重要性和不重视维护
目标:在给定成本、进程的前提下、开发具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性、可互操作性并满足用户需要的软件产品。
2.常见的软件开发方法包括:
(1)结构化方法
(2)面向数据结构方法
(3)面向对象方法
(4)形式化方法
3.软件工程基本原则
(1)模块化(2)抽象(3)逐步求精(4)信息隐藏(5)复用性设计(6)灵活性设计
4.软件工程三要素
方法、工具、过程
5.设计模式的分类
(1)创建型模式
(2)结构型模式
(3)行为型模式
6.针对变换型数据流设计步骤
输入数据、变换中心、输出数据
7.针对事务型数据流设计步骤
找出事务中心、接收数据、处理路径
第二章:软件过程
1.软件生命周期
从设计该产品,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用及版本更新,到该产品被市场淘汰。

2.软件过程模型
瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、基于组建的开发模式、统一软件开发过程模型以及敏捷模型与极限编程。
(1)瀑布模型(特点:带反馈)

具有不可回溯性,可以一次性获取到全部需求,软件项目风险较低。
(2)快速原型模型
快速搭建,再根据用户需求进行修改

(3)增量模型(判断标准:系统是否被模块化)
开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交
将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。
(4)螺旋模型
风险较大地大型软件项目开发地过程模型,将风险扩展到各个阶段。
将瀑布模型与快速原型模型结合起来,并且加入了这两种模型忽略了地风险分析。
开发过程:制定计划、风险分析、实施工程和客户评估。

适用于:
– 支持需求不明确、特别是大型软件系统的开发,
– 支持面向过程、面向对象等多种软件开发方法
(5)喷泉模型
喷泉模型主要适用于面向对象的软件项目的开发。
各阶段之间没有明显的界限,而且常常重复、迭代地进行。

第三章:可行性研究及需求分析
可行性研究:不是解决问题,而是确定问题是否值得去解决
可行性研究内容:战略可行性、操作可行性、计划可行性、技术可行性、社会可行性、市场可行性、经济可行性、风险可行性。
1.需求分析常用方法
(1)功能分解方法:将一个系统看成是由若干功能模块组成。
(2)结构化分析方法:由数据流图和数据词典构成并表示。它是一种面 向数据流的需求分析方法。
(3)信息建模方法:使用E-R图,其基本要素由实体、属性和关系构成。
(4)面向对象的分析方法:
•描述系统静态结构的对象模型
•描述系统控制结构的动态模型
•描述系统计算结构的功能模型
2.需求分析步骤
四个步骤:需求获取、需求建模、需求描述(即编写 SRS)和需求验证
3.可行性研究步骤
(1)明确系统目标
(2)分析研究现行系统
(3)设计新系统高层逻辑模型
(4)获取可行方案
(5)撰写可行性研究报告
4.需求分析的任务
(1)确定系统的运行环境要求
(2)功能性、非功能性需求
第四章:结构化分析
功能建模:按照软件内部数据传递和变换的关系,自顶向下逐层分解。
1.数据流图(简称DFD图)

数据流图中的表示符号

2.环境图(顶层数据流图)
环境图地作用是确定系统在其环境中地位置

3.数据流图的分解
实例:
假设一家工厂的采购部里的采购员每天需要订货系统产生一张订货报表。报表按照零件编号排序,表中列出了所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述信息:零件编号、零件名称、价格、主要供应商、次要供应商。2、零件入库或出库称作事务,仓库管理员通过仓库的终端把事务报告给订货系统。当某种零件的库存少于库存量临界值时就应该再次订货了。


数据建模:用实体-关系图来描述(E-R图)
数据模型E-R图——仓库管理系统实例
•请为某仓库的管理系统设计一个ER模型。该仓库管理系统主要管理零件的订购和供应等事项。仓库管理系统向工程项目供应零件,并且根据需要向供应商订购零件。
•实体类型“零件”的主要属性是:零件编号,零件名称,颜色,重量。实体类型“工程项目”的属性主要是:项目编号,项目名称,开工日期。实体类型“供应商”的属性主要有:供应商编号,供应商名称,地址。

行为建模:它描述系统状态和事件,适合用来描述实时系统。
行为模型状态转换图——图书馆系统实例
图书馆系统里的图书主要有这几种状态:新上、可借阅、已借出、已丢弃这四种状态,触发这些状态进行转换的事件有分类、借阅、归还、续借、破损、遗失等。

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

航空公司名称=2{字母}8
航班号=3{十进制数字}3
字母="a"…“z”
十进制数字="0"…“9”
起点=终点=1{汉字}5
起飞时间=降落时间=时+分
第5章:软件设计
1.软件设计的原则
(1)模块化(2)抽象(3)逐步求精(4)信息隐藏(5)复用性设计(6)灵活性设计
模块化:就是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能。
模块化注意:规模适中、提高独立性低耦合、高内聚、加强保护性。
模块的三个基本属性:功能、逻辑、状态。
耦合:模块之间相互连接的紧密程度的度量。
内聚:一个模块内各个元素彼此结合的紧密程度用内聚来度量。
2.软件设计包括
(1)软件设计
(2)数据库结构设计
(3)用户界面设计
3.UML具有以下几个特点:
(1)统一标准
(2)面向对象
(3)可视化,表达能力强大
(4)独立于过程
(5)容易掌握使用
第6章:结构化设计

面向对象分析原则:
(1)定义有实际意义的对象
(2)模型描述要规范、准确
(3)共享性
(4)封装性
1.表示软件结构的图:
(1)层次图

(2)结构图

2.体系结构设计
Jackson图
3种基本类型:
顺序型结构、选择型结构(" 。“表示选一个)、循环型结构(” * "表示重复)。

例子:将高考后考生的基本情况文件和考生高考成绩文件合并
成一个新文件。
从已知条件可以得出如下的三个基本文件结构图:

step1:画出输入,输出结构的Jackson图。
step2:从输入输出的数据结构中找出有对应关系的数据单元。

step3:导出程序结构的Jackson图。

接口设计

过程设计
图形设计符号:流程图、N-S图、PAD图等
流程图:
分类:顺序型、选择性、先判定型循环、后判定型循环

N-S图
又称盒图

PAD图
又称分析图,自顶向下,逐步求精

实例:计算n阶乘的程序流程图

实例:计算n阶乘的N-S图。

实例:计算n阶乘的PAD图

第7章:面向对象方法与UML
1.面向对象方法
对象、类、消息、类的特性(抽象、继承、封装、多态、重载)、包。
注:类是对象的抽象,对象是类的实例。
面向对象的实施步骤
(1)面向对象分析
(2)面向对象设计
(3)面向对象实现
(4)面向对象测试
2.统一建模语言UML
概念:UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。
应用范围:需求分析阶段到系统完成后的测试阶段都能起到重要作用
用例图
用例、参与者、之间的关系
参与者之间可以存在泛化关系,类似的参与者可以组成一个层级结构

参与者与用例之间的关系——关联

用例之间的关系有3种
(1)包含:带箭头的虚线,虚线上有《include》
(2)扩展:带箭头的虚线,虚线上有《extend》
(3)泛化:带三角形实线,泛化描述一般与特殊(父用例子用例)
包含关系:

扩展关系:

泛化关系:

例:建立一航空公司的机票预定系统,让客户通过电话或网络买票、改变订票、取消订票、预定旅馆、租车等等。

类图

类与类之间的关系:
关联(相互连接)、依赖(一个类依赖于或使用另一个类)、泛化(一个类是另一个类的特殊情况)、实现。
关联

依赖

实现
是指一个类描述了另一个类保证实现的合约。子类与父类关系是泛化,类与接口关系是实现。
3.动态建模机制
顺序图

状态图

活动图

带泳道地活动图

第8章:面向对象分析
面向对象分析的三种模型:
对象模型、动态模型、功能模型
1.面向对象分析原则:
(1)定义有实际意义的对象
(2)模型的描述要规范、准确
(3)共享性
(4)封装性
2.面向对象建模:
对象模型(核心)、动态模型、功能模型
3.例题:

(1)编写脚本


(2)画UML顺序图

(3)画状态图

(4)总行状态图

(5)分行状态图

第10章 面向对象设计
1.设计原则
(1) 模块化
(2) 抽象化
(3) 信息隐藏
(4) 低耦合
(5) 高内聚
(6) 复用性
2.面向对象结构设计步骤
(1)建立软件体系结构图
(2)软件体系结构设计
(3)对各个子系统进行设计
(4)对象设计及优化
3.系统设计

第12章 :软件测试概述
1.软件测试的原则
软件测试是为了发现错误而执行程序的过程,它并不可能找出所有的
错误,但是却可以减少潜在的错误或缺陷
2.分类

第13章 :软件测试方法与过程
大的功能模块采用黑盒测试,小的构件采用白盒测试
1.黑盒测试
把被测试的软件系统看成是一个黑盒子,并不需要关心盒子的内部结构和内部特性,而只关注软件产品的输入数据和输出结果。
黑盒着重测:软件功能
方法:
(1)等价类划分法
(2)边界值分析法(常用)
(3)错误推测法
(4)因果图法
2.白盒测试
关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子。
白盒测试,有时也称为玻璃盒测试,它关注软件产品的内部细节和逻辑结构
方法:
(1)逻辑覆盖测试方法
语句覆盖
分支覆盖
条件覆盖
分支-条件覆盖
条件组合覆盖
路径覆盖
有效等价类:对程序规格有意义、合理的输出的集合
无效等价类:对程序规格无意义、不合理的输出的集合
(2)基本路径测试
(测试用例尽可能多的覆盖有效等价类,无效等价类输入刚好超过的数值)

计算流图的环形复杂度
V(G)=E-N+2
N:边数
G:结点
独立路径:
至少包含一条在定义该路径之前不曾用过的边

例:
假设输入的取值范围是1000 < year < 2001,请使用基本路径测试法为变量year 设计测试用例,使其满足基本路径覆盖的要求。

(1)画出流图

(2)计算环形复杂度
V(G)=4
(3)确定独立路径

(4)设计测试用例执行基本集合中地路径
路径1:1-2-4-6-8 输入:1600输出:1
路径2:1-2-4-7-8输入:1800输出:0
路径3:1-2-5-8 输入:1996输出:1
路径4:1-3-8输入:1999输出:0
案例:黑盒白盒测试
3.集成测试

自顶向下的集成方式的主要优点:
(1)可以及早地发现和修复模块结构图中主要控制点存在的问题
(2)能较早地验证功能的可行性
(3)最多只需要一个驱动模块,减少驱动模块的开发成本
(4)支持故障隔离
自顶向下的集成方式的主要缺点:
是需要开发和维护大量的桩模
相关文章:
软件工程(最简式总结)
目录 第一章:概述 1.软件危机的表现原因 2.常见的软件开发方法包括: 3.软件工程基本原则 4.软件工程三要素 5.设计模式的分类 6.针对变换型数据流设计步骤 7.针对事务型数据流设计步骤 第二章:软件过程 1.软件生命周期 2.软件过程模型 &…...
Docker基础(持续更新中)
# 第1步,去DockerHub查看nginx镜像仓库及相关信息# 第2步,拉取Nginx镜像 docker pull nginx# 第3步,查看镜像 docker images # 结果如下: REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 60…...
Vue工程引入Element-ui
npm 安装ELement-ui npm i element-ui -S 于package.json中发现有“element-ui”版本号即可 引入 Element 在 main.js 中写入以下内容: import element-ui/lib/theme-chalk/index.css; import ElementUI from element-ui;Vue.use(ElementUI);之后根据自己的需求设计…...
算法学习——华为机考题库9(HJ56 - HJ63)
算法学习——华为机考题库9(HJ56 - HJ63) HJ56 完全数计算 描述 完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。 它所有的真因子(即除了自身以外的约数)的和&…...
Maven安装,学习笔记,详细整理maven的一些配置
Maven 1. 初识Maven 2. Maven概述 Maven模型介绍 Maven仓库介绍 Maven安装与配置 3. IDEA集成Maven 4. 依赖管理 01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后,我们即将开始学习后端Web开发技术。做为一名Java开发工程师,后端 Web开发技术…...
STM32--USART串口(2)串口外设
一、USART简介 可配置数据位:不需要校验就是8位,需要校验就选9位; 停止位:决定了帧的间隔; STM32F103C8T6USART:USART1挂载在APB2总线上,USART2和USART3挂载在APB1总线上; 二、USART框图 TXE…...
Unity之做一个最简单的FPS游戏demo
目录 😋FPS游戏Demo 💤1.新建FPS模板项目 ⚒️2.装备枪 💣3.设置射击功能 📺4.制造一个子弹预制体 🎮5.发射子弹 说起来小编学Unity差不多一个月了,都是利用上班摸鱼时间学的(doge.jpg&…...
【Springboot】单元测试Junit5应用
JUnit 5是一个功能强大的测试框架,常用于编写和执行这些单元测试。以下是一些JUnit 5中的常用注解、断言、前置条件、嵌套测试和参数化测试的例子: 1.环境启动 SpringBootTest 注解: classes SmartApplication.class:这个属性…...
【INTEL(ALTERA)】内部错误:子系统:PTI,文件:/quartus/tsm/pti/pti_delay_annotator.cpp
说明 由于英特尔 Quartus Prime Pro Edition 软件 23.2 及更早版本存在问题,因此在编译设计的 Retime 期间可能会出现此错误。 解决方法 此问题已在英特尔 Quartus Prime Pro Edition 软件 v23.3 中修复。 要在版本 23.2 中解决此问题,请通过以下相应链…...
大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置
上一篇: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 目录 1. 🥙Idea中配置Live Templates来快速生成代码片段 2. 🥙Idea中配置文件模板自定义初始代码 3.🥙设置spark-submit提交程…...
android 设置未知来源等 AppOpsManager 权限的设置接口
开始客户让我们执行下面的CMD 代码 adb shell appops set com.android.chrome REQUEST_INSTALL_PACKAGES allow 后来 GTP 告诉我有 Setmode的方法,后面在设置里面找到了 OP_REQUEST_INSTALL_PACKAGES 这个,里面有个方法mAppOpsManager.setMode(AppOp…...
使用GPT实现一个简单的网站
背景 In this exciting tutorial video, you’ll discover how to use 文心一言, a powerful language model developed by 百度, to generate ReactJS code for a simple blog website. With 文心一言’s help, you can quickly create a blog website that’s easy to custom…...
回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测(SE注意力机制)
回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测(SE注意力机制) 目录 回归预测 | Matlab实现CPO-CNN-LSTM-Attention冠豪猪优化卷积长短期记忆神经网络注意力机制多变量回归预测(SE注…...
11:Servlet中初始化参数的获取与应用-Java Web
目录 11.1 Servlet初始化参数简介11.2 如何在Servlet中获取初始化参数11.3 基于注解的初始化参数(Servlet 3.0)11.4 区别总结11.5 应用场景总结 在构建Java Web应用程序时,Servlet是核心组件之一,它负责处理HTTP请求并生成响应。而…...
STM32的ADC采集传感器的模拟量数据
1、 由于项目上使用传感器采集数据,传感器可以输出模拟电压信号,但是模拟电压信号的输出范围是1-5V,而STM32的ADC采集电压范围是0-3.3V,此时可以用一个简单的分压电路将1-5V的电压将至0.5V到2.5V的范围。 2、电阻分压电路可以使用…...
opencvb 十七 使用cmake配置opencv c++项目
1、cmake简介 1.1 cmake是什么 CMake是一个开源、跨平台的编译(Build)工具,是用来构建、测试和打包软件的。它能够用简单的语句来描述所有平台的编译过程。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C特…...
Java8 中文指南(一)
Java8 中文指南(一) 文章目录 Java8 中文指南(一)《Java8 指南》中文翻译接口的默认方法(Default Methods for Interfaces)Lambda 表达式(Lambda expressions)函数式接口(Functional Interfaces)方法和构造函数引用(Method and Co…...
引流技术-通过文件中增加联系方式并传播
文章目录 前言文档增加联系方式扩散网盘扩散自建网站借力 注意 前言 很多人在找资料的时候可能都遇到过下图情况: 1、文档最后面留一个自己的联系方式; 2、找的一堆文件中都有相同的情况; 3、一段时间全网搜到的很多相同文件也有这个联系方式…...
分布式搜索引擎_学习笔记_2
分布式搜索引擎_学习笔记_2 在昨天的学习中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以今天,我们研究下elasticsearch的数据搜索功能。我们会分别使用…...
【学习笔记】树上差分总结(点差分/边差分)
一.树上差分的基本概念 1.树上差分的定义 树上差分,顾名思义,意思就是在树上做差分。 至于什么是差分呢?如果不会的同学,可以先看看我的这篇博客:一维,二维差分の详解(简单易懂)_一维差分-CSDN博客 2.树…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
