软件工程概述
软件工程概述
软件工程指的是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产效率、提高软件质量、降低软件成本。
1. 计算机软件
计算机软件指的是计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述。任何以计算机为处理工具的任务都是计算任务。
按照软件的应用领域,将计算机软件分为以下十类,包括:
①系统软件;②应用软件;③工程科学软件;④嵌入式软件;⑤产品线软件;⑥Web应用软件(Web APP);⑦人工智能软件;⑧开放计算;⑨网络资源;⑩开源软件。
2. 软件工程基本原则
美国著名的软件工程专家B.W.Boehm于1983年提出了软件工程的七条基本原理,包括:
①用分阶段的生命周期计划严格管理;
②坚持进行阶段评审;
③实现严格的产品控制;
④采用现代的程序设计技术;
⑤结果应能清楚地审查;
⑥开发小组的人员应少而精;
⑦承认不断改进软件工程实践的必要性。
3. 软件生存周期🌟🌟🌟🌟🌟
同任何事物一样,一个软件产品或软件系统要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期。软件生存周期包括以下七个方面:
3.1 可行性分析与项目开发计划(确定软件开发目标及其可行性,产出可行性分析报告、项目开发计划)
这个阶段主要确定软件的开发目标及其可行性。参与该阶段的人员有用户、项目负责人、系统分析师。产生的文档有可行性分析报告、项目开发计划。
3.2 需求分析(确定软件系统要做什么,产出软件需求说明书)
该阶段的任务不是具体的解决问题,而是要确定软件系统要做什么,确定软件系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型。参与该阶段的人员有用户、项目负责人、系统分析师。产生的文档主要是软件需求说明书。
3.3 概要设计(将确定下来的功能转换成需要的体系结构,产出概要设计说明书)
该阶段开发人员把确定的各项功能需求转换成需要的体系结构。概要设计就是设计软件的结构,明确软件由哪些模块组成,这些模块层次结构是怎样的,调用关系是怎样的,每个模块的功能是什么。参与该阶段的人员有系统分析师、软件设计师。产生的文档主要是概要设计说明书。
3.4 详细设计(对每一个模块进一步详细具体的描述,产出详细设计文档)
该阶段的主要任务是**对每个模块的功能进一步详细、具体的描述。**参与该阶段的人员有软件设计师、程序员。产生的文档主要是详细设计文档。
3.5 编码(根据模块编码实现功能,产出源程序)
把每个模块的控制结构转换成计算机可接受的程序代码,即写成某种特定程序设计语言表示的源程序清单。
3.6 软件测试(测试软件功能和性能,产出软件测试计划、测试用例、测试报告)
测试是保证软件质量的重要手段。参加测试的人员通常是另一部门(或单位)的软件设计师或系统分析师。产生的文档主要是软件测试计划、测试用例、测试报告。
3.7 后期维护(生命周期最长的阶段)
软件维护是软件生存周期中时间最长的阶段。软件已交付且正式投入使用后,便进入维护阶段。对软件进行修改的原因包括:
- 运行中发现隐含的错误而需要修改;(纠正错误)
- 为了适应变化的(或变化后的)工作环境而修改;(适应环境变化)
- 需要对软件功能进行扩充、增强而进行的修改;(功能增强)
- 为将来软件维护活动做预先准备。(维护准备)
4.软件过程🌟🌟🌟
软件开发中遵循一系列可预测的步骤(即路线图),该路线图称为软件过程。过程是活动的集合,活动是任务的集合,软件过程有三层含义:
- 个体含义:指某产品、系统在生存周期中的某一类活动的集合,如开发过程、管理过程等。
- 整体含义:指软件产品、系统在所有上述含义下的软件过程的总体。
- 工程含义:指解决软件过程的工程。
4.1 能力成熟度模型(CMM)
CMM是对软件组织进化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步提高。CMM将软件过程的改进分为五个成熟度级别。
4.2 能力成熟度模型集成(CMMI)
CMMI提供了两种表示方法:阶段式模型和连续式模型。
4.2.1 阶段式模型
结构类似于CMM,它关注组织的成熟度。CMMI-SE/SW/IPPD 1.1版本中有五个成熟度等级。
- 初始级:过程不可预测且缺乏控制。
- 已管理级:过程为项目服务。
- 已定义级:过程为组织服务。
- 定量管理级:过程已度量和控制。
- 优化级:集中过程改进。
4.2.2 连续式模型
关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级(简称CL)。CMMI中包括六个过程域能力等级。
- CLO-未完成级:过程未被执行或未被充分执行。
- CL1-已执行级:过程已被执行,但未达到所要求的目标或标准。
- CL2-已管理级:过程已在管理控制之下,并被证明能够满足组织所设定的目标或标准。
- CL3-已定义级:过程被定义,并被证明能够满足设定的目标或标准,同时该过程记录文档。
- CL4-定量管理级:过程已被量化管理,并被证明能够满足设定的目标或标准,同时该过程记录文档。
- CL5-优化级:过程已被优化,并被证明能够满足设定的目标或标准,同时该过程记录文档。
4.3 统一过程(UP)
统一过程(Unified Process,UP)是一种软件过程工程方法,也被称为软件开发过程。它是一种迭代和增量的开发过程,以用例和风险为驱动,以架构为中心,使用UML方法和工具支持。
- 起始阶段(Inception Phase):此阶段的里程碑是生命周期目标(Lifecycle Goal),主要任务是确定项目的范围和目标,评估风险和可行性。
- 精化阶段(Elaboration Phase):此阶段的里程碑是生命周期架构(Lifecycle Architecture),主要任务是细化需求,设计和架构。
- 构建阶段(Construction Phase):此阶段的里程碑是初始运作功能(Initial Operational Functionality),主要任务是实现核心功能,进行单元测试。
- 移交阶段(Transition Phase):此阶段的里程碑是产品发布(Product Release),主要任务是进行集成测试,修复错误,进行系统测试,最后发布产品。
- 产生阶段(Production Phase):此阶段没有特定的里程碑,主要任务是将产品投入生产环境,进行维护和升级。
软考学习笔记,欢迎纠错与探讨,不喜勿喷!😘
相关文章:

软件工程概述
软件工程概述 软件工程指的是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产效率、提高软件质量、降低软件成本。 1. 计算机软件 计算机软件指的是计算机系统中的程序及其文档。程序是计算任务的…...

国际网页短信软件平台搭建定制接口说明|移讯云短信系统
国际网页短信软件平台搭建定制接口说明|移讯云短信系统 通道路由功能介绍 支持地区通道分流,支持关键字,关键词通道分流,支持白名单独立通道,支持全网通道分流,支持通道可发地区设置,通道路由分组&#x…...

Java“牵手”阿里巴巴店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,阿里巴巴店铺所有商品API申请指南
阿里巴巴平台店铺所有商品数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取阿里巴巴整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台…...

【Sql】把数据库字段用函数根据逗号分裂成列表,然后判断列表中是否包含目标值
【Sql】把数据库字段用函数根据逗号分裂成列表,然后判断列表中是否包含目标值 【1】问题描述【2】Oracle内置函数解决【3】mysql的内置函数INSTR()【4】mysql的内置函数FIND_IN_SET() 【1】问题描述 数据库中【库信息db】和【集群信息cluster】是一对多的关系&…...
docker基本命令记录
Docker 是一个开源的容器技术,它允许开发人员将应用程序及其所有依赖项打包到一个容器中,然后轻松地在任何地方部署和运行。以下是 Docker 的一些基本操作: 基础操作: 启动 Docker:service docker start停止 Docker:service docker stop查看 Docker 信息:docker info容器操作…...

web之利用延迟实现复杂动画、animation
文章目录 效果图htmlstyleJavaScript 效果图 html <div class"container"><div class"ball"></div><input type"range" min"0" max"1" step"0.01" /> </div>style body {display…...

TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?
先来介绍一些osi七层模型 分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。 应用层(数据):确定进程之间通信的性质以及满足用户需要以及提供网络和用户应用,为应用程序提供服务,DNS,HTTP,HTTPS…...

鼠标悬停阴影的效果被旁边div挡住的解决办法
出现的问题 需求要求鼠标悬停某个图片上有阴影效果,但阴影被旁边相邻的div挡住了,如图所示 解决方案 给悬停的这块div增加2个css属性 $(this).css(position, relative); $(this).css(z-index, 200);新的效果如图所示 一直写后端,前端的…...
Go用两个协程交替打印100以内的奇偶数
方式1(使用无缓冲的channel) package mainimport ( "fmt" "time")var flagChan make(chan int)func wokr1() { for i : 1; i < 100; i { flagChan <- 666 // 塞入 if i%2 1 { fmt.Println("协程1打印:", i) …...

css 文字单行多行超出长度后显示 ...
0.超出… 1、单行文本超出 <div class"content">测试数据:css单行文本超出显示省略号--------</div><style> .content{width: 200px;height: 200px;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow:el…...

C++将派生类赋值给基类
在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍…...
海外问卷调查是做什么的?
大家好,我是橙河。现在我来给大家简单讲解一下海外问卷调查是做什么的? 多年以前,人们就开始在网上进行海外问卷调查了。最常见的方法是通过问卷网站、做问卷或者论坛进行调查,现在则更多地使用各种渠道进行调查。海外国家对于问…...

Redis——数据结构介绍
Redis是一个key-value的数据库,key一般是String类型,不过value的类型是多样的: String:hello wordHash:{name:"Jack",age:21}List:[A -> B -> C -> D]Set:{A,B,C}SortedSet…...

附录2-将三国演义按章节存储为不同的txt(bs4)
地址 《三国演义》全集在线阅读_史书典籍_诗词名句网 目录 1 项目分析 2 代码 1 项目分析 我们可以在首页中找到所有的章节 每一个章节是一个a标签,a标签连接到该章节的内容 但这个网站他有bug,章节都是乱套的,我们无视这种错误&#…...

现代C++中的从头开始深度学习:【6/8】成本函数
现代C中的从头开始深度学习:成本函数 一、说明 在机器学习中,我们通常将问题建模为函数。因此,我们的大部分工作都包括寻找使用已知模型近似函数的方法。在这种情况下,成本函数起着核心作用。 这个故事是我们之前关于卷积的讨论的…...

Vue——vue3中的ref和reactive数据理解以及父子组件之间props传递的数据
ref()函数 这是一个用来接受一个内部值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的属性 .value。 作用:创建一个响应式变量,使得某个变量在发生改变时可以同步发生在页面上。 模板语句中使用这个变量时…...

新手如何备考PMP考试?
回头看来,从战略上来说: 备考第一重点:要有一个清晰的目标——我要过! 第二重点:足够重视它——把它的优先级调整到仅次于工作:万籁俱寂,唯有学习。 第三重点:自律——有了第一点…...

FPGA输出lvds信号点亮液晶屏
1 概述 该方案用于生成RGB信号,通过lvds接口驱动逻辑输出,点亮并驱动BP101WX-206液晶屏幕。 参考:下面为参考文章,内容非常详细。Xilinx LVDS Output——原语调用_vivado原语_ShareWow丶的博客http://t.csdn.cn/Zy37p 2 功能描述 …...

算法面试-深度学习基础面试题整理(2023.8.29开始,每天下午持续更新....)
一、无监督相关(聚类、异常检测) 1、常见的距离度量方法有哪些?写一下距离计算公式。 1)连续数据的距离计算: 闵可夫斯基距离家族: 当p 1时,为曼哈顿距离;p 2时,为欧…...

FireFox禁用HTTP2
问题 最近需要调试接口,但是,Chrome都是强制使用h2协议,即HTTP/2协议。为了排除h2协议排除对接口调用的影响,需要强制浏览器使用HTTP1协议。 解决 FireFox 设置firefox的network.http.http2.enabled为禁用,这样就禁…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...