《第一讲软件工程概述(软件危机).ppt》由会员分享,可在线阅读,更多相关《第一讲软件工程概述(软件危机).ppt(19页珍藏版)》请在三一办公上搜索。
1、软件工程,Soft Engineering,内容提要,软件危机软件危机介绍产生软件危机的原因消除软件危机的途径,一、软件危机,1968年,第一届NATO(北大西洋公约组织的计算机科学与技术的国际会议),“软件工程”作为有效解决“软件危机”的途径被正式提出。什么是软件危机?软件危机的特征是什么?为什么会产生软件危机?怎样解决软件危机?,一、软件危机,1.1软件危机的介绍 什么是软件危机?,计算机软件的开发和维护过程所遇到的一系列严重问题.,软件危机的特征是什么?,对软件开发成本和进度的估计常常很不准确。用户对“已完成的”软件系统不满意的现象经常发生。软件产品的质量往往靠不住。软件常常是不可维护的
2、。软件通常没有适当的文档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。,以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些,软件危机著名案例,IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美圆,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”,1963年美国飞往火星的火箭爆炸,
3、造成1000万美元的损失。原因是FORTRAN程序:DO 5 I=1,3 误写为:DO 5 I=1.3,1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。,为什么会产生软件危机?,一方面与软件本身的特点有关 另一方面也和软件开发与维护的方法不正确有关,(1)软件特点,1 软件与硬件不同软件缺乏可见性,在写出程序代码并在计算机上试运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。软件在运行过程中不会因为使用时间过长而被“用坏”,如果运行中发现错误,很可能是遇到了一个在开发时期引入的在测试阶段没能检测出来的故障。,失效率曲
4、线,软件与程序的差别,它的一个显著待点是规模庞大,而且程序复杂性将随着程序规模的增加而成指数上升。,例如:Windows 95 1000万行代码Windows 2000 5000万行代码Windows2000和Exchange2000 开发人员,软件规模,(2)软件开发维护中的问题,获取用户需要不正确用户原因技术人员原因软件是有生命周期软件从定义、开发、使用、维护到终止的时期软件生命期中的有关经验数据编码通常占软件开发全部工作量的10%20%软件测试占软件开发全部工作量的40%50%设计错误占软件错误的63%,编码错误占37%软件维护费用占软件总投资的55%70%软件后期变更比早期变更代价高2
5、3个数量级,(2)软件开发维护中的问题,图 引入同一变动付出的代价随时间变化的趋势,(2)软件开发维护中的问题,错误认为:软件开发=程序编写软件开发只要依靠个别编程高手就能完成轻视软件维护,软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等部分。,许多软件产品的使用寿命长达10年甚至20年,统计数据表明,实际上用于软件维护的费用占软件总费用的55一70。软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。,(3)其他产生软件危机的原因,怎样解决软件危机?,彻底消除“软件就是程序”的错误概念。,软件程序方法规则数据文档,怎样解决软件危机?,充分认识软件一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。应该开发和使用更好的软件工具。,结论,总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,课堂讨论,请针对一下几种观点发表自己的意见编程高手不需要懂得软件工程,也能编出很好的软件。拥有最后的开发工具和计算机就能编写优秀的软件。软件开发进度落后,只要增加人员就能解决。,