考试:软件工程(01)
软件开发生命周期
◆软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标, 具体可分成问题定义、可行性研究、需求分析等。
◆软件开发时期:就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。
◆软件运行和维护:就是把软件产品移交给用户使用。
◆软件系统的文档可以分为用户文档和系统文档两类,用户文档主要描述系统功能和使用方法,并不关 系这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容。
◆软件工程过程是指为获得软件产品包括以下4个方面活动:
(1)P(Plan)—— 软件规格说明。规定软件的功能及其运行时的限制。
(2)D(Do)—- 软件开发。开发出满足规格说明的软件。
(3)c(Check)—— 软件确认。确认开发的软件能够满足用户的需求。
(4)A (Action)——软件演进。软件在运行过程中不断改进以满足客户新的需求。
◆软件系统工具通常可以按软件过程活动将软件工具分为:
软件开发工具:需求分析工具、设计工具、编码与排错工具、测试工具等。
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。
◆软件设计四个活动:数据设计、架构(体系结构)设计、人机界面(接口)设计和过程设计。
CMM
CMMI
I就是集成
目前都是cmmi.
软件过程模型
瀑布模型
◆瀑布模型(SDLC): 瀑布模型是一个经典的软件生命周期模型, 一 般将软件开发分为:可行性分析(计划)、需求分析、软 件设计(概要设计、详细设计)、编码(含单元测试)、测 试、运行维护等几个阶段。
◆瀑布模型特点
( 1 ) 从上一项开发活动接受该项活动的工作对象作为输入。
(2)利用这 一 输入,实施该项活动应完成的工作内容。
(3)给出该项活动的工作成果,作 为 输 出传给下一项开发活 动 。
( 4 ) 对该项活动的实施工作成果进行评审。若其工作成果得 到确认,则继续进行下一项开发活动;否则返回前一项,甚 至更前项的活动。尽量减少多个阶段间的反复。以相对来说 较小的费用来开发软件
按照顺序来的过程。
螺旋模型
◆螺旋模型是一个演化软件过程模型,将原型实现的迭代特 征与线性顺序(瀑布)模型中控制的和系统化的方面结合起 来。在螺旋模型中,软件开发是一系列的增量发布。
◆开发过程具有周期性重复的螺旋线状。四个象限分别标志 每个周期所划分的四阶段: 制订计划、风险分析、实施工程 和客户评估。螺旋模型强调了风险分析,特别适用于庞大而 复杂的、高风险的系统。
这里主要是 对风险分析。
V模型
单编-集详-系概-验需
原型模式
◆原型化模型第一步就是创建一个快速原型,能够满足项目干系人与未来的用 户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最 终 弄 清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满 意的产品。
◆原型法认为在很难一下子全面准确地提出用户需求的情况下,原型应当具备 的特点如下。
(1) 实际可行
( 2 ) 具 有最终系统的基本特征
(3) 构造方便、快速,造价低。原型法的特点在于原型法对用户的需求是动态 响应、逐步纳入的。
增量模型
◆增量模型:首先开发核心模块功能,而后与用户确认,之后再开发次核心模 块的功能,即每次开发一部分功能,并与用户需求确认,最终完成项目开发, 优先级最高的服务最先交付。
◆特点:但由于并不是从系统整体角度规划各个模块,因此不利于模块划分。 难点在于如何将客户需求划分为多个增量。与原型不用的是 增量模型的每一次 增量版本都可作为独立可操作的作品,而原型的构造一般是为了演示。
喷泉模型
◆喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型,适合于面向 对象的开发方法。使开发过程具有迭代性和无间隙性。
快速开发模式CBSD
◆基于构件的开发模型CBSD:利 用 预先包装的构件来构造应用系统。构件可以
是组织内部开发的构件,也可以是商品化成品软件构件。特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复
用,因此可以提高可靠性,节省时间和成本。
形式化方法模型
◆形式化方法模型:建立在严格数学基础上的一种软件开发方法,主要活动是 生成计算机软件形式化的数学规格说明。
敏捷开发模型(重点看)
开发宣言:个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、响应变化胜过遵循计划。
◆敏捷方法区别于其他方法的两个特点:
( 1 ) 是 “适应性”而非“预设性”。
( 2 ) 是 “面向人的”而非“面向过程的”。
◆敏捷方法的核心思想:
(1)敏捷方法是适应型,而非可预测型。 拥抱变化,适应变化。
(2)敏捷方法是以人为本,而非以过程为 本。发挥人的特性。
(3) 迭代增量式的开发过程。以原型开发 思想为基础,采用法代增量式开发,发行版 本小型化。
统一过程模型RUP(重点)对应的敏捷开发
◆ RUP把软件开发生命周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次
由4个连续的阶段组成,每个阶段完成确定的任务。这4个阶段如下。
·初始阶段:定义最终产品视图和业务模型,并确定系统范围。
·细化阶段:设计及确定系统的体系结构,制订工作计划及资源要求。
·构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
·移交阶段:把产品提交给用户使用。
◆ RUP 中定义了如下一些核心概念,理解这些概念对于理解RUP 很有帮助。
·角色:Who 的问题。角色描述某个人或一个小组的行为与职责。 RUP预先定义了很多角色,如体 系结构师、设计人员、实现人员、测试员和配置管理人员等,并对每一个角色的工作和职责都做 了详尽的说明。
·活动:How 的问题。活动是一个有明确目的的独立工作单元。
·制品:What 的问题。制品是活动生成、创建或修改的一段信息。
·工作流:When 的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值 的产品,并显示了角色之间的关系。
◆ RUP的特点:
(1) 用例驱动:需求分析、设计、实现和测试等活动都是用例驱动的。
(2) 以体系结构为中心:包括系统的总体组织和全局控制、通信协议等。是一个多维的结构, 会采用多个视图来描述。在典型的4+1视图模型中:
◆分析人员和测试人员关心的是系统的行为,会侧重于用例视图;
◆最终用户关心的是系统的功能,会侧重于逻辑视图;
◆程序员关心的是系统的配置、装配等问题,会侧重于实现视图;
◆系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,会侧重于进程视图;
◆系统工程师关心的是系统的发布、安装、拓扑结构等问题,会侧重于部署视图。
(3) 迭代与增量。把整个项目开发分为多个迭代过程。在每次选代中,只考虑系统的一部分需
求,进行分析、设计、实现、测试和部署等过程;每次迭代是在己完成部分的基础上进行的,每 次增加一些新的功能实现,以此进行下去,直至最后项目的完成。
逆向工程
相关文章:

考试:软件工程(01)
软件开发生命周期 ◆软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标, 具体可分成问题定义、可行性研究、需求分析等。 ◆软件开发时期:就是软件的设计与实现,可分成概要设计…...

数据结构应用实例(三)——赫夫曼编码
Content: 一、问题描述二、算法思想三、代码实现四、小结 一、问题描述 对一篇英文文章,统计各字符(仅限于26个小写字母)出现的次数,并据此进行 Huffman 编码。 二、算法思想 首先,打开文本文件࿰…...

关于Spring Cloud Gateway中 Filters的理解
Spring Cloud Gateway中 Filters的理解 Filters Filters拦截器的作用是,对请求进行处理 可以进行流量染色 ⭐增加请求头 例子 spring:cloud:gateway:routes:- id: add_request_header_routeuri: http://localhost:8123predicates:- Path/api/**filters:- AddR…...

【实践】应用访问Redis突然超时怎么处理?
目录标题 问题描述分析过程查看监控数据系统监控指标JVM监控指标Redis监控指标分析应用异常单机异常规律集群异常规律统计超时的key 初步结论验证结论访问Redis链路slowlogRedis单节点info all定位redis节点定位异常keybigkeystcpdump定位大key影响 经验总结 问题描述 某产品线…...

Spring Cloud Alibaba核心组件Nacos/Seata/Sentinel
文章目录 Spring Cloud Alibaba介绍Spring Cloud 微服务体系Spring Cloud Alibaba 定位 注册配置中心--Nacos服务治理架构注册中心原理 Nacos介绍Nacos 的关键特性1.服务注册和发现2.动态配置服务3.实时健康监控4.动态DNS服务5.易于集成: Nacos入门示例服务注册与发…...

Ubuntu搭建FTP服务器
1. 首先,我们需要安装和配置xinetd,安装的具体命令如下: sudo apt-get install xinetd 2. 新建tftp工作目录,并添加读、写、执行权限(没有权限后面无法正常访问该文件夹),如下图所示。 3. 安装…...

Redis在单线程下删除大Key会发生什么?怎么删除大Key?
大Key的定义 大Key是指在缓存系统(如Redis)或分布式存储中,单个键(Key)对应的数据量非常大,通常存储的是大块数据结构,例如包含大量数据的哈希表、列表、集合或有序集合。这种大Key往往会对系统…...

《Exploit temporal cues in multi-camera 3D object detection》论文泛读
ReadPaperhttps://readpaper.com/pdf-annotate/note?pdfId4666749915775385601eId2491528568128599808 针对单帧数据含有的信息太少的问题,提出了一种新的方法,BEVDet4D,这种方法可以访问时间线索,并且取得了较好的表现ÿ…...

十四、centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案
🌻🌻目录🌻🌻 一、 centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64二、分析错误三、解决方案3.1 检查网络连接3.2 检查DNS设置3.3 检查YUM仓库配置3.3.1 使用官方CentOS镜像配置3.3.2 使用阿里云…...

qt使用对数坐标的例子,qchart用QLogValueAxis坐标不出图解决
硬件:ThinkPad T15 系统:win10 专业版 qt版本:Qt 5.14.1 , QtCreator 4.11.1 软件界面放了一个QPushButton,一个QVBoxLayout,如下: 主要代码如下,我添加了两条曲线,…...

Python 爬虫入门 - 爬虫 requests 请求
在当今互联网时代,数据的获取变得尤为重要,而网络爬虫作为自动化获取数据的一种方式,受到了越来越多编程爱好者和数据分析人员的青睐。Python 语言以其简洁的语法和丰富的库,成为了实现网络爬虫的首选工具。其中,requests库是一个非常流行且强大的工具,用于发送 HTTP 请求…...

flink中startNewChain() 的详解
在 Apache Flink 中,startNewChain() 是一个与算子链(operator chaining)相关的方法。与 disableChaining() 类似,它允许开发者控制算子链的创建方式,但 startNewChain() 的作用是从当前算子开始创建一个新的算子链&am…...

uniapp 苹果安全域适配
一、使用原生占位(仅App端支持) //在manifest.json 文件中 app-plus 中配置 "safearea": { "background": "#FFFFFF", "bottom": { "offset": "auto" } } 二、不使用原生占位 //&…...

linux使用命令行编译qt.cpp
步骤: mkdir qttestcd qttestvim hello.cpp #include <QApplication> #include <QDialog> #include <QLabel> int main(int argc,char* argv[]) {QApplication a(argc,argv);QLabel label("aaa");label.resize(100,100);label.show()…...

Ubuntu 22.04 LTS 上安装 Docker
单台机器安装docker环境,是为了后面安装open-webui,环境安装比较简单,没有难点,但一定要按步骤走,否则还是会遇到一些问题的。 第 1 步:更新软件包并安装必要软件 运行以下命令,更新软件包索引…...

2024秋季云曦开学考
web ezezssrf 打开环境,代码审计 看起来有点多,要绕过五层 第一层:存在弱比较,使用数组或0e绕过 yunxi[]1&wlgf[]2 yunxis878926199a&wlgfs155964671a 第二层:存在强比较,此处使用string限制…...

基于STM32与Qt的自动平衡机器人:从控制到人机交互的的详细设计流程
一、项目概述 目标和用途 本项目旨在开发一款基于 STM32 控制的自动平衡机器人,结合步进电机和陀螺仪传感器,实现对平衡机器人的精确控制。该机器人可以用于教育、科研、娱乐等多个领域,帮助用户了解自动控制、机器人运动学等相关知识。 技…...

C#使用ZipFile的方法CreateFromDirectory
由于现在数据越来越大,虽然磁盘的大小也在增加,但是数据增加的速度是远超过磁盘的增加速度。 因为数据是一种思想的表现,特别是ChatGPT的AI出现,导致很多数据无限地使用机器化地产生,所以数据压缩还是很常有的事情,毕竟压缩之后可以减少磁盘空间的占用。 在C#里有一个专…...

Redis 哨兵模式的选举算法是什么?
Redis 哨兵模式中的选举算法主要用于在主节点出现故障时,从多个 Sentinel 节点中选出一个领导者(Leader)来执行故障转移操作。 Redis 哨兵的选举算法基于 Raft 算法的简化版本,但不完全等同于标准的 Raft 算法。以下是其主要过程: 一、发现主节点故障 当一个 Sentinel …...

Linux shell编程学习笔记80:gzip命令——让文件瘦身
0 引言 在 Linux shell编程学习笔记76:tar命令——快照 & 备份(上)-CSDN博客 Linux shell编程学习笔记77:tar命令——快照 & 备份(下)_linux 系统快照-CSDN博客 Linux shell编程学习笔记78&am…...

【字幕】恋上数据结构与算法之01为什么要学习数据结构与算法
视频地址:请查看01为什么要学习数据结构与算法_哔哩哔哩_bilibili 同志们好,我是小码哥的mj李明杰。非常欢迎大家来学习链上数据结构与算法,从今天开始呢就由我来带大家一起来学习和掌握这个数据结构与算法啊。在正式学习之前我们先来看一下…...

120页ppt丨集团公司战略规划内容、方法、步骤及战略规划案例研究
响应会员需求,晓零分享一份经典资料《120页ppt集团公司战略规划内容、方法、步骤及战略规划案例研究》,欢迎进入星球下载学习。 以下是对企业战略规划三个阶段八个步骤的详细解析: 一、阶段一:内外分析 项目启动和前期准备&…...

滚雪球学SpringCloud[2.3]:服务发现与负载均衡详解
全文目录: 前言1. Ribbon的使用与配置1.1 Ribbon 概述Ribbon 的核心功能: 1.2 Ribbon 的基本使用1.2.1 引入 Ribbon 依赖1.2.2 配置 RestTemplate 与 Ribbon1.2.3 示例:通过 Ribbon 调用服务 1.3 Ribbon 的配置选项 2. Ribbon的负载均衡策略2…...

商务英语口语之聚会宴饮常用口语柯桥培训到蓝天广场
吃饭一定要掌握的英语口语 邀请他人共进餐: Would you like to join me for dinner? 你愿意和我一起吃饭吗? Lets grab a bite to eat together. 我们一起去吃点东西吧。 How about having lunch with me? 和我一起吃午饭怎么样? 询问…...

【C#】VS插件
翻译 目前推荐较多的 可以单词发言,目前还在开发阶段 TranslateIntoChinese - Visual Studio Marketplace 下载量最高的(推荐) Visual-Studio-Translator - Visual Studio Marketplace 支持翻译的版本较多,在 Visual Studio 代码编辑器中通过 Googl…...

嵌入式C语言自我修养:C语言的面向对象编程思想
⭐关联知识点:C和C的区别 代码复用与分层思想 什么是代码复用呢? (1)函数级代码复用:定义一个函数实现某个功能,所有的程序都可以调用这个函数,不用自己再单独实现一遍,函数级的代…...

行车记录仪格式化了怎么恢复?专业恢复方法分享
行车记录仪作为现代驾驶的必备设备,它忠实记录着行车过程中的点点滴滴,是保障行车安全、处理交通事故的重要依据。然而,有时由于操作失误或其他原因,我们可能会不小心将行车记录仪进行格式化,导致宝贵的录像数据丢失。…...

C++中extern ”c“的理解
c中extern “C“的作用及理解_extern "c-CSDN博客...

红黑树的删除
文章目录 前言一.删除的节点左子树右子树都有二.删除的节点只有左/右子树删除调整操作 三.删除的节点没有孩子1.删除的节点为红色2.删除的节点为黑色1).兄弟节点为黑色(1).兄弟节点至少有一个红色的孩子节点LL型RR型RL型LR型 (2).兄弟节点没有孩子或所有孩子为黑色 2).兄弟节点…...

Vue3+setup实现父子组件单表增删改查写法模板
父组件写法 <el-card><!-- el-card 头部插槽 显示列表名和新增按钮 --><template #header><div class"table-header-container"><i class"fas fa-th" />角色列表(100)<span style"flex-grow…...