程序设计方法学PPT课件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1章程序设计方法学简介本课程的参考文献(1)胡正国、吴健、邓正宏编,《程序设计方法学》,国防工业出版社,2003年(教材)(2)李传湘、陈世鸿、刘海青编,《程序设计方法学》,武汉大学出版社,2000年(3)覃征、王志敏编,《程序设计方法与优化》,西安交通大学出版社,2004年(4)王申康编,《新编程序设计方法学》,浙江大学出版社,2004年其他应用框架和设计模式相关的书籍程序设计语言的介绍,发展史3.软件危机与程序设计方法学的产生4.程序设计方法学的内容5.结构程序设计及其讨论的一些主要问题6.程序设计风格一个完整的程序1、要把程序的功能描述清楚,这个程序要加工什么数据?希望得到什么结果?用什么办法加工?这些都要利用定义、定理、公式、函数等数学工具准确的表达出来,因此,一个程序员必须掌握形式化的方法。2、用程序语言把预定的计算方案书写出来,这是程序设计中最有特色的部分。简单的计算可以直觉的进行程序设计。复杂的计算往往可以由简单的程序按照各种模式搭配而成。然而,却没有一种机械的办法可生成各种程序,换句话说,程序的设计是一件具有创造性的工作。3、证明程序的正确性。一个程序是否正确是应该证明的。通常,有一些机械的步骤可以把一个程序的正确性归结为证明一组逻辑公式。但是也有一些办法可以简化证明过程。4、在实际工作中,试算与修正是不可缺少的。由于以上三个步骤中难免发生错误,所以要选择有代表性的例题进行试算,看是否能得到预期的答案。如果前面三步都已谨慎完成了,这一步就比较容易;否则到了这一步就产生困难,甚至出现十分尴尬的局面。以上的步骤有别于完全凭直觉的传统方法,对于简单的程序,这样作似乎有大题小作之嫌,但是这种练习对于从事复杂程序设计是十分必要的。熟练之后,当然不必学究式的对待这些步骤了。----怎样设计出“优秀”的程序1.本课程的核心内容和目的优秀的程序与优秀程序员的迫切性开发成本的例子IBM公司在1963-1966年开发的IBM360机的操作系统。花了5000人一年的工作量,写出了近100万行源程序。这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。IBM公司的早期操作系统MVS,700万行代码,成本20亿美元,平均每行代码285美元。“优秀”程序的要素正确性易验证结构化模式化易维护易扩展易阅读性能均衡从程序正确性方面考虑从程序组成结构方面考虑从程序运行性能方面考虑从程序表现形式方面考虑怎么才能设计出“优秀”的程序?学习(技巧、技术、方法、理论,以及别人的经验)工具(设计工具、调试工具、测试工具)实践(练习、思考题、作业)激情(兴趣)勤劳运气计算机系学生应具备的素质能在系统分析、系统设计、系统编码和系统调试四个领域,准确地使用至少一种新方法。具备选择适当的数据结构和算法进行编码的能力,并能够对软件进行基本的测试和调试,并改进系统的性能。至少熟悉一个有意义的领域(操作系统、编译系统、数据库、MIS),并研制出领域较为先进的软件系统。能够有效地参与团队开发。能够与客户进行有效沟通的能力。具有评价、选择和实现新方法、新技术的能力。课程目标本课程主要介绍程序设计方法学的科学理论、方法和实现技术。主要介绍程序设计方法学这一学科的主要内容,即结构化程序、程序正确性证明、结构化程序的正确性证明、递归程序及其正确性证明、程序的形式推导技术、程序变换技术、面象对象的设计方法和大型程序设计方法学基础等。掌握较深层次的程序设计知识与理论有助于设计出优秀的程序开拓思路、扩大知识面学习程序设计形式化方法,有利于进一步深造本课程的学习目的培养学生运用这些理论和方法,从认识规律出发训练各种良好的程序设计习惯,掌握到目前为止公认为成熟的有实用价值的具有完整科学理论和与之相关的技术方法作指导的软件设计和开发技术。课程内容程序设计方法学简介。程序的控制结构程序的正确性证明数据类型与抽象结构化程序正确性证明递归程序设计及其正确性证明程序设计方法程序变换设计模式2.程序设计与程序设计语言程序设计就是用计算机语言把对数据进行处理的算法表达出来程序的表达手段就是程序设计语言程序设计方法功能分解法---计算任务结构化程序设计--以数据为中心面象对象程序设计--以对象为中心组件程序设计-以组件为中心程序设计语言机器语言和汇编语言:0101…,ASM过程化语言:Pascal,C面向对象语言:C++,JAVA后面向对象方法面向方面(Aspect)程序设计面向Agent程序设计Dijkstra(GOTO语言有害)NiklausWirth(Pascal语言)RitchieDennis(C语言)程序设计思想的起步•1967年5月20日,在挪威奥斯陆郊外的小镇莉沙布举行的iFiPTC-2工作会议上,挪威科学家Ole-JohanDahl和KristenNygaard正式发布了Simula67语言。Simula67被认为是最早的面向对象程序设计语言,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承。之后,在1968年2月形成了Simula67的正式文本。••也是在1968年,荷兰教授E.W.Dijkstra提出了“GOTO语句是有害的”观点,指出程序的质量与程序中所包含的GOTO语句的数量成反比,认为应该在一切高级语言中取消GOTO语句。这一观点在计算机学术界激起了强烈的反响,引发了一场长达数年的广泛的论战,其直接结果是结构化程序设计方法的产生。•由瑞士计算机科学家NiklausWirth开发的Pascal,一经推出,它的简洁明了以及丰富的数据结构和控制结构,为程序员提供了极大的方便性与灵活性,同时它特别适合微计算机系统,因此大受欢迎。结构化程序设计思想采用了模块分解与功能抽象和自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子程序,便于开发和维护。因此,结构化方法迅速走红,并在整个20世纪70年代的软件开发中占绝对统治地位。•到了70年代末期,随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。结构化程序设计语言和结构化分析与设计已无法满足用户需求的变化,于是面向对象技术开始浮出水面。••面向对象程序设计方法起源于Simula67语言。在程序设计语言的发展史上,20世纪60年代后期是承上启下的重要时期。这一时期有三种重要的语言问世,即Simula67、由一批顶尖计算机科学家共同设计的Algol68、以及为iBM360系列机配套开发的PL/i。这三种语言虽均有所创新,但Simula67的面向对象概念的影响是最巨大而深远的。它本身虽因为比较难学、难用而未能广泛流行,但在它的影响下所产生的面向对象技术却迅速传播开来,并在全世界掀起了一股OO热潮,至今盛行不衰。面向对象程序设计在软件开发领域引起了大的变革,极大地提高了软件开发的效率,为解决软件危机带来了一线光明。•事实表明,面向对象程序设计方法虽然比结构化方法能更自然地表现现实世界,但它不是灵丹妙药,并不能解决所有问题,它本身存在固有的内在的局限性。最近兴起的面向方面编程(AOP)正是为了改进上述程序设计方法学的不足。AOP被视为是“后”面向对象时代的一种新的重要的程序设计技术。而从更广义的范畴看,在过去的40年里,软件体系结构试图处理日益增长的软件复杂性,但复杂性却仍继续增加,传统的体系结构好像已经达到了其处理此类问题的极限。新兴的Web服务通过允许应用程序以对象模型中立的方式实现互连,从而提供了一个更强大、更灵活的编程模型,并将对软件开发方法产生巨大影响。程序设计语言从1952年第一个高级语言ShortCode诞生到现在,程序设计语言先后出现了不同类型、不同版本不下数百种语言。程序设计语言龙虎斗1964年诞生的Basic语言是较早出现且至今仍有较大影响的语言之一。1975年,微软以Basic解释器创业,尽管1987年Borland公司成功地推出了TurboBasic1.0,但由于其内部原因而放弃了Basic市场,从而使微软在Basic领域是一览众山小。1991年,VisualBasic1.0问世,它允许程序员在一个所见即所得的图形界面中迅速完成开发任务。1998年发布的VisualBasic6.0是传统VisualBasic中功能最全、应用最广的一个版本。伴随着.NET平台的横空出世,VisualBasic.NET又以一个全新的面目出现在我们面前。.尽管Basic语言诞生较早,但其真正商业化是从1983年开始的。而在这一年,Borland公司又推出了著名的Pascal编译器TurboPascal1.0,在一定程度上抢了Basic的风头。TurboPascal1.0正式开创了Borland影响PC开发工具十几年的历史。尽管微软也曾经推出了MicrosoftPascal,但无疾而终。随着TurboPascal第9版的推出,Pascal语言也得到了不断的发展。1995年,Borland发布了Delphi,使Pascal成为一种可视化编程语言。Delphi1.0号称“VBKiller”,又一次在危机时刻挽救了Borland.程序设计语言龙虎斗微软和Borland之间的竞争并不只是在Basic和Pascal方面,在C语言世界里也同样如此。早期的C/C++开发环境是Borland于1989年5月发布的TurboC。同一时期,微软也推出了MicrosoftC/C++,不过它直到6.0版,市场反映都一直平平。之后,BorlandC/C++3.0问世,开启了Borland雄霸C/C++编译器常达五六年之久的序幕。尤其是其3.1版的畅销,使Borland一举击溃了MicrosoftC/C++,市场占有率超过了50%。但后来由于Borland决策上的一些失误,随后的4.0和4.5版市场反映极差,相反微软于1995年成功地推出了VisualC++1.0,并获得市场好评,它不但在编译器方面能与BorlandC/C++3.1相抗衡,在整合发展环境方面更加领先。应该说,这是两家公司C/C++战役的转折点,也是C/C++发展的里程碑。在此之后,VisualC++一路高歌猛进到6.0版,并最终发展为.NET时代的C#。不过,Borland也并没有一蹶不振,2003年5月,Borland针对.NET发布了C#Builder,之后又发布了C++BuilderX。程序设计语言龙虎斗说到编程语言,不能不说Java。Java是internet时代的产物,同其他前辈语言相比,其最大的特色在于“一次编码,多处运行”。Sun公司是Java语言的缔造者,但对Java开发环境做出最大贡献的是Borland的JBuilder系列产品。1997年,Borland发布JBuilder1.0,进军Java跨平台开发。这之后,微软曾试图染指Java开发环境市场,并影响Java的技术发展,并在VisualStudio系列中,将VisualJ++从1.0直接跨越到6.0。但是,JBuilder至今仍控制着Java的开发环境市场。3.程序设计方法学产生的背景和发展过程软件危机程序设计方法学的发展过程软件危机软件危机的产生(60年代末-70年代初)机器、汇编语言,以及小规模高级程序设计追求指令少、运行快,是一种手工艺式的编程方式。随着计算机应用的扩展和系统软件的出现,传统的追求技巧型的方法,已变得不适合。到1969年“软件危机”这一术语出现时:50~80%项目从未完成过90%已完成项目的费用超过预算140~400%软件危机软件危机的表现软件开发成本和进度的估计常常很不准确用户对“已完成的”软件系统不满意的现象经常发生软件常常是不可维护的,质量不可靠软件常常是不可管理的软件在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度远远跟不上计算机应用迅速及深入普及的速度软

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功