前言
《软件工程》是一本介绍软件工程方法、软件过程,以及软件过程用到的工程方法的一门课。这是每个互联网行业的工作者的一门必修课。无论您是需求师、TPM、开发者或是测试工程师......
掌握科学的软件工程方法,会让我们在工作过程中如虎添翼,更科学可靠的工作!!!
因此,便有了我的软件工程专栏这样的读书笔记了。欢迎感兴趣的朋友跟我探讨相关的要点。
本文属于该系列文章的第二节,简单介绍一下软件危机。
概述
软件产业在发展的过程中,会遇到新的开发场景、新的设备环境等诸多新的挑战,而由此诞生了软件危机。 本文主要介绍软件危机发生的背景和事迹为后续针对软件危机提出的软件工程方法的介绍做铺垫,总体篇幅如下:
一、什么是软件危机
1.1 软件危机案例
1.2 软件成本日益增加
1.3 软件技术进步 < 需求增长
二、产生软件危机的原因
2.1 消除软件危机的途径:软件工程!
推荐阅读
相关系列文章(42篇)
一、什么是软件危机
定义:在计算机软件的开发和维护过程中所遇到的一系列严重问题(效率和质量下降) 1968年NATO会议(Garmisch, Germany)提出“软件危机”
- 项目超出预算
- 项目超过计划完成时间
- 软件运行效率很低
- 软件质量差
- 软件通常不符合要求
- 项目难以管理并且代码难以维护
- 软件不能交付
1.1 软件危机案例
软件危机案例:OS/360
1961-1964年,IBM公司的 OS/360, 共约100万条指令,花费了5000个人 年,开发总投资5亿美元,达到当时 美国研究原子弹的曼哈顿计划投资20 亿美元的1/4,而结果却令人沮丧, 错误多达2000个以上,系统根本无法 正常运行。
软件危机案例:美国火箭爆炸\
-
谣言:1963年在美国,由于一个 FORTRAN程序的循环语句“DO 5 I=1,3” 误写为“DO 5 I=1.3”,“,”被误写为 “.”,一点之差导致飞往火星的火箭爆炸, 造成了1000万美元的损失。\
-
实际情况:根据NASA的报告, 是1962年的 飞往金星的宇宙飞船天线发生故障, 致使地 面无法控制火箭, 于是火箭上的计算机开始 控制火箭,然而在导航系统软件中又存在 一个bug(打印错误, 在平滑半径导数表达 式"R-dot-bar sub n"中漏掉了代表平滑的 “bar”),致使火箭迅速偏离航道。于是 发射场的安全官员下令摧毁飞船。
软件危机案例:美国银行信托软件系统\
-
美国银行1982年进入信托商业领域,并 规划发展信托软件系统。
-
项目原订预算2千万美元,开发时程9个 月,预计于1984年12月31日以前完成, 后来至1987年3月都未能完成该系统,期 间已投入6千万美元。
-
美国银行最终因为此系统不稳定而不得 不放弃,并将340亿美元的信托账户转移 出去,并失去了6亿美元的信托生意商机
1.2 软件成本日益增加
1.3 软件技术进步 < 需求增长
二、产生软件危机的原因
客观:软件本身特点
- 逻辑部件
- 规模庞大
主观:不正确的开发方法
- 忽视需求分析
- 错误认为:软件开发= 程序编写
- 轻视软件维护
2.1 消除软件危机的途径:软件工程!
推荐阅读
本次的推荐阅读属于其它博主的作品,也是系列性文章。核心概念和我这边推出的系列性文章相差无几,但博文作者阅读的书本与我不同,因此介绍相关知识点用到的陈述方式方法有些不同。
推荐阅读的文章可以作为补充性阅读。
- 01-『软件工程1』详解软件是什么
- 02-『软件工程2』 详解软件工程和软件过程模型
- 03-『软件工程3』你应该知道的三种原型实现模型:抛弃式、演化式、增量式
- 04-『软件工程4』一文了解软件项目管理中的4P
- 05-『软件工程5』详解软件项目管理之软件的度量
- 06-『软件工程6』详解软件项目管理之软件范围与估算
- 07-『软件工程7』详解软件项目管理之风险分析与管理
- 08-『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径
- 09-『软件工程9』结构化系统分析——解决软件“做什么”问题
- 10-『软件工程10』结构化系统分析:数据流图和数据字典案例分析
- 11-『软件工程11』结构化系统设计:解决软件“怎么做”问题
- 12-『软件工程12』软件工程实践方法——软件测试
- 13-『软件工程13』浅谈面向对象方法,统一建模语言UML
相关系列文章(42篇)
- 01-软件工程|软件的概念和特点
- 02-软件工程|软件危机的产生
- 03-软件工程|软件工程的概念与发展
- 04-软件工程|软件工程知识体系与职业道德
- 05-软件工程|软件过程概念
- 06-软件工程|传统软件过程模型1-瀑布流模型
- 07-软件工程|传统软件过程模型2-原型模型
- 08-软件工程|传统软件过程模型3-增量模型
- 09-软件工程|传统软件过程模型4-螺旋模型、喷泉模型
- 10-软件工程|现代软件过程模型1-基于构件的模型
- 11-软件工程|现代软件过程模型2-统一过程模型(Rational Unified Process - RUP)
- 12-软件工程|现代软件过程模型3-敏捷开发模型
- 13-软件工程|选择过程模型
- 14-软件工程|需求分析的概念&需求获取
- 15-软件工程|需求分析的过程
- 16-软件工程|需求分析的任务&需求规格文档编制
- 17-软件工程|需求分析的模型&面向过程分析方法
- 18-软件工程|功能模型:数据流图初步
- 19-软件工程|功能模型:数据流图进阶
- 20-软件工程|功能模型:数据流图改进1-如何改进DFD图
- 21-软件工程|功能模型:数据流图改进2-重新分解DFD图
- 22-软件工程|软件设计:概念与设计质量
- 23-软件工程|软件设计:设计相关的八大概念
- 24-软件工程|软件设计:四类设计技术概要
- 25-软件工程|软件设计:面向过程的总体设计
- 26-软件工程|软件设计:变换与事务分析
- 27-软件工程|软件设计:面向过程的组件设计-流程图
- 28-软件工程|软件设计:面向过程的组件设计-其它组件设计方法
- 29-软件工程|软件设计:面向对象-架构设计
- 30-软件工程|软件设计:面向对象-用例设计与类设计
- 31-软件工程|软件设计:UML顺序图
- 32-软件工程|软件设计:面向对象的设计原则
- 33-软件工程|程序设计语言
- 34-软件工程|编程习惯
- 35-软件工程|程序的效率
- 36-软件工程|编码的管理
- 37-软件工程|软件质量保证:基础概念
- 38-软件工程|软件质量保证:软件测试-过程模型
- 39-软件工程|软件质量保证:软件测试-单元测试
- 40-软件工程|软件质量保证:软件测试-集成测试
- 41-软件工程|软件质量保证:软件测试-系统测试
- 42-软件工程|软件质量保证:软件测试-验收测试