5.1-软件工程基础知识-软件工程概述
软件工程诞生原因
了解
- 早期的软件:主要是指采用个体工作方式实现的程序。
- 第一次软件危机:20世纪60年代中期
- 典型表现有软件质量低下、项目无法如期完成、项目严重超支等因为软件而导致的重大事故时有发生。
- 软件工程的诞生:1968年在NATO会议上提出对软件危机的解决方法“软件工程”
- 软件工程的基本要素:方法、工具、过程。
软件工程基本原理
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实现严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚地审查
- 开发小组的人员应少而精
- 承认不断改进软件工程实践的必要性
软件生存周期
- 可行性分析与项目开发计划
- 目标:确定软件开发目标及其可行性
- 输出:可行性分析报告、项目开发计划
- 需求分析
- 目标:确定软件系统要做什么,以及它的
功能、性能、数据和界面等要求,
从而确定系统的逻辑模型。 - 输出:软件需求说明书
- 目标:确定软件系统要做什么,以及它的
- 概要设计
- 目标:明确软件中的模块、模块的层次
结构、模块的调用关系和功能。
明确数据库结构 - 输出:慨要设计说明书
- 目标:明确软件中的模块、模块的层次
- 详细设计
- 目标:明确模块的控制结构
- 输出:详细设计说明书
- 编码
- 目标:将过程描述转变为程序代码
- 输出:某种特定语言的源代码
- 测试
目标:保证软件质量
输出:软件测试计划、测试用例、软件测试报告 - 维护
能力成熟度模型-CMM
重点考各个等级的描述,死记硬背
| 能力等级 | 特点 | 关键过程区域 |
|---|---|---|
| 初始级 | 软件过程的特点是杂乱无章,有时甚至很混乱,几乎没有明确定义的步骤,项目的成功完全依赖个人的努力和英雄式核心人物的作用。 | |
| 可重复级 | 建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性,有必要的过程准则来重复以前在同类项目中的成功。 | |
| 已定义级 | 管理和工程两方面的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准软件过程。所有项目都采用根据实际情况修改后得到的标准软件过程来开发和维护软件。 | |
| 已管理级 | 制定了软件过程和产品质量的详细度量标准。软件过程的产品质 | |
| 量都被开发组织的成员所理解和控制。 | ||
| 优化级 | 加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能不断持续地改进。 |
能力成熟度模型-MMI
- 能力成熟度模型集成-CMMI
是若干过程模型的综合和改进,不仅仅是软件,而是支持多个工程学科和领域的、系统的、一致的过程改进框架,能适应现代工程的特点和需要,能提高过程的质量和工作效率。 - CMMI两种表示方法:
- 阶段式模型:类似于CMM,它关注组织的成熟度。
- 连续式模型:关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级。
- 阶段式模型成熟度等级描述如下:
| 能力等级 | 特点 | 关键过程区域 |
|---|---|---|
| 初始级 | 过程不可预测且缺乏控制 | |
| 已管理级 | 过程为项目服务 | 需求管理、项目计划、配置管理、项目监督与控制、供应商合同管理、度量和分析、过程和产品质量保证 |
| 已定义级 | 过程为组织服务 | 需求开发、技术解决方案、产品集成、验证、确认组织级过程焦点、组织级过程定义、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案、组织级集成环境 |
| 定量管理 | 过程已度量和控制 | 组织过程性能、定量项目管理 |
| 优化级 | 集中于过程改进和优化 | 组织级改革和实施、因果分析和解决方案 |
练习题
(2022年真题)以下关于软件维护的叙述中,正确的是()。
A.工作量相对于软件开发而言要小很多
B.成本相对于软件开发而言要更低
C.时间相对于软件开发而言通常更长
D.只对软件代码进行修改的行为
答案C
在整个软件生成周期中,运维的时间是最长的,有的长达十几年一直在运维中。
(2009年真题)软件能力成熟度模型(CMM)的第4级(已管理级)的核心是()。
A.建立基本的项目管理和实践来跟踪项目费用、进度和功能特性
B.组织具有标准软件过程
C.对软件过程和产品都有定量的理解和控制
D.先进的新思想和新技术促进过程不断改进
答案C
在CMM的不同等级有不同的核心。在可重复级,建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性。在已定义级,所有项目都采用根据实际情况修改后得到的标准软件过程来开发和维护软件。在已管理级,收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。在优化级,过程的量化反馈和先进的新思想、新技术促使过程不断改进。
相关文章:
5.1-软件工程基础知识-软件工程概述
软件工程诞生原因 了解 早期的软件:主要是指采用个体工作方式实现的程序。第一次软件危机:20世纪60年代中期 典型表现有软件质量低下、项目无法如期完成、项目严重超支等因为软件而导致的重大事故时有发生。 软件工程的诞生:1968年在NATO会…...
极简聊天室-websocket版
再写一个极简聊天室的websocket版,在本例中,websocket仅用于服务器向客户端传输信息,客户端向服务器发送信息是传统的http post方式,用axios来实现的,当然websocket本身是支持双向通信,主要是为了方便跟前面…...
QT学生管理系统 开发文档
目录 第一章 UI界面设计与开发 登录界面 主界面 UI美化 第二章 数据库设计与开发 数据库设计 连接数据库 数据库功能设计 sql语句设计 查询所有学生数量 查询第几页学生数据 删除学生 修改学生信息 清空学生表 添加单个用户 删除单个用户 修改用户权限 查询所有用户…...
【五大海内外高校支持】2024年数字经济与计算机科学国际学术会议(DECS2024)
大会官网:www.icdecs.net 大会时间:2024年9月20-22日 大会地点:中国-厦门 截稿日期:详情见官网 支持单位 马来西亚理工大学 北京科技大学经济管理学院 南京信息工程大学 马来西亚敦胡先翁大学 大会嘉宾 大会主席 罗航…...
VS项目打包成lib库并使用
一、新建一个静态库项目 一般要把项目设为Release模式 二、添加文件 将所需要打包的头文件、源文件添加到该静态库项目中 三、生成项目 生成成功后即可在Release文件夹出现找到相应的.lib文件 四、使用静态库 将静态库文件复制到项目文件夹中,然后在项目属性设…...
社交巨头与去中心化:解析Facebook在区块链的角色
区块链技术的兴起为多个行业带来了变革,而社交平台也正在经历这一波技术浪潮。作为全球最大的社交网络之一,Facebook(现名Meta Platforms)在区块链领域的探索展示了其如何应对去中心化趋势的挑战,并利用这一技术推动自…...
MyBatis(学习记录)
一、ORM ORM是“对象关系映射”(Object-Relational Mapping)的缩写。这是一种编程技术,用于将对象模型与关系型数据库系统之间的数据进行转换。在面向对象的编程语言中,数据通常以对象的形式表示;而在关系型数据库中&a…...
QSpinbox
加载图片资源 在项目中,选择新建,QT->Qt Resource File -choose ,命名为 image ,创建完成了,会在目录下生成一个image.qrc。我们资源文件,要放在image.qrc 的同级目录或子目录中。 常用的小功能 在左下方&#x…...
分布式服务架构[原理、设计与实践]学习笔记
地震是由不可抗力导致的,而事故与之不同,任何大的生产事故在发生之前都有迹可循,而且事故的发生并不是偶然的,我们应该善于从现象中总结规律,找到发现、止损和避免的方法 海恩法则 每一起严重事故的背后,必…...
PDF发票解析并将信息回填到前端(1)后端解析PDF
文章目录 参考文章技术栈需求解析发票类型 1. 最终项目结构1.1 说明 2. 相关代码2.1 导入相应的maven依赖2.2 实体类2.3 工具类2.4 三层架构controllerservicemapper 参考文章 参考文章 技术栈 SpringBootVue 需求 本文主要是实现提取发票中的部分内容,并实现自…...
C++练习之插入删除
#include <iostream> #include <ctime> #include <cstring> #include<cstdlib> using namespace std;typedef struct bookInfo {char name[10];float price;int num; }BOOKINFO;// p: 结构体数组首元素地址 // n: 有效图书数量 void Print(const BOOKI…...
【LeetCode】238. 除自身以外数组的乘积
除自身以外数组的乘积 题目描述: 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请…...
Excel公式与函数(运算符,计算限制,错误检查)(一)
公式 公式概念 公式 是以“”号为引导,用过运算符按照一定的顺序组合进行数据运算处理的等式,函数 则是按特定算法执行计算的产生一个或一组结果的预定义的特殊公式。 公式组成要素 公式的组成要素为“”,运算符,单元格引用&a…...
用AI助手写程序
用AI帮助写程序究竟靠不靠谱,下面来测试一下: 在文心一言中输入:写一个C Windows API串口通信程序。结果如下: #include <windows.h> #include <iostream> // 串口配置 void ConfigureCommPort(HANDLE hComm) {…...
动手学深度学习7.2 使用块的网络(VGG)-笔记练习(PyTorch)
以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:25 使用块的网络 VGG【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址:7.2. 使用…...
SolidityFoundry ERC4626
ERC4626简介 ERC4626 协议是一种用于代币化保险库的标准。 我们经常说 DeFi 是货币乐高,可以通过组合多个协议来创造新的协议; ERC4626 扩展了 ERC20 代币标准,旨在推动收益金库的标准化,它是 DeFi 乐高中的基础,它允…...
大模型时代的操作系统:融合 Rust 和大模型,打造 AI 操作系统
每次技术革命,无论是个人电脑、互联网还是移动设备,总是从硬件开始,然后演化到软件层。而操作系统是计算机系统的核心,没有它,计算机就只是一堆硬件,无法运行任何程序。 微软 CEO 萨蒂亚纳德拉曾将生成式 …...
【ML】为什么要做batch normlization,怎么做batch normlization
为什么要做batch normlization,怎么做batch normlization 1. batch normlization1.1 批量归一化是什么:1.2 为什么要做批量归一化: 2. feature normalization2.1 特征归一化是什么:2.2 为什么要做特征归一化: 3. batc…...
【C++指南】命名空间
💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 一、命名空间的重要性 1. C语言中没有命名空间而存在的问题 2. C引入了命名空间解决的问题 3.…...
RocketMQ Dashboard安装
RocketMQ Dashboard 是一个基于 Web 的管理工具,用于监控和管理 RocketMQ 集群。它提供了一个用户友好的界面,使管理员能够轻松地查看和操作 RocketMQ 系统中的各种组件和状态。 主要功能包括: 集群管理: 监控和管理 NameServer 和 Broker …...
Hotkey Detective:三分钟定位Windows热键冲突的智能侦探
Hotkey Detective:三分钟定位Windows热键冲突的智能侦探 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 当你在…...
2025最权威的十大AI辅助写作网站实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 专为学术论文、毕业论文以及期刊稿件量身打造的维普AIGC检测系统,是基于深度学习…...
OpenClaw模型热切换:Qwen3-14b_int4_awq与ChatGLM3动态路由实验
OpenClaw模型热切换:Qwen3-14b_int4_awq与ChatGLM3动态路由实验 1. 为什么需要模型热切换 上周我在处理一个自动化任务时遇到了典型困境:让OpenClaw帮我生成Python爬虫代码时,ChatGLM3给出的方案总是过于保守;而让它写产品文案时…...
同样是硅做的圆片,价差百倍的秘密:半导体与光伏晶圆的本质区别
如果你留意过半导体和光伏行业的产品价格,一定会有这样的疑问:同样是硅材质、尺寸相近的晶圆,高端半导体晶圆一片能卖到几千元,而光伏硅片却只要几十元,身价相差近百倍。明明都是“硅做的圆片”,为何命运如此不同? 其实答案很简单:它们看似同宗同源,实则从一开始就被…...
HowTo-易连EDI-EasyLink如何进行一键部署
在易连EDI-EasyLink里,项目开发完毕时,可以点击功能菜单“部署包”功能进行一键部署。首先“创建” 部署包,输入名称和备注。然后点击“打包”打包日志如果没有错误,即为打包完成。紧接着,点击”部署”此时,…...
前端面试题(九九八十一难)
⼀、JavaScript核⼼原理1.computed与watch监听变化的原理核⼼:均依赖Vue响应式系统(Proxy/Object.defifineProperty)。 -computed:⾃动收集内部依赖的响应式数据,依赖变化⾃动重新计算,有缓存。 -watch&…...
3.一文看懂反向传播:从单个神经元到 PyTorch 自动求导
反向求导,多层次对应一个神经,单个神经元场景 学习这一篇的前提是,已经学会了梯度算法和线性结构算法,不明白的可以去看我之前的文章。 前面看不懂的,直接跳转到 “ 反向传播的流程 ” 底层的数学算法 z 是中间变量 u …...
Windows Server 配置与管理——第4章:磁盘管理
目录 4.1 项目背景 4.2 相关知识 1. 概念和术语 2. 基本磁盘 3. 动态磁盘 4. 磁盘配额 4.3 项目过程 4.3.1 任务 1 基本磁盘管理 1. 扩展磁盘空间 2. 新建简单卷 3. 删除简单卷 4. 添加新磁盘 4.3.2 任务 2 动态磁盘管理 1. 将基本磁盘转换成动态磁盘 2. 创建、…...
绍兴Geo优化,如何选对靠谱服务商?
在人工智能技术深度渗透商业推广领域的当下,GEO(地理定位)优化已不再是简单的本地搜索排名,而是演变为一场关于“空间精准度”与“AI语义理解”的双重竞赛。对于绍兴及周边区域的企业而言,如何从众多服务商中筛选出真正…...
IEEE/ASME Transactions on Mechatronics | 院士团队让移动机器人在复杂环境中学会主动避障
论文信息 英文题目: Vector Field Augmented Reinforcement Learning for Adaptive Motion Planning of Mobile Robots 中文题目:面向移动机器人自适应运动规划的向量场增强强化学习 作者: Yang Lu, Weijia Yao, Cong Li, Yongqian Xia…...
