软件工程概述

软件工程概述

软件工程指的是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产效率、提高软件质量、降低软件成本。

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):此阶段没有特定的里程碑,主要任务是将产品投入生产环境,进行维护和升级。

软考学习笔记,欢迎纠错与探讨,不喜勿喷!😘


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

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

相关文章

圆圈加数字的css

方式一 .circle { width: 50px; height: 50px; border-radius: 50%; background-color: #f00; color: #fff; text-align: center; line-height: 50px; } .circle::before { content: attr(data-number); display: block; } <div class"circle" data-number"…

C++学习笔记--函数重载(2)

文章目录 1.3、Function Templates Handling1.3.1、Template Argument Deduction1.3.2、Template Argument Substitution 1.4、Overload Resolution1.4.1、Candidate functions1.4.2、Viable functions1.4.3、Tiebreakers 1.5、走一遍完整的流程1.6、Name Mangling1.7、总结 1.…

咖啡喝完还能建房?掺入混凝土强度高30%

咖啡是全世界消耗量最高的饮料&#xff0c;这也导致咖啡渣的数量相当大很特别&#xff0c;据估计&#xff0c;全球每年会产生1800万吨废弃咖啡残渣&#xff0c;其中大多数最终被填埋处理。它们会在垃圾填埋场中分解&#xff0c;释放出甲烷&#xff0c;而甲烷引起的全球变暖效应…

深度ESP32 PWM教程如何在ESP32 中使用PWM

关于ESP32PWM的简要说明 ESP32 SoC 满载了非常有用的外设&#xff0c;PWM 就是其中之一。是的。ESP32 的芯片中有一个专用的 PWM 硬件模块。脉宽调制或简称PWM是一种成熟且广泛使用的供电技术。 您可以使用 ESP32 的 PWM 来驱动 LED、电机&#xff08;普通直流电机和无刷电机…

ROS多话题同步回调

文章目录 ExactTime PolicyApproximateTime Policy参考ExactTime Policy 这种方法要求输入的消息的时间戳必须完全相同才调用回调函数。 #include <message_filters/subscriber.h> #include <message_filters/synchronizer.h> #include <message_filters/sync…

qt文件操作

对话框练习 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//字体按钮 void Widget::on_ztbtn_clicked() {//调用QFontDia…

在Spring Boot中使用Redis 5的Stream

引言 Redis是一个开源的高性能键值对存储系统&#xff0c;而Redis 5引入了新的数据结构——Stream&#xff08;流&#xff09;。Stream可以用于高效地保存和处理事件流数据。在本文中&#xff0c;我们将学习如何在Spring Boot应用程序中使用Redis 5的Stream功能。 步骤 步骤…

01_Flutter之下拉刷新和上拉加载

一.创建页面 由于我们需要请求网络&#xff0c;并将返回的数据渲染到页面上&#xff0c;所以需要继承StatefulWidget&#xff0c;本文涉及的接口&#xff0c;取自鸿神的玩android开放API class ProjectListPage extends StatefulWidget {overrideState<StatefulWidget>…

AMEYA360:士兰微推出600A/1200V IGBT汽车驱动模块,提升充电速度与行驶动力

随着人们对环保意识的提高和汽车驾驶体验感的不断追求&#xff0c;新能源汽车的市场需求逐渐增大&#xff0c;已然成为汽车发展的大趋势&#xff0c;但是新能源汽车充电时间长、续航里程短等问题仍然是汽车厂商和车主们的痛点。因此&#xff0c;需要更好的汽车驱动产品来实现“…

Java和Kotlin的Field在继承中的不同表现

Kotlin是一个宣称与Java兼容性较好的语言&#xff0c;但在接触后发现一些技术还是有“概念上”的冲突&#xff0c;本文就记录下两者对象的Field&#xff08;中文的说法有字段、域、属性、成员变量&#xff0c;下文若出现这些表达&#xff0c;指的都是这个东西&#xff09;在继承…

js摄像头动态检测

利用摄像头每一秒截图一次图像。然后计算2次图像之间的相似度。 如果相似度低于98%就会报警。 var video document.getElementsByClassName(inputvideo)[0]; video.innerHTML "<video classinput_video idcamera autoplay width640px height380px></video>…

工厂模式 与 抽象工厂模式 的区别

工厂模式&#xff1a; // 抽象产品接口 interface Product {void showInfo(); }// 具体产品A class ConcreteProductA implements Product {Overridepublic void showInfo() {System.out.println("This is Product A");} }// 具体产品B class ConcreteProductB impl…

windows10使用wheel安装tensorflow2.13.0/2.10.0

安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow2.13.0安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的包 安装虚拟环境 这里笔者使用的是 virtualenv进行虚拟环境搭建的…

大数据平台之元数据

目录 一、表、字段元数据 二、作业元数据 一、表、字段元数据 表、字段元数据主要可以分为原始信息和附加信息两大类&#xff0c;原始信息包含&#xff1a;表名、表备注、字段名、字段类型、字段备注、表的大小、分区信息等&#xff0c;附加信息可以是跟表、字段相关的包含一…

VIRTIO-BLK代码分析(2)VIRTIO驱动分析

QEMU模拟的VIRTIO设备同时也是PCIE设备&#xff0c;Guest中VIRTIO PCIE驱动与之匹配&#xff0c;根据设备驱动模型&#xff0c;最终触发probe函数virtio_pci_probe()。该probe函数使能PCIE设备&#xff0c;并注册VIRTIO设备&#xff0c;并与VIRTIO-BLK匹配&#xff0c;触发VIRT…

通俗易懂讲解大模型:Tokenizer

Tokenizer Tokenizer 是 NLP pipeline 的核心组件之一。Tokenizer 的目标是&#xff1a;将文本转换为模型可以处理的数据。模型只能处理数字&#xff0c;因此 Tokenizer 需要将文本输入转换为数字输入。 通常而言有三种类型的 Tokenizer &#xff1a;Word-based Tokenizer、Cha…

【2594. 修车的最少时间】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个整数数组 ranks &#xff0c;表示一些机械工的 能力值 。ranksi 是第 i 位机械工的能力值。能力值为 r 的机械工可以在 r * n2 分钟内修好 n 辆车。 同时给你一个整数 cars &#xff0c;表示…

2023国赛数学建模A题思路分析 - 定日镜场的优化设计

# 1 赛题 A 题 定日镜场的优化设计 构建以新能源为主体的新型电力系统&#xff0c; 是我国实现“碳达峰”“碳中和”目标的一项重要 措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站(以下简称塔式电站)收集太阳能的基本组件&…

校园二手物品交易系统微信小程序设计

系统简介 本网最大的特点就功能全面&#xff0c;结构简单&#xff0c;角色功能明确。其不同角色实现以下基本功能。 服务端 后台首页&#xff1a;可以直接跳转到后台首页。 用户信息管理&#xff1a;管理所有申请通过的用户。 商品信息管理&#xff1a;管理校园二手物品中…