1.2软件危机
1.2软件危机
软件危机的产生及概念
“软件”这个名词的正式提出是在1958年,而在1968年的NATO会议上,软件危机这个名词就被提出来了,难道仅仅过了十年功夫,软件的发展就到了危急关头了?
什么是软件危机呢?
它是指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。
这些问题包括:项目超出预算、项目超过计划完成时间、软件运行效率很低、软件质量差、软件通常不符合要求、项目难以管理并且代码难以维护、软件不能交付等。
最终导致的后果:软件的效率和质量急剧下降。
案例
1、IBM亏死
•1961到1964年期间由IBM公司开发操作系统。该系统共约100万条指令,花费了5000个人年,开发总投资5亿美元,达到了当时美国研究原子弹的曼哈顿计划投资20亿美元的1/4。结果却令人沮丧,错误多达2000个以上,最终也没能完全实现当初的设想。
•不过,该项目总工程师Frederick Brooks后来总结此次经验教训,写了一本软件工程领域的经典著作《人月神话》,他本人更在1999年获得了计算机领域的最高奖——“图灵奖”。
2、美国火箭爆炸
因为某个参数写错,导致最终不得不销毁火箭。
3、美国银行亏大钱
•美国银行1982年进入信托商业领域,并规划发展信托软件系统。
•项目原订预算2千万美元,开发时程9个月,预计于1984年12月31日以前完成,后来至1987年3月都未能完成该系统,期间已投入6千万美元。
•美国银行最终因为此系统不稳定而不得不放弃,亏了很多亿。
时代趋势
软件成本日益增加
从最开始占成本的不到百分之20,到现在占百分之八十左右。
软件技术进步 < 需求增长
随着计算机技术的发展,人们对计算机的需求也在不断的提高,人们希望软件能办到更多的事情。
然而,当时的计算机技术进步程度并不能够完全满足人们日益增长的需求,所以开发者只能通过不断增加软件复杂度来弥补技术进步与需求增长之间的差距。
客观问题尚且可以通过技术的进步降低软件复杂度得以解决,比如,机器学习的应用曾经陷入停滞,但由于GPU技术的登台解决了性能问题从而使得人工智能进入了新的时代;主观问题则是通过技术进步也无法解决的,必须让开发者具备对软件开发的正确理解。
产生软件危机的原因
两个方面。
客观:软件本身特点
•逻辑部件太多
•规模庞大,复杂度过高
主观:不正确的开发方法
•忽视需求分析
•错误认为:软件开发=程序编写
•轻视软件维护
消除软件危机的途径:软件工程!
首先,我们要对计算机软件有一个正确的认识,即软件≠程序,它还包括数据与文档;
第二,必须充分认识到,软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目;
第三,推广使用在实践中总结出来的开发软件的成功技术和方法,从而开发和使用更好的软件工具。
综合完成以上三点,软件危机的问题才能得以彻底解决。