请输入您要查询的百科知识:

 

词条 程序设计方法学
释义

介绍

程序设计方法学是讨论程序的性质以及程序设计的理论和方法的一门学科, 是研究和构造程序的过程的学问,是研究关于问题的分析,环境的模拟,概念的获取,需求定义的描述, 以及把这种描述变换细化和编码成机器可以接受的表示的一般的方法。

用以指导程序设计各阶段工作的原理和原则,以及依此提出的设计技术。有时也指研究这些原理、原则和技术的学科。程序设计方法学的目标是能设计出可靠、易读而且代价合理的程序。程序设计方法学包括程序理论、研制技术、支援环境、工程规范和自动程序设计等课题,使程序设计更加科学化和工程化。其基本内容是:结构程序设计;程序理论在程序设计技术中的应用,以及规格说明和变换技术。程序理论与程序设计方法学的发展密切相关,它丰富了程序人员的思维方法,促进了程序设计技术的发展。

发展历史

产生背景

1950年代—1960年代初,手工艺式的程序设计方法,高德纳把程序称为艺术品。

1960年代末—1970年代初,出现软件危机:一方面需要大量的软件系统,如操作系统、数据库管理系统; 另一方面,软件研制周期长,可靠性差,维护困难。编程的重点:希望编写出的程序结构清晰、易阅读、易修改、易验证,即得到好结构的程序。

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 的谓词转换器及其演算规则集合,可以推导出正确的程序。

利用程序变化构造正确的程序。它对程序应用一连串的保护正确性的变换规则,最终得到可执行的程序。程序变换是1970年代以来,“程序设计方法学” 研究的重要方面,是程序设计自动化很有希望的途径之一。递归程序变换是这一时期的最有意义的成果。 如Burstall 和Darlington 的递归程序变换系统等。

逻辑程序设计和函数程序设计代表一种新的研究方向。Prolog是以谓词逻辑的子集(Hoare 子句)为基础的一种形式系统。Prolog 的执行过程就是执行逻辑上消解算法的过程。

抽象数据类型的研究

抽象数据类型是程序设计方法学中一种极为重要的方法。人们把它誉为程序设计方法学发展史上的一个重要的里程碑。

研究的内容

结构化程序设计

数据抽象与模块化程序设计

程序正确性证明

程序变换

程序的形式说明与推导

程序综合与分析技术

面向对象的程序设计方法

大型程序的开发

与软件工程的关系

程序设计方法学也与软件工程关系密切。方法学对软件的研制和维护起指导作用。软件工程要求程序设计规范化,建立新的原则和技术。而一种新的方法的出现,又要求制订出相应的规范。方法和工具是同一问题的两个侧面。工具的研究以方法学为基础,而工具的研制成功又会影响程序设计。程序设计方法学还涉及程序推导、程序综合、程序设计自动化研究、并发程序设计、分布式程序设计、函数式程序设计、语义学、程序逻辑、形式化规格说明和公理化系统等课题。

同名书籍

图书信息

作 者:胡正国,吴健,邓正宏 编著

出 版 社:国防工业出版社

出版时间:2003-1-1

版 次:1

页 数:266

字 数:394000

印刷时间:2003-1-1

纸 张:胶版纸

I S B N:9787118029727

包 装:平装

内容简介

本书主要介绍程序设计方法学这一新兴学科的主要内容,即结构化程序、程序正确性证明、结构化程序的正确性证明、递归程序及其正确性证明、程序的形式推导技术、程序变换技术、面向对象的设计方法和大型程序设计方法学基础等。

本书可供大专院校计算机专业学生使用,也可供硕士研究生及从事计算机工作的科研人员参考。

图书目录

第1章 程序设计方法简介

第1节 程序设计方法学的产生

第2节 结构程序设计及其讨论的一些主要问题

习题

第2章 结构化程序

第1节 什么是结构化程序

第2节 结构化定理

第3节 一些新的控制结构

习题

第3章 模块化程序设计

第1节 MODULA-2语言中的模块化结构

第2节 ADA语言中的程序包

习题

第4章 面向对象的程序设计方法

第1节 什么是面向对象的程序设计

第2节 应用框架

第3节 设计模式

第4节 浅谈面向对象设计语言

习题

第5章 程序正确性证明

第1节 概述

第2节 不变式断言法

第3节 子目标断言法

第4节 公理化方法

第5节 良序集方法

第6节 计数器方法

习题

第6章 结构化程序的正确性证明

第1节 正确性定理

第2节 证明程序正确性的代数方法

第3节 产生循环不变式的一种方法

习题

第7章 递归程序及其正确性证明

第1节 迭代与递归

第2节 递归程序的一种模型

第3节 递归程序的正确性证明

习题

第8章 程序的形式推导技术

第1节 谓词变换器及其性质

第2节 面向目标的程序推导

第3节 循环不变式的推导技术

习题

第9章 程序变换技术

第1节 程序变换的基本思想和基本规则

第2节 程序生成阶段

第3节 程序改进阶段(I)

第4节 程序改进阶段(II)

第5节 程序改进阶段(III)

第6节 程序变换研究中的若干问题

习题

第10章 大型程序设计方法学基础

第1节 抽象数据类型的代数规范

第2节 抽象数据类型的形式化基础

第3节 形式规范的应用

参考文献

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/26 22:21:56