【软件工程】期末复习总结(通俗易懂,学不会来打我)

news2025/1/11 6:02:05

【软件工程】期末复习总结(通俗易懂,学不会来打我)

第一章

1.1 软件工程的发展历程

1.1.1 软件危机(日子没法过了)

软件危机(Software Crisis)是指在计算机软件开发、运行、维护和管理过程中所遇到的一系列严重问题。(木星危机,太阳氦闪危机)
1)软件开发进度和成本难以控制(不能科学估算)
2)软件开发难以满足用户的需求(不是要什么给什么)
3)软件质量难以保证(降落伞打不开的宇航员)
4)软件产品难以维护(维护成本不断上升,维护难度不断增加

1.1.2 软件危机出现的原因

产生软件危机的主要原因有:
(1)软件开发缺乏正确的理论指导;软件本身属性、需要有限条件多人分工高质量产出
(2)软件人员与用户缺乏充分交流;了解但难以描述需求、知识背景有别、曲解需求
(3)对软件开发过程缺乏整体认识;经验未沉淀总结、忽视文档管理、不重视测试…(重实现)
(4)软件产品缺乏有效一致的质量评价标准。

1.2 软件工程的概念

1.2.1 软件工程的定义

软件工程是把系统的、规范的、可度量的途径应用于软件开发、运行和维护的全过程,以及对上述方法的研究。(IEEE-1993)(整体、有规范、各个过程可以度量)

软件工程三要素:方法、工具、过程

1.3 软件与软件过程

1.3.1 软件和软件的组成

软件是计算机中与硬件相互依存的另一部分,它包括程序、数据以及相关文档

软件=程序+数据+文档+知识

软件自身的特点

  • 逻辑实体而非物理实体
  • 智力产品,生成过程主要集中在研发上
  • 永不磨损,会蜕化直至被放弃使用
  • 软件开发远未达到软件工程目标提及的产业化生产
  • 软件规模和内容越来越复杂

在这里插入图片描述

1.3 软件与软件过程

生命周期是从需求开始到软件不再使用的全阶段
在这里插入图片描述

1.4 软件过程模型

在这里插入图片描述
在这里插入图片描述
1.阶段间具有顺序性和依赖性。
2.推迟实现的观点。
3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。
传统的瀑布模型过于理想化。事实上,人在工作过程中不可能不犯错误。
在设计阶段可能发生规格说明文档中的错误。
而设计上的缺陷或错误可能在实现过程中显现出来。
在综合测试阶段将发现需求分析、设计或编码阶段的许多错误。

在这里插入图片描述
在这里插入图片描述

1.4.3 增量模型

在这里插入图片描述
在这里插入图片描述

1.4.4 螺旋模型 (Spiral Model)

软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。

在这里插入图片描述

1.4.5 敏捷模型 (Spiral Model)

在这里插入图片描述
在这里插入图片描述

📢📢1.4.9 软件过程模型的比较(敲黑板)

在这里插入图片描述

第二章

2.1 软件需求的基本概念

在这里插入图片描述

2.2可行性分析的内容

在这里插入图片描述

  • 经济可行性研究: 联想董事长说过:没钱赚的事我们不干,有钱赚但是投不起钱的事不干,有钱干也投的起钱但没有可靠的人选这样的事也不敢
  • 操作可行性研究: 通过对用户流程的操作分析,既能城区需求中的模糊概念,又能明确需求中功能间的相互关系

2.3需求分析的内容

在这里插入图片描述

2.4需求工程的过程

在这里插入图片描述
看看即可
在这里插入图片描述

2.4需求获取技术

在这里插入图片描述

  • 个别会谈和小组会议:参与人员有分析员、用户、系统领域专家。开会前拟定谈话提纲和会谈内容。
  • 问卷调查:面向用例的场景分析:实际观察用户的实际操作过程,分析员能体验用户在工作中遇到的不便和困难
  • 快速原型法:让用户尽早的接触系统,指出不足并给出意见

2.5结构化需求分析与建模

在这里插入图片描述
在这里插入图片描述

2.5.1面向数据的数据建模

在这里插入图片描述

3.1.1 软件设计与软件需求

在这里插入图片描述

3.1.2 软件设计的任务

在这里插入图片描述

3.2.3 客户端/服务器模式的分布式结构

在这里插入图片描述

3.3 模块化设计

在这里插入图片描述

3.3.4 模块独立性

高内聚低耦合
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1结构化设计方法概述

在这里插入图片描述

面向数据流的设计过程

在这里插入图片描述

第五章

5.1技术特性

在这里插入图片描述

5.2 程序设计风格

在这里插入图片描述
在这里插入图片描述

5.3 什么是软件测试?

在这里插入图片描述
IEEE对软件测试的定义:使用人工或自动手段来运行或测试被测试软件的过程,其目的在于检验它是否满足规定的需求并弄清预期结果与实际结果之间的差别。

5.4 软件测试基础-术语解释

在这里插入图片描述

5.5 测试用例的重要性

5.6 软件测试原则

在这里插入图片描述
在这里插入图片描述

5.7 测试过程

在这里插入图片描述
在这里插入图片描述

5.8 软件测试技术分类

在这里插入图片描述

5.9 白盒测试

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(一)、逻辑覆盖

在这里插入图片描述

(二)、语句覆盖

在这里插入图片描述

(三)、分支覆盖

在这里插入图片描述

(四)、条件覆盖

在这里插入图片描述

(五)、条件组合覆盖

在这里插入图片描述

(六)、路径覆盖

在这里插入图片描述

6.0 黑盒测试

在这里插入图片描述

6.1边界值分析

边界值分析法是对等价分类技术的补充,即在一个等价类中不是任选一个元素作为此等价类的代表进行测试,而是选择此等价类边界上的值。

首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。

选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。
在这里插入图片描述
实践表明:大多数故障往往发生在输入定义域或输出值域的边界上,而不是在其内部 因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。

6.2软件测试策略

在这里插入图片描述

6.2.1集成测试策略

在这里插入图片描述

6.2.2渐增式集成

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.3驱动模块与桩模块

驱动模块:用以模拟被测模块的上级模块,在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块并打印出相应的结果。

在这里插入图片描述
桩模块:用以模拟被测模块工作过程中所调用的模块,它由被测模块调用,以便于检验被测模块与其下级模块的接口。

单元测试、集成测试与系统测试

在这里插入图片描述

第七章

7.1 UML的产生

在这里插入图片描述

📢📢📢7.4.1 用例图(出大题)P57-61出大题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第八章 面向对象的特点

对面向对象分析(OOA) 阶段的描述,体现了信息域对问题域的直接映射,符合人们认识客观世界的思维方式,利于用户的理解和沟通,避免因分析员的误解而造成后续的错误。
在这里插入图片描述

8.1面向对象的特点

在这里插入图片描述
在这里插入图片描述

8.2两种开发方法建模对比

在这里插入图片描述

2.建立功能模型–建模过程

用文字信息详细描述用例的内容,它是对用例的有益补充。

3.建立静态模型-建立静态模型的过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第九章 项目风险管理

软件风险概念:风险不同于软件工程过程中的其它事件,它有其自身的特点:

⑴ 可能性。项目风险是将来要发生的事情。虽然可以采取措施避免或减低风险发生所导致的损失,但完全消除项目风险是不太可能的

⑵ 偶然性。首先,软件项目,特别是有较强领域特征的软件应用项目,是一次特定的开发过程,其产生的风险属于个别事件,有很大的不确定性。其次,软件开发的智力活动产生的风险难以预料和控制,并且人员受环境、心理、任务等因素的影响较大,更增加风险发生的偶然性。 疫情、核心骨干打球崴脚了。

⑶ 复杂性。软件项目各部分间的非线性关系,其复杂度远远超过由少数几人就能掌握的程度,需要通过有效的技术分解和团队式管理才能胜任。

⑷ 需求的变动。需求的不断变化,导致软件项目过程的不断变化,风险平衡状态的出现是动态而短暂的,但其造成的后果可能是严重的,甚至是灾难性的。

📢📢📢 最后的最后

(一)、UML题目练习

某教育公司决定开发一个管理所有客户信息的交互式网络系统。系统的功能如下:
(1)浏览客户信息:任何使用Internet的网络用户都可以浏览公司所有的客户信息(包括 姓名、住址、电话号码等)。

(2)登录:公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面 设置个人密码,并使用该帐号和密码向系统注册。

(3)修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人 信息进行修改。

(4)删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。 系统采用面向对象方法进行开发。

【问题1】
在需求分析阶段,采用UML的用例图描述系统功能需求,如下图所示。请指出图中的A、B、 C和D分别是哪个用例?

在这里插入图片描述
【问题2】类的关联关系中关联的直线两端标明重数,例如:例如,图中的类网络用户和客户信息表,网络用户端的“0…*”表示:一个客户信息表的实例可以与0个或多个网络用户的实例相关联。 请指出图中(1)到(4)处的值分别为多少?

在这里插入图片描述
【问题3】类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在本题中,提供了三种关系:泛化关系、聚合关系、关联关系。请分别说明这三种关系的含义,并说明关联关系和聚合关系之间的主要区别。

泛化关系:也可以视为继承,表示类与类(或者接口与接口) 之间的父子关系。
关联关系:是类和类之间最常见的关系。即一个类的对象和另外一个类有联系。关联表示类与类之间的连接,它使一个类知道另一个类的属性和方法。
聚合关系:聚合是整体与部分的关系,但个体有独立的生命周期。

关联关系和聚合关系之间的主要区别:聚合是一种特殊的关联,它表示整体/部分关系。

(二)、面向对象的特点

  1. 对面向对象分析(OOA)阶段的描述,体现了信息域对问题域的直接映射,符合人们认识客观世界的思维方式,利于用户的理解和沟通,避免因分析员的误解而造成后续的错误。
  2. 对软件系统分析、设计和实现综合考虑,使用前后一致的UML图形模型元素,确保了软件系统的开发过程在方法、工具上的一致性和连续性。
  3. 将面向对象分析、设计、编程有机结合在一起,各阶段间没有明显界线,实现从分析到实现的自然过渡,有利于增加系统的稳定性。
  4. 面向对象具有良好的重用性特征,确保了软件质量和可靠性。

(三)、面向对象分析

面向对象分析(Object-Oriented Analysis,OOA)是以对象为基础,以面向对象方法学为指导,分析用户需求,并最终建立问题域模型的过程。

OOA模型由3类独立模型构成:功能模型、静态模型和动态模型。

在这里插入图片描述

(四)、建立模型(3类模型)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(五)、面向对象模型和结构化模型的对比

在这里插入图片描述

(六)、面向对象设计

在这里插入图片描述

(七)、小题检测

在这里插入图片描述

(八)、面向对象设计原则和目标

面向对象设计原则
在这里插入图片描述
面向对象设计目标
在这里插入图片描述
在这里插入图片描述

祝大家顺利通过考试,加油加油加油!!!

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

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

相关文章

126-Linux_git安装及使用

文章目录 一.git基本概念1.什么是git2.git的特点3.git工作流程4.文件的四种状态 二.git的安装1.在ubuntu上测试有没有安装2.使用命令 sudo apt install git 进行安装3.安装后查看版本,检查是否安装成功 三.git的使用1.git常用命令(1)创建一个目录(2)使用git init 命令将其变为一…

Netty编程入门超级详细,有这篇就足够了

目录 前言一、简介二、为什么使用Netty2.1 NIO的缺点2.2 Netty的优点 三、架构图四、永远的Hello Word4.1引入Maven依赖4.2 创建服务端启动类4.3 创建服务端处理器4.4 创建客户端启动类4.5 创建客户端处理器4.6 测试 五、Netty的特性与重要组件5.1 taskQueue任务队列5.2 schedu…

MyBatis的CRUD

0-基础知识 id:唯一标识 type:映射的类型,支持别名 java里的命名规则是驼峰,而sql里面是下划线,如何对数据库表的字段起别名? 数据库表的字段名称和实体类的属性名称 不一样,则不能自动封装数据…

算法套路十五——最长公共子序列LCS

算法套路十五——最长公共子序列LCS 算法示例:LeetCode1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&am…

Windows系统配置Anaconda虚拟环境,并安装Numpy、Scipy和Matplotlib等模块方法

有些项目不是必须在Ubuntu系统下进行的,对大部分人来说更熟悉Window系统,且查阅电脑中相关文件和使用微信更方便,因此记录一下Windows系统配置Anaconda虚拟环境步骤和安装Numpy、Scipy及Matplotlib等模块方法。 一、Anaconda安装 Anaconda可以…

异步电机速度估计-模型参考自适应MRAS法(补充)

导读:前期文章已经介绍过模型参考自适应MRAS进行速度估计的方法,本期文章主要是对MRAS实现的细节做一下补充。 若需要文章的仿真模型,关注微信公众号:浅谈电机控制,获取。 一、MRAS知识点回顾 1.1 基本原理 MRAS 模…

Calico的BGP打通Kubernetes网络和局域网

1、项目背景 随着云原生技术的不断发展,容器化应用已成为企业构建云原生架构的重要方式。而随着集群规模不断扩大,跨主机通信的需求也越来越重要。在 Kubernetes 集群中,Pod 是最小的调度和管理单位,而网络也是 Kubernetes 中最重…

双链表——“数据结构与算法”

各位CSDN的uu们你们好呀,今天,小雅兰又回来了,到了好久没有更新的数据结构与算法专栏,最近确实发现自己有很多不足,需要学习的内容也有很多,所以之后更新文章可能不会像之前那种一天一篇或者一天两篇啦&…

浅谈 Node.js

Node.js 是什么? Node.js 是一个开源、跨平台的 JavaScript 运行时环境。 官网:https://nodejs.org/zh-cn 更多精彩内容,请微信搜索“前端爱好者“, 戳我 查看 。 Node.js ≠ JavaScript Node.js中,没有BOM和DOM。…

【LLM】LangChain基础使用(构建LLM应用)

note LangChain应用开发框架,支持python和typescript语言;可以帮助生成prompt模板,并通过代理充当其他组件(如提示模板、其他大语言模型、外部数据和其他工具)的中央接口。LangChain可以直接与 OpenAI 的 text-davinc…

BGW协议(算数共享)

概述 BGW协议可以用于对域上包含加法、乘法、常数乘法门的算术电路求值,此协议强依赖Shamir秘密分享方案,利用其同态特性对各个秘密份额进行适当的处理,就可以在秘密值上进行安全计算。 加法门 算数加法共享(两方) …

c++ 友元介绍

友元的目的就是让一个函数或类访问另一个函数中的私有成员 友元函数 (1)普通函数作为友元函数 class 类名{friend 函数返回值类型 友元函数名(形参列表);//这个形参一般是此类的对象.... } 经过以上操作后,友元函数就可以访问此类中的私有…

Vue最新快速上手教程(狂神)

文章目录 前端核心分析1. 第一个Vue程序2. Vue基本语法3. Vue绑定事件4. Vue双向绑定5. 组件讲解6. Axios异步通信7. 计算属性8. 插槽slot9. 自定义事件内容分发10. 第一个vue-cli程序11. webpack学习使用12. vue-router路由13. vueelementUI14. 路由嵌套15. 参数传递及重定向1…

【JAVA】黑马程序员JAVA教程笔记 基础篇 Day 1

常用命令行DOS命令 Path环境变量 用途 1. 可以理解为系统中的一个大管家,记录了很多软件的完整路径。 2. 将常用的软件都交给Path环境变量,便于用命令行打开。 设置步骤 复制要使用的软件的存储地址右键点击 此电脑,打开属性点击 高级系统…

【2023最新】几乎涵盖你需要的Android性能优化的所有操作

前言 现如今,Android开发在市面上的需求不再像以前一样一人难求,僧多认识的情况直接导致整个行业对Android开发岗位的要求越来越高,Android 开发越来越规范,间接导致项目对质量要求的提升。启动优化、内存优化、App 崩溃监控等性…

【网络安全CTF】BUUCTF(Basic篇)

Linux Labs 解题思路:已给用户名密码,直接用ssh工具连接即可获取flag 查找flag在跟下 提交完成。 BUU LFI COURSE 1 访问链接:为php代码审计题,看题目要求构造GET请求读取文件 http://9a7d4988-99f9-4c29-88d8-600e19887723.n…

三极管知识大全

一、三极管的使用 一般可以当做开关管来使用,也可以利用三极管的放大特性,来搭建恒流源,恒压源等等, 三极管当做开关管来使用的话,三极管输出的是高、低、高、低的方波信号 BUCK电源的开关频率在65KHz,也…

【刷题笔记】另类加法+走方格的方案数

一、另类加法 题目: 牛客网链接:另类加法_牛客题霸_牛客网 描述 给定两个int A和B。编写一个函数返回AB的值,但不得使用或其他算数运算符。 测试样例:1,3 返回:4 解析: 因为无法使用算数运算符…

网易云音乐开发--完善video模块

解决多个视频同时播放问题 老样子,npm start开启服务器 说一下问题 现在打开多个视频会让他,同时播放,相当的吵闹。我们只需要一次只有一个视频播放 看文档,我们的思路是点击这个视频,关闭上次视频 我们传入这个id …

shell脚本语言

# 编写一个名为myfirstshell.sh的脚本,它包括以下内容。 #!/bin/bash# 1、包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的 # 杨轩 # myfirstshell.sh # 脚本命令的练习# 2、和当前用户说“hello 用户名” echo "hello xuan"# 3、…