结构化方法和面向对象方法之比较

 

结构化方法

软件工程结构化方法是一种在软件行业中早已普遍得到接受与应用的开发方法,是一种传统的软件开发方法,由结构化分析、结构化设计和结构化程序设计三部分有机结合而成。它的基本思想是把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下、逐层分解、使得每个阶段处理的问题都控制在人们容易理解和处理的范围之内。

l DFD

DFD全称是数据流图,是结构化分析方法中使用的工具,用来反映整个软件系统中数据在软件内部产生的逻辑流动过程,由于它只反映功能逻辑,所以在整个结构化方法中,DFD是结构化分析的产物。

 

 

上图就是一个数据流图,

其中方框表示数据源或宿(“宿”表示数据的终点)。代表系统之外的实体,可以是人、物或其他软件系统。通俗的可以理解为外部实体。

圆角矩形表示对数据的加工处理过程,注意这个加工针对的是数据,先接受数据,加工进行处理,然后再产生输出(也可不产生)。

箭头表示数据流。由一组成分固定的数据组成,而且具有方向性(流向),在DFD中,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。

另外,图中没有包含的一种元素,数据存储。表示数据的静态存储。

 

l DD

DD的全称是数据字典。数据字典是一种用户可以访问的记录数据库和应用程序元数据d额目录。它最重要的作用是作为分析阶段的工具,给数据流图上每个成分加以定义和说明。也就是说,DFD上每条数据流上运载的数据信息可以通过数据字典来进行查询,同样它也是结构化分析的产物。

l ERD

也叫E-R图,全称为实体关系图。它是一种用实体性,属性和联系等元素描述现实世界事物之间相互联系的概念模型。下图是一个典型的ERD

 

 

在结构化方法中,E-R图能够帮助程序员进行数据的分析和数据库的设计工作,可以认为是对数据流图中数据流信息的进一步分类与细化,然后建立数据之间的联系,是分析和设计阶段的产物。

 

l SC

SC全称是结构图。是数据流设计方法中使用的主要描述工具,专门用来描述软件的总体结构,表达软件的组成模块及其调用关系。

SC图中,矩形框来表示模块,带箭头的连线表示模块间的调用关系。在调用线的两旁,应标出传入和传出模块的数据流。

 

 

下面是结构化方法:

首先是结构化分析:

①分析当前的情况,做出反映当前物理模型的DFD

②推导出等价的逻辑模型的DFD

③设计新的逻辑系统,生成数据字典和基元描述;

④建立人机接口,提出可供选择的目标系统物理模型的DFD

⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;

⑥选择一种方案;

⑦建立完整的需求规约。

结构化设计:

①评审和细化数据流图;

②确定数据流图的类型;

③把数据流图映射到软件模块结构,设计出模块结构的上层;

④基于数据流图逐步分解高层模块,设计中下层模块;

⑤对模块结构进行优化,得到更为合理的软件结构;

⑥描述模块接口。

随着软件工程的发展,结构化方法具体表现出以下问题:

1.结构化方法是围绕实现处理功能的过程来构造系统的。然而,用户需求的变化大部分是针对功能的,因此,用结构化方法设计出的系统结构常常是不稳定的。

2.结构化方法定义了目标系统的边界,且开出发的系统结构依赖于对系统边界的定义,因此,很难把系统扩展到新的边界,系统较难修改和扩充。

3.结构化方法设计系统时,几乎每开发一个新的软件系统,都要针对具体系统作大量重复和繁琐的工作,思维成果的可重性差。

 

面向对象方法:

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

l UML

UML全称统一建模语言或标准建模语言,是面向对象方法中最重要与最主要的建模工具。

它有三种基本的构造块:事物、关系和图。

事物是对模型中最具有代表性的成分的抽象,包括结构事物,分组事物,注释事物。

关系用来把事物结合在一起,包括依赖、关联、泛化和实现关系。

UML图有各种分类:

活动图:类似于许多方法(包括面向对象技术之前的一些方法)中的工作流图。

状态图:对David Harel所提出状态图的改进。

类 图:综合了OMTBooch等面向对象方法中的类图。

序列图:描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

 

结构化设计从系统的功能入手,按照工程标准和严格规范将系统分解为若干功能模块。然而,由于用户的需求和软、硬件技术的不断发展变化,作为系统基本成分的功能模块很容易受到影响,局部修改甚至会引起系统的根本性变化。开发过程前期入手快而后期频繁改动的现象比较常见。

面向对象方法则从所处理的数据入手,以数据为中心来描述系统,数据相对于功能而言,具有更强的稳定性,这样设

计出的系统模型往往能较好地映射问题域模型。对象、类、继承性、多态性、动态定连概念和设施的引入使用,显然令面向对象的设计方法具有一定的优势,

能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途径。

 

霍迎旦. 软件工程中结构化方法与面向对象方法之比较[C]. 内蒙古:内蒙古电大学刊, 2007.

 

posted @ 2016-12-12 19:23  菜豆客  阅读(288)  评论(0)    收藏  举报