好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件危机的表现.doc

9页
  • 卖家[上传人]:工****
  • 文档编号:487292102
  • 上传时间:2023-11-26
  • 文档格式:DOC
  • 文档大小:43KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 软件危机(SoftwareCrisis)是计算机软件在它的开发和维护过程中所遇到的一系列严重问题概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软件的不正确看法早期那些被认为是优秀的程序常常很难被别人看懂,通篇充满了程序技巧现在人们普遍认为优秀的程序除了功能正确,性能优良之外,还应该容易看懂、容易使用、容易修改和扩充程序设计语言虽然为计算机的应用开拓了无比广阔的前景,但游荡在软件世界件危机依然存在因为软件的开发不仅受到程序设计的方法、结构的制约,而且受到开发周期以及软件开发成本的限制,更重要的是软件质量的保障与其程序设计的正确性关系极大如果所开发的软件其可靠性得不到保障,在运行中将会产生不堪设想的严重后果60年代中期以后,计算机硬件技术日益进步,计算的存贮容量、运算速度和可靠性明显提高,生产硬件的成本不断降低计算机价格的下跌为它的广泛应用创造了极好的条件在这种形势下,迫切要求计算机软件也能与之相适应因而,一些开发大型软件系统的要求提了出来然而软件技术的进步一直未能满足形势发展的需要,在大型软件的开发过程中出现了复杂程度高、研制周期长、正确性难以保证的三大难题。

      遇到的问题找不到解决办法,致使问题堆积起来,形成了人们难以控制的局面,出现了所谓的“软件危机”最为突出的例子是美国IBM公司于1963年〜1966年开发的IBM360系列机的操作系统该软件系统花了大约5000人一年的工作量,最多时,有1000人投入开发工作,写出近100万行的源程序尽管投入了这么多的人力和物力,得到的结果却极其糟糕据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果可想而知,这样的软件质量糟到了什么地步难怪该项目的负责人F・D•希罗克斯在总结该项目时无比沉痛地说:正像一只逃亡的野兽落到泥潭中作垂死挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难,……程序设计工作正像这样一个泥潭……一批批程序员被迫在泥潭中拼命挣扎,,谁也没有料到问题竟会陷入这样的困境IBM360操作系统的历史教训已成为软件开发项目中的典型事例被记入历史史册如果开发的软件隐含错误,可靠性得不到保证,那么在运行过程中很可能对整个系统造成十分严重的后果,轻则影响到系统的正常工作,重则导致整个系统的瘫痪,乃至造成无可挽回的恶性事故如,银行的存款可能被化为乌有,甚至弄成赤字;工厂的产品全部报废,导致工厂破产。

      1963年,美国用于控制火星探测器的计算机软件中的一个“,”号被误写为•,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失为了克服这一危机,一方面需要对程序设计方法、程序的正确性和软件的可靠性等问题进行系列的研究;另一方面,也需要对软件的编制、测试、维护和管理的方法进行研究,从而产生了程序设计方法学1968年,E・W•代克斯特拉首先提出GOTO语句是有害的论点,向传统程序设计方法提出了挑战,从而引起了人们对程序设计方法讨论的普遍重视众多著名的计算机科学家都参加了这种讨论程序设计方法学也正是在这种广泛而深入的讨论中逐渐产生和形成的什么是程序设计方法学呢?简言之,程序设计方法学是讨论程序的性质、程序设计的理论和方法的一门学科它包含的内容比较丰富,例如,结构程序设计,程序正确性证明,程序变换,程序的形式说明与推导、程序综合、自动程序设计等在程序设计方法学中,结构程序设计占有十分重要的地位,可以说,程序设计方法学是在结构程序设计的基础上逐步发展和完善起来的什么是结构程序设计呢?至今仍众说纷纭,还没有一个严格的,又能被大家普遍接受的定义1974年,D•格里斯将已有的对结构程序设计的不同解释归结为13种,其中,比较有代表性的如下:结构程序设计是避免使用GOTO语句的一种程序设计;结构程序设计是自顶向下的程序设计;结构程序设计是一种组织和编制程序的方法,利用它编制的程序易于理解、易于修改;程序结构化的一个主要功能是使程序正确性的证明容易实现;结构程序设计对设计过程中的每一步去验证其正确性,这样便自动导致自我说明和自我捍卫的程序设计风格;总之,结构程序设计讨论了如何将大规模的和复杂的流程图转换成一种标准的形式,使得它们能够用几种标准的控制结构(通常是顺序、分支和重复)通过重复和嵌套来表示。

      上述定义或解释从不同角度反映了结构程序设计所讨论的主要问题实质上,结构程序设计是一种进行程序设计的原则和方法,按照这种原则和方法可设计出结构清晰、容易理解、容易修改、容易验证的程序按照结构程序设计的要求设计出的程序设计语言称为结构程序设计语言利用结构程序设计语言,或者说按结构程序设计的思想和原则编制出的程序称为结构化程序在60年代末和70年代初,关于GOTO语句的用法的争论比较激烈主张从高级程序语言中去掉GOTO语句的人认为,GOTO语句是对程序结构影响最大的一种有害的语句,他们的主要理由是:GOTO语句使程序的静态结构和动态结构不一致,从而使程序难以理解,难以查错去掉GOTO语句后,可直接从程序结构上反映程序运行的过程这样,不仅使程序结构清晰,便于理解,便于查错,而且也有利于程序的正确性证明持反对意见的人认为,GOTO语句使用起来比较灵活,而且有些情形能提高程序的效率若完全删去GOTO语句,有些情形反而会使程序过于复杂,增加一些不必要的计算量1974年,D・E・克努斯对于GOTO语句争论作了全面公正的评述,其基本观点是:不加限制地使用GOTO语句,特别是使用往回跳的GOTO语句,会使程序结构难于理解,在这种情形,应尽量避免使用GOTO语句。

      但在另外一些情况下,为了提高程序的效率,同时又不致于破坏程序的良好结构,有控制地使用一些GOTO语句也是必要的用他的话来说就是:“在有些情形,我主张删掉GOTO语句;在另外一些情形,则主张引进GOTO语句从此,使这场长达10年之久的争论得以平息后来,G•加科皮尼和C•波姆从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来这个结论表明,从高级程序语言中去掉GOTO语句并不影响高级程序语言的编程能力,而且编写的程序的结构更加清晰结构程序设计的思想体现在采用了一些比较行之有效的方法,在这些方法中较有代表性的是“逐步求精”方法所谓“逐步求精”方法,就是在编制一个程序时,首先考虑程序的整体结构而暂时忽略一些细节问题,然后逐步地一层一层地细化直至用所选用的语言完全描述每一个细节,即得到所期望的程序为止换言之,它是按照先全局后局部、先整体后细节、先抽象后具体的过程组织人们的思维活动,使得编写出的程序结构清晰、容易理解、容易验证、容易修改逐步求精”方法与模块化设计方法既有联系又有区别粗略地讲,逐步求精主要指一个程序的设计过程,而模块化设计主要指比较大的系统的设计过程此外,面对“软件危机”,人们调查研究了软件生产的实际情况,逐步感到采用工程化的方法从事软件系统的研究和维护的必要性,于是与程序设计方法学密切相关的软件工程在1968年应运而生。

      软件工程的主要对象是大型软件软件工程研究的内容主要包括:软件质量保证和质量评价;软件研制和维护的方法、工具、文档;用户界面的设计以及软件管理等软件工程的最终目的是摆脱手工生产软件的状况,逐步实现软件研制和维护的自动化软件危机的主要表现:1. 对软件开发成本和进度的估计常常很不准确实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见这种现象降低了开发组织的信誉为赶进度和节约成本所采取的权宜之计往往又损害了软件产品的质量,从而不可避免地引起用户的不满2. 用户对“已完成的”软件系统不满意的现象经常发生软件开发人员常常在对用户需求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就仓促上阵匆忙着手编写程序软件开发人员和用户之间的交流往往很不充分,“闭门造车”必然导致最终产品不符合用户实际需要3. 软件产品的质量常常靠不住软件可靠性和质量保证的确切定量概念刚刚出现,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都会导致软件产品发生质量问题4. 软件常常是不可维护的程序中的错误很难改正,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需求在原有程序中增加新的功能。

      5. 软件通常没有适当的文档资料软件不仅是程序,还应该有一整套文档资料这些文档资料是在软件开发过程中产生出来的,而且应该是“最新的”(与代码完全一致)缺乏文档必然给软件的开发和维护带来许多严重的困难和问题6. 软件成本在计算机系统总成本中所占比例逐年上升随着微电子技术的进步和生产自动化程度的提高,硬件成本逐年下降,然而软件开发需要大量的人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而逐年上升美国在1995年的调查表明,软件成本大约已占计算机系统总成本的90%软件危机的出现,使得人们去寻找产生危机的内在原因,发现其原因可归纳为两方面,一方面是由软件生产本身存在着复杂性,另一方面却是与软件开发所使用的方法和技术有关软件工程正是为克服软件危机而提出的一种概念,并在实践中不断地探索它的原理,技术和方法在此过程中,人们研究和借鉴了工程学的某些原理和方法,并形成了一门新的学科一软件工程学,但可惜的是时至今日人们并没有完全克服软件危机软件危机softwarecrisis落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象概况20世纪60年代以前,计算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。

      60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,软件开发急剧增长高级语言开始出现;操作系统的发展引起了计算机应用方式的变化;大量数据处理导致第一代数据库管理系统的诞生软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,第一次讨论软件危机问题,并正式提出“软件工程”一词,从此一门新兴的工程学科——软件工程学——为研究和克服软件危机应运而生现象早期出现的软件危机主要表现在:① 软件开发费用和进度失控费用超支、进度拖延的情况屡屡发生有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重损害了软件产品的质量② 软件的可靠性差尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分惊人③ 生产出来的软件难以维护很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。

      进入80年代以来,尽管软件工程研究与实践取得了可喜的成就,软件技术水平有了长足的进展,但是软件生产水平依然远远落后于硬件生产水平的发展速度软件危机不仅没有消失,还有加剧之势主要表现在:① 软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升由于微电子学技术的进步和硬件生产自动化程度不断提高,硬件成本逐年下降,性能和产量迅速提高然而软件开发需要大量人力,软件成本随着软件规模和。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.