1、软件工程,主讲:杨志和 Email: 教材:软件工程导论清华大学出版社,Soft Engineering,内容提要,软件危机 软件危机介绍 产生软件危机的原因 消除软件危机的途径,一、软件危机,1968年,第一届NATO(北大西洋公约组织的计算机科学与技术的国际会议),“软件工程”作为有效解决“软件危机”的途径被正式提出。什么是软件危机? 软件危机的特征是什么? 为什么会产生软件危机? 怎样解决软件危机?,一、软件危机,1.1软件危机的介绍什么是软件危机?,计算机软件的开发和维护过程所遇到的一系列严重问题.,软件危机的特征是什么?,对软件开发成本和进度的估计常常很不准确。 用户对“已完成的”软
2、件系统不满意的现象经常发生。 软件产品的质量往往靠不住。 软件常常是不可维护的。 软件通常没有适当的文档资料。 软件成本在计算机系统总成本中所占的比例逐年上升。 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。, 以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些,软件危机著名案例, IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美圆,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。 OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾
3、得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”,1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:DO 5 I=1,3 误写为:DO 5 I=1 . 3,1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。,为什么会产生软件危机?,一方面与软件本身的特点有关 另一方面也和软件开发与维护的方法不正确有关,(1)软件特点,1 软件与硬件不同 软件缺乏可见性,在写出程序代码并在计算机上试运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。 软件在运行过程中不会因为使用时间过长而被“用坏”,如果运行中发现错误,很可能是遇到了一个在开发时期引入的在测试阶段没能检测出来的故障。,失效率曲线,软件与程序的差别,它的一个显著待点是规模庞大,而且程序复杂性将随着程序规模的增加而成指数上升。,例如: Windows 95 1000万行代码 Windows 2000 5000万行代码Windows2000和Exchange2000 开发人员,软件规模,(3)其他产生软件危机的原因,