程序设计方法学的基本概念和发展历程

上传人:wm****3 文档编号:52099018 上传时间:2018-08-18 格式:PPT 页数:30 大小:176KB
返回 下载 相关 举报
程序设计方法学的基本概念和发展历程_第1页
第1页 / 共30页
程序设计方法学的基本概念和发展历程_第2页
第2页 / 共30页
程序设计方法学的基本概念和发展历程_第3页
第3页 / 共30页
程序设计方法学的基本概念和发展历程_第4页
第4页 / 共30页
程序设计方法学的基本概念和发展历程_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《程序设计方法学的基本概念和发展历程》由会员分享,可在线阅读,更多相关《程序设计方法学的基本概念和发展历程(30页珍藏版)》请在金锄头文库上搜索。

1、第一课 程序设计方法学绪论浙江大学计算机学院博士 蔡 铭 电话:13516828512,87951414(O),85454625(H)Email: hzcai_ 当前常见的高级语言程序设计教程以介绍程序设计 语言为中心,很少介绍程序设计方法,致使书中只有程 序,没有程序设计过程,难以说清楚程序是如何得来的 ,难以起到培养程序设计能力的作用。 本课程设置的目的 只有规范的、科学的进行程序设计,一个大项目才 能得到有效的管理,其质量才有保证。 程序设计不是单纯技巧性的活动,也有自身的科学 理论,程序设计方法学是一门使程序设计从技巧升华为 科学的学科。n本课程的核心内容和目的n程序设计语言的介绍n软

2、件危机与程序设计方法学的产生n程序设计方法学的内容n作业及考试情况本讲的内容本课程的核心内容怎样设计出“优秀”的程序n1.什么样的程序才是“优秀” 的?n“优秀”的程序与优秀程序员的迫切性n“优秀”程序的要素优秀的程序与优秀程序员的迫切性n开发成本的例子nIBM公司的早期操作系统MVS,700万 行代码,成本20亿美元,平均每行代码 285美元n开发效率的试验n调试时间 28:1 编程时间 16:1n程序长度 6:1 程序速度 6:1“优秀” 程序的要素n正确性n易验证n结构化n模式化n易维护n易扩展n易阅读n性能均衡从程序正确性方面考虑从程序组成结构方面考虑从程序运行性能方面考虑从程序表现形

3、式方面考虑本课程的核心内容怎样设计出“优秀”的程序n2.怎么才能设计出“优秀”的程序?n学习(技巧、技术、方法、理论,以及别人的经验 )n工具(设计工具、调试工具、测试工具)n实践(练习、思考题、作业)n激情(兴趣)n勤劳n运气Wake up every day with a feeling of passion for the different technology will make in peoples life软件硕士应具备的素质n能在系统分析、系统设计、系统编码和系统调试四个 领域,准确地使用至少一种新方法n能够选择该适当的数据结构和算法进行编码的能力, 并能够对软件进行基本的测试

4、和调试,并改进系统的 性能n至少熟悉一个有意义的领域(操作系统、编译系统、 数据库、MIS),并研制出领域较为先进的软件系统n能够有效地组织和管理37人的开发团队n能够与客户、经理和技术人员进行有效沟通的能力n具有评价、选择和实现新方法、新技术的能力本课程的核心内容怎样设计出“优秀”的程序n3. 本课程的学习目的n掌握较深层次的程序设计知识与理论n有助于设计出优秀的程序n开拓思路、扩大知识面n学习程序设计形式化方法,有利于进一步深造本课程与相关课程的区别n软件工程 (管理)n数据结构与算法(实现)n程序设计语言学(运行)n程序设计技巧 (技巧)n程序设计方法学(方法学)研究程序的性质,以及程序

5、设计的理论 、方法和技术的科学本课程的参考文献n程序设计方法学胡正国等 国防工业出版社 2003年1月n程序设计方法学冯树椿等 浙江大学出版社 1987年12月n软件设计方法 王选 清华大学出版社 1992年4月n软件开发的科学与艺术 微软电子工业出版社 2002年5月n程序设计语言概念和结构Ravi Sethi 机械工业出版社 2002n程序设计实践 Brian W.K 机械工业出版社 2000年8月nDesign Patterns Elements of Reusable Object-Oriented SoftwareErich,Person Education,2002年3月nArt

6、of Computer Programming, Volume 1-3Donald E.Knuth 国防工业出版社n软件项目管理 Philip Metzger 电子工业出版社 2002年8月本讲内容n本课程的核心内容和目的n程序设计语言的介绍n软件危机与程序设计方法学的产生n程序设计方法学的内容n作业及考试情况程序设计语言一、机器语言和汇编语言n原始的冯.诺依曼机器(1946年)代码 000000101011110010100000001011111100100000000011001110101000机器语言是晦涩难懂的,而英语是罗嗦而非形式化的 , 因此需要设计另外一种语言来写程序,它应该

7、是符号式 的或者说助记的。 高级语言的优越性:可扩展性;可读性;可移植性二、命令式语言n科学计算的语言Backus1957为Fortran的成功预备了两个成分:记法和效率APL是唯一使用带有专用符号的交互式键盘来编写程序的语言。n商用语言 第一个商用语言是COBOL(面向商业的公用语言的缩写)。它是一 种功能很强而又极为冗长的语言 BASIC设计者的最意图体现在该语言的名字上-初学者通用的符号 指令码n多用途语言 Alogol60主导20世纪60年代程序设计语言的发展。 Pascal作为教学语言扩展了Alogol Dennis Ritchie1972年创建C语言三、函数式语言n1958年MCa

8、rthy设计了LISP用作符号演算 ,具有严格的理论基础nStandard ML、Miranda、Haskell对语言 发展的推动作用n1984年CLOS是LISP的面向对象扩展,全 名是Common Lisp Object System四、(基于)面向对象语言nSimula :Kristen Nygaard和Ole-Jodan Dahl在1961年 设计了这个语言,目的是想同时作为一种描述语言和 程序设计语言nSmalltalk是第一个严格意义的全面向对象的程序设计 语言,它的设计受到了LISP的影响nC+设计的是为了把面向对象的优点带进C的命令式程 序设计中nJAVA是面向对象程序设计语言

9、的成熟标志n你需要知道的一些(基于)面向对象程序设计语言和 相关语言:Ada、Simula、Smalltalk、C+、JAVA本讲内容n本课程的核心内容和目的n程序设计语言的介绍n软件危机与程序设计方法学的产生n程序设计方法学的内容n作业及考试情况软件危机产生 (1/2)n软件危机的产生(60年代末70年代初)n机器、汇编语言,以及小规模高级程序设计追求指令少、运行快,是一种手工艺式时代。n随着计算机应用的扩展和系统软件的出现,传统的追求技巧型的方法,已变得不适合。软件危机产生(2/2)n软件危机的表现n软件开发成本和进度的估计常常很不准确n用户对“已完成的”软件系统不满意的现象经常发 生n软

10、件常常是不可维护的n软件常常是不可管理的n软件在计算机系统总成本中所占的比例逐年上升n软件开发生产率提高的速度远远跟不上计算机应 用迅速及深入普及的速度 软件危机如何解决n管理学和工程学角度软件工程 划分阶段;加强审计;质量控制;过程改进;结构化;n方法学和语言学角度程序设计方法 标准的程序设计;设计理论;设计模式;设计风格;设计技巧本讲内容n本课程的核心内容和目的n程序设计语言的介绍n软件危机与程序设计方法学的产生n程序设计方法学的内容n作业及考试情况程序设计方法学讲课内容介绍和发展历程设计模式模 块 化 程 序 设 计 方 法面 向 对 象 程 序 设 计程 序 设 计 新 方 法结 构

11、化 程 序 设 计 方 法应用框架程序正确性证明递归程序正确性证明结构化定理程序调试技术抽象数据类型代数规范理论程序设计实例课程的主要研究问题n程序设计的基本特征 结构化 模块化 对象化 智能化n程序设计标准化问题形式语义 代数规范正确性的代数证明 形式推导 程序变换n程序设计标准实施问题 设计风格 设计方法 设计工具 设计技巧n本课程的核心内容和目的n程序设计语言的介绍n软件危机与程序设计方法学的产生n程序设计方法学的内容n作业及考试情况本讲内容作业及考试情况n宗旨:希望学得轻松,并有所得n作业:完成一篇关于程序设计方法方面的论文(30)n考试:一般开卷 (70)谢谢!结构化与非结构化程序示

12、例nswitch(state) Case STATE_ZOOMIN: ;goto NOT_SENDING; Case STATE_DRAWRECT: ;goto SENDING; SENDING: ;return; NOT_SENDING: ;return;PROC:nswitch(state) Case STATE_ZOOMIN: ;goto ERROR; Case STATE_DRAWRECT: ;goto ERROR; ERROR: ;goto PROC;返回在不同软件系统设计过程中,存在对大量的 同样或相似问题的求解,因此,如何进行设 计思想重用,从而实现高质量、高效率、低 成本的完成

13、系统开发是“设计模式”解决的 问题。 对大量既往软件系统进行比较分析(逆向分 析),从中筛选出最优方案,形成一系列模 式设计族,以便于再次重用。 程序设计模式化体现了一种“软件再工程” 思想。final class Singleton private static Singleton s = new Singleton(47); private int i; private Singleton(int x) i = x; public static Singleton getHandle() return s; public int getValue() return i; public vo

14、id setValue(int x) i = x; public class SingletonPattern public static void main(String args) Singleton s = Singleton.getHandle(); System.out.println(s.getValue(); Singleton s2 = Singleton.getHandle(); s2.setValue(9); System.out.println(s.getValue();模式化示例单体返回/处理轴类调头的描述问题, newplan:新工艺规程 Void CP_Proces

15、s_ShiftHead(CPGProcPlanSC *newplan) CPGOperSC *process;CPGMechStepSC *stepptr;process = newplan-OperMap.GetAt(proid);if (process-SetupMap.GetSize() SetupMap.GetAt(0);stepptr = setupptr-StepMap.GetAt(0);/采用工序集中方案if (!gCappSC_CFG.is_converge) if(process-SetupMap.GetAt(0)-StepMap阅读代码的时间比写代码的时间多得多 。思路清晰的设计可获得易于理解的程 序,但注释、细致的解释以及一些示例 往往具有不可估量的价值。 程序的可阅读性示例返回

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号