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

news/2024/11/24 6:08:18/

前言

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

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

软件=程序+数据+文档

一、软件危机

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.ppmy.cn/news/21637.html

相关文章

熵值法原理及python实现 附指标编制案例

文章目录1.简单理解 信息熵2.编制指标 (学术情景应用)3.python实现3.1 数据准备3.2 数据预处理3.3 熵值、权重计算3.4 编制综合评价指标熵值法也称熵权法,是学术研究,及实际应用中的一种常用且有效的编制指标的方法。1.简单理解 信…

【C++修炼之路】15.C++继承

每一个不曾起舞的日子都是对生命的辜负 继承C继承一. 继承的概念及定义1.1 继承的引出1.2 继承的概念1.3 继承的定义二.基类和派生类对象赋值转换三.继承中的作用域3.1 作用域的概念3.2 举例说明同名冲突四.派生类的默认成员函数4.1 派生类的构造函数4.2 派生类的拷贝构造函数4…

概论第7章_参数估计_点估计的评价标准_相合性_无偏性_有效性

点估计的评价标准包括: 相合性, 无偏性, 有效性。 一. 相合性 衡量一个估计是否可行的必要条件, 就是估计的相合性。 本文不提其定义了。直接给出一些结论。 结论 设有正态总体N(μ,σ2\mu, \sigma^2μ,σ2) 的样本,…

mysql逻辑架构和数据库缓冲池

逻辑架构 典型的CS架构,服务端程序使用的是mysqld 客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送文本(处理结果) # 应用连接层: # 连接处理,用户鉴权(username,host…

C++入门:变量作用域

作用域是程序的一个区域,一般来说有三个地方可以定义变量:在函数或一个代码块内部声明的变量,称为局部变量。在函数参数的定义中声明的变量,称为形式参数。在所有函数外部声明的变量,称为全局变量。在程序中&#xff0…

《批处理BAT从入门到精通》总目录_培训教程持续更新中...

<--返回「批处理BAT从入门到精通」专栏主页--> 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中&#xff0c;经常会在其集成开发环境IDE&#xff08;CodeWarrior&#xff0c;S32K DS&#xff0c;Davinci&#xff0c;EB Tresos&#xff0c;ETAS…&#xff09;中…

Spark Streaming

1. kafka 具体步骤&#xff1a; 启动 zookeeper、kafkaShell 方法测试 kafka producer、consumer 生产消费情况启动 hdfs、yarn提交 spark 任务消费 kafka 消息 1.1 启动 zk 和 kafka [rootbogon bin]# cd /usr/local/src/zookeeper-3.4.14/bin [rootbogon bin]# ./zkServe…

Windows实时运动控制软核(六):LOCAL高速接口测试之Matlab

今天&#xff0c;正运动小助手给大家分享一下MotionRT7的安装和使用&#xff0c;以及使用Matlab对MotionRT7开发的前期准备。 01 MotionRT7简介 MotionRT7是深圳市正运动技术推出的跨平台运动控制实时内核&#xff0c;也是国内首家完全自主自研&#xff0c;自主可控的Windows…