欢迎来到天天文库
浏览记录
ID:19864837
大小:898.00 KB
页数:10页
时间:2018-10-07
《软件工程导论》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、11第1章软件工程导论第1章软件工程导论业余软件工程师总在寻找奇迹——用某种惊人的方法或工具来让软件开发变得轻而易举,但职业软件工程师都知道不存在这种灵丹妙药。——摘自《面向对象分析和设计》,GradyBooch软件工程这一术语产生于1968年,当时及时地在预算内开发出高质量软件的技术还是一片空白,软件工程一词因此应运而生。当时软件开发者无法制定具体目标,无法预测实现目标所需的资源,也无法实现客户的期望。他们通常承诺的是给用户摘月亮,而制造的却是登月车,最后交付的却是一副方形车轮,这与目标相去甚远。软件工程的重点既在软件,也在工程。一个工程
2、师应该能够在一定时间和预算内,通过使用和集成构件,来构造高质量软件产品。工程师通常面临的问题是问题定义不清和解决方案不全,不得不依靠实验方法来评估解决方案。在飞机设计和桥梁建设等应用领域工作的工程师们已成功地迎接了类似的挑战,而软件工程师们却没那么幸运和成功。在指定时间内构造和交付复杂软件系统的问题,一直以来都得到了人们积极的探讨和研究。一切的一切,包括从客户(“我问你,我为什么不能花50美元得到月亮”)到软件中的“软”的成分(“要是我能加上最后那个特性……”),都被归咎于该学科太年轻。问题究竟是什么?复杂性和变化有用的软件系统通常是复杂的
3、。为了有用,它们必须随着终端用户需求和目标环境的变化而变化。在本书中,我们描述了为了征服复杂且不断变化的软件系统方法,即面向对象技术。本章中,我们提供了采用面向对象技术的依据,定义了贯穿全书的基本概念。1.1导言:软件工程的失误看看下面的例子[Neumann,1995]:·1900年错误1992年,来自明尼苏达州怀俄明的玛丽收到一份幼儿园的入园通知,她当时是104岁。·闰年错误1988年2月29日,一家超市因出售过期一天的肉而被罚款1 000美元。因为在肉的标签上打印保质期的计算机程序没有考虑到1988年是闰年。·接口误用1990年4月10
4、日,在伦敦地铁运营过程中,司机还没上车,地铁列车就驶离车站。当时司11第1章软件工程导论机按了启动键,正常情况下如果车门是开着的,系统就应该可以阻止列车起动。当时的问题是司机离开了列车去关一扇卡着的门,但当门终于关上时,列车还没有等到司机上车就开动了。·安全问题软件工程学院的CERT组(ComputerEmergencyResponseTeam,计算机紧急反应小组)是一个政府资助的组织,用来协助社区处理安全事件、突发事件和安全技能方面的问题。美国报道的CERT的安全事件从1990年的252件增加到2000年的21 756件,而到2001年已
5、增加到了40 000多件。·拖延和超支在1995年,由于新丹佛尔国际机场自动行李系统的错误,造成旅客行李箱的损坏。机场则被迫推迟16个月再开放,且大部分采用手工行李系统,产生32亿美元超支。·拖延和超支(2)2002年的Swanick空运控制系统,包括英格兰和威尔士全部空运线路。在系统交付时,已延期6年且严重超支(实际花费6.23亿英傍,原计划花费3.5亿英镑),其中两次主要的系统升级是在运输操作员培训已经开始后才交付的。·按期交付1984年,经过18个月的开发,一个耗资2亿美元的系统交付给了威斯康星州的一家健康保险公司。但是该系统无法正常
6、工作,只好追加了6千万美元,又花了3年才解决了问题。·不必要的复杂性麦克道尔道格拉斯的C-17货机因为控制系统的软件问题,而超支5亿美元。C-17含有19台机载计算机,80个微处理器以及6种不同的编程语言。上述各种失误的产生都与软件问题有关。有时,开发者没有考虑到偶发事件(如一个人的年龄超过100岁,影响保质期的闰年)。有时,开发者没有考虑到用户主动误用系统(按下按钮、使用网络软件的安全孔)。还有些系统失误的情形是由于管理失误(拖延和超支交付、按期交付不正确的系统以及不必要的复杂度)造成的。软件系统的开发是一个复杂的创造过程。软件系统需要完
7、成多种功能;构建软件系统需要达到许多不同目标,这些目标通常还会相互冲突。软件系统包含许多构件,这些构件是定做的且本身就很复杂。同时,不同领域的人参与了这些构件的开发,这也造成了开发过程的复杂性。开发过程和软件生命周期通常是以年计数的。而且,任何一个人都很难完全理解复杂系统。有很多系统,即使处在开发阶段,也是很难被理解的,以致这些系统最终难以完成而成为“空想件”(vaporware)。软件开发项目要不断变化。因为需求是复杂的,当发现错误、当开发者能更好地理解其应用之后,需求就需要不断被更新。如果一个项目被开发多年,可能出现的问题是人员流动大,
8、这就需要不断对人员进行培训。通常,技术变化的周期比项目周期短。软件项目经理普遍假设所有变化已经得到处理并且需求已经确定,这可能导致开发出不正确的系统。在下一节中,我们将提出一种高
此文档下载收益归作者所有