软件危机:计算机软件的开发和维护过程中遇到的一系列严重问题。(正常、不正常运行软件都具有这种问题)

软件危机的典型表现:

  • 对软件开发成本和进度的估计常常很不准确
  • 用户对完成的软件系统不满意的现象经常发生
  • 软件产品的质量往往靠不住
  • 软件常常是不可维护的
  • 软件通常没有适当的文档资料
  • 软件成本在计算机系统总成本中所占的比例逐年上升
  • 软件开发生产率提高的速度跟不上计算机应用的发展趋势

我对于上述的理解:
由于软件开发对文档及相关管理的疏忽与轻视(缺少文档),也没有进行详细的需求分析与调研,因此往往很难估算出软件开发的成本和进度(成本难以预估)。而且由于没有详细文档,后期维护成本越来越高(维护困难,质量自然也不好),一旦某个部分出现了问题、或者是开发人员的调动,往往会让后期的维护出现巨大的困难,更遑论增加一些用户提出的新功能了(不能满足用户需求,用户不满)。而且代码没有经过合理组织,耦合性强,代码难以复用,不利于提高开发效率(新的软件的开发速度就很慢了)。

产生软件危机的原因

  • 软件本身造成的(大型软件的开发往往是一个团队经过比较长的时间开发出来的,每个人写的代码风格和模块都不通,若没有非常科学的管理,则代码就很容易写的非常混乱)
  • 软件开发与维护的方法不正确(有经验的程序员都知道文档比代码重要,如果一个系统轻视了文档,那么日后会很难更新和维护)

主要表现:

  • 忽视软件需求分析(开发程序之前先明确要做什么功能,并记录成文档,日后没有特殊情况不得修改;软件开发并不是说会做什么功能就做,不会做就不做,所有功能都应该是事先规定好的)
  • 认为软件开发就是写程序并使之运行(没有文档辅助代码将会写的非常难堪入目)
  • 轻视软件维护(同上,代码写的很难看的话,日后维护起来就会无从下手)
  • 在软件开发的不同阶段进行修改需要付出的代价很不相同(对上边的一个总结)

解决软件危机的途径

  • 推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探索更有效的技术和方法(不断总结经验吸取教训)
  • 开发和使用更好的软件工具(用那种好用的编译器,既省事,又使得代码结构层次分明,比如 “记事本 vs IDEA”)
  • 良好的组织管理措施

因此,为了解决软件危机产生的各种问题,就诞生了一门大家耳熟能详的学科:软件工程

后来软件工程与方法学相互交融,产生了两个相互纠葛而又各有所侧重的学科:

  • 软件工程学:主要应用工程的方法和技术研究软件开发和维护的方法、工具和管理的一门交叉学科
  • 程序设计方法学:主要应用数学的方法研究程序的性质以及程序设计的理论和方法的学科

本文概念参考自一个不知出处的PPT

软件危机(含通俗理解帮助记忆)相关推荐

  1. 一文带你通俗理解23种软件设计模式(推荐收藏,适合小白学习,附带C++例程完整源码)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一.设计模式是什么? 设计模式是为了解决在软件开发过程中遇到的某些问题而形成的思想.同一场景有多 ...

  2. 网络七层模型和对应协议的通俗理解

    文章目录 1.七层.五层.四层模型划分 2.记忆口诀 3.各层的协议 4.OSI 七层模型的通俗理解 4.1.需求1: 4.2. 需求2: 4.3.需求3: 4.4. 需求4: 4.5.需求5: 4. ...

  3. 第一章软件危机与软件工程

    第一章 软件危机与软件工程 1.1 软件的定义是什么 计算机软件是与计算机系统操作有关的程序.规程.规则及任何与之有关的文档和数据. 软件的含义 (软件是程序.数据以及文档的完整组合) 研制了软件设计 ...

  4. 什么是软件危机?产生原因?如何解决?

    软件危机 定义: 在计算机软件的开发和维护过程中所遇到的一系列严重问题 典型表现: 1.对软件开发成本和进度的估计常常很不准确 2.用户对"已完成的"软件系统不满意的现象经常发生 ...

  5. 负载均衡和反向代理的通俗理解

    负载均衡: 负载均衡是我们处理高并发.缓解网络压力和进行服务端扩容的重要手段之一,但是一般情况下我们所说的负载均衡通常都是指服务端负载均衡,服务端负载均衡又分为两种,一种是硬件负载均衡,还有一种是软件 ...

  6. mysql 存储ts数据_理解性记忆MySQL数据库

    理解性记忆MySQL数据库 1.什么是数据库? 本质是文件存储系统.可以简单理解为存储数据的仓库. 2.为什么要使用数据库? 方便数据管理. 3.什么是数据库管理系统? 管理数据库的软件,比如mysq ...

  7. 如何通俗理解Word2Vec

    如何通俗理解Word2Vec 看本文之前,建议先看此文:<BERT通俗笔记:从Word2Vec/Transformer逐步理解到BERT> 前言 今年上半年,我在我的上一篇LSTM博客中写 ...

  8. 通俗理解卡尔曼滤波(无人驾驶感知融合的经典算法)

    前言 我个人有近10年AI教育经验了,中间获得过一些名号,比如北理工校外导师,微软MVP兼CSDN技术专家,本博客也有1700多万PV了,在AI圈内有极高知名度.后2015年和团队一块创业创办AI职教 ...

  9. 如何通俗理解信创国产化是什么意思?有哪些系统?有什么意义?

    最近频繁听到信创这个词语,但对于信创相关知识不是很了解.不少人在问,如何如何通俗理解信创国产化是什么意思?有哪些系统?有什么意义?今天我们大家就来一起简单聊聊. 通俗理解信创国产化是什么意思? 信创国 ...

最新文章

  1. 第三章 C#程序结构 (3.3 循环结构)
  2. U-BOOT的目录结构
  3. 张高兴的.NET Core IoT 入门指南:(四)使用 SPI 进行通信
  4. 【转】Windows Server 2012 R2 双网卡绑定
  5. springboot controller调用service_秀!这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!...
  6. iOS及Android 启动页面(即欢迎页面),引导页面,及广告页面的加载
  7. 只安装mysql客户端_单独安装mysql客户端
  8. Swift开发笔记-Mac OS X 天气预报应用开发(Xcode7.2)
  9. mx350显卡天梯图_不可错过的2020显卡天梯图,选卡详解
  10. mapabc 国人推荐
  11. 微星网卡linux驱动,微星b360系列win10无法安装网卡驱动解决方法_武汉久龙电脑维修中心...
  12. java 扫描tcp端口号_Java 端口扫描器 TCP的实现方法
  13. ACM算法模板小汇总
  14. Android 系统(93)---android 怎么判断手机号是移动还是联通还是电信
  15. feign扫描_Feign基础入门及特性讲解
  16. gateway整合filters
  17. 嘉兴学院计算机研究生导师,延安大学—嘉兴学院联合培养硕士研究生导师见面会召开...
  18. python模拟登录淘宝直通车_淘宝直通车推广计划
  19. 翻译:Tree Energy Loss: Towards Sparsely Annotated Semantic Segmentation
  20. 存储空间不足,无法处理此命令。 (异常来自 HRESULT:0x80070008)

热门文章

  1. “浙里办“项目单点登录、埋点、二次回退的问题
  2. linux 删除文件夹admin 报错 Linux cannot remove is a directory
  3. 使用原生开发高仿瑞幸小程序(一):使用 Vant 组件库和配置多页面
  4. 5款免费在线软件行为分析(在线沙盘)
  5. 英文短语缩写问题 1199 getline()使用
  6. CSS 浮动(float)
  7. 【2020校招总结】接受社会的毒打,收获腾讯天美、字节跳动、网易互娱、华为等offer(开发岗)
  8. 忘记xp系统超级管理员密码
  9. 2021-10-23 python第一天
  10. 使用Vue CLI 3提升您的Vue.js工作流程