如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
软件工程人民邮电出版社张海藩编著本课程的基本框架第1章概述1.1开发软件不等于编写程序2.计算机系统的四个发展阶段(1)60年代中期以前,是计算机系统发展的早期时代。个体化的软件环境,程序清单,“软件就是程序”。(2)从60年代中期到70年代中期,是计算机系统发展的第二代。软件作坊、软件危机、软件工程(3)计算机系统发展的第三代从20世纪70年代中期开始,并且跨越了整整10年。软件主要在工业界和学术界使用、微处理器、PC(4)在计算机系统发展的第四代已经不再看重单台计算机和程序,人们感受到的是硬件和软件的综合效果。1.1.2错误做法导致软件危机1.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。-----如何开发、如何维护软件。2.软件危机的典型表现(1)对软件开发成本和进度的估计常常很不准确。(2)用户对“已完成的”软件系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例逐年上升。(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些。例如:以美国宇航局的软件系统为例:1963年水星计划系统200万条指令1967年双子星座计划系统400万条指令1973年阿波罗计划系统1000万条指令1979年哥伦比亚航天飞机系统4000万条指令假设1个人一年生产一万条有效指令,那么是否4000人生产一年,或400人生产10年就能完成任务呢?答案是否定的。一万条指令的复杂度决不仅仅是100条指令复杂度的100倍。最典型失败系统的例子是:IBM公司开发OS/360系统,共有4000多个模块,约100万条指令,投入5000人年,耗资数亿美元,结果还是延期交付。在交付使用后的系统中仍发现大量(2000个以上)的错误。1.1.3产生软件危机的原因与软件本身的特点有关(1)什么是软件?软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料(2)软件的特点:软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题软件是逻辑产品,软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。缺乏“可见性”;开发过程难以控制,质量难以评价;由于规模庞大,程序复杂性随程序规模呈指数上升;而由于规模庞大,所以必须多人合作,由此引起的复杂性和难度更是成倍增加。软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性软件成本相当昂贵相当多的软件工作涉及到社会因素2.与错误的软件开发、测试与维护方法有关用户对软件需求的描述不精确、遗漏、二义性;软件开发人员的理解与用户本来愿望之间的差异;管理不当、软件开发人员内部通信管道不畅;软件开发人员素质不够;由于缺乏完善的方法学和工具的支持,过分地依靠个人技巧和创造性,加剧软件产品的个性化如:未能充分做好检测工作在运行中暴露出大量的问题,轻者影响系统的正常工作,重者发生事故,甚至造成生命财产的重大损失。美国IBM公司在1963年至1966年开发的IBM360机的操作系统。5000人-年的工作量,1000人投入,近100万行源程序。每次发行的新版本都是从前一版本中找1000个程序错误,项目负责人F.D.Brook总结时说:“正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深。最后无法逃脱灭顶的灾难。”1963年,美国用于控制火星探测器的计算机软件中的一个“,”号被误写为“·”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。1.1.4消除软件危机的途径1.软件的定义(IEEE1983)计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。2.消除软件危机的途径(1)运用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新——软件工程。(2)推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统