结构化方法与面向对象方法

时间:2021-07-23 19:27:02

结构化方法与面向对象方法

14231011 金燊

目录

 一、结构化方法

  1. 结构化方法的特点
  2. 结构化方法的发展

 二、面向对象方法

  1. 面向对象方法的特点
  2. 面向对象方法的发展

 三、比较

  1. 区别
  2. 应用现状

 四、总结与展望

 五、参考文献

 

背景:

  各种软件开发方法是伴随着60年代的“软件危机”产生的。为了应对大规模软件的开发中,遇到的各种困难,人们创造了各种方法指导软件的开发。这些方法大致可分为三类: 结构化方法、面向对象方法和形式方法。在过去的三十多年中, 人们在结构化方法和面向对象方法的研究及其应用上做了大量的工作。结构化方法最为成熟, 影响最大。直到现在, 仍有60% ~ 70%的系统是用结构化方法开发的。面向对象方法近十年发展比较快,大有取代结构化方法的趋势。【2】下面将分别介绍者两种主流的开发方法,对比它们的区别和研究现状,并对未来的发展做出展望。

 

一、结构化方法

a) 结构化方法的特点【2】

  结构化方法基于功能分解设计系统结构, 它从内部功能上模拟客观世界。所采用的主要工具是数据流图DFD。通过不断将DFD中复杂的处理分解成子数据流图来简化问题。

  优点:结构化方法能够增加软件规格说明的可读性和软件系统的可靠性。数据流图容易理解, 有利于开发人员与客户的交流。

  缺点:软件系统结构对功能的变化十分敏感, 功能的变化往往意味着重新设计。设计出的软件难以重用, 延缓了开发的进程。

b) 结构化方法的发展

  1966 年,C-BOhm 和G-Jacopini 提出了关于“程序结构”的理论,并给出了任何程序的逻辑结构都可以用顺序结构、选择结构和循环结构来表示的证明。在程序结构理论的基础上,1968 年,戴克斯特拉提出了“GOTO 语句是有害的”的问题,并引起普遍重视,SP 逐渐形成,并成为计算机软件领域的重要方法,对计算机软件的发展具有重要的意义。伴随着SP 的形成,相继出现了Modula-2、C 以及Ada 等结构化程序设计语言。【1】

二、面向对象方法

a) 面向对象方法的特点【2】

  面向对象的方法从内部结构上模拟客观世界。这里的对象是客观世界对象的直接映象。对象不仅包含数据, 还包含对数据操作的方法。对象之间的通讯是通过发送消息完成的。

  优点:由于采用了继承的概念, 有利于软件的重用。从所建模型的稳定性来看, 也比结构化方法高。

  缺点:开发出的软件冗余部分多, 从效率方面来看, 比结构化方法要低; 且由于其封装性, 使得系统内部的控制不清晰, 给以后的维护工作增加了难度。

b) 面向对象方法的发展

  面向对象方法起源于面向对象程序语言(Obiect Oriented Program Ianguage,简称OOPL)。面向对象程序语言始于20 世纪60 年代后期, 第一个OOPL 是挪威计算中心的KristenNygaard 和Ole-Johan Dahl 于1967 年研制的Simula 语言,该语言引入了许多面向对象的概念, 如类和继承性等。受Simula 语言的影响,1972 年,Alan Kay 在Xerox 公司研制成功了Smalltalk 语言,并对面向对象的一些概念作了更精确的定义。1980 年,Xerox 公司推出的Smalltalk-80 语言标志着OOPL 进入实用化阶段。20 世纪80 年代,OOPL 得到了极大地发展,相继出现了一大批实用的面向对象语言。【1】

 

三、比较

a) 区别 【3】

  根据阅读文献,笔者认为结构方法与面向对象方法最大的差异在于:结构化方法注重对于系统功能的刻画,而面向对象方法则以数据为中心。从这一本质区别,引发出他们各自的特点。

  结构化方法首先关心的是功能, 强调以模块(即过程)为中心, 采用模块化、自顶向下、逐步求精设计过程, 系统是实现模块功能的函数和过程的集合, 结构清晰、可读性好, 的确是提高软件开发质量的一种有效手段。每个模块有可能保持较强的独立性, 但它往往与数据库结构相独立, 功能模块与数据库逻辑模式间没有映射关系, 程序与数据结构很难封装在一起。如果问题世界的功能比数据更复杂或者更重要,那么结构化方法仍然应是首选的方法。如果数据结构复杂,模块独立性很难保证。

  面向对象方法则从所处理的数据入手, 以数据为中心来描述系统, 数据相对于功能而言, 具有更强的稳定性, 这样设计出的系统模型往往能较好地映射问题域模型。对象、类、继承性、多态性、动态定连概念和设施的引入使用, 显然令面向对象的设计方法具有一定的优势, 能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途径。

b) 应用现状

  目前,仍有60% ~ 70%的系统是用结构化方法开发的。面向对象方法近十年发展比较快,大有取代结构化方法的趋势。不过,在查找资料的时候,发现,许多的研究在探讨如何能够在软件开发中,综合利用两种方法各自的优点,在大的系统中综合利用两种方法。【1】

四、总结与展望

  上文系统的介绍了结构化方法和面向对象方法各自的特点。重点对比了他们的区别,分析了各自的优缺点。笔者认为:面对越来越复杂的软件开发,越来越多的数据,面向对象将在程序设计中占主题的地位。如此,提高对于数据的封装,增强代码的重用,并且在更高的层次对现实世界建模。

  除了上面提到的两种开发方法,还有一种名为:形式方法的软件开发方法,尽管不在本次的论题下,但是,感觉未来也可能成为对于可靠性需求极高的软件开发的开发方法。个人也更喜欢这种形式化的开发方法,这种开发方法是可以证明的,不仅能够通过测试来验证。这种开发方式,在各种控制、管理系统等,对于软件可靠性需求极高的领域,将会得到很好的应用。

五、参考文献

【1】软件开发方法———结构化方法与面向对象方法比较,汪寒昊 谢加胜 邢跃,SCIENCE & TECHNOLOGY INFORMATION 2011 年 第13期

【2】The Comparison and Combination of Structured Methodology ,

Object-Oriented Methodology and Formal Methods,Miu Huaikou, Gao Xiaolei and Li Gang,COMPUTER ENGIN EERING& SCIENCE Vo l. 21, No. 4, 1999

【3】软件工程中结构化方法与面向对象方法之比较,霍迎旦,JOURNALOF INNER * RADIO &TV UNIVERSITY No.2 , 2007(Sum No .90) 2007 年第2 期(总第90 期)