程序设计方法学_第1页
程序设计方法学_第2页
程序设计方法学_第3页
程序设计方法学_第4页
程序设计方法学_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计方法学程序设计方法学程序设计方法学是指用以指导程序设计各阶段工作的原理和原则,以及依此提出的设计技术。有时也指研究这些原理、原则和技术的学科。程序设计方法学的目标是能设计出可靠、易读而且代价合理的程序。程序设计方法学包括程序理论、研制技术、支援环境、工程规范和自动程序设计等课题,使程序设计更加科学化和工程化。其基本内容是:结构程序设计;程序理论在程序设计技术中的应用,以及规格说明和变换技术。程序理论与程序设计方法学的发展密切相关,它丰富了程序人员的思维方法,促进了程序设计技术的发展。程序设计方法学也与软件工程关系密切。方法学对软件的研制和维护起指导作用。软件工程要求程序设计规范化,建立新的原则和技术。而一种新的方法的出现,又要求制订出相应的规范。方法和工具是同一问题的两个侧面。工具的研究以方法学为基础,而工具的研制成功又会影响程序设计。程序设计方法学还涉及程序推导、程序综合、程序设计自动化研究、并发程序设计、分布式程序设计、函数式程序设计、语义学、程序逻辑、形式化规格说明和公理化系统等课题。一、程序设计方法学的发展过程与历史现状程序设计方法学的发展过程与软件的发展过程以及语言的发展过程都存在密切的关系。一般情况下,软件的发展分为三个阶段:第一阶段,开创阶段。在1955——1965年,计算机软件刚刚起步,高级语言的作用还没有被接受,机器语言和汇编语言仍是程序员的主流编程语言。在这个阶段,程序设计完全是一些专家才能完成的任务,他们能使庞大的机器按照预想执行,程序设计被看作是一门艺术,还没有上升到方法学的高度。第二阶段,稳定阶段。1965——1985年,像科学计算语言FORTRAN、商务计算语言COBOL这样的高级语言开始被人们所接受,软件也不再是随硬件附带的赠品,逐渐成为一个独立的商品,具有其自身的价值。这个时期软件设计方法的主流是结构化分析和设计,以结构化分析、结构化评审、结构化设计以了结构化测试为特征。随着软件应用价值的挖掘,其规模和复杂性不断增加,软件编制的工作量加大,常常需要几百到几千人年。按照原有的手工方式研制软件周期长,可靠性差、维护困难,软件项目失败的案例屡见不鲜,具体表现为软件开发成本和进度的估计常常很不准确;用户对“已完成的”软件系统不满意的现象经常发生;软件常常是不可维护的;软件常常是不可管理的;软件在计算机系统总成本中所占的比例逐年上升;软件开发生产率提高的速度远远跟不上计算机应用迅速及深入普及的速度。这个现象就是人们通常所说的“软件危机”。软件危机的出现引起人们对程序设计方法学的重视。在这个时期,结构化程序设计的理论和方法成为这个时期软件开发的主流。在1969年程序设计方法学作为一门学科诞生。在这个时期的程序设计方法学就是指结构化程序理论、模块化与逐步求精,以及有关结构化程序正确性证明技术、形式推导技术和变换技术。第三阶段,发展阶段。1985年至今,软件作用和价值牢固地树立起来了。软件的发展速度已超过硬件产业,各种软件理论、技术、方法层出不穷,如面向对象的程序设计方法和理论、类型系统理论、软件复用、设计模式理论、统一建模理论等。可以说在20世纪90年代以后,面向对象程序设计方法学成为程序设计的主流。围绕着面向对象理论产生出了各种不同的程序设计方法、概念、理论和技术。但都没能达到在程序设计方法学的高度将它们统一起来,这就是目前程序设计方法学的发展现状。程序设计方法学的发展也是与程序设计语言的发展历程密不可分的。如FORTRAN语言的产生使得人们从机器语言和汇编语言走向高级语言,开始了结构化程序设计方法的历程,而PASCAL语言和C语言的成熟标志着结构议成熟。LISP语言的产生标志人们开始函数式程序设计方法的历程。PROLOG语言的产生标志着逻辑式程序设计方法的产生。Simula的产生开始了面向对象程序设计方法学的研究,而C++,JAVA的应用标志着面向对象程序设计方法的成熟。综上所述,程序设计方法学的主体应用大致经历了:手工作坊式和程序设计→结构化程序设计方法→模块化程序设计方法→面向对象程序设计方法,此外,还有逻辑型程序设计方法、函数型程序设计方法、并行程序设计方法等。二、结构化方法软件危机与面向对象方法的提出60年代末开始,国际上出现了“软件危机”,主要表现是:软件质量差、成本及开发进度难以控制,维护工作麻烦,产生这一危机的根本原因在于结构化方法强烈依赖系统逻辑模型的完整性描述,难以做到系统的动态变化与扩展,系统开发速度慢、周期长、费用高;结构化设计方法讲究的是自顶而下的“瀑布式”设计,使数据结构的设计仅服从于当前功能实现的要求,为以后的扩充和重用设置了巨大的障碍。结构化方法中提高软件的结构化、模块化及可读性等基本思想是完全正确的,但问题空间和解空间在结构上存在着不一致性,使大型信息系统的开发和设计面临许多困难。解决这一难题的关键在于分析、设计、实现一个系统的方法和过程应尽可能接近我们认识系统的方法和过程,即问题空间与解空间在结构上尽可能一致。面向对象方法解决了传统结构化方法中问题空间和解空间在结构上不一致的问题,避免了从分析和设计到软件模块结构间的多次转换过程,使开发软件变得简捷、高效、合理。面向对象方法首先强调来自域的对象,然后围绕对象设置属性和操作。它尽可能模拟人类习惯的思维方式。把问题域的概念直接映射到对象和对象之间的接口,符合人们的常用的思维方式,减少结构化方法的从问题域到分析阶段的映射误差。面向对象方法鼓励开发者使用“对象”的观念去看待问题。三、面向对象方法与结构化方法的比较面向对象结构化设计基本思想自底向上设计库类自顶向下设计过程库,逐步求精,分而治之概念或术语名词对象、类、消息、继承等过程、函数、数据等编程的语言C++、VB、JAVA等C、BASIC、FORTRAN等逻辑工具对象模型图、数据字典动态模型图、功能模型图数据流图、系统结构图、数据字典状态转移图、实体关系图处理问题的出发点面向问题面向过程控制程序方式通过“事件驱动”来激活和运行程序通过设计调用或返回程序可扩展性只需修改或增加操作,而基本对象结构不变,扩展性好功能变化会危及整个系统,扩展性差重用性好不好层次结构的逻辑关系用类的层次结构来体现类之间的继承和发展用模块的层次结构概括模块和模块之间的关系和功能分析、设计、编码的转换方式平滑过程,无缝连接按规则转换。四、结构化方法与面向对象方法的内在联系(一)二者在分解和抽象原则上一致分解和抽象是软件开发中控制问题复杂性的重要原则。分解即化整分零,将问题剥茧抽丝,层层消化;抽象则是通过分解体现,在逐层分解时,上层是下层的抽象,下层是上层的具体解释和体现,运用抽象可以不用一次考虑太多细节,而逐渐的有计划有层次的了解更多细节。面向对象方法与结构化方法在运用分解和抽象原则上的要求是完全一致的。(二)局部化和重用性设计上的一致局部化是软件开发中的一个重要原则,即不希望软件一部分过多地涉及或影响软件的其它部分。在结构化方法中,局部化主要体现在代码与数据的分隔化,即程序各部分除必要的信息交流外,彼此相互隔离而互不影响,而面向对象方法则采用数据、代码的封装,即将数据、代码和操作方法封装成一个类似“黑箱”的整体对象,提高了程序的可靠性和安全性,同时增强了系统的可维护性。也就是说面向对象方法比结构化方法的运用更加深入更彻底。五、结构化方法与面向对象方法的区别(一)处理问题时的出发点不同结构化方法是强调过程抽象化和模块化,以过程为中心构造或处理客观世界问题的,它是一种面向过程的开发方法;面向对象方法强调把问题域的要领直接影射到对象及对象之间的接口上,是用符合人们通常的思维方式来处理客观世界的问题。(二)处理问题的基本单位和层次逻辑关系不同结构化方法把客观世界的问题抽象成计算机可以处理的过程,处理问题的基本单位是能清晰表达过程的模块,用模块的层次结构概括模块或模块间的关系和功能;面向对象方法是用计算机逻辑来模拟客观世界中的物理存在,以对象的集合类作为处理问题的基本单位,尽可能使计算机世界向客观世界靠拢,以使问题的处理更直截了当,面向对象方法是用类的层次结构来体现类之间的继承和发展。(三)数据处理方式与控制程序方式不同结构化方法是直接通过程序来处理数据,处理完毕后即可显示处理结果,在控制程序方式上是按照设计调用或返回程序不能自由导航,各模块程序之间存在着控制与被控制的关系;面向对象方法将数据与对应的代码封装成一个整体,原则上其它对象不能直接修改其数据,即对象的修改只能由自身的成员函数完成,控制程序方式上是通过“事件驱动”来激活和运行程序。(四)分析设计与编码转换方式不同结构化方法强调分析、设计及编码之间按规则进行转换,贯穿软件生命周期的分析、设计及编码之间实现的是一种有缝的连接;面向对象方法从分析到设计再到编码则采用一致性的模型表示,贯穿软件生命周期的分析、设计及编码之间是一种平滑过程,即实现的是一种无缝连接。六、结语综上所述,软件开发的目标是以最小的代价开发出满足用户需求的软件。为此,根据系统的实际需求,分别针对具体情况选择采用不同的设计方法,可以充分发挥面向对象与结构化方法各自的优势。目前在大多数软件系统的分析设计过程中,这两种方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论