欢迎来到天天文库
浏览记录
ID:43218012
大小:2.24 MB
页数:92页
时间:2019-10-03
《第1部分 软件工程概述》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第1部分软件工程概述学习目标了解软件危机产生的背景掌握软件工程的概念及其研究内容熟悉软件工程过程和软件生存周期软件危机的产生软件的定义与特点软件的发展历史软件危机的现象和原因软件的定义与特点软件的定义软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。Software=Program+Data+Document软件的特点软件是逻辑的,而不是物理的产品。逻辑往往实际只存在于人的头脑当中,软件人员好比“皇帝的新衣”故事中的裁缝,软件的开发过程极难加以控制。
2、软件是由开发或工程化而形成的,没有明显的制造过程。软件成本集中于“开发"上,意味着软件项目不能象硬件制造项目那样来管理。软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。磨合调整磨损用坏硬件失效率曲线时间失效率修改点实际曲线理想曲线时间失效率软件失效率曲线大多数软件是自定的,而不是通过已有构件组装而成的。迄今为止,软件的开发尚未完全摆脱手工的方式。软件成本相当昂贵。IBM360操作系统的研制人员最多时可达1000多人,从1963年到1966年共花了四年时间才完成,总计耗费5000多人年,以后又进行不断的修改和补充。该系统的
3、整个研制费用为5亿美元,其中近一半花在软件上。微软开发windowsXP开发花费超过了制造一架波音飞机的成本软件本身是复杂的。微软开发windowsNT4.0发布时源程序的代码超过40,000,000行.软件的发展历史早期面向批处理有限的分布自定义软件第二阶段多用户实时数据库软件产品第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网路计算机19601970198019902000早期阶段用途:科学计算程序的质量完全依赖于程序员个人的技巧.第二阶段多用户引入了人机交互的新概念实时系统使进程的控制和输出以
4、毫秒而不是分钟来计算在线存储的发展产生了第一代数据库管理系统第三阶段始于70年代中期,分布式、网络的发展极大地提高了计算机系统的复杂性。软件工作量估计COCOMO模型、软件过程改进模型CMM等第四阶段强大的桌面系统和计算机网络迅速发展时期,计算机体系结构由中央主机控制为客户机/服务器方式面向对象技术在许多领域迅速取代了传统软件开发方法软件发展的根本变化人们改变了对软件的看法个人化程序工程化产品软件=程序软件=程序+数据+文档软件的需求是软件发展的动力自给自足市场流通以满足用户的需要软件工作的考虑范围发生根本变化只顾及程序的编写涉及整个软件生存周期软件质量的概念发生变
5、化单纯的产品质量产品质量+过程质量软件危机的现象和原因软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。如何开发软件,以满足不断增长,日趋复杂的需求;如何维护数量不断膨胀的软件产品。软件危机主要表现(1)对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。(2)用户对“已完成”系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。Bug一大堆,Patch一个接一个。(4)软件的可维护程度非常之低。软件危机主要表现(5)软件通常没有适当的文档资料。(6)软件的成本不断提高。(7)软件开发生产率的提高赶不
6、上硬件的发展和人们需求的增长。软件危机的原因软件本身的特点有关软件开发和维护的方法不正确有关忽视软件开发前期的需求分析;忽视测试阶段的工作,提交用户的软件质量差;在1985年到1987年之间,至少有2个病人是死于Therac-25医疗线性加速器的过量辐射,其原因是控制软件中的一个故障。1965年至1970年,美国范登堡基地发射火箭多次失败,绝大部分出于控制系统的故障,一个小小的疏漏往往会造成上千万美元的损失。轻视软件的维护。开发过程没有统一的、规范的方法论的指导,文档资料不齐全,忽视人与人的交流;60%~70%的错误都是规格说明和设计错误无人太空计划软件统计结果平均
7、每页规格说明文档有大概1.9个错误每页设计文档有大概0.9个错误每页代码只有约0.3个错误Bhandarietal.[1994]等报告中给出了一组新的数据只有13%的错误是从编译器的前一个版本带来的16%的错误是在规格说明阶段产生的71%是在设计阶段产生的提高规格说明和设计技术非常重要。减少10%的规格说明和设计错误,就意味着减少整个错误数的6%-7%消除软件危机的途径对计算机软件有一个正确的认识(软件≠程序)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。推广使用在实践中总结出来的开发软件
此文档下载收益归作者所有