软件工程(最简式总结)

news2025/2/5 3:54:23

目录

第一章:概述

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)支持故障隔离

自顶向下的集成方式的主要缺点

是需要开发和维护大量的桩模

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven dependency中的scope

Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中&#xff0c;scope的默认值是compile。 scope的分类 compile&#xff08;默认&#xff09; 含义&#xff1a; compile 是默认值&#xff0c;如果没有指定 scope 值&#xff0c;该元素…

SpringBoot引入主盘探活定时任务

主盘探活通常是指检查存储设备&#xff08;例如硬盘&#xff09;是否可读写&#xff0c;但在Java中并没有直接针对硬件级别的磁盘探活API。然而&#xff0c;我们可以模拟一个场景&#xff0c;即检查某个目录或文件是否可以被Java程序正常读写&#xff0c;以此作为主盘活跃的一个…

OSPF 协议

OSPF 开放式最短路径优先协议 形容&#xff1a; 无类别链路状态协议&#xff1a; 无类别 ---- 存在掩码 IGP 内部网关协议 动态路由协议 一、链路状态协议(LS) OSPF 协议 隶属于 链路状态协议。 区别&#xff1a; 距离矢量协议(DV)&#xff1a;运行距离矢量协议的路由器…

2024数学建模美赛C题详细代码思路手把手教学

问题分析 问题围绕2023年温网男单决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡拉兹击败36岁的诺瓦克德约科维奇的比赛。德约科维奇自2013年以来首次在温布尔登输球&#xff0c;结束了他在大满贯赛事中的杰出表现。这场比赛被认为是一场精彩的较量&#xff0c;经历了多次势头…

备战蓝桥杯---数据结构与STL应用(进阶1)

让我们先来看一看map的基础应用吧&#xff1a; 下面是实现代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef map<int,multiset<int> > line; map<int,multiset<int> >mx; map<int,multiset<int> >my; int n,m…

2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码

2024美国大学生数学建模E题财产保险的可持续模型详解思路具体代码 前言 很快啊&#xff01;啪的一下拿到题目就开始做题&#xff01;简单介绍一下我自己&#xff1a;博主专注建模五年&#xff0c;参与过大大小小数十来次数学建模&#xff0c;理解各类模型原理以及每种模型的建…

Spring Boot--08--Mybatis 之Mapper在IDEA中自动注入警告的解决方案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 问题原因 解决方案方法1&#xff1a;为 Autowired 注解设置required false方法2&#xff1a;用 Resource 替换 Autowired方法3&#xff1a;在Mapper接口上加上Repo…

C语言实现12种排序算法

1.冒泡排序 思路&#xff1a;比较相邻的两个数字&#xff0c;如果前一个数字大&#xff0c;那么就交换两个数字&#xff0c;直到有序。 时间复杂度&#xff1a;O(n^2)&#xff0c;稳定性&#xff1a;这是一种稳定的算法。 代码实现&#xff1a; void bubble_sort(int arr[],…

java-JUC并发编程学习笔记03(尚硅谷)

线程间通信 例子&#xff1a; 对一个值1 -1交替完成&#xff0c;a的值就是1 b的值就是0 这个过程就是线程间通信 Synchronized实现&#xff1a; 虚假唤醒问题&#xff1a; 我们再添加两个线程。 我们发现我们的结果就不对了。 我们只需要使用while即可。 我们线程通信的最后一…

【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(完结)

从高层设计的角度去探讨框架需要关注的问题。 参考&#xff1a;速读《Vue.js 设计与实现》 - 掘金 (juejin.cn) 系列目录&#xff1a; 标题博客第一篇&#xff1a;框架设计概览【Vue.js设计与实现】第一篇&#xff1a;框架设计概览-阅读笔记第二篇&#xff1a;响应系统【Vue.…

blender 画笔的衰成曲线Falloff Curve

Blender画笔是用来在雕刻模式或绘画模式下对物体进行修改的工具。画笔有不同的类型和设置&#xff0c;可以影响画笔的效果和外观。你提到的选项是画笔的衰减曲线&#xff08;Falloff Curve&#xff09;的预设&#xff0c;它们决定了画笔的强度如何随着距离中心的距离而变化。 …

32OLED中断系统&对射式红外计数&旋转编码计数

目录 一.程序调试方式 二.OLED简介 三. 中断系统 四.代码实现 (1)对射式红外计数 &#xff08;2&#xff09;旋转编码计数 一.程序调试方式 二.OLED简介 stm32引脚上电后&#xff0c;如果不初始化&#xff0c;默认是浮空输入的模式&#xff0c;在这个模式下引脚不会输出电平…

免费版XShell7下载安装

1.下载地址 家庭/学校免费 - NetSarang Websitehttps://www.xshell.com/zh/free-for-home-school/ 不同时期下载&#xff0c;版本会有不同&#xff0c;实时下载即可。 2.安装 Xshell和Xftp都要安装&#xff0c;点击下一步&#xff0c;直至安装完成。 3.邮箱注册&#xff0c;免…

Redis核心技术与实战【学习笔记】 - 16.Redis 缓存异常:缓存和数据库不一致

概述 只要使用 Redis 缓存&#xff0c;就必须面对缓存和数据库的一致性问题。 重要的是&#xff0c;如果数据不一致&#xff0c;那么业务应用从缓存中读取的数据就不是最新数据&#xff0c;这会导致严重的问题。比如说&#xff0c;我们把电商商品的库存信息缓存在 Redis 中&am…

【网站项目】065健康综合咨询问诊平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Python入门到精通(七)——Python文件操作

Python文件操作 一、文件的编码 二、文件的读取 1、操作汇总 2、model 常用的三种基础访问模式 三、文件的写入 四、文件的追加 五、综合案例 一、文件的编码 1、什么是编码&#xff1f; 编码就是一种规则集合&#xff0c;记录了内容和二进制间进行相互转换的逻辑。编…

合约短线高胜率策略-扭转乾坤指标使用说明

扭转乾坤指标使用说明 行情判断 双绿线 多趋势双红线 空趋势大绿线 小红线 多震荡大红线 小绿线 空震荡 进场条件 趋势行情进场 多趋势 多信号 底金叉 做多空趋势 空信号 顶死叉 做空 震荡行情进场 多震荡 多信号 底金叉 做多多震荡 空信号 顶死叉 做空空…

带你玩转股票的价值投资,上市公司典型案例分析

一、教程描述 上市企业&#xff0c;一般是新经济的典型代表&#xff0c;它的变化最能折射出新的商业模式及未来的产业机会。无论你是企业管理层、新兴创业者&#xff0c;还是职场精英及在校学生&#xff0c;都可以从上市公司的演变规律中&#xff0c;找到自己的职业晋升路径和…

LNMP环境搭建动态网站

一、环境准备 服务器&#xff1a;openEuler 22.03 Linux IPV4 &#xff1a;192.168.110.144/24 网页服务器&#xff1a;Nginx1.21.0 数据库&#xff1a;MySQL 8.0.36 PHP&#xff1a;8.0.30 1.安装软件 [rootnode3 ~]# yum install php-mysqlnd php php-gd php-fpm php-xml -y…

运维SRE-02 正则表达式、grep

1.特殊符号补充 1.1位置相关的特殊符号 . 当前目录 .. 当前目录的上级目录 ~ 当前用户家目录 / 根目录 cd - 返回上次所在目录1.2熟练掌握 # 注释符号,root命令提示符 | 管道符号.1.3了解其他特殊符号 $ 取值(取出变量的值),普通用户的提示符 ! % ^ & * (){} [] ; ? \…