首页 > 代码库 > 结构化方法与面向对象方法之比较
结构化方法与面向对象方法之比较
结构化方法与面向对象方法之比较
自软件工程提出来之后,得到了巨大的发展,而软件开发中的两种方法——结构化方法与面向对象方法也引起人们广泛讨论,本文主要对这两种方法的做一些介绍,以及对这两种方法进行比较。
一、结构化方法
结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
1、基本原则:
结构化方法的基本思想就是将待解决的问题看作一个系统从而用系统科学的思想方法来分析和解决问题。结构化方法遵循以下基本原则:
(1)抽象原则
抽象原则是一切系统科学方法都必须遵循的基本原则。它注重把握系统的本质内容而忽略与系统当前目标无关的内容,它是一种基本的认知过程和思维方式。
(2)分解原则
分解原则是结构化方法中最基本的原则。它是一种先总体后局部的思想原则,在构造信息系统模型时它采用自顶向下分层解决的方法。
(3)模块化原则
模块化是结构化方法最基本的分解原则的具体应用,它主要出现在结构化设计阶段中,其目标是将系统分解成具有特定功能的若干模块,从而完成系统指定的各项功能。
2、分析方法
结构化分析的步骤如下:
①分析当前的情况,做出反映当前物理模型的DFD;
②推导出等价的逻辑模型的DFD;
③设计新的逻辑系统,生成数据字典和基元描述;
④建立人机接口,提出可供选择的目标系统物理模型的DFD;
⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;
⑥选择一种方案;
⑦建立完整的需求规约。
结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。SD方法尤其适用于变换型结构和事务型结构的目标系统。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。结构化设计的步骤如下:
①评审和细化数据流图;
②确定数据流图的类型;
③把数据流图映射到软件模块结构,设计出模块结构的上层;
④基于数据流图逐步分解高层模块,设计中下层模块;
⑤对模块结构进行优化,得到更为合理的软件结构;
⑥描述模块接口。
3、建模技术
模型问题是结构化方法的核心问题。建立模型简称建模是为了更好地理解我们要模拟的现实。世界建模通常是从系统的需求分析开始,在结构化方法中就是使用SA方法构建系统的环境模型,然后使用SD方法确定系统的行为和功能模型,最后使用SP方法进行系统的设计并确定用户的现实模型。
结构化分析(Structured Analysis,简称SA法)方法是面向数据流的需求分析方法,是70年代末由Yourdon,Constaintine及DeMarco等人提出和发展,并得到广泛的应用。它适合于分析大型的数据处理系统,特别是企事业管理系统。SA法也是一种建模的活动,主要是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。
二、面向对象方法
1、基本原则
面向对象模型遵循的基本原则有:抽象、封装、模块化以及层次原则等
(1)抽象
抽象是处理现实世界复杂性的最基本方式在OO方法中,它强调一个对象和其他对象相区别的本质特性。对于一个给定的域确定合理的抽象集是面向对象建模的关键问题之一
(2)封装
封装是对抽象元素的划分,过程抽象由结构和行为组成封装用来分离抽象的原始接口和它的执行。
封装也称为信息隐藏Information Hiding它将一个对象的外部特征和内部的执行细节分割开来并将后者对其他对象隐藏起来。
(3)模块化
模块化是已经被分为一系列聚集的和耦合的模块的系统特性。对于一个给定的问题确定正确的模块集几乎与确定正确的抽象集一样困难,通常每个模块应该足够简单以便能够被完整地理解。
(4)层次
抽象集通常形成一个层次,层次是对抽象的归类和排序。在复杂的现实世界中有两种非常重要的层次一个是类型层次另一个是结构性层次。确定抽象的层次是基于对象的继承,它有助于在对象的继承中发现抽象间的关系,搞清问题的所在理解问题的本质。
2、分析方法
面向对象分析步骤如下
(1) 分析确定在问题空间和解空间出现的全部对象及其属性;
(2) 确定应施加于每个对象的操作,即对象固有的处理能力;
(3) 分析对象间的联系,确定对象彼此间传递的消息;
(4) 设计对象的消息模式,消息模式和处理能力共同构成对象的外部特性;
(5) 分析各个对象的外部特性,将具有相同外部特性的对象归为一类,从而确定所需要的类;
(6) 确定类间的继承关系,将各对象的公共性质放在较上层的类中描述,通过继承来共享对公共性质的描述;
(7) 设计每个类关于对象外部特性的描述;
(8) 设计每个类的内部实现(数据结构和方法);
(9) 创建所需的对象(类的实例),实现对象间应有的联系(发消息)。
3、建模技术
面向对象方法与结构化方法一样其核心问题也是模型问题面向对象模型主要由OOA模型OOD模型组成其中OOA主要属于学科抽象形态方面的内容OOD主要属于学科设计形态方面的内容。
UML用一种统一的基本表示来组织数据和它专有的处理,能够无痕地支持OOA、OOD各阶段的工作特征,使传统软件开发的两条鸿沟消失。UML的出现是面向对象技术发展的重要成果,UML成为可视化建模语言事实上的工业标准,代表了面向对象方法的软件开发技术的发展方向。
三、结构化方法与面向对象方法的比较
1、内在联系
(一)二者在分解和抽象原则上一致 分解和抽象是软件开发中控制问题复杂性的重要原则。分解即化 整分零,将问题剥茧抽丝,层层消化;抽象则是通过分解体现,在逐层分解时,上层是下层的抽象,下层是上层的具体解释和体现,运用抽象可以不用一次考虑太多细节,而逐渐的有计划有层次的了解更多细节。面向对象方法与结构化方法在运用分解和抽象原则上的要求是完全一致 的。
(二)局部化和重用性设计上的一致 局部化是软件开发中的一个重要原则,即不希望软件一部分过多 地涉及或影响软件的其它部分。在结构化方法中,局部化主要体现在代 码与数据的分隔化,即程序各部分除必要的信息交流外,彼此相互隔离 而互不影响,而面向对象方法则采用数据、代码的封装,即将数据、代码和操作方法封装成一个类似“黑箱”的整体对象,提高了程序的可靠性和安全性,同时增强了系统的可维护性。也就是说面向对象方法比结构化方法的运用更加深入更彻底
2、区别
(一)处理问题时的出发点不同
结构化方法是强调过程抽象化和模块化,以过程为中心构造或处 理客观世界问题的,它是一种面向过程的开发方法;面向对象方法强调 把问题域的要领直接影射到对象及对象之间的接口上,是用符合人们 通常的思维方式来处理客观世界的问题。
(二)处理问题的基本单位和层次逻辑关系不同
结构化方法把客观世界的问题抽象成计算机可以处理的过程,处 理问题的基本单位是能清晰表达过程的模块,用模块的层次结构概括 模块或模块间的关系和功能;面向对象方法是用计算机逻辑来模拟客 观世界中的物理存在,以对象的集合类作为处理问题的基本单位,尽可 能使计算机世界向客观世界靠拢,以使问题的处理更直截了当,面向对 象方法是用类的层次结构来体现类之间的继承和发展。
(三)数据处理方式与控制程序方式不同
结构化方法是直接通过程序来处理数据,处理完毕后即可显示处 理结果,在控制程序方式上是按照设计调用或返回程序不能自由导航, 各模块程序之间存在着控制与被控制的关系;面向对象方法将数据与 对应的代码封装成一个整体,原则上其它对象不能直接修改其数据,即 对象的修改只能由自身的成员函数完成,控制程序方式上是通过“事件 驱动”来激活和运行程序。
结构化方法与面向对象方法之比较