结构化方法与面向对象方法的比较
一、结构化方法:
结构化方法(Structured Methodology)采用了系统科学的思想方法,从层次的角度,自顶向下地分析和设计系统。结构化方法包括结构化分析(Structured Analysis,简称 SA)、结构化设计(Structured Design,简称SD)和结构化程序设计(Structured Program Design,简称 SP)三部分内容。其中,SA和SD主要属于学科抽象的内容,SP则主要属于学科设计方面的内容。[1]
结构化方法遵循抽象原则,分解原则以及模块化原则,模型构建是结构化方法的核心,建模是为了更好地模拟现实世界。其大致过程是,先使用SA方法构建系统的环境模型,然后使用SD方法,确定系统的行为和功能模型;最后用SP方法进行系统的设计。
1.1结构化分析方法(SA):
结构化分析方法给出了一系列帮助系统分析人员产生功能规约的原理与技术。主要步骤如下:①分析当前的情况,做出反映当前物理模型的DFD;②推导出等价的逻辑模型的DFD;③设计新的逻辑系统,生成数据字典和基元描述;④建立人机接口,提出可供选择的目标系统物理模型的DFD;⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;⑥选择一种方案;⑦建立完整的需求规约。
1.2结构化设计方法(SD):
结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。主要步骤如下:①评审和细化数据流图;②确定数据流图的类型;③把数据流图映射到软件模块结构,设计出模块结构的上层;④基于数据流图逐步分解高层模块,设计中下层模块;⑤对模块结构进行优化,得到更为合理的软件结构;⑥描述模块接口。
1.3 结构化程序设计(SP):
结构化程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。它的三种基本结构是:顺序结构、选择结构和循环结构。
1.4可能用到的图形结构有:
a. 数据流图(DFD):
它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
b. 数据字典(DD):
数据字典就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。数据字典有四类条目:数据流、数据项、数据存储、基本加工。
c. 实体联系图(ER图):
它是表示概念模型的一种方式,用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。
二、面向对象方法:
软件工程中的面向对象方法,主要思想是,使用现实世界的概念抽象地思考问题从而自然地解决问题。强调模拟现实世界中的概念而不强调过程或算法,支持重用。涉及到从面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)、面向对象测试(Object Oriented Testing,OOT)到面向对象软件维护(Object Oriented Software Maintenance,OOSM)的全过程。
2.1 面向对象分析(OOA):
OOA方法是把实体—关系图中的概念与面向程序设计语言中的主要概念结合在一起而形成的一种分析方法。在该方法中采用了实体、关系和属性等信息模型分析中的概念,同时采用了封闭、类结构和继承性等面向对象程序设计语言中的概念。它的5个基本步骤为①确定问题域②区分类和对象③区分整体对象以及组成部分④定义属性和服务⑤确定附加的系统约束
2.2 面向对象设计(OOD):
设计阶段则主要是确定实现用户需求的方法,即怎样做才能满足用户需求,并构造出系统的实现蓝图。OOD首先从OOA的结果开始,并将其从问题域映射到实现域;为满足实现的需要,还要增加一些类 、结构及属性和服务,并对原有类及属性进行调整。此外,还要完成应用控制、人机交互界面的设计等。OOA与OOD采用一致的表示法,使得从OOA到OOD不存在转换,只有局部的修改或调整,并增加了与实现有关的独立部分,因此,OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,成为面向对象方法的主要优势。
2.3 面向对象编程(OOP):
这是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
2.4 面向对象测试(OOT):
这是指对于运用OO技术开发的软件,在测试过程中继续运用OO技术进行以对象概念为中心的软件测试。它以类作为基本测试单位,集中检查在类定义之内的属性、服务和有限的对外接口,大大减少了错误的影响范围。
2.5 面向对象软件维护(OOSM):
软件维护的最大难点在于人们对软件的理解过程中所遇到的障碍,在面向对象方法中,各阶段采用的表示是一致的,从而大大降低了理解的难度。
三、两方法的比较:
3.1不同点:
- 遵循的基本原则不同:
结构化方法遵循的基本原则有:抽象原则,分解原则以及模块化原则。面向对象模型遵循的基本原则有:抽象,封装,模块化,层次。
b. 处理问题的基本单位不同:
面向对象方法是用计算机逻辑来模拟客观世界中的物理存在,以对象的集合类作为处理问题的基本单位,期望计算机世界进一步向客观世界靠拢,以使问题的处理更直截了当些;而结构化方法则把客观世界的问题抽象成计算机可以演绎和处理的过程,处理问题的基本单位是能清晰表达过程的模块。
c. 数据的处理方式不同
面向对象方法将数据与对应的代码封装成一个能动的整体对象,原则上其他对象不能直接修改其数据,即对象的修改只能由自身的成员函数来完成;而结构化方法则是直接通过程序来处理数据,处理完毕后便可显示处理结果。
d. 一般采用的程序设计语言不同:
软件工程中的结构化方法,一般在程序设计阶段,采用的是结构化程序设计语言,典型的如C语言,而面向对象方法,采用的是面向对象程序设计语言,如Java语言。不同的语言使得设计过程出现差异。
3.2 相同点:
a.相同的预定目标:
向对象方法与结构化方法都是把客观世界中要解决的问题转向计算机上的实现作为预定目标。从抽象的意义上讲,面向对象方法与结构化方法从实现预定目标和组成上是完全一致的。[2]
b. 都具有重用性
重用性即复用性。复用性是软件或软件构件能够容易地构造其他新软件的一种能力。重用性与局部化密切相关,重用性是以局部化为基础的,即只有采用局部化设计原则,才有可能使被设计的软件具有重用性。在面向对象方法中,重用性往往是通过类继承和对象组合两个最基本的技术来实现的,而在结构化方法中,多通过基本模型的组合实现重用。
参考文献:
【1】 汪寒昊,谢加胜,邢跃.软件开发方法:结构化方法与面向对象方法比较[J].科技信息,2011,(第13期).
【2】 贺启宝,王军.面向对象方法与结构化方法[J].佛山科学技术学院学报(自然科学版),2004,(第4期).