欢迎来到天天文库
浏览记录
ID:24770154
大小:1.99 MB
页数:163页
时间:2018-11-15
《chapter01软件工程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件工程—理论与实践史玉良liangyus@sdu.edu.cn本次课程内容软件工程概述课本介绍Chapter1WhySoftwareEngineering?软件工程概述软件软件概念软件发展、特点软件危机软件危机消除软件危机的途径软件工程软件工程定义软件工程目的软件工程学习目标1、软件软件概念:Software=Program+Data+Document软件是计算机系统中与硬件相互依存的另一部分。它包括程序(program)、相关数据(data)及其说明文档(document)。软件的发展早期面向批处理有限的分布自定义软件第二阶段多用户实时数据库软件产品第三阶段分布式系统嵌入
2、“智能”低成本硬件消费者的影响第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机195019601970198019902000软件特征软件是一种逻辑实体,而不是具体的物理实体;软件的生产与硬件不同;在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。磨合调整磨损用坏硬件失效率曲线时间失效率修改点实际曲线理想曲线时间失效率软件失效率曲线软件的成本相当昂贵软件技术的发展落后于需求时间软件复杂性软件需求差距软件技术硬、软件成本比例的变化年份成本%软件1950197019851995硬件软件特征软件特征软件是一种逻辑实体,具有抽象性软件没有明显的制造过程
3、(不能工业化生产)软件在使用过程中,没有磨损、老化的问题(当一个软件修改的费用难以接受时,就会被抛弃)软件对硬件和环境有着不同程度的依赖性,软件可移植性差软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低软件是复杂的,而且以后会更加复杂软件的成本相当昂贵,需投入大量、高强度的脑力劳动大多数软件是自定的,而不是通过已有的构件组装而来的软件工作牵涉到很多社会因素,如机构设置、体制和管理方式,以及人们的观念和心理等软件发展趋势遗留(legacy)软件将继续发挥作用;软件应用范围将继续扩大,成为信息社会的基础设施;网络化软件将是发展重点;软件的可靠性与安全性日趋重要;工业化生
4、产是必由之路。2、软件危机早期(20世纪60年代中期以前),软件通常是规模较小的程序,编写者和使用者往往是同一个(或同一组)人。这种个体化的软件环境,使得软件设计通常是在人们头脑中进行的一个隐含的过程,除了程序清单之外,没有其他文档资料保存下来。从20世纪60年代中期到70年代中期是计算机系统发展的第二代时期,这个时期的一个重要特征是出现了“软件作坊”,广泛使用产品软件。早期是个人编程,简单构思以后,即编码,没有设计,没有文档第二时期,是“作坊”式,合伙开发软件2、软件危机但是,“软件作坊”基本上仍然沿用早期形成的个体化软件开发方法。随着计算机应用的日益普及,软件数量急剧膨胀
5、。在程序运行时发现的错误必须设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需要修改程序以适应新的环境。上述种种软件维护工作,以令人吃惊的比例耗费资源。更严重的是,许多程序的个体化特性使得它们最终成为不可维护的。“软件危机”就这样开始出现了!1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,在这次会议上正式提出并使用了“软件工程”这个名词,一门新兴的工程学科就此诞生了。个体化开发,导致软件开发效率低,可靠性差,可维护性低,软件维护成本争取急聚上升,最终导致软件危机。2、软件危机过去几十年的大型软件系统的开发就犹如这样一
6、个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。拉布雷阿的焦油坑(MuralofLaBreaTarPits)软件危机包含两方面问题:如何开发软件,以满足不断增长,日趋复杂的需求;如何维护数量不断膨胀的软件产品。鉴于软件危机的长期性和症状不明显的特点,近年来有人建议将软件危机更名为:Softwaredepression(软件萧条)Softwareaffliction(软件困扰)“慢性的苦恼”软件危机主要有以下表现:对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象屡屡发生。用户对“已完成”系统不满意的现象经常发生。软件产品的质量往往靠不住,
7、Bug一大堆,Patch一个接一个。软件的可维护程度非常之低。软件通常没有适当的文档资料。软件的成本不断提高。软件开发生产率的提高赶不上硬件的发展和人们需求的增长。软件危机的原因●一方面是与软件本身的特点有关●另一方面是由软件开发和维护的方法不正确有关软件开发工作量分配比例40%~50%10%~20%费用分配比例55%~70%消除软件危机的途径对计算机软件有一个正确的认识(软件≠程序)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
此文档下载收益归作者所有