版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计方法学ProgrammingMethodology
华东师范大学计算机科学技术系杨宗源12/23/20221华东师大计算机科学技术系程序设计方法学ProgrammingMethodology前言从方法论角度讨论、研究程序设计(软件研发)重点:程序设计的原理、原则与技术目的:提高软件生产率
研究程序的性质以及程序设计的理论和方法的学科。基本内容一般可以包括:12/23/20222华东师大计算机科学技术系前言从方法论角度讨论、研究程序设计(软件研发)12/12/2程序的性质与特征程序的功能描述程序的正确性验证程序的推导与综合程序的结构分析程序语义的描述程序设计的策略与技术程序研制工具、
环境
涉及程序设计理论、规范、研发技术(方法)、支持环境与自动程序设计等。12/23/20223华东师大计算机科学技术系程序的性质与特征12/12/20223华东师大计算机科学技术授课内容第一章综述第二章程序的基本结构§2.1Prime程序
§2.2复合程序
§2.3结构定理§2.4递归结构定理第三章程序的数据结构§3.1类型与类型系统程序§3.2程序设计语言中的数据类型§3.3数据抽象与抽象数据类型(ADT)§3.4面向对象方法§3.5面向方面编程12/23/20224华东师大计算机科学技术系授课内容第一章综述12/12/20224华东师大计算机科第四章程序的正确性证明§4.1程序规范与程序的正确性定义§4.2部分正确性证明方法§4.3完全正确性证明方法 §4.4最弱前置谓词(WP)
第五章程序的形式推导方法 §5.1面向目标的程序设计方法
§5.2不变式推导方法
第六章程序设计的形式化方法 §6.1概述 §6.2基于代数方法的规范语言——OBJ §6.3基于模型方法的规范语言——VDM12/23/20225华东师大计算机科学技术系第四章程序的正确性证明12/12/20225华东师大计算第七章并行程序设计方法 §7.1基本概念
§7.2并行系统
§7.3并行程序设计语言
§7.4通讯顺序进程(CSP)12/23/20226华东师大计算机科学技术系第七章并行程序设计方法12/12/20226华东师大计算机基本要求
了解程序设计方法学的地位和重要性;掌握程序控制结构构成的基本原理、基本成份;明确数据类型、数据抽象、抽象数据类型对程序设计及程序设计语言的影响及重要性并掌握相关技术;掌握程序正确性证明的基本方法,具有构造程序规范的能力;理解形式化软件开发的基本原理和典型方法;理解并行程序设计基本概念,具有并行程序设计的初步能力.12/23/20227华东师大计算机科学技术系基本要求了解程序设计方法学的地位和重要性;12/12/20参考书
《程序设计方法学基础》陈火旺湖南科学技术出版社《程序设计方法学》仲萃豪吉林大学出版社《程序设计方法学教程》张幸儿南京大学出版社《现代软件工程》周之英科学出版社《形式语义学基础与形式说明》屈延文科学出版社《TheScienceofProgramming》Gries,D.《CommunicatingSequentialProcessos》Hoare,C.A.R《ProgrammingfromSpecification》CarrollMorgan《程序设计方法学》胡正国国防工业出版社《对象技术导论》冯玉琳科学出版社12/23/20228华东师大计算机科学技术系参考书《程序设计方法学基础》陈火旺湖南科学技术出版社第一章综述
一、发展回顾四、五十年代 机器指令、汇编指令、FORTRAN、LISP、ALGOL语言的相继出现,主要用于科学计算。 成就:冯.诺依曼 提出存储程序 图灵提出自动装置的计算模型 图灵抽象机 奠定了现代计算机的理论基础。 评价标准: 指令条数少 存储单元省 执行速度快12/23/20229华东师大计算机科学技术系第一章综述一、发展回顾12/12/20229华东师大计算六,七十年代 高级语言相继出现,编译技术(语言处理程序)成熟,完善,Compiler、OS、DBMS三大系统软件日趋成熟,解决问题的规模,复杂性大为增加。软件危机出现
缺乏宏观上研究程序设计方法的重要性的认识。“程序设计比人们一般想象的远为复杂得多,其复杂程度超出了人类本身的智力、能力范围。”
成就:
数据结构和算法理论
程序设计=数据结构+算法(Kunth 1971)12/23/202210华东师大计算机科学技术系六,七十年代 12/12/202210华东师大计算机科学技术b)形式化方法运用推理、逻辑断言等对程序的正确性进行验证Floyd断言法(1967) 通过断言(谓词公式)证明框图程序的正确性Hoare公理化法(1969) 著名的Hoare逻辑{P}S{Q}。 通过定义一个逻辑系统(含有程序公理及推导规则)证明程序部分/完全正确性E.D.Dijkstra (1976)最弱前置谓词{WP(S,Q)}S{Q}、谓词转换
12/23/202211华东师大计算机科学技术系b)形式化方法12/12/202211华东师大计算机科学技Gries 综合了以谓词演算为基础的证明系统,提出了“程序设计科学”,将程序设计从经验、技术、技巧升华为科学。对并行程序
提出了时态逻辑、模态逻辑,刻画安全性、事件性、优先性、并发性等程序性质。12/23/202212华东师大计算机科学技术系Gries 12/12/202212华东师大计算机科c) 软件工程化方法——软件开发模型1968年 北大西洋公约组织(NATO)召开软件工程会议,首次提出用工程化方法解决软件危机。Dijkstra(1969)提出”Goto语句”有害论。引起了讨论,导致形成“结构程序设计”的概念、原则、方法。 Pascal语言诞生(Wirth1971) i)
强调程序结构和风格的良好性 ii)
以良好静态结构, 保证程序动态执行的正确性12/23/202213华东师大计算机科学技术系c) 软件工程化方法——软件开发模型12/12/20221Wirth(1971) 提出小规模程序设计和大规模程序设计本质的不同,提出了“自顶向下、逐步细化”,“分而治之、面向功能、功能分解”的思想。Parnas(1971) 提出“信息隐藏”,模块化。Modula-2(1979)、C(1972)、Ada(1979)UnixOS、SA、SD、JSP等等12/23/202214华东师大计算机科学技术系Wirth(1971)12/12/202214华东师大计算机八、九十年代编程不再是主流,构造系统的方法(即系统的结构、接口、集成)。网络、分布式共享信息,协同工作。方法论与工程化a)
结构化程序设计方法 80’s进入全盛时期,比较完备,称为传统方法。关系数据库管理系统(RDBMS)、SQL语言趋于成熟。传统的软件工程方法: 功能分解法、数据流方法 JSD、信息造型法(E-R模型)
12/23/202215华东师大计算机科学技术系八、九十年代12/12/202215华东师大计算机科学技术
面向对象程序设计方法(O-O方法) 1)
O-O是程序设计新的规范 从面向过程 面向对象 一系列概念(如:继承、多态、封装……) C/C++、Eiffel、Java、C#(.NET) 2)
O-O是信息系统设计的方法论 面向对象分析、设计(OOAD) Coad/Yourdon 面向对象的软件工程(OOSE), 用例(UseCase)建模 对象建模技术(OMT) G.BOOCH方法12/23/202216华东师大计算机科学技术系
面向对象程序设计方法(O-O方法)12/12/ 责任驱动设计(RDD) CRC卡(类-责任-合作) VMT(可视化建模技术)UML(统一建模语言UnifiedModuleLanguage)RUP(RationalUnifiedProcess)MDA(模型驱动体系结构ModelDivenArchitechture) UML、XML、CORBA、Java3)O-O是正在兴起的新技术 支持各类应用、不同种类的开发,重要的突破:软件的复用(Reuse)、应用框架(ApplicationFrameWork)、软件架构(SoftwareArchitecture)
12/23/202217华东师大计算机科学技术系 责任驱动设计(RDD)12/12/202217华东师大计c)面向方面程序设计(Aspect-OrientedProgramming),简称AOP。是为解决OO方法中的问题而出现的。该技术被评为21世纪对经济和人类生活工作方式最有影响力十种技术之一。AOP的核心思想是将软件系统中的横切关注点和核心关注点分别模块化,各自处理,再通过编织器进行无缝的编织实现,以解决代码纠缠等问题,降低耦合度,提高可维护、可重用、可扩展性。目前支持AOP的语言有AspectJ、AspectC、AspectC++、AspectC#、AspectS、AspectR(Ruby)及SpringAOP、JBossAop等等。12/23/202218华东师大计算机科学技术系c)面向方面程序设计(Aspect-OrientedProd)工程化的其他方法i.
计算机辅助软件工程(CASE) Unix工具箱、Ada的开发环境、程序综合器、软件工具 ii.
基于构件(Component)的软件工程(CBSE)COM/COM+、CORBA、EJB 设计模式(Gamma)——“其重要性可以与70年代从编程中分离数据结构和算法作为程序设计的规律性成果相媲美”。 12/23/202219华东师大计算机科学技术系d)工程化的其他方法12/12/202219华东师大计
净室软件工程(CleanRoomSE) 集成:建模技术、形式化方法(程序验证等)、 统计质量控制等方法、技术。目的:生成极高质量的软件。软件过程 CMM体系、CMMi轻载软件工程 (Agile开发方法、敏捷软件开发方法) eXtremeProgramming(极值编程) SCRUM开发方法 FDD(特征驱动开发方法) DSDM(动态系统开发方法)12/23/202220华东师大计算机科学技术系净室软件工程(CleanRoomSE)12/12/20d)
形式化的方法计算机语言的研究可以分为三部分:语法学(Syntax):研究程序设计语言的形态结构语义学(Semantics):研究程序设计语言和它所指的对象间的关系语用学(Pragmatics):研究语言和它使用间的关系形式语义学四个研究领域、四种程序计算模型 图灵机模型
谓词演算模型
代数模型
递归函数论模型四种语义学指称语义学 代数语义学公理语义学 操作语义学12/23/202221华东师大计算机科学技术系d)
形式化的方法12/12/202221华东师大计算机i)
指称语义 采用形式系统方法,用相应的数学对象对一个既定形式语言的语义进行注释的学科。其基本思想是使语言的每一成分对应于一个数学对象,该对象就称为该语言成分的指称,程序视为输入域到输出域的映射。即存在两个域语法域:定义一个形式语言系统
数学域:已知语义的形式系统方法:用一个语义解释函数,
以语义域中的对象值来解释语法域中定义的语言对象的语义。基础:论域理论、λ演算、不动点理论成果:VDM(TheViennaDevelopmentMethod)12/23/202222华东师大计算机科学技术系i)
指称语义12/12/202222华东师大计算机科学技术代数语义 用代数方法对形式语言系统进行语义注释的学科基本思想是把描述语义的逻辑体系和满足这个逻辑系统的各种模型统一在一起,并把模型的集合视为是一代数机构,研究这些模型间的关系。基础:ADT(抽象数据类型)、泛代数、范畴论方法:寻找合适的模型代数,
定义一个抽象数据类型(ADT)的不同语义,
采用代数方法论证规范的正确性和实现的正确性。成果:OBJ语言(代数形式化规范语言)12/23/202223华东师大计算机科学技术系代数语义12/12/202223华东师大计算机科学技术系操作语义 用机器模型语言来解释语言的语义,基本思想是建立一个抽象机器以模拟程序在执行过程中如何进行数据处理。 如:属性文法除定义“做什么”(What), 主要定义“如何做”(How)iv)
公理语义 把程序设计语言视为一个数据对象, 建立它的公理系统,从而使程序设计语言有了坚实的基础。
12/23/202224华东师大计算机科学技术系操作语义12/12/202224华东师大计算机科学技术系这四类方法都可以形成规范语言(SpecificationLanguage),形成软件的自动化或半自动化技术。由形成的软件规范(由规范语言描述) 采用 演绎综合 程序转换 归纳综合 过程实现 机器学习等不同途径 实现:从形式规范到程序、从程序到程序的推导
12/23/202225华东师大计算机科学技术系这四类方法都可以形成规范语言(SpecificationL二、展望今后的发展?软件开发对象的变化
数据处理 数据 无关信息技术 信息 与一个语境(context)相关联12/23/202226华东师大计算机科学技术系二、展望今后的发展?12/12/202226华东师大计算机科知识
知识:
与多个语境相关联
智慧 智慧:基于不同来源的已有知识 来创造的一般性原理12/23/202227华东师大计算机科学技术系12/12/202227华东师大计算机科学技术系第二章程序的控制结构
§2.1Prime程序一.框图程序的基本结点函数结点:一个入口,一个出口
与赋值语句相对应,改变了程序中变量的值。12/23/202228华东师大计算机科学技术系第二章程序的控制结构§2.1Prime程序12/12/控制结点(谓词):一个入口,两个出口 P是谓词,按P的值为T或F决定控制流程,不改变程序中变量的值
12/23/202229华东师大计算机科学技术系控制结点(谓词):一个入口,两个出口12/12/202229聚合结点:二个入口,一个出口
不执行任何运算
12/23/202230华东师大计算机科学技术系聚合结点:二个入口,一个出口12/12/202230华东师大在一定条件下,一个程序可由上述结点组合而成: 程序 框图 指令 结点 控制流
有向结点网在框图中将结点名去掉,则该框图可视为一种结构。称为框图结构。例1:框图程序:12/23/202231华东师大计算机科学技术系在一定条件下,一个程序可由上述结点组合而成:12/12/20pf1qf212/23/202232华东师大计算机科学技术系pf1qf212/12/202232华东师大计算机科学技二、Proper程序
一个框图程序,若满足:i)一个入口,一个出口(多个出口可由聚合 结点汇聚成一个)。如:ii)每个结点总有一条从入口到出口的路径通 过它。称其为Proper程序。例1是Proper程序。例2:非Proper程序的例子:12/23/202233华东师大计算机科学技术系二、Proper程序一个框图程序,若满足:12/12/212/23/202234华东师大计算机科学技术系12/12/202234华东师大计算机科学技术系定理:一个Proper程序,总可以归结成一个函 数结点。证:归结方式:找出二个(或二个以上的)结点最小的Proper程序用一个函数结点替代它直至只有一个结点为止。例3:……12/23/202235华东师大计算机科学技术系定理:一个Proper程序,总可以归结成一个函 数结三、Prime程序
Prime程序(又称初等程序、基本程序)
是Proper程序且其中不包括由二个以上结点组成的Proper子程序。即最小的Proper程序。例4:Prime程序有: 非Prime程序有:12/23/202236华东师大计算机科学技术系三、Prime程序Prime程序(又称初等程序、基本程序Prime程序: 非Prime程序:12/23/202237华东师大计算机科学技术系Prime程序: 非Prime程序:12/12/2例5Prime程序的几种重要形式:函数(func)序列(;)If-thenWhile-doppffgff12/23/202238华东师大计算机科学技术系例5Prime程序的几种重要形式:ppffgff12/Repeat-untilIf-then-elseDo-whilepqf
fg
f
g12/23/202239华东师大计算机科学技术系pqffgfg12/12/202239华东师大计算§2.2复合程序
一、程序的等价Proper程序的执行图(E-chart)描述Proper程序所定义的执行路径。E-chart的构造法:(从Proper程序到E-chart)a)对聚合结点编号。b)以与Proper程序的入口线相连的结点为E-chart的根,并沿各路径至出口线。12/23/202240华东师大计算机科学技术系§2.2复合程序一、程序的等价12/12/202240c)对E-chart中每条路径,若当前路径的终止结点是未曾出现在该路径的结点,则把Proper程序中与此结点相连的所有出口线及其结点作为它的后继。d)执行路径终止在程序的出口或回溯路径中曾出现的结点。
显然,过程终止(结点有限),得到是一棵有限树。12/23/202241华东师大计算机科学技术系c)对E-chart中每条路径,若当前路径的终止结点是未曾出例6:例3中的框图程序是Proper程序,它的 E-chart为:……
称①②为repeat型结点,③④可以合并。Proper程序中无循环chart图中无repeat型结点。程序的执行树(E-tree)
是一棵树,描述了程序的所有可能的执行路径。构造方法: 在E-chart中将所有的Repeat型结点用相应的子树替代,抹去所有聚合结点。
12/23/202242华东师大计算机科学技术系例6:例3中的框图程序是Proper程序,它的12/12/2程序的等价若两个程序有相同的E-tree,则称它们执行等价。若两个程序有相同的功能,则称它们功能等价。例7:程序与程序执行等价pfffp12/23/202243华东师大计算机科学技术系程序的等价pfffp12/12/202243华东师大计算机科再如:程序程序不是执行等价,但功能等价gpqgqp12/23/202244华东师大计算机科学技术系再如:程序gpqgqp12/12/202结论:执行等价=>功能等价, 但功能等价≠>执行等价。例8:do-while是Prime程序,但其执行等价的程序不是Prime程序ffpg12/23/202245华东师大计算机科学技术系结论:执行等价=>功能等价,ffpg12/12/2二、复合程序一个Prime程序的函数结点用另一个Prime来替代,产生的一个Proper程序称为复合程序。例9:程序是由Prime程序if-then和repeat-until复合而成的。pfq12/23/202246华东师大计算机科学技术系二、复合程序一个Prime程序的函数结点用另一个Prime来复合程序:一组固定的Prime程序(称为基础系)经过有限次的替代运算而得到的Proper程序。将基础系P1,P2…Pn所得到的复合程序全体记为{P1,P2…Pn}。复合程序集的性质、大小由基础系决定。例10:由{;,If-then}得到的程序无循环。{;,Repeat}{;,If-then,While}{;,If-then-else,While}≡{;,If-then-else,Repeat}{;,If-then}与{;,Repeat}无法比较定义:由一组固定的基础系构成的复合程序,称为结构化程序。
12/23/202247华东师大计算机科学技术系复合程序:一组固定的Prime程序(称为基础系)经过有限次的§2.3结构定理证明了程序的基本结构是三种prime程序。例:只用加法操作计算两个正整数的乘积,即: {x>0∧y>0}S{z=x*y} z:=0; u:=x; whileu≠0do begin z:=z+y; u:=u-1; end12/23/202248华东师大计算机科学技术系§2.3结构定理证明了程序的基本结构是三种prime程序如还允许加倍、减半等操作,程序为: z:=0;u:=0;v:=0; whileu≠0do begin ifodd(u)thenz:=z+v; u:=udiv2; v:=vmul2;end12/23/202249华东师大计算机科学技术系如还允许加倍、减半等操作,程序为:12/12/202249华结构定理:任何一个Proper程序功能等价于基础系{;,if-then-else,while}所复合的程序。证:考虑任意的Proper程序P,设P有n个结点(函数、谓词)i)对程序中的谓词、函数结点进行编号(1…n)ii)引入一个计数器Liii)在编号的基础上为各输入/出线进行编号编号规则:对结点i:输入线编号为i,输出线为该结点后继结点的编号;出口线为0。12/23/202250华东师大计算机科学技术系结构定理:任何一个Proper程序功能等价于基础系{;,if注:通过聚合结点至出口线的线编号为0。iv)对每个结点i构造新结点gi的方法是:
12/23/202251华东师大计算机科学技术系注:通过聚合结点至出口线的线编号为0。V)将P改造成测试L的程序F: ……12/23/202252华东师大计算机科学技术系12/12/202252华东师大计算机科学技术系程序F:L=1,whileL>0doifL=1theng1;elseifL=2theng2; … elseifL=n thengn; elseI;
∴F{;,while,if-then-else} F与P等价。例11:……12/23/202253华东师大计算机科学技术系程序F:L=1,whileL>0do12/12/202结构化定理的意义任一复杂的控制结构可以用三种最基本的结构来表示。揭露了Proper程序的构造本质。可以从二方面来考察程序: 函数结点程序段 写的过程(逐步细化) 程序段 函数结点 读的过程(抽象)给出了如何将一个非结构化的程序转换为结构化程序的方法。12/23/202254华东师大计算机科学技术系结构化定理的意义任一复杂的控制结构可以用三种最基本的结构来表§2.4递归结构程序
问题: 结构定理所给出的方法没有考虑程序的清晰性和有效性,有必要进行改进,可通过消除一些多余的计数器L的设置和测试。基本思想:对某些j>0,若gj中不出现L:=j的赋值,可以用程序gj来替代所有出现在gi(i≠j)中的赋值L:=j。如此替代后,由于j不再赋值给L,可将L=j从if-then-else结构中去掉,则语句序列为g1’,…gj-1’,gj+1’…gn’。这种替代可继续,直至出现如下情形终止。i)除L:=0外所有L赋值均被消除。ii)每个余下的gi中都含有L:=i的赋值12/23/202255华东师大计算机科学技术系§2.4递归结构程序问题:12/12/202255华东师结论:当程序无循环时,程序中最后只出现L:=0,所以L可消除,当程序有循环时L不可消除。例12:对例11的改造……例13:……12/23/202256华东师大计算机科学技术系结论:当程序无循环时,程序中最后只出现L:=0,所以L可消除程序设计方法学ProgrammingMethodology
华东师范大学计算机科学技术系杨宗源12/23/202257华东师大计算机科学技术系程序设计方法学ProgrammingMethodology前言从方法论角度讨论、研究程序设计(软件研发)重点:程序设计的原理、原则与技术目的:提高软件生产率
研究程序的性质以及程序设计的理论和方法的学科。基本内容一般可以包括:12/23/202258华东师大计算机科学技术系前言从方法论角度讨论、研究程序设计(软件研发)12/12/2程序的性质与特征程序的功能描述程序的正确性验证程序的推导与综合程序的结构分析程序语义的描述程序设计的策略与技术程序研制工具、
环境
涉及程序设计理论、规范、研发技术(方法)、支持环境与自动程序设计等。12/23/202259华东师大计算机科学技术系程序的性质与特征12/12/20223华东师大计算机科学技术授课内容第一章综述第二章程序的基本结构§2.1Prime程序
§2.2复合程序
§2.3结构定理§2.4递归结构定理第三章程序的数据结构§3.1类型与类型系统程序§3.2程序设计语言中的数据类型§3.3数据抽象与抽象数据类型(ADT)§3.4面向对象方法§3.5面向方面编程12/23/202260华东师大计算机科学技术系授课内容第一章综述12/12/20224华东师大计算机科第四章程序的正确性证明§4.1程序规范与程序的正确性定义§4.2部分正确性证明方法§4.3完全正确性证明方法 §4.4最弱前置谓词(WP)
第五章程序的形式推导方法 §5.1面向目标的程序设计方法
§5.2不变式推导方法
第六章程序设计的形式化方法 §6.1概述 §6.2基于代数方法的规范语言——OBJ §6.3基于模型方法的规范语言——VDM12/23/202261华东师大计算机科学技术系第四章程序的正确性证明12/12/20225华东师大计算第七章并行程序设计方法 §7.1基本概念
§7.2并行系统
§7.3并行程序设计语言
§7.4通讯顺序进程(CSP)12/23/202262华东师大计算机科学技术系第七章并行程序设计方法12/12/20226华东师大计算机基本要求
了解程序设计方法学的地位和重要性;掌握程序控制结构构成的基本原理、基本成份;明确数据类型、数据抽象、抽象数据类型对程序设计及程序设计语言的影响及重要性并掌握相关技术;掌握程序正确性证明的基本方法,具有构造程序规范的能力;理解形式化软件开发的基本原理和典型方法;理解并行程序设计基本概念,具有并行程序设计的初步能力.12/23/202263华东师大计算机科学技术系基本要求了解程序设计方法学的地位和重要性;12/12/20参考书
《程序设计方法学基础》陈火旺湖南科学技术出版社《程序设计方法学》仲萃豪吉林大学出版社《程序设计方法学教程》张幸儿南京大学出版社《现代软件工程》周之英科学出版社《形式语义学基础与形式说明》屈延文科学出版社《TheScienceofProgramming》Gries,D.《CommunicatingSequentialProcessos》Hoare,C.A.R《ProgrammingfromSpecification》CarrollMorgan《程序设计方法学》胡正国国防工业出版社《对象技术导论》冯玉琳科学出版社12/23/202264华东师大计算机科学技术系参考书《程序设计方法学基础》陈火旺湖南科学技术出版社第一章综述
一、发展回顾四、五十年代 机器指令、汇编指令、FORTRAN、LISP、ALGOL语言的相继出现,主要用于科学计算。 成就:冯.诺依曼 提出存储程序 图灵提出自动装置的计算模型 图灵抽象机 奠定了现代计算机的理论基础。 评价标准: 指令条数少 存储单元省 执行速度快12/23/202265华东师大计算机科学技术系第一章综述一、发展回顾12/12/20229华东师大计算六,七十年代 高级语言相继出现,编译技术(语言处理程序)成熟,完善,Compiler、OS、DBMS三大系统软件日趋成熟,解决问题的规模,复杂性大为增加。软件危机出现
缺乏宏观上研究程序设计方法的重要性的认识。“程序设计比人们一般想象的远为复杂得多,其复杂程度超出了人类本身的智力、能力范围。”
成就:
数据结构和算法理论
程序设计=数据结构+算法(Kunth 1971)12/23/202266华东师大计算机科学技术系六,七十年代 12/12/202210华东师大计算机科学技术b)形式化方法运用推理、逻辑断言等对程序的正确性进行验证Floyd断言法(1967) 通过断言(谓词公式)证明框图程序的正确性Hoare公理化法(1969) 著名的Hoare逻辑{P}S{Q}。 通过定义一个逻辑系统(含有程序公理及推导规则)证明程序部分/完全正确性E.D.Dijkstra (1976)最弱前置谓词{WP(S,Q)}S{Q}、谓词转换
12/23/202267华东师大计算机科学技术系b)形式化方法12/12/202211华东师大计算机科学技Gries 综合了以谓词演算为基础的证明系统,提出了“程序设计科学”,将程序设计从经验、技术、技巧升华为科学。对并行程序
提出了时态逻辑、模态逻辑,刻画安全性、事件性、优先性、并发性等程序性质。12/23/202268华东师大计算机科学技术系Gries 12/12/202212华东师大计算机科c) 软件工程化方法——软件开发模型1968年 北大西洋公约组织(NATO)召开软件工程会议,首次提出用工程化方法解决软件危机。Dijkstra(1969)提出”Goto语句”有害论。引起了讨论,导致形成“结构程序设计”的概念、原则、方法。 Pascal语言诞生(Wirth1971) i)
强调程序结构和风格的良好性 ii)
以良好静态结构, 保证程序动态执行的正确性12/23/202269华东师大计算机科学技术系c) 软件工程化方法——软件开发模型12/12/20221Wirth(1971) 提出小规模程序设计和大规模程序设计本质的不同,提出了“自顶向下、逐步细化”,“分而治之、面向功能、功能分解”的思想。Parnas(1971) 提出“信息隐藏”,模块化。Modula-2(1979)、C(1972)、Ada(1979)UnixOS、SA、SD、JSP等等12/23/202270华东师大计算机科学技术系Wirth(1971)12/12/202214华东师大计算机八、九十年代编程不再是主流,构造系统的方法(即系统的结构、接口、集成)。网络、分布式共享信息,协同工作。方法论与工程化a)
结构化程序设计方法 80’s进入全盛时期,比较完备,称为传统方法。关系数据库管理系统(RDBMS)、SQL语言趋于成熟。传统的软件工程方法: 功能分解法、数据流方法 JSD、信息造型法(E-R模型)
12/23/202271华东师大计算机科学技术系八、九十年代12/12/202215华东师大计算机科学技术
面向对象程序设计方法(O-O方法) 1)
O-O是程序设计新的规范 从面向过程 面向对象 一系列概念(如:继承、多态、封装……) C/C++、Eiffel、Java、C#(.NET) 2)
O-O是信息系统设计的方法论 面向对象分析、设计(OOAD) Coad/Yourdon 面向对象的软件工程(OOSE), 用例(UseCase)建模 对象建模技术(OMT) G.BOOCH方法12/23/202272华东师大计算机科学技术系
面向对象程序设计方法(O-O方法)12/12/ 责任驱动设计(RDD) CRC卡(类-责任-合作) VMT(可视化建模技术)UML(统一建模语言UnifiedModuleLanguage)RUP(RationalUnifiedProcess)MDA(模型驱动体系结构ModelDivenArchitechture) UML、XML、CORBA、Java3)O-O是正在兴起的新技术 支持各类应用、不同种类的开发,重要的突破:软件的复用(Reuse)、应用框架(ApplicationFrameWork)、软件架构(SoftwareArchitecture)
12/23/202273华东师大计算机科学技术系 责任驱动设计(RDD)12/12/202217华东师大计c)面向方面程序设计(Aspect-OrientedProgramming),简称AOP。是为解决OO方法中的问题而出现的。该技术被评为21世纪对经济和人类生活工作方式最有影响力十种技术之一。AOP的核心思想是将软件系统中的横切关注点和核心关注点分别模块化,各自处理,再通过编织器进行无缝的编织实现,以解决代码纠缠等问题,降低耦合度,提高可维护、可重用、可扩展性。目前支持AOP的语言有AspectJ、AspectC、AspectC++、AspectC#、AspectS、AspectR(Ruby)及SpringAOP、JBossAop等等。12/23/202274华东师大计算机科学技术系c)面向方面程序设计(Aspect-OrientedProd)工程化的其他方法i.
计算机辅助软件工程(CASE) Unix工具箱、Ada的开发环境、程序综合器、软件工具 ii.
基于构件(Component)的软件工程(CBSE)COM/COM+、CORBA、EJB 设计模式(Gamma)——“其重要性可以与70年代从编程中分离数据结构和算法作为程序设计的规律性成果相媲美”。 12/23/202275华东师大计算机科学技术系d)工程化的其他方法12/12/202219华东师大计
净室软件工程(CleanRoomSE) 集成:建模技术、形式化方法(程序验证等)、 统计质量控制等方法、技术。目的:生成极高质量的软件。软件过程 CMM体系、CMMi轻载软件工程 (Agile开发方法、敏捷软件开发方法) eXtremeProgramming(极值编程) SCRUM开发方法 FDD(特征驱动开发方法) DSDM(动态系统开发方法)12/23/202276华东师大计算机科学技术系净室软件工程(CleanRoomSE)12/12/20d)
形式化的方法计算机语言的研究可以分为三部分:语法学(Syntax):研究程序设计语言的形态结构语义学(Semantics):研究程序设计语言和它所指的对象间的关系语用学(Pragmatics):研究语言和它使用间的关系形式语义学四个研究领域、四种程序计算模型 图灵机模型
谓词演算模型
代数模型
递归函数论模型四种语义学指称语义学 代数语义学公理语义学 操作语义学12/23/202277华东师大计算机科学技术系d)
形式化的方法12/12/202221华东师大计算机i)
指称语义 采用形式系统方法,用相应的数学对象对一个既定形式语言的语义进行注释的学科。其基本思想是使语言的每一成分对应于一个数学对象,该对象就称为该语言成分的指称,程序视为输入域到输出域的映射。即存在两个域语法域:定义一个形式语言系统
数学域:已知语义的形式系统方法:用一个语义解释函数,
以语义域中的对象值来解释语法域中定义的语言对象的语义。基础:论域理论、λ演算、不动点理论成果:VDM(TheViennaDevelopmentMethod)12/23/202278华东师大计算机科学技术系i)
指称语义12/12/202222华东师大计算机科学技术代数语义 用代数方法对形式语言系统进行语义注释的学科基本思想是把描述语义的逻辑体系和满足这个逻辑系统的各种模型统一在一起,并把模型的集合视为是一代数机构,研究这些模型间的关系。基础:ADT(抽象数据类型)、泛代数、范畴论方法:寻找合适的模型代数,
定义一个抽象数据类型(ADT)的不同语义,
采用代数方法论证规范的正确性和实现的正确性。成果:OBJ语言(代数形式化规范语言)12/23/202279华东师大计算机科学技术系代数语义12/12/202223华东师大计算机科学技术系操作语义 用机器模型语言来解释语言的语义,基本思想是建立一个抽象机器以模拟程序在执行过程中如何进行数据处理。 如:属性文法除定义“做什么”(What), 主要定义“如何做”(How)iv)
公理语义 把程序设计语言视为一个数据对象, 建立它的公理系统,从而使程序设计语言有了坚实的基础。
12/23/202280华东师大计算机科学技术系操作语义12/12/202224华东师大计算机科学技术系这四类方法都可以形成规范语言(SpecificationLanguage),形成软件的自动化或半自动化技术。由形成的软件规范(由规范语言描述) 采用 演绎综合 程序转换 归纳综合 过程实现 机器学习等不同途径 实现:从形式规范到程序、从程序到程序的推导
12/23/202281华东师大计算机科学技术系这四类方法都可以形成规范语言(SpecificationL二、展望今后的发展?软件开发对象的变化
数据处理 数据 无关信息技术 信息 与一个语境(context)相关联12/23/202282华东师大计算机科学技术系二、展望今后的发展?12/12/202226华东师大计算机科知识
知识:
与多个语境相关联
智慧 智慧:基于不同来源的已有知识 来创造的一般性原理12/23/202283华东师大计算机科学技术系12/12/202227华东师大计算机科学技术系第二章程序的控制结构
§2.1Prime程序一.框图程序的基本结点函数结点:一个入口,一个出口
与赋值语句相对应,改变了程序中变量的值。12/23/202284华东师大计算机科学技术系第二章程序的控制结构§2.1Prime程序12/12/控制结点(谓词):一个入口,两个出口 P是谓词,按P的值为T或F决定控制流程,不改变程序中变量的值
12/23/202285华东师大计算机科学技术系控制结点(谓词):一个入口,两个出口12/12/202229聚合结点:二个入口,一个出口
不执行任何运算
12/23/202286华东师大计算机科学技术系聚合结点:二个入口,一个出口12/12/202230华东师大在一定条件下,一个程序可由上述结点组合而成: 程序 框图 指令 结点 控制流
有向结点网在框图中将结点名去掉,则该框图可视为一种结构。称为框图结构。例1:框图程序:12/23/202287华东师大计算机科学技术系在一定条件下,一个程序可由上述结点组合而成:12/12/20pf1qf212/23/202288华东师大计算机科学技术系pf1qf212/12/202232华东师大计算机科学技二、Proper程序
一个框图程序,若满足:i)一个入口,一个出口(多个出口可由聚合 结点汇聚成一个)。如:ii)每个结点总有一条从入口到出口的路径通 过它。称其为Proper程序。例1是Proper程序。例2:非Proper程序的例子:12/23/202289华东师大计算机科学技术系二、Proper程序一个框图程序,若满足:12/12/212/23/202290华东师大计算机科学技术系12/12/202234华东师大计算机科学技术系定理:一个Proper程序,总可以归结成一个函 数结点。证:归结方式:找出二个(或二个以上的)结点最小的Proper程序用一个函数结点替代它直至只有一个结点为止。例3:……12/23/202291华东师大计算机科学技术系定理:一个Proper程序,总可以归结成一个函 数结三、Prime程序
Prime程序(又称初等程序、基本程序)
是Proper程序且其中不包括由二个以上结点组成的Proper子程序。即最小的Proper程序。例4:Prime程序有: 非Prime程序有:12/23/202292华东师大计算机科学技术系三、Prime程序Prime程序(又称初等程序、基本程序Prime程序: 非Prime程序:12/23/202293华东师大计算机科学技术系Prime程序: 非Prime程序:12/12/2例5Prime程序的几种重要形式:函数(func)序列(;)If-thenWhile-doppffgff12/23/202294华东师大计算机科学技术系例5Prime程序的几种重要形式:ppffgff12/Repeat-untilIf-then-elseDo-whilepqf
fg
f
g12/23/202295华东师大计算机科学技术系pqffgfg12/12/202239华东师大计算§2.2复合程序
一、程序的等价Proper程序的执行图(E-chart)描述Proper程序所定义的执行路径。E-chart的构造法:(从Proper程序到E-chart)a)对聚合结点编号。b)以与Proper程序的入口线相连的结点为E-chart的根,并沿各路径至出口线。12/23/202296华东师大计算机科学技术系§2.2复合程序一、程序的等价12/12/202240c)对E-chart中每条路径,若当前路径的终止结点是未曾出现在该路径的结点,则把Proper程序中与此结点相连的所有出口线及其结点作为它的后继。d)执行路径终止在程序的出口或回溯路径中曾出现的结点。
显然,过程终止(结点有限),得到是一棵有限树。12/23/202297华东师大计算机科学技术系c)对E-chart中每条路径,若当前路径的终止结点是未曾出例6:例3中的框图程序是Proper程序,它的 E-chart为:……
称①②为repeat型结点,③④可以合并。Proper程序中无循环chart图中无repeat型结点。程序的执行树(E-tree)
是一棵树,描述了程序的所有可能的执行路径。构造方法: 在E-chart中将所有的Repeat型结点用相应的子树替代,抹去所有聚合结点。
12/23/202298华东师大计算机科学技术系例6:例3中的框图程序是Proper程序,它的12/12/2程序的等价若两个程序有相同的E-tree,则称它们执行等价。若两个程序有相同的功能,则称它们功能等价。例7:程序与程序执行等价pfffp12/23/202299华东师大计算机科学技术系程序的等价pfffp12/12/202243华东师大计算机科再如:程序程序不是执行等价,但功能等价gpqgqp12/23/2022100华东师大计算机科学技术系再如:程序gpqgqp12/12/202结论:执行等价=>功能等价, 但功能等价≠>执行等价。例8:do-while是Prime程序,但其执行等价的程序不是Prime程序ffpg12/23/2022101华东师大计算机科学技术系结论:执行等价=>功能等价,ffpg12/12/2二、复合程序一个Prime程序的函数结点用另一个Prime来替代,产生的一个Pro
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 高中信息技术数据与计算之算法的熊群优化算法课件
- 2025 高中信息技术数据与计算之数据安全的同态加密物联网应用课件
- 2026年及未来5年市场数据中国城市轻轨市场发展前景预测及投资战略咨询报告
- 2026年春季消防安全形势分析与防控策略
- 农产品贮藏保鲜技术:原理、应用与发展
- 畜禽养殖基础技术与实践指南
- 2026年细胞工厂基因编辑底盘细胞改造技术手册
- 2026年高油高产转基因大豆生物育种技术攻关实务
- 2026年海岛独立微网:风光氢储固态储氢系统设计
- 2026年乡村旅游重点村游客动线优化与节点景观提升指南
- EBSD入门简介姚宗勇课件
- 口内数字化印模
- 高考数学真题全刷-决胜800题
- GB/T 2007.7-1987散装矿产品取样、制样通则粒度测定方法手工筛分法
- 印刷及纸张基础知识培训课件
- 充分高效利用时间主题班会课件
- 皮带机安装检验批
- 利用导数证明数列不等式问题课件-高考数学二轮复习
- 教师礼仪规范全套课件完整版ppt教程最全
- 汽车可靠性教学课件汇总完整版电子教案全书整套课件幻灯片(最新)
- 五年级下册语文课件-第四单元《9 古诗三首》部编版 (共48张PPT)
评论
0/150
提交评论