结构化方法与面向对象方法之应用比较

  软件的开发对于整个软件产业的发展,起着至关重要的作用,在开发过程中,需要有各种开发工具、开发方法和开发过程的支持。不管是开发工具、开发方法还是开发过程,都一直在不断的发展和更新。在软件开发方法发展的过程中,产生了许多众所周知的开发方法,如结构化方法,原型法,面向数据结构的Jackson方法、面向对象方法等。其中,结构化方法和面向对象方法是两种应用十分广泛的软件开发方法,未来的软件开发过程中,可能还会出现一些更好的软件开发方法,如现在的面向服务的软件开发方法,但就目前来说,结构化方法和面向对象方法仍是我们在软件开发过程中应用最广泛的两种开发方法。本文首先对结构化方法和面向对象方法进行详细的介绍,并在此之后将这两种方法进行比较,分析其在不同的问题中的优劣。

1.结构化方法

  结构化方法是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化编码三部分有机组合而成的。它的基本思想是把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都是一个相对独立且易于分析的模块。C语言就是一个十分典型的结构化高级语言。

1.1结构化分析(SA)

  结构化分析方法给出一组帮助系统分析人员产生功能规约的原理与技术,是一种需求分析方法。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、判定表以及判定树等。

1.1.1数据流图

数据流图是一种分层的建立系统逻辑模型的方法,它从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的变换过程。它可以利用少数几种符号综合的反映出信息在系统中的流动、处理和存储的情况。数据流程图具有抽象性和概括性。

数据流图是以图形的方式来表示,那么每个特定的图形都有它特定的意义,因此数据流图包含特定的元素:

→:数据流。是由一组固定成分的数据组成,但不能改变其数值,箭头的方向表示数据的流向,箭头的始点和终点分别代表数据流的源和目标。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有合适的名字,以反映数据流的含义。

  □:外部实体。代表系统之外的实体,可以是人、物或其它系统软件,他指出数据所需要的发源地或系统所产生的数据归属地,即数据的源头和数据最终要到达的目的地。

  ○:对数据进行加工处理。加工是对数据进行处理的单元,它接受一定的数据输入,对其进行处理,并产生输出。

  =:数据存储。表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等。

  如图所示即为一在线书店管理系统的顶层数据流图

  数据流图的制作步骤为:

  由外部实体,确定数据流的源头和终点;

  从外部实体的输入流出发,按照系统的逻辑需要,逐步画出一些列逻辑处理过程,直到找到外部实体的输出流,形成数据流的封闭。

  再将系统内部数据处理看做整体功能,其内部又有信息的处理、传递和存储。

  这样一级一级的剖析,直至所有步骤都很具体为止。

1.1.2数据字典

  数据字典,即为数据所建立的描述信息,目的是为了对数据流程图中的各个元素做出详细的说明,它对对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述。

1.1.3判定表

  判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。它是一个表格,最左侧一栏包含所有判定项和动作名称,右侧上部则是所有条件的组合情况,右侧下部则表示在当前条件下是否执行此动作的表项。

1.1.4判定树

  判定树又称决策树,它适合描述问题处理中具有多个判断,而且每个决策与若干条件有关。使用判定树进行描述时,应该从问题的文字描述中分清哪些是判定条件,哪些是判定的决策,根据描述材料中的联结词找出判定条件的从属关系、并列关系、选择关系,根据它们构造判定树。

1.1.5分析步骤

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

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

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

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

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

  ⑥选择一种方案;

  ⑦建立完整的需求规约。

1.2结构化设计(SD)

  结构化设计,即根据SA方法中的数据流图建立一个良好的模块结构图(如SC图);运用模块化的设计原理控制系统的复杂性,即设计出模块相对独立的,模块结构图深度,宽度都适当的,单入口单出口的,单一功能的模块结构的软件结构图或软件层次方框图。此方法提供了描述软件系统的工具,提出了评价模块结构图质量的标准,即模块之间的联系越松散越好,而模块内各成分之间的联系越紧凑越好。最终的任务就是将需求分析得到的数据流图DFD变换为系统结构图(SC)。

  进行结构化设计主要遵循以下这么几个原则:

  ①抽象化

    过程抽象化:将任何一个完成的功能都看作一个实体

    数据抽象化:可以在不同层次上对数据进行描述

  ②自顶向下,逐步细化

    以自顶向下的方式,对各个层次的过程细节和数据细节逐层细化。

  ③模块化

  将整个系统分为若干个简单的独立的模块

1.2.1概要设计

以需求分析的结果为出发点,构造出一个具体的系统设计方案,决定系统的模块结构(包括决定模块的划分、模块间的数据传递及调用关系)。

1.2.2详细设计

详细设计即过程设计,在总的设计基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图。

1.3.结构化编码(SP)

作为软件制造工程的一个重要阶段,程序编码是程序设计的继续。程序代码的质量与软件系统外部设计和内部设计的质量直接相关,同时,程序设计语言的特性和程序员的编码水平,程序代码的可读性、可维护性、可靠性、可测试性都是直接影响程序质量的因素。

结构化编码采用自顶向下、逐步细化的方法,先全局,后局部,先整体,后细节,先抽象,后具体,逐步求精,编制出来的程序具有清晰的逻辑层次结构,容易阅读、理解、修改和维护,可以提高软件质量,提高软件开发的成功率和生产性。

如图所示即为结构化编码的形式,而这种编码的形式通常以函数的形式来实现

  向下可以继续细分

2.面向对象方法

  说道面向对象方法,就不得不提到面向对象了,那么什么是面向对象?面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。面向对象方法就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统的方法。

2.1面向对象分析(OOA)

  面向对象分析阶段是通过行为分析法认定对象及他们之间的关系。面向对象的分析模型通常使用UML的建模方法进行建模。

2.1.1用例图

  使用用例图从用户角度描述系统功能并指出各功能的操作者。用例图是指用户使用系统时所执行的一个与行为相关的事物序列,这个序列是在与系统的会话中完成的。

  用例图包括用例和角色两个要素,角色与用例之间的连接,用例之间的使用和扩展关系,通过角色执行用例,可以识别出不同的用例。

2.1.2类图

  类图描述了系统中的类及其相互之间的关系,其本质反映了系统中对象的类型以及对象之间的各种静态关系。

2.1.3顺序图

  顺序图表示对象之间交互的顺序。是将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。

2.1.4活动图

  描述满足用例功能需求所要进行的相关活动。是阐明了业务用例实现的工作流程。业务工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个或多个备选工作流程。工作流程的结构使用活动图来进行说明。

2.1.5遵循原则

  抽象:指为了某一分析目的而集中精力研究对象的某一性质,它可以忽略其它与此目的无关的部分。抽象是我们科学地研究和处理复杂问题的重要方法。抽象机制被用在数据分析方面,称之为数据抽象。数据抽象是OOA的核心。数据抽象把一组数据对象以及作用其上的操作组成一个程序实体。使得外部只知道它是如何做和如何表示的。

  封装:即信息隐蔽。它是指在确定系统的某一部分内容时,应考虑到其它部分的信息及联系都在这一部分的内部进行,外部各部分之间的信息联系应尽可能的少。

  继承:是指能直接获得已有的性质和特征而不必重复定义它们。OOA可以一次性地指定对象的公共属性和方法,然后再特化和扩展这些属性及方法为特殊情况,这样可大大地减轻在系统实现过程中的重复劳动。在共有属性的基础之上,继承者也可以定义自己独有的特性。

2.2面向对象设计(OOD)

  面向对象设计与面向对象分析采用一致的概念,原则和表示方法,二者之间并没有很大的区别,不需要从分析文档到设计文档的转换,二者之间也不强调严格的阶段划分。能体现二者之间关系的是近几年提出的一种新的软件生命周期模型——喷泉模型(如图所示),其中分析与设计这两个水泡表明OOA与OOD没有严格的边界,他们是连续的、无缝的、允许有一定的相交(一些工作既可以看作是OOA的,也可以看作是OOD的)。

  面向对象的设计方法是OO方法中一个中间过渡环节。其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。即确定对象结构、属性、方法等内容,对之前的模型进行优化等。

2.3面向对象编码(OOP)

  面向对象程序设计是一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

3.结构化方法与面向对象的方法

  结构化方法与面向对象方法作为两种经典的软件开发方法,各有优缺点。结构化方法是基于功能的分解和抽象,其建立的模型比较只管、简单、可读性好,有利于客户和开发人员交流,能够把一个复杂的系统用多个满足独立性要求的小模块来实现,能有有效的提高软件的开发质量。然而由于用户的需求往往在不断的变化,这些模块很容易受到影响,有可能因为用户的一个小小的改变,整个模块需要重新构建,这大大降低了软件的可维护性和可重用性。

面向对象方法主要是基于对象的交互,以数据为中心来描述系统,数据相对于功能而言,有更强的稳定性,因此可以在模型的基础上直接映射出源码,容易进行系统维护和系统构件重用,大大提高了软件的开发效率,更加容易适应改变。但是并不是所有项目都适合用面向对象方法进行开发,例如在大型信息管理系统中,若缺乏整体系统模块的设计划分,容易造成系统各模块结构不合理等问题,同时建模也会相对复杂,较难理解,正确性难以保证。

在执行效率上来说,结构化方法比面向对象方法产生的代码更直接,更高效。从应用的范围看,结构化方法适用于数据少而操作多的问题。时间证明对于像操作系统这样的以功能为主的系统,结构化方法比较适应它。面向对象方法正好相反,对于数据库,信息管理等以数据为主的而操作较少的系统,用面向对象方法描述要好于结构化方法。

时间: 2024-12-19 07:28:39

结构化方法与面向对象方法之应用比较的相关文章

结构化方法和面向对象方法在软件开发中的对比

学习过C语言和JAVA的同学们一定清楚,这两种语言代表了两种不同的开发方式,即以C语言为代表的结构化开发方法和JAVA代表的面向对象的开发方法.由于二者在程序结构上有着很大的区别,因此,在软件开发领域中,根据自己的需求来选择合理的开发方式就显得尤为重要. 开发软件通常有三个层次: 1.满足用户需求 2.可维护性,即可修改性,让软件能随着用户需求的变更而容易改变 3.可重用性(在其它软件中,能尽量重用该软件的模块) 通过对软件的这三个主要层次的分析,我们就能在实际开发中确定我们的选择. 结构化方法

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

结构化方法和面向对象方法的比较 结构化方法 1概述        结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化分析.结构化设计和结构化程序设计三部分有机组合而成的.它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内. 2基本思想 结构化方法的基本要点是:自顶向下.逐步求精.模块化设计.结构化编码. 结构化分析方法是以自顶向下,逐步求精为基点,以一系列经过实践的考验被认为是正确的原理和技术为支

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

在软件开发的过程中,采用的开发方法主要有两种,分别为结构化开发方法和面向对象的开发方法,本文将对两种开发方法进行介绍和比较. 一.      结构化方法介绍 结构化方法,即面向过程开发是最早最传统的软件开发方法,由结构化分析,结构化设计和结构化程序设计三个部分有机的组合而成,它将软件分为多个过程进行开发,是迄今为止信息系统中应用最普遍,最成熟的一种软件开发方法. 1.1结构化分析 结构化分析(SA)是一种面向功能或面向数据流的需求分析方法,它是结构化方法中的一部分,是由1960到70年代的系统分

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

结构化方法与面向对象方法之比较 姓名  周子硕   学号  14061031 软件开发的过程中,结构化方法和面向对象方法先后被提出,为解决不同的软件开发问题带来了不同的思路.下面是对于结构化方法和面向对象方法的认识和比较. 结构化方法的基本要点是对现实世界的营运问题进行分解,面向过程设计问题空间的解域,强调自顶向下.逐步求精.模块化设计.结构化方法将待解决的问题看做一个系统,从而用系统科学的思想方法来分析和解决问题.结构化方法循序以下基本原则: 抽象原则: 抽象原则是一切系统科学方法都必须遵循的

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

结构化方法 结构化方法是一种传统的软件开发方法,这种方法强调的是自顶向下.逐步求精.模块化设计.结构化编码的思想与要点.结构化软件开发方法可以说是最早的软件开发方法,同时也是到现今开发应用中比较普遍.比较成熟的软件开发方法,由结构化方法所引入的工程与结构化的思想对于软件的设计.开发与编写都有很大的影响. 结构化方法中自顶向下的思想将程序的设计分层,将程序的功能分解,程序变成了一种逐步向下,从概况到详细的过程.而结构化方法中的模块化设计将程序所需要的各种功能分解,将一个系统划分为若干个模块,每一个

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

结构化方法与面向对象方法的比较 引言 结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化分析.结构化设计和结构化程序设计三部分有机组合而成的.它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内. 面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在"对象"

结构化方法与面向对象方法的介绍与对比

结构化和面向对象,这两个概念在计算机领域的中应用十分广泛.在软件工程中,结构化和面向对象的思想也占有重要地位,产生了结构化方法和面向对象方法,用来指导软件生产. 一.结构化方法 结构是指系统内各个组成要素之间的相互联系.相互作用的框架.结构化方法强调开发方法的结构合理性以及所开发软件的结构合理性.针对软件生存周期各个不同阶段,可以分为结构化分析(SA).结构化设计(SD).结构化程序设计(SP)等方法. 1.1结构化分析方法 结构化分析方法是面向数据流的分析方法,是70年代由Yourdon.Co

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

结构化方法和面向对象方法之比较 我们都知道,结构化方法和面向对象方法是当前程序设计中主流的两大设计方法,编写程序的时候,我们根据所编写的程序来选择适当的方法进行开发,来获得最大的效率.本文就结构化方法和面向对象方法的特点和过程,分析比较了该两种方法的优劣. 一.结构化方法 结构化方法按生命周期划分由结构化分析(SA).结构化设计(AD).结构化程序设计(SP)三部分组成.系统按功能需求分解成若干个子功能模块,子模块再继续进行分解,如此循环直至模块功能变得非常具体,由综合变得单一.这种分解自顶向下

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

结构化方法和面向对象方法都是现在软件工程领域应用比较广泛的软件开发方法,要探讨两者的区别,必须先把两者的概念搞清. 首先对比一下两者的基本原则: 一.基本原则 1.结构化方法遵循的基本原则 结构化方法的基本思想就是将待解决的问题看作一个系统从而用系统科学的思想方法来分析和解决问题结构化方法遵循以下基本原则(1)抽象原则 抽象原则是一切系统科学方法都必须遵循的基本原则它注重把握系统的本质内容而忽略与系统当前目标无关的内容它是一种基本的认知过程和思维方式(2)分解原则 分解原则是结构化方法中最基本的