软件工程(1)--初识基础概念
前言
学习了半年的软件工程课程,总不能一无所获吧,故此写下文章总结一番。
软件工程是一门综合性交叉学科,它涉及计算机科学、工程科学、管理科学和数学等领域。学习目标是掌握需求分析、软件设计、编码风格、软件测试的工程化方法。
软件=程序+数据+文档
一、软件危机
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、测试(软件测试报告)
8、维护(软件维护说明)
四、软件过程模型
1.软件过程
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程是在工作产品构建过程中,所需完成的工作活动、动作和任务的集合。
- 活动主要实现宽泛的目标,与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系。
- 动作包含了主要工作产品生产过程中的一系列任务。
- 任务关注小而明确的目标,能够产生实际产品。
2.软件过程模型
1.定义
定义:软件过程模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。
软件过程模型也常称为:
- 软件开发模型
- 软件生存周期模型
- 软件工程范型
2.能力成熟度模型CMM
5.优化级 持续的过程改进
4.量化管理级 量化管理
3.已定义级 过程标准化
2.可重复级 基本项目管理
1.初始级 有能力的人和个人英雄主义
参考资料
软件工程导论(第六版) 张海藩 牟永敏 著
软件工程(1)--初识基础概念相关推荐
- 初识webpack——webpack四个基础概念
前面的话 webpack是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.当webpack处理应用程序时,它会递归地构建一个依赖关系图表 ...
- Python学习01、计算机基础概念、初识Python、常量,变量,类型和表达式、字符串、动态静态类型、注释
前言:本文章主要用于个人复习,追求简洁,感谢大家的参考.交流和搬运,后续可能会继续修改和完善. 因为是个人复习,会有部分压缩和省略. 计算机基础概念 什么是计算机? 现在我们所说的计算机不光能进行算术 ...
- 软件工程与软件测试基础知识_这是我在软件工程工作九个月中学到的知识
软件工程与软件测试基础知识 I've been working for about nine months at Dexter as a software developer. I wrote a b ...
- Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸机开发 -- IIC总线 ,下面回顾下 IIC 基础概念 一.IIC 基础概念 IIC(Inter-Integrated Ci ...
- JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)
一.介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容. 红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂更不容易,要熟练js ...
- I2C的基础概念和框架
一.IIC 基础概念 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频 ...
- Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析 (iic驱动框架,i2c驱动框架)...
转载于 : http://blog.csdn.net/zqixiao_09/article/details/50917655 关于Exynos4412 IIC 裸机开发请看 :Exynos4412 裸 ...
- React + webpack 开发单页面应用简明中文文档教程(一)一些基础概念
React + webpack 开发单页面应用简明中文文档教程(一)一些基础概念 React 入门系列教程导航 React + webpack 开发单页面应用简明中文文档教程(一)一些基础概念 Rea ...
- 一点一点学ASP.NET之基础概念——委托
委托的概念 委托实际上是类(一个貌似函数一样的类),我们已经使用函数指针很多年了--函数指针也被称为过程类型,但是它们的实现都不是类.它们是单独的函数指针的简单实例.委托是包含这些功能的类,委托类通过 ...
最新文章
- SQL Server 2000安装时不出现安装界面,进程中存在解决
- 支撑日活百万用户的高并发系统,应该如何设计其数据库架构?
- eclipse 关闭时progress information弹框_如何关闭 iPhone 中的评分和好评弹窗?
- rx.observable_在Spring MVC流中使用rx-java Observable
- spring mvc拦截器_Spring MVC拦截器示例
- 数字时代的抉择,金蝶 EBC 的破局
- Memstore数据刷写与阻塞机制深入剖析及参数优化
- HTML中的表格和表单控件详解
- 层次分析法详细讲解(小白必看电脑查看)
- 24小时C语言从入门到精通「建议收藏」
- 【备忘】总结一些Java学习者经常去的网站及论坛
- 信息学奥赛一本通:1041:奇偶数判断
- iOS杂谈15—APP被苹果APPStore拒绝的各种原因
- 图形界面介绍——Blockage相关
- 冒志鸿:大公司不模仿你,说明你危险了
- 小灰 “生二胎” 啦!
- 【论文笔记】Beyond frontal faces: improving person recognition using multiple cues
- Python:第二篇【Python】进阶-关东升-专题视频课程
- [极客大挑战 2019]RCE ME
- 百度地图室内地图及方向传感器实现