欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    PM08Chap01概述.ppt

    • 资源ID:5345189       资源大小:861.51KB        全文页数:37页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    PM08Chap01概述.ppt

    2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,1,提纲,1.0 程序设计语言1.1 程序设计方法学发展史1.2 软件技术的发展概述1.3 程序设计方法学的定义和研究的内容1.4 与软件工程的关系1.5 程序设计的一般方法,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,2,1.0 程序设计语言,从1952年第一个高级语言Short Code诞生到现在,程序设计语言先后出现了不同类型、不同版本不下数百种语言。,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,3,1.0 程序设计语言,Deterministic vs.Concurrent(确定型和并发型)Imperative vs.Declarative(命令型和声明型),程序的类型,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,4,1.0 程序设计语言,确定型程序,对每个输入要么给出一个答案,要么是一直循环;通常用顺序型程序设计语言编写,并且运行在顺序型计算机上,但是有时也可以并行化。并发型程序可以产生许多不同的答案,或根本没有答案,从作为响应系统的意义上,他不断地与所处的环境进行交互;通常同时运行在多个处理器上。,程序的类型-Deterministic vs.Concurrent,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,5,Imperative programs(命令型程序)are those of most conventional languages;they involve commands changing the state of the machine to perform a task;Declarative programs(说明型)give a mathematical axiomatization(公理)of a problem,as opposed to low-level instructions on how to solve it;they can be based on different logical systems.The deterministic vs.concurrent and the imperative vs.declarative are orthogonal distinctions:all four combinations are possible.,程序的类型-imperative vs.declarative:,1.0 程序设计语言,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,6,Prolog程序,hanoi(N):-move(N,left,centre,right)move(0,_,_,_,):-!.move(N,A,B,C):-M is N-1,move(M,A,C,B),inform(A,B),move(M,C,B,A)inform(X,Y):-write(move,a,disc,from,the,X,pole,to,the,Y,pole),n1.本例中谓词honoi只有1个变元,表示如果有N个圆盘在A柱上,则hanoi将输出N个圆盘由A柱移到B柱的移动轨迹序列;谓词move有4个变元,其中第一个为要移动的盘的个数,第二、三、四变元分别为源柱子、目标柱子、临时存放柱;谓词inform利用write来输出移动的轨迹。,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,7,RoadMap,1.0 程序设计思想与程序设计语言1.1 程序设计方法学发展史1.2 软件技术的发展概述1.3 程序设计方法学的定义和研究的内容1.4 与软件工程的关系1.5 程序设计的一般方法,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,8,1.1 程序设计方法学发展历史,50年代60年代初,手工艺式的程序设计方法。D.E.Knuth把程序称为艺术品60年代末70年代初,出现软件危机:一方面需要大量的软件系统,如OS、DBMS;另一方面,软件研制周期长,可靠性差,维护困难。编程的重点:希望编写出的程序结构清晰、易阅读、易修改、易验证,即得到好结构的程序,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,9,1.1 程序设计方法学发展历史,1968年,北大西洋公约组织(NATO)在西德召开了第一次软件工程会议,分析了危机的局面,研究了问题的根源,第一次提出了用工程学的办法解决软件研制和生产的问题,本次会议可以算做是软件发展史上的一个重要的里程碑。1969年,IFIP(国际信息处理协会)成立了“程序设计方法学工作组”,专门研究程序设计方法学,程序设计从手工艺式向工程化的方法迈进。,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,10,1968年,结构化程序设计方法的研究。Dijkstra提出了GOTO有害论,希望通过程序静态结构的良好性保证程序动态运行的正确性。1969年,Wirth提出采用“自顶向下逐步求精、分而治之”的原则进行大型程序的设计。其基本思想是:从欲求解的原问题出发,运用科学抽象的方法,把它分解成若干相对独立的小问题,依次细化,直至各个小问题获得解决为止。,结构化程序设计的研究,1.1 程序设计方法学发展历史,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,11,“程序正确性证明”的研究,1967年,Floyd提出用“断言法”证明框图程序的正确性1969年,Hoare在Floyd的基础上,定义了一个小语言和一个逻辑系统。此逻辑系统含有程序公理和推导规则,目的在于证明程序的部分正确性,这就是著名的Hoare逻辑。他的工作为公理学语义的研究奠定了基础。,1.1 程序设计方法学发展历史,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,12,“程序正确性证明”的研究(续),1973年,Hoare和Wirth把PASCAL语言的大部分公理化。1974年,人们利用模逻辑验证并行程序的正确性。1975年一个基于公理和推导规则的自动验证系统首次出现。1976年,Dijkstra提出了最弱前置谓词和谓词转换器的概念,用于进行程序的正确性证明和程序的形式化推导。1979年,出现了用公理化思想定义的程序设计语言Euclid。1980年,D.Gries综合了以谓词演算为基础的证明系统,称之为“The Science of Programming”。首次把程序设计从经验、技术升华为科学。,1.1 程序设计方法学发展历史,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,13,关于程序正确性证明的争论,关于程序正确性证明的争论怀疑和反对派。理由:一,形式证明太复杂,谁能够保证证明本身没有错误呢!二,程序写好后再证明其正确性,相当于“马后炮”,即错误已经铸成,证明何能补救?折中的方案:编写程序,边考虑证明。即程序设计与正确性证明同时并行考虑。,1.1 程序设计方法学发展历史,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,14,构造正确的程序,利用Dijkstra的谓词转换器及其演算规则集合,可以推导出正确的程序。利用程序变换构造正确的程序。它对程序应用一连串的保护正确性的变换规则,最终得到可执行的程序。程序变换是70年代以来,“程序设计方法学”研究的重要方面,是程序设计自动化很有希望的途径之一。递归程序变换是这一时期的最有意义的成果。如Burstall和Darlington的递归程序变换系统等。逻辑程序设计和函数程序设计代表一种新的研究方向。Prolog是以谓词逻辑的子集(Hoare子句)为基础的一种形式系统。Prolog的执行过程就是执行逻辑上消解算法的过程。,1.1 程序设计方法学发展历史,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,15,抽象数据类型的研究,抽象数据类型(ADT)的研究。抽象数据类型是程序设计方法学中一种极为重要的方法。人们把它誉为程序设计方法学发展史上的一个重要的里程碑。,1.1 程序设计方法学发展历史,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,16,1.1 程序设计方法学发展历史,面向对象的程序设计OOP面向组件的程序设计COP实现软件二进制的代码复用,实现“软件即插即用”面向方面的程序设计AOPAOP(AspectOrientedProgramming)是OOP的延续,AOP实际是GoF设计模式的延续,该模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。极限编程XP-eXtreme P.XP是一种周密而严谨的软件开发流程。XP强调团队合作。XP的价值观是增强交流、力求简单、寻求反馈以判断好坏和勇于面对现实(勇气)。嵌入式程序设计Embedded P.,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,17,程序设计方法的发展,面向计算机的程序设计机器语言,注重机器,逐一执行面向过程的程序设计结构化程序设计 以数据为中心自顶向下,逐步求精按功能分解,数据与操作是分离的面向对象程序设计 以对象为中心注重对象,抽象成类对象、类、封装、继承、多态组件程序设计 以组件为中心即插即用其它程序设计方法:递归程序设计、嵌入式,综合使用,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,18,与程序设计有关的图灵奖获得者,1972年,Edsgar Wybe Dijkstra,最先察觉“Goto 有害”的计算机科学大师1974年,Donald Ervin Knuth,经典巨著The Art of Programming1978年,Robert W.Floyd,前后断言法的创始人,归纳断言法1980年,C.A.R.Hoare,从QuickSort,CASE到程序设计语言公理化1984年,Niklaus Wirth,PASCAL之父及结构化程序设计的首创者,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,19,RoadMap,1.0 程序设计思想与程序设计语言1.1 程序设计方法学发展史1.2 软件技术的发展概述1.3 程序设计方法学的定义和研究的内容1.4 与软件工程的关系1.5 程序设计的一般方法,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,20,1.2 软件技术的发展概述,软件领域的发展 软件需求的变化软件环境的变化软件开发模式的变化软件技术发展的五代历程 软件产业的现状与未来,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,21,1.软件领域的发展软件需求的变化,计算,实用,管理(MIS),分布式系统,返回,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,22,1.软件领域的发展软件环境的变化,单任务,多任务,文字界面,图形界面,单线程,多线程,平台相关,跨平台,单机(本地),网络(分布式),单一语言,多种语言,Return,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,23,1.软件领域的发展软件开发模式,机器码,高级语言和脚本代码,OS+Compiler+Editor,OS+Compilers+IDEs+Libraries+Wizards+Components+other infrastructures+Experience,返回,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,24,2.软件技术的发展-五代历程,第一代(5060年代),是以Algol、Fortran等编程语言为标志的算法技术 第二代(70年代),是以Pascal、Cobol等编程语言和关系数据库管理系统为标志的结构化软件技术 第三代(80年代)的软件技术是以Smalltalk、C+等为代表的面向对象技术(OO)第四代(90年代)的软件技术是以CORBA等为代表的分布式面向对象技术(DOO)第五代(90年代中期至今)软件技术是以COM、CORBA3.0、EJB和WebService等为代表的软件组件技术,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,25,3.软件产业的现状与未来,数字表明,50的大型软件项目都会中途夭折。大型项目平均都要推迟一年以上的工期,成本要超出计划的一倍,而性能却比预期的要低得多。主要因素如下。(1)新技术的发展太快。(2)业务需求的变化太快。(3)软件开发人员跳槽频繁。虽然软件生产的理论和实践近年来已有巨大进展,各软件企业仍为贯彻软件工程的基本原则而奋斗着。软件开发仍然是手艺活,软件产品依然是工艺品。软件产业还不是一个成熟的产业。,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,26,4.软件产业的现状与未来(续),目前的成熟产业,象计算机硬件产业、汽车制造产业等,存在如下特征。(1)装配化生产并可根据定单制造;(2)存在第三方零配件市场;(3)可通过零配件的更换来方便地对整个产品进行维修;(4)整个产业形成供应链,产品生产的成本相对整个供应链来说只是小头。,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,27,4.软件产业的现状与未来(续),目前的软件组件技术,尚不能使软件的生产达到目前成熟产业的工业化水平。软件组件技术的下一代技术商业组件技术(BusinessComponent),将为软件的工业化生产提供理论与技术基础。还是?,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,28,RoadMap,1.0 程序设计思想与程序设计语言1.1 程序设计方法学发展史1.2 软件技术的发展概述1.3 程序设计方法学的定义和研究的内容1.4 与软件工程的关系1.5 程序设计的一般方法,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,29,1.3 程序设计方法学的定义和研究的内容,1.程序设计方法学的定义程序设计方法学是讨论程序的性质以及程序设计的理论和方法的一门学科,研究和构造程序的过程的学问,研究关于问题的分析,环境的模拟,概念的获取,需求定义的描述,以及把这种描述变换细化和编码成机器可以接受的表示的一般的方法.,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,30,2.研究的内容,结构化程序设计数据抽象与模块化程序设计程序正确性证明程序变换程序的形式说明与推导程序综合与分析技术面向对象的程序设计方法大型程序的开发,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,31,RoadMap,1.0 程序设计思想与程序设计语言1.1 程序设计方法学发展史1.2 软件技术的发展概述1.3 程序设计方法学的定义和研究的内容1.4 与软件工程的关系1.5 程序设计的一般方法,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,32,1.4 与软件工程的关系,研究方法的不同软件工程主要应用工程的方法和技术研究软件开发与维护的方法、工具和管理的一门计算机科学与工程学交叉的学科RUP、Crystal、XP、ASD(适应性软件开发)程序设计方法学主要运用数学方法研究程序的性质以及程序设计的理论和方法的学科正确性、可信性、可移植性、,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,33,1.4与软件工程的关系(续),研究的对象不同软件工程的研究对象是软件系统。目标是降低软件的开发成本,提高软件的质量,提高软件的可维护性,提高软件开发的效率。着重于软件的宏观可用性。程序设计方法学研究对象是程序。目标是保证程序的正确性。着重于程序的微观正确性。软件工程与程序设计方法学的界限越来越模糊程序设计方法学是软件工程的基础。,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,34,RoadMap,1.0 程序设计思想与程序设计语言1.1 程序设计方法学发展史1.2 软件技术的发展概述1.3 程序设计方法学的定义和研究的内容1.4 与软件工程的关系1.5 程序设计的一般方法,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,35,1.5 程序设计的一般方法,程序设计的语言机器语言、汇编语言、Fortran、Cobol、Pascal、C/C、Java三种程序设计结构顺序、分支、循环程序设计的基本方法要素程序分析与综合算法设计与数据结构设计程序设计方法:合理的结构、准确表达与语言逻辑、注意非语法错误引起的不稳定性程序设计风格,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,36,程序设计的一般途径,2007年3月12日,鲍玉斌 计算机软件所 程序设计方法学,37,小结,程序设计的发展史手工工程化科学软件技术的发展需求、环境和模式发生变化程序设计方法学的定义及内容程序设计方法学与软件工程的关系相辅相成,互相促进程序设计的一般方法,

    注意事项

    本文(PM08Chap01概述.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开