- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PM第一章概述.ppt
程序设计方法学 Programming Methodology 鲍玉斌 baoyb@mail.neu.edu.cn 东北大学信息学院计算机软件研究所 教材及参考书 教材: 胡正国等编著,程序设计方法学,国防工业出版社,2002 参考书: 覃征,王志敏等,程序设计方法与优化,西安交大,2004 程序设计实践--规则汇编 设计模式可复用面向对象软件的基础 内容 第一章 绪论 第二章 结构化程序设计 第三章 数理逻辑基础 第四章 程序规范及其正确性证明简介 第五章 最弱前置谓词和程序语言的语义 第六章 程序的正确性证明 第七章 递归程序设计及其正确性证明 第八章 程序变换技术 第九章 面向对象的程序设计 第十章 组件技术概述 第一章 绪论 1.1 程序设计方法学发展历史 1 产生背景 50年代—60年代初,手工艺式的程序设计方法。D.E.Knuth把程序称为艺术品 60年代末—70年代初, 出现软件危机:一方面需要大量的软件系统,如操作系统、DBMS;另一方面,软件研制周期长,可靠性差,维护困难。 编程的重点:希望编写出的程序结构清晰、易阅读、易修改、易验证,即得到好结构的程序 1. 产生背景 1968年,北大西洋公约组织(NATO)在西德召开了第一次软件工程会议,分析了危机的局面,研究了问题的根源,第一次提出了用工程学的办法解决软件研制和生产的问题,本次会议可以算做是软件发展史上的一个重要的里程碑。 1969年,IFIP(国际信息处理协会)成立了“程序设计方法学工作组”,专门研究程序设计方法学,程序设计从手工艺式向工程化的方法迈进。 结构化程序设计的研究 结构化程序设计的研究 1968年,结构化程序设计方法的研究。Dijkstra提出了GOTO有害论,希望通过程序静态结构的良好性保证程序动态运行的正确性。 1969年,Wirth提出采用“自顶向下逐步求精、分而治之”的原则进行大型程序的设计。 其基本思想是:从欲求解的原问题出发,运用科学抽象的方法,把它分解成若干相对独立的小问题,依次细化,直至各个小问题获得解决为止。 “程序正确性证明”的研究 “程序正确性证明”的研究 1967年,Floyd提出用“断言法”证明框图程序的正确性 1969年,Hoare在Floyd的基础上,定义了一个小语言和一个逻辑系统。此逻辑系统含有程序公理和推导规则,目的在于证明程序的部分正确性,这就是著名的Hoare逻辑。他的工作为公理学语义的研究奠定了基础。 “程序正确性证明”的研究(续) 1973年,Hoare和Wirth把PASCAL语言的大部分公理化。 1975年一个基于公理和推导规则的自动验证系统首次出现。 1979年,出现了用公理化思想定义的程序设计语言Euclid。 1976年,Dijkstra提出了最弱前置谓词和谓词转换器的概念,用于进行程序的正确性证明和程序的形式化推导。 1980年,D.Gries综合了以谓词演算为基础的证明系统,称之为“程序设计科学”。首次把程序设计从经验、技术升华为科学。 1974年,人们利用模逻辑验证并行程序的正确性。 关于程序正确性证明的争论 关于程序正确性证明的争论 怀疑和反对派。理由:一,形式证明太复杂,谁能够保证证明本身没有错误呢!其次,程序写好后再证明其正确性,相当于“马后炮”,即错误已经铸成,证明何能补救? 折中的方案:编写程序,边考虑证明。即程序设计与正确性证明同时并行考虑。 构造正确的程序 构造正确的程序 利用Dijkstra的谓词转换器及其演算规则集合,可以推导出正确的程序。 利用程序变化构造正确的程序。它对程序应用一连串的保护正确性的变换规则,最终得到可执行的程序。程序变换是70年代以来,“程序设计方法学”研究的重要方面,是程序设计自动化很有希望的途径之一。递归程序变换是这一时期的最有意义的成果。如Burstall和Darlington的递归程序变换系统等。 逻辑程序设计和函数程序设计代表一种新的研究方向。Prolog是以谓词逻辑的子集(Hoare子句)为基础的一种形式系统。Prolog的执行过程就是执行逻辑上消解算法的过程。 抽象数据类型的研究 抽象数据类型(ADT)的研究。 抽象数据类型是程序设计方法学中一种极为重要的方法。人们把它誉为程序设计方法学发展史上的一个重要的里程碑。 软件技术的发展概述 1 软件技术的发展 计算机科学的本质 软件领域的发展 软件技术发展的五代历程 软件产业的现状与未来 2 面向对象到组件技术 对象技术 组件技术 3 现有组件技术 COM、CORBA 、J2EE 1. 软件技术的发展--计算机科学的本质 计算机的定义 冯-诺伊曼定义:define a computer as a device that accepts data, processe
文档评论(0)