软件开发方法软件概述.ppt
《软件开发方法软件概述.ppt》由会员分享,可在线阅读,更多相关《软件开发方法软件概述.ppt(59页珍藏版)》请在三一办公上搜索。
1、,第1章 软件开发方法(一)软件概述,计算机教学实验中心,第2|83页,问题的提出,什么是软件?软件有哪些特征?什么是软件危机?什么是软件生命周期?软件开发技术发展史,第3|83页,1理解软件的概念及软件的特征2了解软件生产的历史3软件危机及项目失败的原因4了解软件的生命周期概念5了解软件开发史,第4|83页,软件(Software),随着信息化、网络化和数字化时代的到来,社会对“软件”的需求激增。如今,世界发达国家都把软件列为国家发展的关键技术领域。美国国家关键技术委员会将软件列为六大关键技术之一;欧洲共同体将“软件和信息处理”列为关键技术;我国把信息产业放在优先发展的地位,看作是中国发展高
2、新技术、赶超世界先进水平的一次千载难逢的机遇。,第5|83页,软件的基本概念,什么是软件?计算机系统由计算机硬件和软件构成。计算机神奇的功能是在软件的“指挥”下创造出来的。软件是各种程序和有关资料的总称。程序是:为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合是人们求解问题的逻辑思维活动的代码化描述程序的最重要的目的是:便于阅读、交流,第6|83页,Roger S.Pressman 对软件的认识,“计算机软件已经成为一种驱动力。它是进行商业决策的引擎;它是现代科学研究和工程问题寻求解答的基础;它也是鉴别现代产品和服务的关键因素。它被嵌入在各类系统中:交通、医疗、电信、军事、工业生
3、产过程、娱乐、办公、难以穷举。软件在现代社会中确实是必不可少的。而我们在进入21世纪,软件将成为从基础教育到基因工程的所有领域新进展的驱动器。”,第7|83页,软件的特征,软件是逻辑产品软件产品质量的体现方式不同软件产品的生命周期和失败曲线不同软件产品的成本构成不同大多数软件仍然是定制生产的软件产品的不同属性,第8|83页,软件是逻辑产品,软件产品是:具有产值、价格、质量和功能的特性看不见,是逻辑的、无形的是脑力劳动的结晶,第9|83页,软件产品质量体现方式不同,质量体现方式不同:实用、可靠、可操作性;可维护性强方便用户不会折旧、损坏、老化,第10|83页,软件产品的成本构成不同,12%需求率
4、,4%,生产率,开发人员,1979年美国国防预算的9%用于计算机领域,约$113亿($1258亿)。在这$113亿中,$91亿用于软件投资(约占80%),仅有不到$23亿用于购买硬件设备。,第11|83页,软、硬件失败曲线不同,第12|83页,大多数软件产品仍然是定制生产,硬件产品的生产技术和工艺已经成熟,可以做到标准化、系列化成批生产,不论哪个厂家生产的产品,用户买来都可以集成、组装和替换使用。尽管软件产品复用是软件界孜孜不倦追求的目标,在某些局部范围内几家领军软件企业也建立了一些软件组件复用的技术标准,例如,OMG的CORBA、Microsoft的COM和DCOM、SUN的EJB和J2EE
5、,但是目前还做不到大范围使用软件替代品。大多数软件仍然是为特定任务或用户定制的。,第13|83页,软件产品的不同属性,为便于软件产品的研制、生产、维护和使用,软件还必须具有:可维护性(Maintainability)独立性(Dependability)效率性(Efficiency)可用性(Usability),第14|83页,软件分类,软件按不同方式可以划分为不同的类型:按功能划分按规模划分,第15|83页,按功能划分软件分类,第16|83页,系统软件,是支持计算机系统正常运行并实现用户操作的那部分软件。一般是在计算机系统购买时随机携带的,也可以根据需要另行安装。系统软件的主要特征是:与硬件有
6、很强的交互性能对资源共享进行调度管理能解决并发操作处理中存在的协调问题其中的数据结构复杂,外部接口多样化,便于用户反复使用,第17|83页,系统软件例,操作系统(Operating System)网络系统(Network System)语言编译系统(Language Compiler)通信软件(Communications Software)工具软件(Tools Software),第18|83页,应用软件,应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部分软件。它可以拓宽计算机系统的应用领域,放大硬件的功能。应用软件具有无限丰富和美好的开发前景。,第19|83页,应用软件例,事务
7、处理软件 实时软件 科学计算和数据处理软件 嵌入式软件 人工智能软件,第20|83页,按规模划分软件分类,第21|83页,软件开发技术发展史,应用驱动是推进软件发展进程的主线:从软件发展早期的按个人意愿编写代码,到按软件工程的理论生产大型应用系统;从手工作坊式的封闭性制作到按标准制式、大工业生产的开放系统;从注重个人精雕细琢地编写代码的技巧到注重工程项目的管理和开发团队的协作;从为特定应用定制设计到以复用为目标的组件式开发;从由少数软件天才的编程艺术到由广大用户直接参与的应用开发。,第22|83页,阶段划分,半个多世纪以来,软件及软件开发技术在理论、观念、目标及技术方法等方面都发生了很大变化。
8、以10年左右为间隔,划分为五个阶段。详见表1-2。讨论每个时期软件开发技术的特点,包括软件开发技术处理的对象、用途、目的、开发方法、开发工具、发展状况、技术突破、理论成就及目标等。,第23|83页,第一阶段20世纪 40-50年代,早期计算机是由只有硬件的“裸机”组成,计算机中不装任何软件。由于采用电子管作为逻辑电路的元器件,系统稳定性很差。那时人们只关心硬件的性能和技术指标,系统设计与实现是以硬件为中心,软件开发(实际上是程序设计)处于从属地位。,第24|83页,软件主要特征,处理对象:由“0”和“1”组成的二进制序列;用途:主要是科学计算及军事应用(弹道计算);目的:“确定计算机硬件动作的
9、序列”;开发方法:经验主义;开发工具:机器语言;认识:计算机的用途是快速计算。发展概况:机器语言、汇编语言、FORTRAN语言;技术突破:存储器技术、“迭代-反复”算法、观念转变;理论成就:冯诺依曼理论和图灵测试;目标:用最少资源来获得最大运算能力。,第25|83页,阶段软件大事件,1945年6月30日,冯诺依曼(John von Neumann)在EDVAC计算机设计报告草案中介绍了存储程序的概念。1946年6月,冯诺依曼与高德斯坦等人发表了电子计算机装置逻辑结构初探的论文,成为EDVAC的设计基础。1950年10月,图灵发表计算机器与智能(Computing Machinery and I
10、ntelligence)论文,指出如果一台机器对于质问的响应与人类的响应完全无法区别,那么这台机器就具有智能。今天,人们把这一论断称为图灵测试,它奠定了人工智能的理论基础。1952年霍普研制成功第一个编译程序A-O。1954年IBM资助的一个委员会在John Backus领导下开始研制高级语言,设计用于科学与工程计算的FORTRAN语言。1956年IBM推出了IBM704,其机器性能较以前的计算机有了显著提高。并且在其上首次运行了符号汇编程序SAP,成为程序发展史上最有意义的事。它确立了汇编的基本形式。1957年,在IBM704上运行了第一个高级语言FORTRAN,至今还在使用。1958年,推
11、出多个高级语言。有麻省理工学院(MIT)的麦卡锡(John McCarthy)为人工智能领域的应用而设计LISP语言;有第一个用于数控机床的编程的专用语言APT;还有用于商业数据处理的语言Flow-Matic。1858年,Alex Bernstein等人在IBM704机开发的第一个成熟的程序象棋程序;有Alan Newell等人使用高级语言首次开发的模仿人类思维过程的程序;还有空中交通管理系统。,第26|83页,第二阶段20世纪 60年代,由于硬件技术的发展,在电路设计中广泛采用晶体管和集成电路,使计算机的体积大大缩小,系统稳定性提高,价格降低。开始出现以屏幕显示器和键盘输入方式的商用计算机,
12、促进了计算机的产、销量急剧上升。在软件领域,应用领域拓宽,社会对应用软件的需求急剧增加,软件的地位和作用不断提高,从而有力地推动了软件技术和开发方法的改进和发展。,第27|83页,软件主要特征,处理对象:高级语言编写的程序;用途:科学计算、商务应用和数据处理;目的:“确定计算机指令的动作序列”;开发方法:功能性程序设计;开发工具:汇编语言、高级语言;认识:软件应独立于硬件;必须规范程序内部控制流;发展概况:高级语言;编译技术;非数值商业应用;软件危机技术突破:高级语言促进计算机应用;功能性程序设计技术;理论成就:软件工程解决软件危机;结构化程序设计理论;目标:扩大程序系统的规模,以适应更复杂的
13、应用。,第28|83页,阶段软件大事件,1960年,ALGOL60语言是使用递归的第一个面向过程的语言,用与数学与科学计算。同年创建通用商用语言COBOL。1961年诞生了第一个模拟语言GPSS。同年MIT在 IBM7090上开发了第一个实验性分时系统CTSS(Compatible Time Sharing System)。当时的7090只有32K内存,监控程序为5K,剩下27K给用户使用。CTSS支持32个用户,对 IBM后来的操作系统产生了很大的影响。1962年,在测试技术方面,Auerback公司提供了最早的基准程序Benchmark用于测试技术。同年,贝尔实验室研制了用语音谱图识别语音
14、。和能设计、存储及编辑合成音乐的软件。1963年,贝尔实验室发明了能够专门处理字符串的SNOBOL语言。同年,花费了80亿美元的美国半自动防空系统(SAGE)研发成功投入使用。1964年5月1日,美国达特茅斯学院的凯梅尼和汤姆斯发明推出了BASIC语言。同年,IBM公司开发出报表生产程序RPG。后来有人认为RPG是第四代编程语言的先兆。IBM经过7年努力,完成了航空订票系统,还在当年开发了计算机辅助设计系统。1965年,开始了服务于大型分时系统的MAC工程。后来发展成为Multics操作系统。同年,荷兰计算机科学家迪克斯特拉(Dijkstra)提出结构化编程技术,适合在软件的详细设计或低层设计
15、及编码实现阶段采用。,第29|83页,阶段软件大事件(续),1966年,IBM公司的PHHoward提出英文字符识别系统,推动了文字识别技术的发展。RCasey和GNagy对汉字OCR(光学字符识别)进行了研究,并提出二级匹配的方法。1967年,挪威计算中心的OJDahl和KNygaard用ALGOL语言开发出Simula67用于模拟应用,这是第一个面向对象语言。同年,美国科学家克努斯经典著作The Art of Computer Programming。把算法与数据结构作为独立实体从使用它们的程序中分离出来,开创数据结构,算法理论。1968年10月北大西洋公约组织(NATO)的科学委员会在德
16、国加尔密斯(Garmisch)开会讨论软件可靠性及软件危机的问题,产生了关于“软件工程”的加尔密斯报告,首次提出了“软件工程”的问题。同年,荷兰科学家埃德 Edsgar WDijkstra在 ACM通信上发表了“GOTO语句值得考虑的害处”的论文,引发了一场关于结构化编程的大讨论。国际信息处理联合会(FP)鼓励使用六位数字的数据格式(YYMMDD)来表示日期进行信息交换,从而造成2000年危机问题。同年Ivan ESuterland提出窗口技术。1969年,贝尔实验室的Dennis MRitchie和KThompson用PDP-7汇编指令编写了UNIX的第一版本V1。UNIX的发展对计算机界、
17、尤其是对软件界产生了巨大而深刻的影响。,第30|83页,第三阶段20世纪 70年代,这个时期计算机硬件的发展具有里程碑的意义,采用诸如大规模集成电路,分布式技术、网络技术、嵌入式等高新技术极大地提高了计算机系统的处理能力,特别是微处理器的诞生,开创了大众化使用计算机的新时代。该阶段软件的特征是:高性能的计算机系统对软件的功能和性能提出了更高的要求。,第31|83页,软件主要特征,处理对象:小规模系统的程序设计;用途:商务应用;网络互联;数据库应用;目的:“研究数据结构和算法以寻求处理的时-空平衡”;开发方法:研究数据结构和算法;结构 化开发方法;开发工具:高级语言;数据库技术;认识:平衡时-空
18、平衡复杂度;程序执行的停机;程序可读性;发展概况:数据独立(文件、DB);对复杂系统的规格说明;技术突破:数据结构及算法;区分了应用软件和系统软件;理论成就:数据结构及算法 理论;形式方法;软件工程方法;目标:解决软件危机。,第32|83页,阶段软件大事件,1970年,Winston Royce在他的管理大型软件系统的开发提出了著名的“瀑布模型”。同年,柯特(EFCodd)提出关系模型为关系数据库技术的发展打下基础。在编程语言方面,出现了用于系统程序设计的 BLISS语言,用来编写编译程序和操作系统。1971年,瑞士联邦技术学院的伍尔斯教授发明了第一个结构化的编程语言Pascal,并用17世纪
19、法国著名科学家 Blaise Pascal(帕斯卡)的名字命名。同年,伍尔斯教授还提出“自顶向下、逐步细化”的结构化程序设计方法。Friedrich IBauer提出软件工程的定义:“确立并使用正确的工程原理和方法,以便能够经济地获得可靠而有效的软件。”巴拿斯提出了信息隐藏的原理,对软件工程的发展产生巨大影响。1972年,出现三种有深远影响的编程语言:贝尔实验室的 Dennis Ritchie发明的C语言。它在Martin Richards的 BCPL语言和 Ken Tbompston的B语言的基础上进行发展。最初的C语言是为编写UNIX而设计的,并在PDP-11上首先实现。法国马赛大学的Al
20、an Colmeratuer发明 PROLOG语言,用于人工智能领域,其在欧洲和日本比较流行。Xerox公司Palo Alto研究中心 Alan Kay(艾兰凯)发明的 Smalltalk语言。它是一种面向对象的语言,适合使用鼠标工作的可视计算机系统,它体现了与传统程序设计不同的观念及风格。同年,在计算机科学的理论方面,计算复杂性理论提出了NP问题的思想。提出对某些大规模的计算问题(如旅行商问题),其计算量是极其巨大的。同年,华裔科学家王安发展了字处理系统。,第33|83页,阶段软件大事件(续),1974年GJMyers,WStevens,LConstantine,EYourdon等发展了结构
21、化设计(SD)方法,基本思想是通过模块化建立一个结构良好的系统。同年,在斯得哥尔摩的象棋比赛中,计算机进行了首次赛事。1975年,MAJackson提出JSP方法,它是适合中小型数据处理系统进行模块结构设计的一种方法。同年,Charles HMoore发明了Forth语言,它适合实时控制及工业机器人的编程。这一年还出现了SPSS语言,用于社会科学的统计。勃洛克发表著作“人月的秘密”,提出在拖延了的项目中增加人员只会使项目更为延期的观点。1976年BWBoehm又对软件工程给出定义:“在软件(包括程序和文档)设计、实现、测试、运行、维户的各个过程中建立在科学基础上的一套实用方法”。CAHoare
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 方法 概述

链接地址:https://www.31ppt.com/p-5642500.html