版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章软件开发方法(一)软件概述计算机教学实验中心教学大纲1
第1章软件开发方法计算机教学实验中心教学大纲1开场白软件……?软件是一种驱动力学习这门课程的意义怎么学好这门课程?课后立即要做的事情……2开场白软件……?21.理解软件的概念及软件的特征2.了解软件开发的历史3.了解软件的生命周期概念4.软件危机及项目失败的原因31.理解软件的概念及软件的特征3问题的提出什么是软件?软件有哪些特征?软件开发技术发展史什么是软件危机?什么是软件生命周期?……4问题的提出什么是软件?4软件(Software)随着信息化、网络化和数字化时代的到来,社会对“软件”的需求激增。如今,世界发达国家都把软件列为国家发展的关键技术领域。美国国家关键技术委员会将软件列为六大关键技术之一;欧洲共同体将“软件和信息处理”列为关键技术;我国把信息产业放在优先发展的地位,看作是中国发展高新技术、赶超世界先进水平的一次千载难逢的机遇。相关资料链接返回5软件(Software)随着信息化、网络化和数字化时代的到来1.1.1软件的特征软件是逻辑产品软件产品质量的体现方式不同软件产品的生命周期和失败曲线不同软件产品的成本构成不同大多数软件仍然是定制生产的软件产品的不同属性61.1.1软件的特征软件是逻辑产品6软件是逻辑产品软件产品是:具有产值、价格、质量和功能的特性看不见,是逻辑的、无形的是脑力劳动的结晶7软件是逻辑产品软件产品是:7软件产品质量体现方式不同质量体现方式不同:实用、可靠、可操作性;可维护性强方便用户不会折旧、损坏、老化8软件产品质量体现方式不同质量体现方式不同:8软件产品的成本构成不同
12%需求率4%生产率开发人员
1979年美国国防预算的9%用于计算机领域,约$113亿($1258亿)。在这$113亿中,$91亿用于软件投资(约占80%),仅有不到$23亿用于购买硬件设备。9软件产品的成本构成不同12%需求率4%生产率开发人员1软、硬件失败曲线不同
10软、硬件失败曲线不同10大多数软件产品仍然是定制生产硬件产品的生产技术和工艺已经成熟,可以做到标准化、系列化成批生产,用户可以“即插即用”方式使用。尽管软件产品复用是软件界孜孜不倦追求的目标,在某些局部范围内几家领军软件企业也建立了一些软件组件复用的技术标准,例如,OMG的CORBA、Microsoft的COM和DCOM、SUN的EJB和J2EE,但是目前还做不到大范围使用软件替代品。大多数软件仍然是为特定任务或用户定制的。11大多数软件产品仍然是定制生产硬件产品的生产技术和工艺已经软件产品的不同属性为便于软件产品的研制、生产、维护和使用,软件还必须具有:可维护性(Maintainability)独立性(Dependability)效率性(Efficiency)可用性(Usability)12软件产品的不同属性为便于软件产品的研制、生产、维护和使用1.1.2软件分类软件按不同方式可以划分为不同的类型:按功能划分按规模划分131.1.2软件分类软件按不同方式可以划分为不同的类型:13按功能划分软件分类
软件系统软件应用软件操作系统网络系统语言编译器工具软件管理软件实时软件科学计算、数据处理嵌入式软件人工智能软件专用领域软件14按功能划分软件分类软件系统软件应用软件操作系统管理软件14系统软件是支持计算机系统正常运行并实现用户操作的那部分软件。一般是在计算机系统购买时随机携带的,也可以根据需要另行安装。系统软件的主要特征是:与硬件有很强的交互性能对资源共享进行调度管理能解决并发操作处理中存在的协调问题其中的数据结构复杂,外部接口多样化,便于用户反复使用15系统软件是支持计算机系统正常运行并实现用户操作的那部分软件。应用软件应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部分软件。它可以拓宽计算机系统的应用领域,放大硬件的功能。应用软件具有无限丰富和美好的开发前景。16应用软件应用软件是为满足用户不同领域、不同问题的应用需求应用软件例①事务处理软件②实时软件③科学计算和数据处理软件④嵌入式软件⑤人工智能软件MIS,例如酒店管理系统、银行综合业务处理系统。例如导弹自动追踪制导系统、自动控制系统等。例如并行计算、遗传基因研究、地质勘探数据处理等。例如舰载、机载、家电中的嵌入式软件。例如指纹鉴别、专家系统、计算机下棋等。17应用软件例①事务处理软件MIS,例如酒店管理系统、银行综按规模划分软件分类类别参加人员数研制期限产品规模(语句行数)实例微型11~4周0.5k选择排序程序小型11~6月1k~2k数值计算程序中型2~51~2年5k~10k汇编程序较大型5~202~3年50k~100k数据库系统大型100~10004~5年1M操作系统极大型2000~50005~10年1M~10M空中交通管制系统18按规模划分软件分类类别参加人研制期限产品规模实例微型11~1.1.3软件开发技术发展史
应用驱动是推进软件发展进程的主线:从早期按个人意愿编写代码,到按软件工程的理论生产大型应用系统;从手工作坊式的封闭性制作到按标准制式、大工业生产的开放系统;从注重个人精雕细琢地编码技巧到注重工程项目的管理和开发团队的协作;从定制设计到以复用为目标的组件式开发;从由少数软件天才的编程艺术到由广大用户直接参与的应用开发。191.1.3软件开发技术发展史应用驱动是推进软件发展进程阶段划分半个多世纪以来,软件及软件开发技术在理论、观念、目标及技术方法等方面都发生了很大变化。以10年左右为间隔,划分为五个阶段。详见表1-2。讨论每个时期软件开发技术的特点,包括软件开发技术处理的对象、用途、目的、开发方法、开发工具、发展状况、技术突破、理论成就及目标等。20阶段划分半个多世纪以来,软件及软件开发技术在理论、观念、目标第一阶段20世纪40-50年代硬件:由“裸机”组成,计算机中不装任何软件。由于采用电子管作为逻辑电路的元器件,系统稳定性很差。软件:人们只关心硬件的性能和技术指标,系统设计与实现是以硬件为中心,软件开发(实际上是程序设计)处于从属地位。
21第一阶段20世纪40-50年代硬件:由“裸机”组成,计算软件主要特征处理对象:由“0”和“1”组成的二进制序列;用途:主要是科学计算及军事应用(弹道计算);目的:“确定计算机硬件动作的序列”;开发方法:经验主义;开发工具:机器语言;认识:计算机的用途是快速计算。发展概况:机器语言、汇编语言、FORTRAN语言;技术突破:存储器技术、“迭代-反复”算法、观念转变;理论成就:冯·诺依曼理论和图灵测试;目标:用最少资源来获得最大运算能力。22软件主要特征处理对象:由“0”和“1”组成的二进制序列;2阶段软件大事件1946年6月,冯·诺依曼与高德斯坦等人发表了《电子计算机装置逻辑结构初探》的论文,成为EDVAC的设计基础。1950年10月,图灵发表《计算机器与智能》(ComputingMachineryandIntelligence)论文,指出如果一台机器对于质问的响应与人类的响应完全无法区别,那么这台机器就具有智能。今天,人们把这一论断称为图灵测试,它奠定了人工智能的理论基础。1957年,在IBM704上运行了第一个高级语言FORTRAN,至今还在使用。……23阶段软件大事件1946年6月,冯·诺依曼与高德斯坦等人发表了第二阶段20世纪60年代硬件:在电路设计中采用晶体管和集成电路,使计算机的体积大大缩小,系统稳定性提高,价格降低。开始出现以屏幕显示器和键盘输入方式的商用计算机,促进了计算机的产、销量急剧上升。软件:应用领域拓宽,社会对应用软件的需求急剧增加,软件的地位和作用不断提高,从而有力地推动了软件技术和开发方法的改进和发展。
24第二阶段20世纪60年代硬件:在电路设计中采用晶体管和软件主要特征处理对象:高级语言编写的程序;用途:科学计算、商务应用和数据处理;目的:“确定计算机指令的动作序列”;开发方法:功能性程序设计;开发工具:汇编语言、高级语言;认识:软件应独立于硬件;必须规范程序内部控制流;发展概况:高级语言;编译技术;非数值商业应用;软件危机技术突破:高级语言促进计算机应用;功能性程序设计技术;理论成就:软件工程解决软件危机;结构化程序设计理论;目标:扩大程序系统的规模,以适应更复杂的应用。25软件主要特征处理对象:高级语言编写的程序;25阶段软件大事件1962年,Auerback公司提供了最早的基准程序Benchmark用于测试技术。1963年,贝尔实验室发明了能够专门处理字符串的SNOBOL语言。同年,花费了80亿美元的美国半自动防空系统(SAGE)研发成功投入使用。1964年5月1日,美国达特茅斯学院的凯梅尼和汤姆斯发明推出了BASIC语言。1967年,挪威计算中心的O.J.Dahl和K.Nygaard用ALGOL语言开发出Simula67用于模拟应用,这是第一个面向对象语言。1968年10月北大西洋公约组织(NATO)的科学委员会在德国加尔密斯(Garmisch)开会讨论软件可靠性及软件危机的问题,产生了关于“软件工程”的加尔密斯报告,首次提出了“软件工程”的问题。同年,荷兰科学家埃德EdsgarW.Dijkstra在ACM通信上发表了“GOTO语句值得考虑的害处”的论文,引发了一场关于结构化编程的大讨论。国际信息处理联合会(FP)鼓励使用六位数字的数据格式(YYMMDD)来表示日期进行信息交换,从而造成2000年危机问题。1969年,贝尔实验室的DennisM.Ritchie和K.Thompson用PDP-7汇编指令编写了UNIX的第一版本V1。UNIX的发展对计算机界、尤其是对软件界产生了巨大而深刻的影响。26阶段软件大事件1962年,Auerback公司提供了最早的基第三阶段20世纪70年代硬件:发展具有里程碑意义;采用诸如大规模集成电路、分布式技术、网络技术、嵌入式等高新技术极大地提高了计算机系统的处理能力,特别是微处理器的诞生,开创了大众化使用计算机的新时代。软件:该阶段特征是:高性能的计算机系统对软件的功能和性能提出了更高的要求。
27第三阶段20世纪70年代硬件:发展具有里程碑意义;采用软件主要特征处理对象:小规模系统的程序设计;用途:商务应用;网络互联;数据库应用;目的:“研究数据结构和算法以寻求处理的时-空平衡”;开发方法:研究数据结构和算法;结构化开发方法;开发工具:高级语言;数据库技术;认识:平衡时-空平衡复杂度;程序执行的停机;程序可读性;发展概况:数据独立(文件,DB);对复杂系统的规格说明;技术突破:数据结构及算法;区分应用软件和系统软件;理论成就:数据结构及算法理论;形式方法;软件工程方法;目标:解决软件危机。28软件主要特征处理对象:小规模系统的程序设计;28阶段软件大事件1971年,瑞士联邦技术学院的伍尔斯教授发明了第一个结构化的编程语言Pascal,并用17世纪法国著名科学家BlaisePascal(帕斯卡)的名字命名。同年,伍尔斯教授还提出“自顶向下、逐步细化”的结构化程序设计方法。FriedrichI.Bauer提出软件工程的定义:“确立并使用正确的工程原理和方法,以便能够经济地获得可靠而有效的软件。”1972年,出现三种有深远影响的编程语言:贝尔实验室的DennisRitchie发明的C语言。它在MartinRichards的BCPL语言和KenTbompston的B语言的基础上进行发展。最初的C语言是为编写UNIX而设计的,并在PDP-11上首先实现。法国马赛大学的AlanColmeratuer发明PROLOG语言,用于人工智能领域,其在欧洲和日本比较流行。Xerox公司PaloAlto研究中心AlanKay(艾兰·凯)发明的Smalltalk语言。它是一种面向对象的语言,适合使用鼠标工作的可视计算机系统,它体现了与传统程序设计不同的观念及风格。同年,华裔科学家王安发展了字处理系统。1976年B.W.Boehm又对软件工程给出定义:“在软件(包括程序和文档)设计、实现、测试、运行、维户的各个过程中.建立在科学基础上的一套实用方法”。C.A.Hoare则认为软件工程是“一种导致电子数字计算机具有强大功能的艺术,这种功能表现为人可以方便地使用计算机”。29阶段软件大事件1971年,瑞士联邦技术学院的伍尔斯教授发明了第四阶段20世纪80年代
硬件:这个时期计算机发展体现在个人计算机和计算机网络。软件:该阶段特征是个人计算机应用软件异军突起,形成信息产业中新的增长点。伴随微处理器和嵌入式系统的发展,计算机应用开始深入我们的日常工作和生活。旺盛的市场需求和政府企业甚至广大百姓的资金投入,孕育了大量软件企业。市场竞争和市场经济规则促进了软件产品功能更强,质量更高,性能价格比更好。大型机(包括中、小型机)软件向个人计算机上移植,从而为软件提供了更广阔的发展空间和巨大的用户市场。30第四阶段20世纪80年代硬件:这个时期计算机发展体现软件主要特征处理对象:大型系统的程序设计;用途:关系数据库应用;各领域计算机应用;目的:大众化普及应用计算机;开发方法:构造系统方法;用标记工具描述系统;文档是管理系统结构的主要手段;开发工具:高级语言;基于PC的开发工具;早期CASE工具;认识:软件生命周期;强调开发组协作的重要性;发展概况:软件工程研究机构;CASE环境;图形界面系统;技术突破:C/S计算模式;GUI图形用户界面;理论成就:RDB的理论;软件工作量度量COCOMO;软件过程改进模型CMM;目标:开发更大规模和复杂性软件系统,满足应用的需求。31软件主要特征处理对象:大型系统的程序设计;31阶段软件大事件1981年,美国AshtonTate公司推出关系数据库dBASEⅡ,并迅速赢得世界范围内的巨大市场。1981年,IBM公司推出个人计算机IBMPC,选Microsoft公司的MS-DOS作为其个人计算机的操作系统,并将其命名为PC-DOS。从而为BillGates的Microsoft公司的发展开辟一条通往成功的道路。1981年,中国颁布了《信息交换用汉字编码字符集·基本集》,国家标准代号GB2312-80。1983年,王永民发明了“五笔字型”汉字输人法。1983年,贝尔实验室发展了C++语言,既在C语言的基础上增加了面向对象程序设计所需要的抽象数据类型——类。1984年10月15日,国际标准化组织ISO制定了开发系统互连参考模型OSI/RM,即ISO7498-1。它从逻辑上把网络功能分成七层。1985年,Microsoft公司推出Windows窗口界面操作系统。1986年,Oracle公司推出DistributedORACLE分布式关系数据库。1987年,卡内基梅隆大学的软件工程研究所的WattsHumphrey等发表了“软件过程成熟度框架”,后来成为用于预测开发单位是否有能力生产可靠软件的“能力成熟度模型CMM”。同年,IBM公司和Microsoft公司合作推出OS/2操作系统,为IBM公司的PS/2个人计算机系统配套。OS/2被称为32位微机的新一代操作系统。32阶段软件大事件1981年,美国AshtonTate公司推第五阶段20世纪90年代
硬件:当计算技术发展到网络计算,标志着计算机网络时代的到来。伴随处理分散的海量数据的应用需求,诞生并促进了分布式技术、并行计算、人工神经网络等技术的发展。软件:该阶段软件特征是:多媒体信息的实时处理技术成为研究的热点;计算机系统内部传统处理模式(单指令流单数据流SISD和单指令流多数据流SIMD)受到极大挑战,具有并行处理功能的新型处理模式(多指令流多数据流MIMD)倍受关注和厚爱;面向对象开发方法代表着提高开发效率和质量的方向;信息唾手可得的网络服务软件满足着人们日益增长的应用需求。33第五阶段20世纪90年代硬件:当计算技术发展到网络计软件主要特征处理对象:基于Internet/Web的程序设计;用途:网络互联及网络应用;目的:通过支持跨地区、跨部门、跨时间的群组共享信息协同工作来提高群组,集团的整体的生产率;开发方法:基于组件、基于Internet/Web的开发方法;开发工具:组件技术;基于Web开发工具;现代CASE工具;认识:非功能性需求的重要性;基于环境的软件过程改造;发展概况:Internet/Intranet;基于Web应用;虚拟现实技术;新技术涌现,但缺乏理论指导;技术突破:设计模式;浏览器技术;CORBA/COM/OLE技术;理论成就:“交互模型”作为网格计算的理论基础;目标:正确的时刻,把正确的信息,安全地送给需要的人。(Justintimeinformation.)34软件主要特征处理对象:基于Internet/Web的程序设计阶段软件大事件1990年,TimBernersLee提出了关于WorldWideWeb的原型,并同时给出了URL、HTML和HTTP的概念。1991年IBM与Microsoft分道扬镳。6月13日,中国颁布了《计算机软件保护条例》,并于同年10月1日开始实施。1993年,伊利诺斯州大学的超级计算机应用研究中心的学生和研究人员开发了第一个基于图形用户界面的Internet浏览器,取名为NCSAMasaic。同年,美国白宫发表了一份报告,阐述了克林顿政府的“NationalInformationInfrastructure”(国家信息基础建设)发展计划。人们把NII常称为“InformationSuperHighway”(信息高速公路)。1994年,Netscape公司首次推出它的浏览器Navigator。由于它卓越的功能和便捷的操作方式,使其在很短的时间内风靡世界。1995年,SUN公司推出了Java及其集成开发环境。Java语言是基于Internet的编程语言,使得应用程序同时在不同平台运行成为可能。同年,Microsoft公司推出Windows95。35阶段软件大事件1990年,TimBernersLee提出1.1.4软件危机从20世纪60年代开始,软件界经常遭受软件危机的袭扰。以IBM公司的OS/360操作系统为例。它共有4000多个模块、100万行指令,共投入5000人年,耗资5亿美元,但在交付使用的系统中仍找出2000个以上的错误。开发软件所需的高成本与软件产品的低质量之间存在尖锐的矛盾。软件开发陷入不可自拔的恶性循环之中。这种现象被称为“软件危机”(SoftwareCrisis)。361.1.4软件危机从20世纪60年代开始,软件界经常遭受软软件危机的表现⑴软件开发进度难以预测⑵软件开发成本难以控制⑶用户对软件功能难以满足⑷软件产品质量无法保证⑸软件产品难以维护⑹软件通常缺少适当的文档资料⑺生产率提高的速度不能满足社会需要37软件危机的表现⑴软件开发进度难以预测37⑴软件开发进度难以预测以丹佛新国际机场为例:该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,000个电子眼、400台无线电接收机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,该系统还无法正常运行。据研究结果统计:只有15%的项目是按计划完成的。38⑴软件开发进度难以预测以丹佛新国际机场为例:38⑵软件开发成本难以控制
据同样的研究统计结果表明:仅有10%的项目是按费用计划完成的。例如,20世纪80年代初,美国国内税收服务处(IRS)让Sperry公司开发一套联邦税收表格自动处理系统。结果是:系统被证明不适合当前的工作量,花费几乎是预算的两倍,必须立即更换(华盛顿邮报的报道)。到1985年,还需要再追加9千万美元来改进Sperry公司最初价值1.03亿美元的设备。另外,因为出现的问题阻碍了IRS按时返还纳税者的税款,IRS还被迫偿还4.02亿美元的利息以及2.23千万美元的工资给加班职员。39⑵软件开发成本难以控制据同样的研究统计结果表明:仅有10⑶用户对产品功能难以满足
开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种“闭门造车”的开发方式必然导致最终的产品不符合用户的实际需要。表1-2显示了开发系统失败所造成的经济损失。例如,美国空军B-1BEW系统耗资$12亿,结果项目失败。40⑶用户对产品功能难以满足开发人员和用户之间很难沟通、矛盾⑷软件产品质量无法保证例如,一次美国在肯尼迪角发射一枚阿脱拉斯火箭,预定将用这种火箭运载飞往金星的宇宙飞船。火箭飞离地面几十英里高空开始翻转,地面控制中心被迫下令自爆炸毁。后经检查发现是飞行计划程序中漏掉一个连字符。就是这样一个连字符的疏漏造成这枚价值1850万美元的火箭实验失败。据统计数字表明:在大型系统中,约3/4的系统有问题。表1-3显示了美国对政府开发的9个软件项目调查的结果。可用系统只占不到5%。41⑷软件产品质量无法保证例如,一次美国在肯尼迪角发射一枚阿脱拉⑸软件产品难以维护
软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测、排除系统故障。为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。42⑸软件产品难以维护软件产品本质上是开发人员的代码化的逻辑⑹软件缺少适当的文档资料实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作说明书。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。43⑹软件缺少适当的文档资料实际上,软件的文档资料是开发组织⑺软件开发供不应求软件开发生产率的提高速度,难以满足社会需求的增长率。软件产品“供不应求”的现象致使不能充分利用现代计算机硬件提供的巨大潜力。44⑺软件开发供不应求软件开发生产率的提高速度,难以满足社会软件危机产生的原因
产生软件危机有两个方面的原因:与软件本身的特点有关;是内在因素、客观的存在,只能因势利导加以解决。与软件开发和维护的技术方法有关;是外在因素,可以完善、提高。45软件危机产生的原因产生软件危机有两个方面的原因:45软件特点的因素(内因)
软件是逻辑产品,是代码化了的人的思维活动。这就给软件的生产管理和质量控制带来不便。软件是特定问题在计算机上的运行描述。实际问题的复杂性决定了一个实用软件系统规模往往十分庞大。大有大的难处。程序规模越大,控制、管理难度也就越大。4000万行代码的生产难度≠(不等于)1万行代码生产难度的4000倍46软件特点的因素(内因)软件是逻辑产品,是代码化了的人的思软件开发维护技术方法的因素
开发人员和用户之间的矛盾许多软件系统开发失败的主要原因是开发人员在没有准确、完整地了解了用户的需求后就急于编程;用户对需求也往往不能准确、完整地提出。软件开发各阶段任务不明确,方法不科学
软件产品有其生命周期。只有科学的按生命周期各阶段的任务去组织实施,才能保证质量,降低成本;急于求成,不按科学规律、方法实施,只能“事倍功半”,事与愿违。重编程,轻分析;重开发,轻维护;重程序,轻文档。
软件产品的使用寿命很长。在这期间要对软件进行必要的修改和维护。据统计数据表明,软件维护的费用占总费用的55%~70%。软件工程的一个重要目标就是提高软件的可维护性,减少软件维护的代价。47软件开发维护技术方法的因素开发人员和用户之间的矛盾47导致软件开发项目失败的原因从表1-4的1、2、4、6、8可以看出,用户需求不稳定、不清晰、不完整是项目失败的主要原因,应引起足够的重视。软件开发方法的研究应针对项目失败的原因系统地提出解决办法。48导致软件开发项目失败的原因从表1-4的1、2、4、6、8可解决软件危机的途径(1)采用现代化、社会化的组织管理方式;(2)使用成功的技术和方法(面向过程、面向对象、自顶向下等);(3)使用更好的软件开发工具(汇编、C、VC、各种数据库管理系统等);
为了解决软件危机就要从技术措施和组织管理两个方面去研究,不断总结经验教训,提高软件生产效率,降低软件开发和维护的成本。开发软件选用最好的开发工具是至关重要的,即选择、设置良好的软件工程支撑环境。工具选用的好,它可以“放大”人的智力,大大加快软件开发速度,提高软件质量。49解决软件危机的途径(1)采用现代化、社会化的组织管理方式;41.1.5软件生命周期软件生存周期是指一个软件从提出开发要求直到该软件报废为止的整个时期。针对不同的开发模型、不同的开发对象以及不同的开发方法,软件生命周期可以有不同的划分。如果不考虑上述不同的因素以及应用领域、项目规模和复杂性,软件生命周期可以划分为软件定义、软件开发和软件维护三个时期,每个时期又进一步划分成若干个阶段。501.1.5软件生命周期软件生存周期是指一个软件从提出开发要软件定义软件定义时期的核心任务是:“做什么”。即要确定软件开发工程的总目标;确定工程的可行性;提出实现工程目标应该采用的策略及系统应实现的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段:问题定义、可行性研究和需求分析
51软件定义软件定义时期的核心任务是:51软件开发软件开发时期的核心任务是:“怎么做”。即要具体设计和实现在软件定义时期定义的软件系统。它又包括4个阶段:总体设计,详细设计,编码和测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。52软件开发软件开发时期的核心任务是:“怎么做”。即要具体设计和软件维护维护时期的核心任务是:“改变”。即要保证软件持久地满足用户各个方面改变的需要。维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。例如,如果提出的变更要求是更加新的功能,那就要涉及从新一轮的软件开发过程:需求分析、系统设计、编码及测试。53软件维护维护时期的核心任务是:“改变”。即要保证软件持久地满欢迎参加计教中心网站的学习讨论。中心网址:
http://教学资源地址:
http://60/moodle我的E-mail地址:
lzq@
谢谢,再见!54欢迎参加计教中心网站的学习讨论。54学生要学会做人,学会做事,学会学习,学会思考。学会做人——
要做于国、于民、于社会有用之才;受教育的过程是人格完善的过程。学生要能正确的把握自己,追求德、智、体及个性的充分、自由、和谐的发展。学会做事——
要做于国、于民、于社会有益之事;学会学习——
学习有用的知识及运用知识之技能;学会思考——
独立思考,追求真理。55学生要学会做人,学会做事,学会学习,学会思考。55
“第一大趋势从工业社会向信息社会转变。在工业社会中,战略资源是资本。而在信息社会中,战略资源是信息。只要拥有信息,人们就可以更有效地参加经济生活,知识已经成为生产力、竞争力和经济成就的关键。”
美国未来学家约翰·奈斯比特1982年在《大趋势——改变我们生活的十个新方向》56“第一大趋势从工业社会向信息社会转变。在工业社会中,战略
创造性,主动学习团队精神信息的驾驭能力国际化再学习的能力,终生教育高度的责任心,巨大的承受力跨学科的综合力57创造性,主动学习57工业社会 信息社会主要生产方式
制造
加工处理、回收再循环主要经济部门
制造业
服务业
起改造作用的源泉
人类创造的能
信息
战略性资源
金融资本
知识
主要技术
机器技术
智能技术
基本劳动者
工程师、熟练工人
科学家、技术人员、专业人员方法论
经验主义
模型、模拟、决策理论、系统分析时间观念
适应当时
面向未来预测和计划 目的
与人类创造的未来竞争
人际间的竞赛
轴心原则
经济增长
理论知识的编码整理
返回58工业社会 信息社会返印度军队的信息化建设据报道:印度军队为了赢得现代信息战争,十分重视官兵信息化素质的培养。为加紧培养军队急需的信息化技术人才,印度海军制定了计算机培训计划,广泛举办网络技术、数据通信、电子战等培训班,并要求到2006年,所有军官都能操作计算机,士兵则必须完成计算机扫盲计划。这一目标目前已基本实现。信息战59印度军队的信息化建设据报道:印度军队为了赢得现代信息战争,十印军建成战略“宽带网”据2005年8月26日环球时报报道,印度媒体称,印军正式开通代号为“闪光信使”的战略宽带卫星网。军事专家指出:该网具有“军民通用”的优点,它使印军具备了建设信息化军队、打“网络中心站”的最基本和最重要的条件;……它与美军技术水平相当,能快速交换图文信息。军用网络分“三级”:第一级为战术级:网络用户为24个;能在1秒钟内完成信息传输,能对火炮等武器和单兵实施精确控制与指挥;第二级为战区级:网络用户在500个之内,信息传输时间为秒级,能实时准确地为各部队提供整个战区的全部信息;第三级为战略级:网络用户在1000个以内,信息传输时间为分钟级,精度可以达到部队协同作战的要求。四大功能一、实现各军兵种的“无缝”链接,使全军具有联合作战能力。二、为各级提供和传递情报信息。三、为各级提供指挥“平台”。传统战争打“将军”,信息战争打“班长”。四、为建立功能“模块化”部队提供物质基础。模块化部队间必须借助强大的“网络”实现“联动”。返回60印军建成战略“宽带网”据2005年8月26日环球时报报道,印信息战我国学者沈伟光教授1985年在世界上第一次提出“信息战”的概念。1990年发表第一部专著《信息战》。如今由信息战引发的新军事革命仍在全球进行,全世界的军队正按照信息战的理论调整战略战术、编制装备、作战训练等,海湾战争以后的所有战争无不烙上信息战的痕迹,而且信息战的威力还冲击着社会的各个领域。61信息战我国学者沈伟光教授1985年在世界上第一次提出“信息战信息战的影响1998年,在奥地利举行的首次国际信息战论坛会上,沈伟光教授作了“为遏制信息战而奋斗”的主题发言。他讲了三个问题:一、机械化战争向信息化战转变已开始,各国军队为打赢信息战做准备,中国军队具有较强的信息战防御能力和潜在的反击能力。二、信息战改变了人类使用暴力的观念和方式。三、信息战具有极大的隐蔽性和破坏性,人类应共同为遏制信息战而奋斗。2002年以来,台湾对军事战略作了调整,提升三种作战能力;第一种是信息战能力,第二种是超限战能力,最后才是海空军联合作战能力。2003年,美国兰德公司透露了最关心的中国军队的五种作战能力,排在第一位的就是信息战能力。62信息战的影响1998年,在奥地利举行的首次国际信息战论坛会上什么是信息战?信息战是一种全新的战争概念,是夺取制信息权的战争,核心是不战而胜。它是一个军事问题,也是一个社会问题。人永远是战争的主体。传统的武力战是把人作为主要的作战对象,信息战也不例外,是打击对方的认识系统和信息系统。(认识系统主要指信息系统和计算机辅助决策系统)。信息战区别于传统战争最显著的特征,它可以在“看不见的空间”里进行,可以是一场不流血的战争。战争的目的由“消灭敌人,保存自己”,变为“控制敌人,保全自己”。返回63什么是信息战?信息战是一种全新的战争概念,是夺取制信息权的战课后立即要做的事情:构思大作业题目,酝酿小组成员,编写大作业任务书。任务书包括:题目、背景、功能、工具、小组组长、成员及详细分工、完成日期等。第三周上课时交来。返回大作业64课后立即要做的事情:构思大作业题目,酝酿小组成员,编写大作业RogerS.Pressman对软件的认识“计算机软件已经成为一种驱动力。它是进行商业决策的引擎;它是现代科学研究和工程问题寻求解答的基础;它也是鉴别现代产品和服务的关键因素。它被嵌入在各类系统中:交通、医疗、电信、军事、工业生产过程、娱乐、办公、……难以穷举。软件在现代社会中确实是必不可少的。而我们在进入21世纪,软件将成为从基础教育到基因工程的所有领域新进展的驱动力。”返回65RogerS.Pressman对软件的认识“计算机软件
第1章软件开发方法(一)软件概述计算机教学实验中心教学大纲66
第1章软件开发方法计算机教学实验中心教学大纲1开场白软件……?软件是一种驱动力学习这门课程的意义怎么学好这门课程?课后立即要做的事情……67开场白软件……?21.理解软件的概念及软件的特征2.了解软件开发的历史3.了解软件的生命周期概念4.软件危机及项目失败的原因681.理解软件的概念及软件的特征3问题的提出什么是软件?软件有哪些特征?软件开发技术发展史什么是软件危机?什么是软件生命周期?……69问题的提出什么是软件?4软件(Software)随着信息化、网络化和数字化时代的到来,社会对“软件”的需求激增。如今,世界发达国家都把软件列为国家发展的关键技术领域。美国国家关键技术委员会将软件列为六大关键技术之一;欧洲共同体将“软件和信息处理”列为关键技术;我国把信息产业放在优先发展的地位,看作是中国发展高新技术、赶超世界先进水平的一次千载难逢的机遇。相关资料链接返回70软件(Software)随着信息化、网络化和数字化时代的到来1.1.1软件的特征软件是逻辑产品软件产品质量的体现方式不同软件产品的生命周期和失败曲线不同软件产品的成本构成不同大多数软件仍然是定制生产的软件产品的不同属性711.1.1软件的特征软件是逻辑产品6软件是逻辑产品软件产品是:具有产值、价格、质量和功能的特性看不见,是逻辑的、无形的是脑力劳动的结晶72软件是逻辑产品软件产品是:7软件产品质量体现方式不同质量体现方式不同:实用、可靠、可操作性;可维护性强方便用户不会折旧、损坏、老化73软件产品质量体现方式不同质量体现方式不同:8软件产品的成本构成不同
12%需求率4%生产率开发人员
1979年美国国防预算的9%用于计算机领域,约$113亿($1258亿)。在这$113亿中,$91亿用于软件投资(约占80%),仅有不到$23亿用于购买硬件设备。74软件产品的成本构成不同12%需求率4%生产率开发人员1软、硬件失败曲线不同
75软、硬件失败曲线不同10大多数软件产品仍然是定制生产硬件产品的生产技术和工艺已经成熟,可以做到标准化、系列化成批生产,用户可以“即插即用”方式使用。尽管软件产品复用是软件界孜孜不倦追求的目标,在某些局部范围内几家领军软件企业也建立了一些软件组件复用的技术标准,例如,OMG的CORBA、Microsoft的COM和DCOM、SUN的EJB和J2EE,但是目前还做不到大范围使用软件替代品。大多数软件仍然是为特定任务或用户定制的。76大多数软件产品仍然是定制生产硬件产品的生产技术和工艺已经软件产品的不同属性为便于软件产品的研制、生产、维护和使用,软件还必须具有:可维护性(Maintainability)独立性(Dependability)效率性(Efficiency)可用性(Usability)77软件产品的不同属性为便于软件产品的研制、生产、维护和使用1.1.2软件分类软件按不同方式可以划分为不同的类型:按功能划分按规模划分781.1.2软件分类软件按不同方式可以划分为不同的类型:13按功能划分软件分类
软件系统软件应用软件操作系统网络系统语言编译器工具软件管理软件实时软件科学计算、数据处理嵌入式软件人工智能软件专用领域软件79按功能划分软件分类软件系统软件应用软件操作系统管理软件14系统软件是支持计算机系统正常运行并实现用户操作的那部分软件。一般是在计算机系统购买时随机携带的,也可以根据需要另行安装。系统软件的主要特征是:与硬件有很强的交互性能对资源共享进行调度管理能解决并发操作处理中存在的协调问题其中的数据结构复杂,外部接口多样化,便于用户反复使用80系统软件是支持计算机系统正常运行并实现用户操作的那部分软件。应用软件应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部分软件。它可以拓宽计算机系统的应用领域,放大硬件的功能。应用软件具有无限丰富和美好的开发前景。81应用软件应用软件是为满足用户不同领域、不同问题的应用需求应用软件例①事务处理软件②实时软件③科学计算和数据处理软件④嵌入式软件⑤人工智能软件MIS,例如酒店管理系统、银行综合业务处理系统。例如导弹自动追踪制导系统、自动控制系统等。例如并行计算、遗传基因研究、地质勘探数据处理等。例如舰载、机载、家电中的嵌入式软件。例如指纹鉴别、专家系统、计算机下棋等。82应用软件例①事务处理软件MIS,例如酒店管理系统、银行综按规模划分软件分类类别参加人员数研制期限产品规模(语句行数)实例微型11~4周0.5k选择排序程序小型11~6月1k~2k数值计算程序中型2~51~2年5k~10k汇编程序较大型5~202~3年50k~100k数据库系统大型100~10004~5年1M操作系统极大型2000~50005~10年1M~10M空中交通管制系统83按规模划分软件分类类别参加人研制期限产品规模实例微型11~1.1.3软件开发技术发展史
应用驱动是推进软件发展进程的主线:从早期按个人意愿编写代码,到按软件工程的理论生产大型应用系统;从手工作坊式的封闭性制作到按标准制式、大工业生产的开放系统;从注重个人精雕细琢地编码技巧到注重工程项目的管理和开发团队的协作;从定制设计到以复用为目标的组件式开发;从由少数软件天才的编程艺术到由广大用户直接参与的应用开发。841.1.3软件开发技术发展史应用驱动是推进软件发展进程阶段划分半个多世纪以来,软件及软件开发技术在理论、观念、目标及技术方法等方面都发生了很大变化。以10年左右为间隔,划分为五个阶段。详见表1-2。讨论每个时期软件开发技术的特点,包括软件开发技术处理的对象、用途、目的、开发方法、开发工具、发展状况、技术突破、理论成就及目标等。85阶段划分半个多世纪以来,软件及软件开发技术在理论、观念、目标第一阶段20世纪40-50年代硬件:由“裸机”组成,计算机中不装任何软件。由于采用电子管作为逻辑电路的元器件,系统稳定性很差。软件:人们只关心硬件的性能和技术指标,系统设计与实现是以硬件为中心,软件开发(实际上是程序设计)处于从属地位。
86第一阶段20世纪40-50年代硬件:由“裸机”组成,计算软件主要特征处理对象:由“0”和“1”组成的二进制序列;用途:主要是科学计算及军事应用(弹道计算);目的:“确定计算机硬件动作的序列”;开发方法:经验主义;开发工具:机器语言;认识:计算机的用途是快速计算。发展概况:机器语言、汇编语言、FORTRAN语言;技术突破:存储器技术、“迭代-反复”算法、观念转变;理论成就:冯·诺依曼理论和图灵测试;目标:用最少资源来获得最大运算能力。87软件主要特征处理对象:由“0”和“1”组成的二进制序列;2阶段软件大事件1946年6月,冯·诺依曼与高德斯坦等人发表了《电子计算机装置逻辑结构初探》的论文,成为EDVAC的设计基础。1950年10月,图灵发表《计算机器与智能》(ComputingMachineryandIntelligence)论文,指出如果一台机器对于质问的响应与人类的响应完全无法区别,那么这台机器就具有智能。今天,人们把这一论断称为图灵测试,它奠定了人工智能的理论基础。1957年,在IBM704上运行了第一个高级语言FORTRAN,至今还在使用。……88阶段软件大事件1946年6月,冯·诺依曼与高德斯坦等人发表了第二阶段20世纪60年代硬件:在电路设计中采用晶体管和集成电路,使计算机的体积大大缩小,系统稳定性提高,价格降低。开始出现以屏幕显示器和键盘输入方式的商用计算机,促进了计算机的产、销量急剧上升。软件:应用领域拓宽,社会对应用软件的需求急剧增加,软件的地位和作用不断提高,从而有力地推动了软件技术和开发方法的改进和发展。
89第二阶段20世纪60年代硬件:在电路设计中采用晶体管和软件主要特征处理对象:高级语言编写的程序;用途:科学计算、商务应用和数据处理;目的:“确定计算机指令的动作序列”;开发方法:功能性程序设计;开发工具:汇编语言、高级语言;认识:软件应独立于硬件;必须规范程序内部控制流;发展概况:高级语言;编译技术;非数值商业应用;软件危机技术突破:高级语言促进计算机应用;功能性程序设计技术;理论成就:软件工程解决软件危机;结构化程序设计理论;目标:扩大程序系统的规模,以适应更复杂的应用。90软件主要特征处理对象:高级语言编写的程序;25阶段软件大事件1962年,Auerback公司提供了最早的基准程序Benchmark用于测试技术。1963年,贝尔实验室发明了能够专门处理字符串的SNOBOL语言。同年,花费了80亿美元的美国半自动防空系统(SAGE)研发成功投入使用。1964年5月1日,美国达特茅斯学院的凯梅尼和汤姆斯发明推出了BASIC语言。1967年,挪威计算中心的O.J.Dahl和K.Nygaard用ALGOL语言开发出Simula67用于模拟应用,这是第一个面向对象语言。1968年10月北大西洋公约组织(NATO)的科学委员会在德国加尔密斯(Garmisch)开会讨论软件可靠性及软件危机的问题,产生了关于“软件工程”的加尔密斯报告,首次提出了“软件工程”的问题。同年,荷兰科学家埃德EdsgarW.Dijkstra在ACM通信上发表了“GOTO语句值得考虑的害处”的论文,引发了一场关于结构化编程的大讨论。国际信息处理联合会(FP)鼓励使用六位数字的数据格式(YYMMDD)来表示日期进行信息交换,从而造成2000年危机问题。1969年,贝尔实验室的DennisM.Ritchie和K.Thompson用PDP-7汇编指令编写了UNIX的第一版本V1。UNIX的发展对计算机界、尤其是对软件界产生了巨大而深刻的影响。91阶段软件大事件1962年,Auerback公司提供了最早的基第三阶段20世纪70年代硬件:发展具有里程碑意义;采用诸如大规模集成电路、分布式技术、网络技术、嵌入式等高新技术极大地提高了计算机系统的处理能力,特别是微处理器的诞生,开创了大众化使用计算机的新时代。软件:该阶段特征是:高性能的计算机系统对软件的功能和性能提出了更高的要求。
92第三阶段20世纪70年代硬件:发展具有里程碑意义;采用软件主要特征处理对象:小规模系统的程序设计;用途:商务应用;网络互联;数据库应用;目的:“研究数据结构和算法以寻求处理的时-空平衡”;开发方法:研究数据结构和算法;结构化开发方法;开发工具:高级语言;数据库技术;认识:平衡时-空平衡复杂度;程序执行的停机;程序可读性;发展概况:数据独立(文件,DB);对复杂系统的规格说明;技术突破:数据结构及算法;区分应用软件和系统软件;理论成就:数据结构及算法理论;形式方法;软件工程方法;目标:解决软件危机。93软件主要特征处理对象:小规模系统的程序设计;28阶段软件大事件1971年,瑞士联邦技术学院的伍尔斯教授发明了第一个结构化的编程语言Pascal,并用17世纪法国著名科学家BlaisePascal(帕斯卡)的名字命名。同年,伍尔斯教授还提出“自顶向下、逐步细化”的结构化程序设计方法。FriedrichI.Bauer提出软件工程的定义:“确立并使用正确的工程原理和方法,以便能够经济地获得可靠而有效的软件。”1972年,出现三种有深远影响的编程语言:贝尔实验室的DennisRitchie发明的C语言。它在MartinRichards的BCPL语言和KenTbompston的B语言的基础上进行发展。最初的C语言是为编写UNIX而设计的,并在PDP-11上首先实现。法国马赛大学的AlanColmeratuer发明PROLOG语言,用于人工智能领域,其在欧洲和日本比较流行。Xerox公司PaloAlto研究中心AlanKay(艾兰·凯)发明的Smalltalk语言。它是一种面向对象的语言,适合使用鼠标工作的可视计算机系统,它体现了与传统程序设计不同的观念及风格。同年,华裔科学家王安发展了字处理系统。1976年B.W.Boehm又对软件工程给出定义:“在软件(包括程序和文档)设计、实现、测试、运行、维户的各个过程中.建立在科学基础上的一套实用方法”。C.A.Hoare则认为软件工程是“一种导致电子数字计算机具有强大功能的艺术,这种功能表现为人可以方便地使用计算机”。94阶段软件大事件1971年,瑞士联邦技术学院的伍尔斯教授发明了第四阶段20世纪80年代
硬件:这个时期计算机发展体现在个人计算机和计算机网络。软件:该阶段特征是个人计算机应用软件异军突起,形成信息产业中新的增长点。伴随微处理器和嵌入式系统的发展,计算机应用开始深入我们的日常工作和生活。旺盛的市场需求和政府企业甚至广大百姓的资金投入,孕育了大量软件企业。市场竞争和市场经济规则促进了软件产品功能更强,质量更高,性能价格比更好。大型机(包括中、小型机)软件向个人计算机上移植,从而为软件提供了更广阔的发展空间和巨大的用户市场。95第四阶段20世纪80年代硬件:这个时期计算机发展体现软件主要特征处理对象:大型系统的程序设计;用途:关系数据库应用;各领域计算机应用;目的:大众化普及应用计算机;开发方法:构造系统方法;用标记工具描述系统;文档是管理系统结构的主要手段;开发工具:高级语言;基于PC的开发工具;早期CASE工具;认识:软件生命周期;强调开发组协作的重要性;发展概况:软件工程研究机构;CASE环境;图形界面系统;技术突破:C/S计算模式;GUI图形用户界面;理论成就:RDB的理论;软件工作量度量COCOMO;软件过程改进模型CMM;目标:开发更大规模和复杂性软件系统,满足应用的需求。96软件主要特征处理对象:大型系统的程序设计;31阶段软件大事件1981年,美国AshtonTate公司推出关系数据库dBASEⅡ,并迅速赢得世界范围内的巨大市场。1981年,IBM公司推出个人计算机IBMPC,选Microsoft公司的MS-DOS作为其个人计算机的操作系统,并将其命名为PC-DOS。从而为BillGates的Microsoft公司的发展开辟一条通往成功的道路。1981年,中国颁布了《信息交换用汉字编码字符集·基本集》,国家标准代号GB2312-80。1983年,王永民发明了“五笔字型”汉字输人法。1983年,贝尔实验室发展了C++语言,既在C语言的基础上增加了面向对象程序设计所需要的抽象数据类型——类。1984年10月15日,国际标准化组织ISO制定了开发系统互连参考模型OSI/RM,即ISO7498-1。它从逻辑上把网络功能分成七层。1985年,Microsoft公司推出Windows窗口界面操作系统。1986年,Oracle公司推出DistributedORACLE分布式关系数据库。1987年,卡内基梅隆大学的软件工程研究所的WattsHumphrey等发表了“软件过程成熟度框架”,后来成为用于预测开发单位是否有能力生产可靠软件的“能力成熟度模型CMM”。同年,IBM公司和Microsoft公司合作推出OS/2操作系统,为IBM公司的PS/2个人计算机系统配套。OS/2被称为32位微机的新一代操作系统。97阶段软件大事件1981年,美国AshtonTate公司推第五阶段20世纪90年代
硬件:当计算技术发展到网络计算,标志着计算机网络时代的到来。伴随处理分散的海量数据的应用需求,诞生并促进了分布式技术、并行计算、人工神经网络等技术的发展。软件:该阶段软件特征是:多媒体信息的实时处理技术成为研究的热点;计算机系统内部传统处理模式(单指令流单数据流SISD和单指令流多数据流SIMD)受到极大挑战,具有并行处理功能的新型处理模式(多指令流多数据流MIMD)倍受关注和厚爱;面向对象开发方法代表着提高开发效率和质量的方向;信息唾手可得的网络服务软件满足着人们日益增长的应用需求。98第五阶段20世纪90年代硬件:当计算技术发展到网络计软件主要特征处理对象:基于Internet/Web的程序设计;用途:网络互联及网络应用;目的:通过支持跨地区、跨部门、跨时间的群组共享信息协同工作来提高群组,集团的整体的生产率;开发方法:基于组件、基于Internet/Web的开发方法;开发工具:组件技术;基于Web开发工具;现代CASE工具;认识:非功能性需求的重要性;基于环境的软件过程改造;发展概况:Internet/Intranet;基于Web应用;虚拟现实技术;新技术涌现,但缺乏理论指导;技术突破:设计模式;浏览器技术;CORBA/COM/OLE技术;理论成就:“交互模型”作为网格计算的理论基础;目标:正确的时刻,把正确的信息,安全地送给需要的人。(Justintimeinformation.)99软件主要特征处理对象:基于Internet/Web的程序设计阶段软件大事件1990年,TimBernersLee提出了关于WorldWideWeb的原型,并同时给出了URL、HTML和HTTP的概念。1991年IBM与Microsoft分道扬镳。6月13日,中国颁布了《计算机软件保护条例》,并于同年10月1日开始实施。1993年,伊利诺斯州大学的超级计算机应用研究中心的学生和研究人员开发了第一个基于图形用户界面的Internet浏览器,取名为NCSAMasaic。同年,美国白宫发表了一份报告,阐述了克林顿政府的“NationalInformationInfrastructure”(国家信息基础建设)发展计划。人们把NII常称为“InformationSuperHighway”(信息高速公路)。1994年,Netscape公司首次推出它的浏览器Navigator。由于它卓越的功能和便捷的操作方式,使其在很短的时间内风靡世界。1995年,SUN公司推出了Java及其集成开发环境。Java语言是基于Internet的编程语言,使得应用程序同时在不同平台运行成为可能。同年,Microsoft公司推出Windows95。100阶段软件大事件1990年,TimBernersLee提出1.1.4软件危机从20世纪60年代开始,软件界经常遭受软件危机的袭扰。以IBM公司的OS/360操作系统为例。它共有4000多个模块、100万行指令,共投入5000人年,耗资5亿美元,但在交付使用的系统中仍找出2000个以上的错误。开发软件所需的高成本与软件产品的低质量之间存在尖锐的矛盾。软件开发陷入不可自拔的恶性循环之中。这种现象被称为“软件危机”(SoftwareCrisis)。1011.1.4软件危机从20世纪60年代开始,软件界经常遭受软软件危机的表现⑴软件开发进度难以预测⑵软件开发成本难以控制⑶用户对软件功能难以满足⑷软件产品质量无法保证⑸软件产品难以维护⑹软件通常缺少适当的文档资料⑺生产率提高的速度不能满足社会需要102软件危机的表现⑴软件开发进度难以预测37⑴软件开发进度难以预测以丹佛新国际机场为例:该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,000个电子眼、400台无线电接收机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,该系统还无法正常运行。据研究结果统计:只有15%的项目是按计划完成的。103⑴软件开发进度难以预测以丹佛新国际机场为例:38⑵软件开发成本难以控制
据同样的研究统计结果表明:仅有10%的项目是按费用计划完成的。例如,20世纪80年代初,美国国内税收服务处(IRS)让Sperry公司开发一套联邦税收表格自动处理系统。结果是:系统被证明不适合当前的工作量,花费几乎是预算的两倍,必须立即更换(华盛顿邮报的报道)。到1985年,还需要再追加9千万美元来改进Sperry公司最初价值1.03亿美元的设备。另外,因为出现的问题阻碍了IRS按时返还纳税者的税款,IRS还被迫偿还4.02亿美元的利息以及2.23千万美元的工资给加班职员。104⑵软件开发成本难以控制据同样的研究统计结果表明:仅有10⑶用户对产品功能难以满足
开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种“闭门造车”的开发方式必然导致最终的产品不符合用户的实际需要。表1-2显示了开发系统失败所造成的经济损失。例如,美国空军B-1BEW系统耗资$12亿,结果项目失败。105⑶用户对产品功能难以满足开发人员和用户之间很难沟通、矛盾⑷软件产品质量无法保证例如,一次美国在肯尼迪角发射一枚阿脱拉斯火箭,预定将用这种火箭运载飞往金星的宇宙飞船。火箭飞离地面几十英里高空开始翻转,地面控制中心被迫下令自爆炸毁。后经检查发现是飞行计划程序中漏掉一个连字符。就是这样一个连字符的疏漏造成这枚价值1850万美元的火箭实验失败。据统计数字表明:在大型系统中,约3/4的系统有问题。表1-3显示了美国对政府开发的9个软件项目调查的结果。可用系统只占不到5%。106⑷软件产品质量无法保证例如,一次美国在肯尼迪角发射一枚阿脱拉⑸软件产品难以维护
软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测、排除系统故障。为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。107⑸软件产品难以维护软件产品本质上是开发人员的代码化的逻辑⑹软件缺少适当的文档资料实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作说明书。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。108⑹软件缺少适当的文档资料实际上,软件的文档资料是开发组织⑺软件开发供不应求软件开发生产率的提高速度,难以满足社会需求的增长率。软件产品“供不应求”的现象致使不能充分利用现代计算机硬件提供的巨大潜力。109⑺软件开发供不应求软件开发生产率的提高速度,难以满足社会软件危机产生的原因
产生软件危机有两个方面的原因:与软件本身的特点有关;是内在因素、客观的存在,只能因势利导加以解决。与软件开发和维护的技术方法有关;是外在因素,可以完善、提高。110软件危机产生的原因产生软件危机有两个方面的原因:45软件特点的因素(内因)
软件是逻辑产品,是代码化了的人的思维活动。这就给软件的生产管理和质量控制带来不便。软件是特定问题在计算机上的运行描述。实际问题的复杂性决定了一个实用软件系统规模往往十分庞大。大有大的难处。程序规模越大,控制、管理难度也就越大。4000万行代码的生产难度≠(不等于)1万行代码生产难度的4000倍111软件特点的因素(内因)软件是逻辑产品,是代码化了的人的思软件开发维护技术方法的因素
开发人员和用户之间的矛盾许多软件系统开发失败的主要原因是开发人员在没有准确、完整地了解了用户的需求后就急于编程;用户对需求也往往不能准确、完整地提出。软件开发各阶段任务不明确,方法不科学
软件产品有其生命周期。只有科学的按生命周期各阶段的任务去组织实施,才能保证质量,降低成本;急于求成,不按科学规律、方法实施,只能“事倍功半”,事与愿违。重编程,轻分析;重开发,轻维护;重程序,轻文档。
软件产品的使用寿命很长。在这期间要对软件进行必要的修改和维护。据统计数据表明,软件维护的费用占总费用的55%~70%。软件工程的一个重要目标就是提高软件的可维护性,减少软件维护的代价。112软件开发维护技术方法的因素开发人员和用户之间的矛盾47导致软件开发项目失败的原因从表1-4的1、2、4、6、8可以看出,用户需求不稳定、不清晰、不完整是项目失败的主要原因,应引起足够的重视。软件开发方法的研究应针对项目失败的原因系统地提出解决办法。113导致软件开发项目失败的原因从表1-4的1、2、4、6、8可解决软件危机的途径(1)采用现代化、社会化的组织管理方式;(2)使用成功的技术和方法(面向过程、面向对象、自顶向下等);(3)使用更好的软件开发工具(汇编、C、VC、各种数据库管理系统等);
为了解决软件危机就要从技术措施和组织管理两个方面去研究,不断总结经验教训,提高软件生产效率,降低软件开发和维护的成本。开发软件选用最好的开发工具是至关重要的,即选择、设置良好的软件工程支撑环境。工具选用的好,它可以“放大”人的智力,大大加快软件开发速度,提高软件质量。114解决软件危机的途径(1)采用现代化、社会化的组织管理方式;41.1.5软件生命周期软件生存周期是指一个软件从提出开发要求直到该软件报废为止的整个时期。针对不同的开发模型、不同的开发对象以及不同的开发方法,软件生命周期可以有不同的划分。如果不考虑上述不同的因素以及应用领域、项目规模和复杂性,软件生命周期可以划分为软件定义、软件开发和软件维护三个时期,每个时期又进一步划分成若干个阶段。1151.1.5软件生命周期软件生存周期是指一个软件从提出开发要软件定义软件定义时期的核心任务是:“做什么”。即要确定软件开发工程的总目标;确定工程的可行性;提出实现工程目标应该采用的策略及系统应实现的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段:问题定义、可行性研究和需求分析
116软件定义软件定义时期的核心任务是:51软件开发软件开发时期的核心任务是:“怎么做”。即要具体设计和实现在软件定义时期定义的软件系统。它又包括4个阶段:总体设计,详细设计,编码和测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。117软件开发软件开发时期的核心任务是:“怎么做”。即要具体设计和软件维护维护时期的核心任务是:“改变”。即要保证软件持久地满足用户各个方面改变的需要。维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。例如,如果提出的变更要求是更加新的功能,那就要涉及从新一轮的软件开发过程:需求分析、系统设计、编码及测试。118软件维护维护时期的核心任务是:“改变”。即要保证软件持久地满欢迎参加计教中心网站的学习讨论。中心网址:
http://教学资源地址:
http://60/moodle我的E-mail地址:
lzq@
谢谢,再见!119欢迎参加计教中心网站的学习讨论。54学生要学会做人,学会做事,学会学习,学会思考。学会做人——
要做于国、于民、于社会有用之才;受教育的过程是人格完善的过程。学生要能正确的把握自己,追求德、智、体及个性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽省桐城市高三生物上册期末考试测试卷带答案
- 2026年山东省安丘市高三历史上册期末考试测试卷【预热题】附答案
- 2025年广东省鹤山市高三历史上册期末考试检测卷附答案【考试直接用】
- 2026年浙江省永康市高三生物上册期末考试模拟考试卷含答案
- 2026年辽宁省灯塔市高三生物下册期末考试模拟考试卷含答案
- 2026年吉林省大安市高三生物下册期末考试模拟测试卷及答案
- 2026年黑龙江省抚远市高三物理下册期末考试模拟测试卷(含答案)
- 2026年河南省新密市高一化学上册期末考试模拟卷及参考答案(夺分金卷)
- 2026年湖北省广水市高一化学上册期末考试模拟测试卷【预热题】附答案
- 2026年辽宁省庄河市高一化学上册期末考试测试卷附答案【满分必刷】
- 数学-湖南炎德英才2026年秋季高一上学期10月联考
- 新人教版数学四年级上册第三单元 《多位数乘两位数》3.8 用估算解决问题教学课件
- 2026纪念长征胜利90周年知识竞赛试题100题(含答案解析)
- 2026年新员工入职培训内容模拟试题及答案详解
- 2026年上海初中生金钥匙科技竞赛选拔赛试卷(附答案)
- 《砼制备及运输》课件
- 雨课堂学堂在线学堂云《跨文化交际英语(北京理工)》单元测试考核答案
- GB/T 22800-2023旅游饭店用纺织品
- 《焊接目视检验》
- GB/T 7762-2014硫化橡胶或热塑性橡胶耐臭氧龟裂静态拉伸试验
- GB/T 2521.1-2016全工艺冷轧电工钢第1部分:晶粒无取向钢带(片)
评论
0/150
提交评论