快速了解软件工程学概述(5种软件过程模型)
目录
1 、什么是软件?特点有哪些 ?
2 、 软件危机
定义:
软件危机产生的原因
消除软件危机的方法
3 、软件工程
1.软件工程的介绍
(1)概念
(2)本质特征
(3)软件工程方法学(方法学也叫做范型)
3.传统方法学(生命周期方法学或结构化范型)
4)面向对象方法学(封装,继承、多态)
软件维护
4 、软件过程
4.1 定义
4.2典型软件过程模型
1.瀑布模型
2.快速原型模型
3. 增量模型
4 .螺旋模型
5. 喷泉模型(面向对象模型)
1 、什么是软件?特点有哪些 ?
1.软件是程序、数据和文档的完整集合。
2.特点:
软件是一种逻辑实体。
是人类的智力产品
软件需要长期维护
软件开发过程复杂
软件成本昂贵
软件可以复制
2 、 软件危机
定义:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两方面的问题:
1. 如何开发软件,以满足对软件日益增长的需求。
2. 如何维护数量不断膨胀的已有软件。
软件危机的一些典型表现(超重要)
1. 对软件开发成本和进度的估计常常很不准确。
2. 用户对“已完成的”软件系统不满意的现象经常发生
3. 软件产品的质量往往靠不住
4. 软件常常是不可维护的
5. 软件通常没有适当的文档资料。
6. 软件成本在计算机系统总成本中所占的比例逐年上升
7. 软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。
软件危机产生的原因
(1) 客观原因
1 . 软件是计算机系统中的逻辑部件而不是物理部件
2 . 软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
(2) 主观原因
1. 对软件开发和维护有不少糊涂观念, 采用了错误的方法和技术。
2. 对用户要求没有完整准确地认识就匆忙着手编写程序。
3. 一个软件从定义、开发、使用和维护,直到最终被废弃, 要经历一个漫
长的时期。
4. 一个软件产品必须由一个完整的配置组成, 主要包括程序、文档和数据
等成分。
5. 在软件开发的不同阶段进行修改需要付出的代价是很不相同的。
6. 轻视维护
消除软件危机的方法
(1)应该对计算机软件有一个正确的认识。
(2)应该充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、
共同完成的工程项目。
(3)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研 究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。
(4)应该开发和使用更好的软件工具。
3 、软件工程
1.软件工程的介绍
(1)概念
软件工程是从管理和技术两方面研究如何能更好的开发和维护计算机软件的一 门新兴学科。 采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间 考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来, 以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
(2)本质特征
1.软件工程关注于大型程序的构造
2.软件工程的中心课题是控制复杂性
3.软件经常变化
4.开发软件的效率非常重要
5.和谐的合作是开发软件的关键
6.软件必须有效的支持它的用户
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
2. 软件工程的 7 条基本原理
用分阶段的声明周期计划严格管理
坚持进行阶段评审
进行严格的产品控制
采用现代程序设计技术
结果应能清楚地审查
开发小组的人员应该小而精
承认不断改进软件工程时间的必要性
(3)软件工程方法学(方法学也叫做范型)
1.主要包括传统方法学和面向对象方法学
2.软件工程方法学三要素
方法: 完成软件开发的各项任务的技术方法, 回答“怎样做”的问题
工具: 为运用方法而提供的自动的或半自动的软件工程支撑环境
过程: 为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
3.传统方法学(生命周期方法学或结构化范型)
优点:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单, 便于不同人员分工协作, 从而降低了整个软件开发工程的困难程度;在软件生命周期的每个阶段都采用科学的管理技术和良好的技术方法,而 且在每个阶段结束之前都从技术和管理两个角度进行严格的审查, 合格之后才 开始下一阶段的工作,这就使软件开发工程的全过程以一种有条不紊的方式进行,保证了软件的质量,特别是提高了软件的可维护性。采用生命周期方法学可以大大提高软件开发的成功率和生产率。
4)面向对象方法学(封装,继承、多态)
优点:
降低了软件产品的复杂性
提高了软件的可理解性
简化了软件的开发和维护工作
提高了软件的可重用性
软件生命周期(三个时期,八个阶段)软件生命周期由软件定义、软件开发和运行维护 (软件维护) 3 个时期组成.
软件维护
通常有四类维护活动
[1] 改正性维护,即诊断和改正正在使用过程中发现的软件错误;
[2] 适应性维护,即修改软件以适应环境的变化
[3] 完善性维护,即根据用户的要求改进或扩充软件使它更完善
[4] 预防性维护,即修改软件,为将来的维护活动预先做准备
4 、软件过程
4.1 定义
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各
项任务的工作步骤。
4.2典型软件过程模型
1.瀑布模型
(1) 瀑布模型是软件工程中应用得最广泛的过程模型。传统软件工程方法学的软件过程+基
本上可以用瀑布模型来描述。
特点:
1 阶段间具有顺序性和依赖性
① 须等前一阶段的工作完成之后,才能开始后一阶段的工作;
②前一阶段的输 出文档就是后一阶段的输入文档,因此, 只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。
瀑布模型的优点
第一,可强迫开发人员采用规范的方法(例如,结构化技术);
第二, 严格地规定了每个阶段必须提交的文档;
第三, 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
第四, 对文档的约束,使软件维护变得容易一些, 且能降低软件预算。
瀑布模型的缺点
2.快速原型模型
定义: 快速建立起来的可以在计算机上运行的程序, 它所能完成的功能往往是最终产品能完成的功能的一个子集。
优点: 减少由于软件需求不明确带来的开发风险。这种模型适合预先不能确切定义需求的软件系统的开发。
3. 增量模型
定义: 使用增量模型时,把软件产品作为一系列的增量构件来设计、编码、集成和测试, 适应需求的变更。
增量模型的优点:第一, 能在较短时间内向用户提交可完成部分工作的产品第二, 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
缺点: 增量之间可能有不能集成的风险。
4 .螺旋模型
螺旋模型是快速原型法以进化的开发方式为中心,在每个项目阶段使用瀑布模型法。这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。螺旋模型即是一种引入了风险分析与规避机制的过程模型,是瀑布模型、快速原型方法和风险分析方法的有机结合。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失
5. 喷泉模型(面向对象模型)
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,就像水喷上去又可以落下来,类似一个喷泉。各个开发阶段没有特定的次序要求,并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。
相关文章:

快速了解软件工程学概述(5种软件过程模型)
目录 1 、什么是软件?特点有哪些 ? 2 、 软件危机 定义: 软件危机产生的原因 消除软件危机的方法 3 、软件工程 1.软件工程的介绍 (1)概念 (2)本质特征 (3)软件工程方法学(方…...
sql21(Leetcode1174即时食物配送2)
代码: # Write your MySQL query statement belowselect round (sum(order_date customer_pref_delivery_date) * 100 /count(*),2 ) as immediate_percentage from Delivery where (customer_id, order_date) in (select customer_id, min(order_date)from deliv…...

Node——Node.js基础
对Node.js中的基础知识进行讲解,包括全局变量、全局对象、全局函数以及用于实现模块化编程的exports和module对象等内容,这些知识是学习Node.js应用开发的基础。 1、Node.js全局对象 全局,即程序中任何地方都可以使用,Node.js内…...

基于SSM的企业订单跟踪管理系统(有报告)。Javaee项目
演示视频: 基于SSM的企业订单跟踪管理系统(有报告)。Javaee项目 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringM…...
中国吡啶行业市场研究与投资评估报告(2023版)
内容简介: 目前吡啶及其衍生物作为某些化学合成反应的催化剂,需求量在不断增加,因此吡啶在化学品合成领域的市场潜力最大。此外,对高效农药的需求量上升也是促进全球吡啶市场发展的另一关键因素。受人均可支配收入的持续增长和对…...

鼠标点击位置获取几何体对象_vtkAreaPicker_vtkInteractorStyleRubberBandPick
开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 demo解决问题:框选或者点选某一区域,并获取区域prop3D对象(红线内为有效区域,polydata组成的3d几何对象&a…...
【好玩的 Docker 项目】搭建一个简洁的记事本 ——minimalist-web-notepad
前言 搭建一个类似于 notepad 的纯文本笔记本,可以用来做记事本,也可以用来做临时记录的工具。 演示地址:https:/https://chinausdt.com 环境准备 腾讯香港轻量云应用服务器 1 核 1G(24 元 / 月款)域名一枚并做好解析Docker宝塔面板安装 Docker 更新、安装必备软件 BA…...

Linux4.5、进程状态
个人主页:Lei宝啊 愿所有美好如期而遇 目录 进程状态介绍 Linux下具体进程状态 R状态 和 S状态 D状态 T状态 t状态 Z状态 X状态 进程状态介绍 首先,进程状态有运行,阻塞,挂起,这些只是一个大体的概括&am…...

C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色)
目录 效果 模型信息 mot_ppyoloe_s_36e_ppvehicle.onnx vehicle_attribute_model.onnx 项目 代码 下载 其他 C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色) 效果 模型信息 mot_ppyoloe_s_36e_ppvehi…...

OpenGL之Mesa3D编译for Ubuntu20.04(三十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…...

ubuntu22.04 arrch64版操作系统编译zlmediakit
脚本 系统没有cmake,需要通过apt先进行下载,下面的脚本已经包含了 # 安装依赖 gcc-c.x86_64 这个不加的话会有问题 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64 cm…...

Course1-Week1:机器学习简介
Course1-Week1:机器学习简介 文章目录 Course1-Week1:机器学习简介1. 课程简介1.1 课程大纲1.2 Optional Lab的使用 (Jupyter Notebooks)1.3 欢迎参加《机器学习》课程 2. 机器学习简介2.1 机器学习定义2.2 有监督学习2.3 无监督学习 3. 线性回归模型3.1…...
这19个JS代码技巧,后悔没有早点看到
在实际工作中,开发者常面临一些需巧妙编程解决的挑战。有时几行代码就能迎刃而解。本文整理了一系列实用代码片段,助您轻松处理URL、DOM操作、事件处理、日期处理以及用户偏好设置等常见问题。 这些精选代码片段均源自“30 seconds of code”——一个卓…...

Rust UI开发(一):使用iced构建UI时,如何在界面显示中文字符
注:此文适合于对rust有一些了解的朋友 iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。 iced的基本逻辑是: UI交互产生消息message,message传递给后台的update,在这个函数中编写逻辑,然后通过…...

ros2文件package.xml与cmakelists.txt比较
每次在ros2里面添加文件以后,都要修改packages.xml,与cmakelists.txt文件。...
vue3使用element plus树形选择器懒加载回显失败问题。
vue3使用element plus树形选择器懒加载回显时树形数据还未加载完成,回显时显示的的绑定值,不是要显示的名称。 解决1:不使用懒加载,一次性将数据返回完成 解决2:编辑回显时,拿到要显示的中文强制修改显示…...

Java基于springoot开发的企业招聘求职网站
演示视频: https://www.bilibili.com/video/BV1xw411n7Tu/?share_sourcecopy_web&vd_source11344bb73ef9b33550b8202d07ae139b 技术:springootmysqlvuejsbootstrappoi制作word模板 主要功能:求职者可以注册发布简历,选择简…...
数据结构 / 顺序表 / 顺序表概述和结构体定义
1. 顺序表概述 顺序表:线性表的顺序存储称为顺序表逻辑结构:线性结构(一对一)存储结构:顺序存储(使用一段连续的存储空间存储类型相同的数据元素)顺序表:逻辑相邻,物理也相邻顺序表是借助于数组实现,但是不…...

js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数!
js最新随机字符串,进制数随机字符串,更优秀的随机字符串方式,你绝对没用过的随机字符串方式,可控制位数! 函数封装和传参 首先我们,要封装这样一个函数,首先要确定,传入哪些参数。…...
通过内存标记扩展(MTE)提供增强的安全性
目录 一、内存安全BUG导致的安全漏洞 二、检测和修复内存安全漏洞的难点 三、MTE如何应对这一挑战...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...