软件工程(1)--初识基础概念

news2024/12/24 20:58:19

前言

学习了半年的软件工程课程,总不能一无所获吧,故此写下文章总结一番。

软件工程是一门综合性交叉学科,它涉及计算机科学、工程科学、管理科学和数学等领域。学习目标是掌握需求分析、软件设计、编码风格、软件测试的工程化方法。

软件=程序+数据+文档

一、软件危机

1.定义

定义:在计算机软件的开发和维护过程中所遇到的一系列严重问题。

1968年 NATO 会议( Garmisch , Germany )提出"软件危机"

  • 项目超出预算
  • 项目超过计划完成时间
  • 软件运行效率很低
  • 软件质量差
  • 软件通常不符合要求项目
  • 难以管理并且代码难以维护
  • 软件不能交付

2.案例 

OS/360:1961-1964年,IBM公司的 OS /360,共约100万条指令,花费了5000个人年,开发总投资5亿美元,达到当时美国研究原子弹的曼哈顿计划投资20亿美元的1/4,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。 

美国火箭爆炸:根据 NASA 的报告,是1962年的飞往金星的宇宙飞船天线发生故障,致使地面无法控制火箭,于是火箭上的计算机开始控制火箭,然而在导航系统软件中又存在一个 bug (打印错误,在平滑半径导数表达式"R-dot-bar sub n "中漏掉了代表平滑的" bar "),致使火箭迅速偏离航道。于是发射场的安全官员下令摧毁飞船。

美国银行信托软件系统:美国银行1982年进入信托商业领域,并规划发展信托软件系统。.项目原订预算2千万美元,开发时程9个月,预计于1984年12月31日以前完成,后来至1987年3月都未能完成该系统,期间已投入6千万美元。.美国银行最终因为此系统不稳定而不得不放弃,并将340亿美元的信托账户转移出去,并失去了6亿美元的信托生意商机。

二、软件工程

1.定义

定义:IEEE 计算机协会将软件工程定义为:(1)应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。(2)对(1)中各种方法的研究。

目标:定义软件工程的目标是在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠可维护、适应力强、可移动、可重用的软件。

2.三要素 

方法、工具、过程

方法回答的是”怎样做“;

工具是运用方法支撑环境;

过程是任务的框架,它规定了完成各项任务的步骤。

  • 方法:是完成软件工程项目的技术手段。支持项目计划和估算、系统和软件需求分析、设计、编程、测试和维护。软件工程方法依赖一组原则,贯穿软件工程的各个环节。软件工程方法分两类结构化方法和面向对象方法。
  • 工具:为软件工程的过程和方法提供自动化或半自动化的工具支持。将若干工具集成起来。与软件工程数据库和计算机系统构成一个支持软件开发的系统称"计算机辅助软件工程( Computer Aided Software Engineering , CASE )",系统中某一工具的信息加工结果可以作为另一工具的输入。集成的软件工程工具再加上人的因素构成了软件工程环境。
  • 过程:贯穿软件开发的各个环节,在各环节之间建立里程碑;管理者在软件工程过程中对软件开发的质量、进度、成本进行评估、管理和控制;技术人员采用相应的方法和工具生成软件工程产品(模型、文档、数据、报告、表格等)。

3.七个原则

  1. 使用阶段性生命周期计划的管理
  2. 进行连续的验证
  3. 保障·严格的产品控制
  4. 使用现代编程工具/工程实践
  5. 保持清晰的责任分配
  6. 用更好更少的人
  7. 保持过程改进

三、软件生命周期 

软件产品或软件系统从设计、投入使用到淘汰的全过程。


1、问题定义(项目计划报告)

2、可行性研究(可行性研究报告)

3、需求分析(需求规格说明书)

4、总体设计(总体设计说明书)

5、详细设计(详细设计说明书)

6、编码(源程序)

7、测试(软件测试报告)

8、维护(软件维护说明)

四、软件过程模型 

1.软件过程

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

软件过程是在工作产品构建过程中,所需完成的工作活动、动作和任务的集合。


  • 活动主要实现宽泛的目标,与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系。
  • 动作包含了主要工作产品生产过程中的一系列任务。
  • 任务关注小而明确的目标,能够产生实际产品。

2.软件过程模型

1.定义

定义:软件过程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。

软件过程模型也常称为:

  • 软件开发模型
  • 软件生存周期模型
  • 软件工程范型

2.能力成熟度模型CMM 

5.优化级                  持续的过程改进

4.量化管理级          量化管理

3.已定义级              过程标准化

2.可重复级             基本项目管理

1.初始级                 有能力的人和个人英雄主义 

参考资料 

软件工程导论(第六版)  张海藩 牟永敏 著 

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

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

相关文章

什么是股票量化研究?

谈到股票量化研究领域,肯定少不了有自动交易系统的支撑,像平时能将股票池中的数据挖掘出来也能熟能生巧的进行自助量化研究,包括数据接口系统的开发使用都是受到量化的影响,那么,如何看待股票量化研究?像平…

arm版(以uos为例)linux安装mysql8

官网下载:https://downloads.mysql.com/archives/community/上传到服务器,然后解压缩tar -zxvf mysql-8.0.31-linux-glibc2.17-aarch64.tar.gzmv mysql-8.0.31-linux-glibc2.17-aarch64 /usr/local/mysql-8创建MySQL数据目录mkdir -p /datacd datamkdir …

打通对账的最后一公里——对账管理平台

背景 日新月异的科技与快速变化的消费需求不断驱动零售模式的变革,实体商业与数字经济、传统零售与新零售,逐渐融合并形成了全渠道、一体化的发展趋势,也改变了以往企业认知中线上、线下渠道割裂的思维定式,零售快消类企业纷纷建…

电子技术——MOS管的物理特性

电子技术——MOS管的物理特性 增强型 MOSFET 是应用最广泛的场效应晶体管。除了最后一节,我们整章讨论的都是增强型 MOSFET 。我们从它的物理元件结构和物理操作入手,在下一节我们会在本节的基础上学习 MOSFET 的电流-电压特性。 元件结构 上图展示了n-…

Day876.redolog刷盘问题 -MySQL实战

redolog刷盘问题 Hi,我是阿昌,今天学习记录的是关于redolog刷盘问题的内容。 平时的工作中,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很…

RPA自动化办公07——Uibot流程加入python插件

参考:扩展UiBot命令_UiBot开发者指南 Uibot是非常方便,但是有些功能可能还需要别的语言来完成,例如python语言,作为胶水语言,在一个Uibot里面插入python脚本是很方便,好用的。 加入插件的位置 在新建一个流…

Seata分布式事务模式(TA、TCC、XA、SAGA)工作机制

前言 分布式应用痛点 分布式应用有一个比较明显的问题就是,一个业务流程通常需要几个服务来完成,业务的一致性很难保证。为了保障业务一致性,每一步都要在 catch 里去处理前面所有的“回滚”操作,可读性及维护性差,开…

分布式微服务

目录 认识微服务 单体服务架构的特点 分布式架构的特点 微服务 SpringCloud 总结 服务拆分及远程调用 服务拆分原则 假如在订单服务中,需要一起返回用户的信息 Eureka注册中心 Eureka的结构和作用 问题:order-service如何得知user-service实例…

基于拓扑的单树分割用于地面激光扫描点云的自动处理

Paper题目:Topology-based individual tree segmentation for automated processing of terrestrial laser scanning point clouds ABSTRACT 地面激光扫描 (TLS) 是一种基于地面的方法,可通过光探测和测距 (LiDAR) 技术快速获取 3D 点云。从 TLS 点云量…

搜索引擎关键字智能提示实践

为了提高阅读体验,请移步到:搜索引擎关键字智能提升实践一、背景搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户使用体验。雪球以连接人与资产…

【K8S之调度器流程和扩展】如何给 scheduler 添加扩展插件、关闭默认插件、创建多个 scheduler?

参考 自定义 Kubernetes 调度器 阳明https://github.com/cnych/sample-scheduler-extender kube-scheduler 源码位置 kubernetes 调度器的源码位于 kubernetes/pkg/scheduler 中,大体的代码目录结构如下所示:(不同的版本目录结构可能不太一样) kuber…

如何检测文章被搜索引擎收录(如何让搜索引擎收录网站)

如何写网站内容才利于搜索引擎收录 网站关键词要想有好的排名,网站本身必须是被搜索引擎收录的状态,另外,网站上的相关内容收录越多,搜索引擎给与网站关键词的排名靠前概率会越大,那么,网站内容怎样来写会…

[Linux]生产者消费者模型(基于BlockQueue的生产者消费者模型 | 基于环形队列的生产者消费者模型 | 信号量 )

文章目录生产者消费者模型函数调用角度理解生产者消费者模型生活角度理解生产者消费者模型为什么要使用生产者消费者模型生产者消费者模型优点321原则基于BlockingQueue的生产者消费者模型POSIX信号量回顾信号量概念信号量操作函数环形队列基于环形队列的生产者消费者模型生产者…

Android Studio如何打jar包和aar包并使用

Android Studio如何打jar包和使用生成jar包方式module方式生成jar方式第一类修改主app的方式第二类:通过新建module方式生成jar包如何使用jar包aar生成并使用aar生成aar使用之前有篇文章介绍了so库的生成和使用,看这里,但是,如果我…

[NOI Online #1 入门组] 文具订购

题目描述: 小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品: 圆规,每个 7 元。笔,每支 4 元。笔记本,每本 3 元。 小明负责订购文具,设圆规,笔,笔记本的订购数量分别…

Linux 下安装 JDK 和 Maven 环境

目录 1. 进入 maven 官网下载安装包 2. 安装 maven 3. 添加 Maven 环境变量 4. 配置 Maven 本地仓库 5. 配置镜像 6. 配置 JDK 7. 测试 操作系统:Centos 7.6 安装 maven 环境前,需要先安装 java 环境,笔者这里已经成功安装 java 环境&…

PHP基础知识 - PHP面向对象OOP

目录 一. 面向对象基本知识 1.1 面向对象概念 1.2 什么是类 1.3 什么是对象 1.4 类与对象的关系 1.5 PHP创建类的示例 二、类、属性、方法的修饰符 2.1 类的修饰符 2.2 成员方法的修饰符 2.3 成员属性修饰符 2.4 访问控制修饰符 2.5 static 静态修饰符 2.6 final…

多模块项目中,SpringBoot项目下启动失败-无法加载主类com.xch.XxxApplication

错误:项目启动时,无法找到主类(启动类)XxxApplication由于,主类需要先被编译,再被JVM找到编译后的文件运行如:XxxApplication.java-(编译)-XxxApplication.class-(运行)所以,原因:1、未编译情况…

基于微信小程序的校运会管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端框架:VUE 数据库:MySQL5.7以上 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录 一、项目简介…

Erlik 2:一个基于Flask开发的包含大量安全漏洞的研究平台

关于Erlik 2 Erlik 2,也被称为Vulnerable-Flask- App,该工具是一个基于Flask开发的包含大量安全漏洞的研究平台。本质上来说,它是一个包含了大量漏洞的Flask Web应用程序。有了这个实验环境,广大研究人员可以轻松在Web渗透测试领…