软件工程(最简式总结)

目录

第一章:概述

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

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

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

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

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

相关文章

数据结构篇-05:哈希表解决字母异位词分组

本文对应力扣高频100 ——49、字母异位词分组 哈希表最大的特点就是它可以把搜索元素的时间复杂度降到O(1)。这一题就是要我们找到 “字母异位词” 并把它们放在一起。 “字母异位词”就是同一个单词中字母的不同组合形式。判断“字母异位词”有两个视角&#xff1a;1、所含字…

《计算机网络简易速速上手小册》第1章:计算机网络技术基础(2024 最新版)

文章目录 1.1 OSI 模型简介 - 深入探究1.1.1 基础知识1.1.2 重点案例&#xff1a;构建简易 HTTP 服务器1.1.3 拓展案例1&#xff1a;网络层数据包捕获1.1.4 拓展案例2&#xff1a;传输层 TCP 连接 1.2 TCP/IP 协议栈 - 深入探究1.2.1 基础知识1.2.2 重点案例&#xff1a;使用 P…

2.3作业 编写一个shell 脚本,判断输入的是否是数字

#!/bin/bashvar$1 len${#var} j0 for(($j;$j<$len;((j)))) doif [ ${var:$j:1} -eq 0 ]then echo "第$j位数字是0"elif [ ${var:$j:1 } -eq 1 ]then echo "第$j位数字是1"elif [ ${var:$j:1} -eq 2 ]then echo "第$j位数字是2"elif [ ${var:$…

【Linux】理解系统中一个被打开的文件

文件系统 前言一、C语言文件接口二、系统文件接口三、文件描述符四、struct file 对象五、stdin、stdout、stderr六、文件描述符的分配规则七、重定向1. 重定向的原理2. dup23. 重谈 stderr 八、缓冲区1. 缓冲区基础2. 深入理解缓冲区3. 用户缓冲区和内核缓冲区4. FILE 前言 首…

题目: 有1234个数字, 组成多个互不相同且无重复数字的三位数? 都是多少?

lua脚本如下 最原始的解题方法 local str{} local i, j, k0, 0, 0 for i1, 4 do for j1, 4 do for k1, 4 do if i~j and i~k and j~k then str[#str1]i..j..k end end end end print("组成的数有"..#str) print(table.unpack(str)) 运行的结果如下 组成的数有24 1…

【DDD】学习笔记-代码模型的架构决策

代码模型属于软件架构的一部分&#xff0c;它是设计模型的进化与实现&#xff0c;体现出了代码模块&#xff08;包&#xff09;的结构层次。在架构视图中&#xff0c;代码模型甚至会作为其中的一个视图&#xff0c;通过它来展现模块的划分&#xff0c;并定义运行时实体与执行视…

跨平台开发:浅析uni-app及其他主流APP开发方式

随着智能手机的普及&#xff0c;移动应用程序&#xff08;APP&#xff09;的需求不断增长。开发一款优秀的APP&#xff0c;不仅需要考虑功能和用户体验&#xff0c;还需要选择一种适合的开发方式。随着技术的发展&#xff0c;目前有多种主流的APP开发方式可供选择&#xff0c;其…

【HTML 基础】框架 iframe 标签

文章目录 1. 基本用法2. 设置框架样式3. frameborder 和 scrolling 属性4. 在框架中显示其他内容5. 响应式框架6. 注意事项结语 在 Web 开发中&#xff0c;有时候我们需要在页面中嵌套其他网页或内容&#xff0c;这时候就可以使用 HTML 的框架标签之一<iframe>。<ifra…

20240202在WIN10下使用fast whisper缺少cudnn_ops_infer64_8.dll

20240202在WIN10下使用fast whisper缺少cudnn_ops_infer64_8.dll 2024/2/2 10:48 https://blog.csdn.net/feinifi/article/details/132548556 Could not locate cudnn_ops_infer64_8.dll. Please make sure it is in your library path!解决办法 安装cuDNN c:\faster-whisper-…

【MybatisPlus篇】查询条件设置(范围匹配 | 模糊匹配 | 空判定 | 包含性判定 | 分组 | 排序)

文章目录 &#x1f384;环境准备⭐导入依赖⭐写入User类⭐配置启动类⭐创建UserDao 的 MyBatis Mapper 接口&#xff0c;用于定义数据库访问操作⭐创建配置文件&#x1f6f8;创建测试类MpATest.java &#x1f354;范围查询⭐eq⭐between⭐gt &#x1f354;模糊匹配⭐like &…

MySQL的ACID、死锁、MVCC问题

1 ACID ACID代表原子性&#xff08;atomicity&#xff09;、一致性&#xff08;consistency&#xff09;、隔离性&#xff08;isolation&#xff09;和持久性&#xff08;durability&#xff09;。一个确保数据安全的事务处理系统&#xff0c;必须满足这些密切相关的标准。 原…

三、数据背后的二进制

文章目录 数据背后的二进制1.1 整数的二进制表示与位运算1.1.1 正整数的二进制表示1.1.2 负整数的二进制表示 1.2 原码、反码、补码1.2.1 机器数和机器数的真值1.2.2 原码, 反码, 补码的基础概念和计算方法1.2.3 为何要使用原码、反码和补码1.2.4 补码计算原理 1.3 小数的二进制…

android 网络拦截器统一处理请求参数和返回值加解密实现

前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值…

jsp游戏网上商城系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 游戏网上商城系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

flutter开发实战-Camera自定义相机拍照功能实现

flutter开发实战-Camera自定义相机拍照功能实现 一、前言 在项目中使用image_picker插件时候&#xff0c;在android设备上使用无法默认设置前置摄像头&#xff08;暂时不清楚什么原因&#xff09;&#xff0c;由于项目默认需要使用前置摄像头&#xff0c;所以最终采用自定义…

机器学习 | 如何构建自己的决策树算法?

决策树思想的来源非常朴素&#xff0c;程序设计中的条件分支结构就是if-else结构&#xff0c;最早的决策树就是利用这类结构分割数据的一种分类学习方法 目录 初识决策树 决策树原理 cart剪枝 特征提取 泰坦尼克号乘客生存预测(实操) 回归决策树 初识决策树 决策树是一种…

分布式事务 seata+nacos 部署

分布式事务 seatanacos 部署 一、下载seata二、解压配置三、导入数据库四、nacos配置五、配置要引入事务的模块的配置文件六、启动七、测试 这里使用的版本&#xff1a; nacos&#xff1a;2.0.4 seata&#xff1a;1.5.2 seata官方地址&#xff1a;https://seata.apache.org/zh-…

【数据结构】并查集(路径压缩)

文章目录 并查集1.朴素版本2.路径压缩3.按秩合并4.启发式合并5.练习题 并查集 1.朴素版本 1. 并查集解决的是连通块的问题&#xff0c;常见操作有&#xff0c;判断两个元素是否在同一个连通块当中&#xff0c;两个非同一连通块的元素合并到一个连通块当中。 并查集和堆的结构…

零基础学Python(6)— 运算符

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。运算符是一种用于执行特定操作的符号或关键字。在编程中&#xff0c;运算符用于对变量、常量和表达式进行操作&#xff0c;以产生一个结果。下面将详细介绍Python语言中常见的运算符&#xff01;~&#x1f308; 目录 &a…

Three.js学习2:页面引入 Three.js

一、关于 Three.js 的版本 随着页面3D化应用越来越多&#xff0c;近两年 Three.js 处于飞速发展之中。现在 Three.js 几乎每个月都会发布一个新的版本&#xff0c;会增加新的 API&#xff0c;废掉一些旧的功能之类的。 可以从 Three.js 官网 Three.js – JavaScript 3D Libra…