1.3 什么是软件工程
在软件开发的早期阶段,人们过高地估计了计算机软件的功能,认为软件能承担计算机的全部责任,甚至有些人认为软件可以做任何事情。如今,绝大多数专业人士已经认识到软件神化思想的错误。尤其是软件危机的出现,迫使人们思考一个问题,那就是软件并非是万能的,难以满足人们各种各样的需求,需要提出有效的开发与维护方法来指导人们高效率地开发高质量的软件。
1.3.1 软件危机
计算机硬件技术的不断进步,要求软件能与之相适应。然而,软件技术的进步一直未能满足形势发展提出的要求,致使问题积累起来,形成了日益尖锐的矛盾,最终导致了软件危机。软件危机主要表现如下:
软件的规模越来越大,复杂度不断地增加,软件的需求量也日益增大,且价格昂贵,供需差日益增大。
软件的开发过程是一种高密集度的脑力劳动,软件开发工作常常受挫,质量差,很难按照要求的进度表来完成指定的任务,软件的研制过程管理起来困难,往往失去控制。
软件开发的模式及技术已经不能适应软件发展的需要。因此,导致大量低质量的软件涌向市场,有些软件开发出来已远远超出了预算,有的软件甚至在开发过程中就夭折了。例如,伦敦股票交易系统当初预算4.5亿英镑,后来追加到7.5亿,历时5年,但最终还是失败,导致伦敦股票市场声誉下跌。
下面通过伦敦救护服务系统的例子来分析软件危机的表现和问题。
伦敦救护服务系统覆盖伦敦市区600平方千米的地域和大约680万的救护人口,是世界上最大的救护服务中心。该服务中心拥有318辆事故与应急救护车和445病人运输救护车、一个摩托车接应团队和一架直升机。中心的工作人员达到2746人,他们分布在伦敦市区70个救护站,每个救护站又分成4个运营部门。
伦敦救护服务系统的目的是提供自动化救护呼叫请求和处理紧急救护需要,通过计算机系统处理人工系统的所有任务。呼叫999和请求救护服务将呼叫者和派遣者连接起来,派遣者记录呼叫细节和分派合适的车辆。分派者将选择救护车并转发救护信息给车载系统。
伦敦救护服务系统包括3个组成部分:①计算机辅助派遣系统,包括软硬件基础设施、事故记录保存系统、无线电通信系统和无线电系统接口;②计算机地图显示系统,包括复杂地域地形分析软件;③自动化车辆定位系统,具有车辆自动定位能力,以便以最短的时间到达指定位置,并跟踪分析系统的性能。另外,伦敦救护系统还包括无线电系统和移动数据终端。
伦敦救护服务系统项目于1987年4月启动,前期投资250万英镑用于开发一个有限功能的派遣系统;1989年设计规格被重新修改,增加了移动数据终端和声讯转换系统。1990年10月项目经过两次峰值负载性能测试失败而被迫终止。截至项目被取消时为止,项目已经花费了750万英镑的费用,超过预算的300%。
1991年8月项目重新启动。为了保证项目的顺利进行,合作方定期举行会议来协调项目进度和解决存在的问题。但是截至1992年1月,项目还是被延期。派遣系统没有完全实现和测试,无线电接口系统未能按时交付,救护车数据终端设计和定位系统需求还需进一步完善,车载定位跟踪系统没有完成安装、调试。
1992年10月26日,整个新系统全部运转。但是过载问题仍然没有很好地解决,存在呼叫丢失和响应不及时问题。1992年10月27日,系统不得不改为半自动化方式。1992年11月,系统运行性能开始全面下降,并最终导致系统锁死。由于没有及时响应和系统存在的故障,导致病人死亡事件发生。工作人员试图切换和重启系统,但均告失败。由于系统没有备份系统,操作人员被迫恢复到完全人工过程。
伦敦救护服务系统的失败归因于一系列软件工程中的错误,特别是项目管理中的缺陷,从而导致了1992年秋天出现的两次故障。伦敦救护服务系统失败的例子告诉我们,系统的复杂性和庞大规模、系统需求的不准确和经常变更,以及管理不到位等因素是导致系统失败的主要原因。
我们称软件开发和维护过程中所遇到的严重问题为软件危机。软件危机主要是两个方面的问题:一是如何开发软件,以满足对软件日益增长的客户需求;二是如何维护数量不断膨胀的现有软件。
1.3.2 解决软件危机的途径
在软件危机相当严重的背景下,软件工程产生了。在引入工程化的思想后,人们总结了导致软件危机的原因,并提出了相应的解决对策。
在软件开发的初期阶段,需求提得不够明确,或未能得到确切的表达。开发工作开始后,软件开发人员和用户又未能及时交换意见,造成开发后期矛盾集中暴露。如果在开发的初期阶段需求不够明确,或未能得到确切的表达,工作人员不与客户及时地交换意见,就有可能导致软件开发后期的问题无法解决。如果仅仅认为软件的开发是编写程序,软件开发前期的需求分析不到位,很有可能使得后期开发的软件达不到客户的要求,导致软件的二次开发。
需求分析后,要做好软件定义时期的工作,这样可以在一定的程度上降低软件开发的成本,同时在无形中提高软件的质量,毕竟软件是一种商品,提高质量是软件开发过程中的重中之重。
开发过程要有统一的、公认的方法论和规范指导,参加的人员必须按照规定的方法进行开发。由于软件是逻辑部件,开发阶段的质量难以衡量与评价,开发过程的管理和控制较难,因此要求开发人员要有统一的软件工程理论来指导。
必须做好充分的检测工作,提交给客户高质量的软件。要借鉴软件开发的经验和积累的有关软件开发的数据,确保开发工作的计划按时完成,在期限内完成软件的开发。
1.3.3 软件工程的定义
质量包括质量定义、质量管理、质量保证、质量评价等。成本包括成本预算和核算、成本管理、资源管理等。工期包括工程进度管理、组织人员管理、工作量管理、配置管理等。
如今,软件开发的工程化管理思想已经得到了认可,软件的开发管理已经不像以往那样过分依赖软件技术精英,运用项目管理的经验和方法是软件项目成功的前提和保证。随着信息技术的飞速发展,软件产品的规模也越来越庞大,种类也非常繁多。尤其是近几年,随着 络技术的快速发展,项目管理也随之快速发展,各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理,并取得了各自不同的成绩。 相关资源:漫谈软件性能测试技术-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!