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