首页 > 代码库 > 结构化方法VS面向对象方法

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

  结构化方法和面向对象方法都是现在软件工程领域应用比较广泛的软件开发方法,要探讨两者的区别,必须先把两者的概念搞清。

  首先对比一下两者的基本原则:

一、基本原则 

1.结构化方法遵循的基本原则

  结构化方法的基本思想就是将待解决的问题看作一个系统从而用系统科学的思想方法来分析和解决问题结构化方法遵循以下基本原则
(1)抽象原则
  抽象原则是一切系统科学方法都必须遵循的基本原则它注重把握系统的本质内容而忽略与系统当前目标无关的内容它是一种基本的认知过程和思维方式
(2)分解原则
  分解原则是结构化方法中最基本的原则它是一种先总体后局部的思想原则在构造信息系统模型时它采用自顶向下分层解决的方法
(3)模块化原则
  模块化是结构化方法最基本的分解原则的具体应用它主要出现在结构化设计阶段中其目标是将系统分解成具有特定功能的若干模块从而完成系统指定的各项功能
2.面向对象模型遵循的基本原则
  面向对象模型遵循的基本原则有:抽象、封装、模块化以及层次原则等
(1)抽象
  抽象是处理现实世界复杂性的最基本方式在OO方法中它强调一个对象和其他对象相区别的本质特性对于一个给定的域确定合理的抽象集是面向对象建模的关键问题之一
(2)封装
  封装是对抽象元素的划分过程抽象由结构和行为组成封装用来分离抽象的原始接口和它的执行
  封装也称为信息隐藏Information Hiding它将一个对象的外部特征和内部的执行细节分割开来并将后者对其他对象隐藏起来
(3)模块化
  模块化是已经被分为一系列聚集的和耦合的模块的系统特性对于一个给定的问题确定正确的模块集几乎与确定正确的抽象集一样困难通常每个模块应该足够简单以便能够被完整地理解
(4)层次
  抽象集通常形成一个层次,层次是对抽象的归类和排序。在复杂的现实世界中有两种非常重要的层次一个是类型层次另一个是结构性层次 。确定抽象的层次是基于对象的继承,它有助于在对象的继承中发现抽象间的关系,搞清问题的所在理解问题的本质

二、需求分析对比

1、结构化需求分析方法

 

(1)面向数据结构的Jackson方法。
(2)面向数据流的结构化分析方法。
(3)面向数据结构的结构化数据系统开发方法。

2、结构化分析方法流程

(1)数据流图:描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统功能建模圆框:

输入数据经加工变换产生的输出。
箭头:
沿箭头方向传递数据的通道,一般在旁边标注数据流名。
双横线:
表示处理过程中存放各种数据的文件。
方框:
表示系统和环境的接口,属系统之外的实体。
(2)数据字典:
对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。
数据字典是结构化分析的核心。
(3)判定树:
从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。
结构化分析方法

(4)判定表:
与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。
软件需求规格说明书的特点:
正确性
无岐义性
完整性
可验证性
一致性
可理解性
可修改性
可追踪性

 

3、面向对象分析方法

(1)静态分析

(2)动态分析

4、面向对象方法的分析过程(OOA)

(1)确定问题域;
(2)区分类和对象;
(3)区分整体对象以及组成部分,确定类的关系以及结构;
(4)定义属性和服务;
(5)确定附加的系统约束;

三、特点对比

1.结构化系统分析方法的特点
(1)面向用户,用户自始至终参与系统的分析工作;

(2)强调调查工作的重要性;

(3)对管理业务中的各种数据进行分解;

(4)采用了层次分解的系统思想;

(5)用图形工具来分析和构建新方案。

结构化分析的图表工具主要由数据流程图、数据字典和数据处理说明组成。

2.面向对象系统分析方法的特点
(1) 强调系统开发的整体性和全局性

(2) 侧重于数据转换的过程而不是数据本身

(3) 系统的开发周期长

(4) 封装性

  对象的概念突破了传统数据与操作分离的模式。对象作为独立存在的实体,将自由数据和操作封闭在一起,使自身的状态、行为局部化。

(5) 继承性

  继承是面向对象特有的,亦是最有力的机制。通过类继承可以弥补由封装对象而带来的诸如数据或操作冗余的问题,通过继承支持重用,实现软件资源共享、演化以及增强扩充。

(6) 多态性

  同一消息发送至不同类或对象可引起不同的操作,使软件开发设计更便利,编码更灵活。

(7) 易维护性

  面向对象的抽象封装使对象信息隐藏在局部。当对象进行修改,或对象自身产生错误的时候,由此带来的影响仅仅局限在对象内部而不会波及其他对象乃至整个系统环境,这极大方便了软件设计、构造和运行过程中的检错、修改。

 

 

四、总结

综上所述,两种开发方法各有特点,结构化开发方法更适合解决较难、较复杂的功能性问题,降低开发难度,把开发过程变得简单。而面向对象开发方法则比较适合开发较大的工程,以对象为目标便于对工程进行维护,也使使用者易于理解。

 

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