结构化开发方法与面向对象开发方法的比较

我们百度软件开发方法,在百科中列举了8种软件开发方法,而其中最为被广泛使用的就是结构化开发方法和面向对象开发方法,这二者也是被人们讨论的最多的。在这篇博客中,我们将介绍这两种开发方法并且将二者进行比较。

  • 结构化开发方法

结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。

结构化方法按软件生命周期划分,有结构化分析(SA),结构化设计(SD)和结构化实现(SP)。

首先来看结构化分析,这种方法是以自顶向下,逐步求精为基点,以一系列经过实践的考验被认为是正确的原理和技术为支撑,以数据流图,数据字典,结构化语言,判定表,判定树等图形表达为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。

结构化分析的步骤大概可以简单分为:建立物理模型的数据流图;推到出逻辑模型的数据流图;建立人机接口,同时建立可供选择的目标系统物理模型的数据流图;确定各种方案的成本和风险等级,据此对各种方案进行分析;最后选择一种方案建立完整的需求规约。

而结构化设计方法同样是以自顶向下,逐步求精,模块化为基点,以模块化,抽象,逐层分解求精,信息隐蔽化局部化和保持模块独立为准则的设计软件的数据架构和模块架构的方法学。

结构化设计的大概步骤为:评审并细化数据流图,然后确定数据流图的类型;把数据流图映射到软件的模块结构;设计出模块结构的上层;基于数据流图逐步分解高层模块,设计模块结构的中下层;优化模块结构;描述模块接口。

于是总体上我们可以发现结构化方法的基本要点即为自顶向下、逐步求精、模块化设计和结构化编码。

  • 面向对象开发方法

面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

面向对象方法也可以像上文中结构化方法一样划分为面向对象分析,面向对象设计还有实现部分的面向对象程序设计。

面向对象分析是是采用面向对象的风格进行系统分析和需求定义的重要方法.面向对象分析的关键在于理解问题空间并将其模型化。它可分为5个阶段为:标识对象;标识结构;标识主题;定义属性;定义服务。

面向对象设计解决的是“类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式几个方面。

我们可以看到面向对象方法的主要特征在于封装型,继承性和多态性。

  • 比较

首先从设计思想上来看,结构化编程的基本思想就是把大的程序划分为若干个相对独立、功能简单的程序模块。它以过程为中心,强调的是过程,强调功能和模块化。通过一系列过程的调用和处理完成相应的任务。 面向对象编程以对象为中心,是对一系列相关对象的操纵,发送消息给对象,由对象执行相应的操作并返回结果,强调的是对象。

从结构上来看,面向对象方法相比于结构化中,上一层依赖下一层,下一层又依赖下下一层,只要底层改变,上层也要跟着改变的层次结构,很好的封装了变化,外界只需使用对象的接口,而不用管这个接口是如何实现的。结构化方法则是没有很好的隔离变化。

再者对于数据,结构化方法是直接通过程序来处理数据,处理完毕后即可显示处理结果。面向对象方法将数据与对应的代码封装成一个整体,原则上其它对象不能直接修改其数据。

总的来说,结构化方法比面向对象方法执行效率更高,同时更简单,更容易上手,更加适用于数据少但是操作多的开发需求中,比如OS和嵌入式系统。而面向对象方法在重用性,扩展性,数据管理保护和易于维护等方面的表现都要好于结构化方法,其应当说更适应以数据为主的软件开发需求

  • 参考资料

[1] 百度百科 baike.baidu.com

[2] 维基百科 zh.wikipedia.org

[3] 《结构化程序设计方法与面向对象的程序设计方法的比较》王德君、郝永芳