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

学习过C语言和JAVA的同学们一定清楚,这两种语言代表了两种不同的开发方式,即以C语言为代表的结构化开发方法和JAVA代表的面向对象的开发方法。由于二者在程序结构上有着很大的区别,因此,在软件开发领域中,根据自己的需求来选择合理的开发方式就显得尤为重要。

开发软件通常有三个层次:

1.满足用户需求

2.可维护性,即可修改性,让软件能随着用户需求的变更而容易改变

3.可重用性(在其它软件中,能尽量重用该软件的模块)

通过对软件的这三个主要层次的分析,我们就能在实际开发中确定我们的选择。

结构化方法

结构化方法简述

结构化方法是对现实的问题进行分解,面向过程设计空间的解域,强调自顶向下,逐步求精和模块化设计,是一种以数据流图,数据字典,结构化语言,判定表,判定树等图形表达为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。

结构化方法分析步骤

面向应用,分解需求(SA):

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

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

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

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

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

  ⑥选择一种方案;

  ⑦建立完整的需求规约。

细化分析结果,过渡软件结构(SD):

  ①评审和细化数据流图;

  ②确定数据流图的类型;

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

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

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

  ⑥描述模块接口。

可以看出,数据流图(DFD)是结构化方法的核心,整个分析过程都是以数据流图作为工具。数据流图以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果。

数据流图有两种典型结构,一是变换型结构,它所描述的工作可表示为输入、主处理和输出,呈线性状态。另一种是事务型结构,这种数据流图呈束状,即一束数据流平行流入或流出,可能同时有几个事务要求处理。

变换型结构数据流图

事务型结构数据流图

在完成数据流图的构造后,我们就需要将需求逐步细分,逐层实现,至此就完成全部设计的步骤,之后只需要实现具体的功能即可。整体结构如下图所示:

图中每个圈对应一个数据流图

结构化方法的基本原则

(1)抽象原则

抽象原则是一切系统科学方法都必须遵循的基本原则它注重把握系统的本质内容而忽略与系统当前目标无关的内容它是一种基本的认知过程和思维方式。

(2)分解原则

分解原则是结构化方法中最基本的原则它是一种先总体后局部的思想原则在构造信息系统模型时它采用自顶向下分层解决的方法。

(3)模块化原则

模块化是结构化方法最基本的分解原则的具体应用它主要出现在结构化设计阶段中其目标是将系统分解成具有特定功能的若干模块从而完成系统指定的各项功能。

结构化方法的优势和缺陷

优点:

①强调系统开发过程的整体性和局部性,强调在整体优化的前提下来考虑具体的分析设计问题。即自顶向下的观点。

②强调开发过程各阶段的完整性和顺序性,强调严格地区分开发阶段,严格地进行系统分析和设计,及时总结,及时问题反馈和纠正,从而避免了开发过程的混乱状态。

③把客观世界的问题抽象成计算机可以处理的过程,处理问题的基本单位是能清晰表达过程的模块,用模块的层次结构概括,模块或模块间的关系和功能。

④结构化方法比面向对象方法产生的可执行代码更直接,更高。所以对于一些嵌入式的系统,结构化方法产生的系统更小,运行效率更高。

缺陷:

①它的起点太低,致使系统开发周期过长而带来一系列问题。

②它要求系统开发者在早期调查中就要充分的掌握用户需求、管理状况以及预见能发生的变化,这是不太符合人们循序渐进地认识事务的客观规律性。

③采用结构化方法的系统难以修改和扩充。结构化分析与设计清楚定义了系统的接口,当系统对外界接口发生变动时,往往造成系统结构较大变动,难以扩充新的功能接口。采用结构化方法的系统可复用性较差。结构化方法将数据和操作分离,导致一些可重用的软件构件在特定具体应用环境才能应用,降低了软件的可重用性。

④结构化方法适用于数据少而操作多的问题,而对于数据库,信息管理等以数据为主的而操作较少的系统,结构化方法则不太适用。

总而言之,在实际开发中,如果目标系统有功能确定,完成后基本不需要改动,要求的效率和准确度较高,不要求使用大量的数据,结构清晰,小而精,允许的开发周期足够长等特点,适合使用结构化方法。例如:底层系统、嵌入式系统、机械控制系统等。

面向对象方法

面向对象方法简述

使用现实世界的概念抽象的思考问题从而自然的解决问题。强调模拟现实世界中的概念而不强调过程和算法,支持重用。思想上,面向对象方法更加贴近实际情况,从实际情况入手。是一种建立在“对象”概念基础上的方法学。

结构化方法分析步骤

立足应用,刻画问题(OOA):

  ①确定问题域。

  ②区分类和对象

  ③区分整体对象以及组成部分,确定类的关系以及结构

  ④定义属性和服务

  ⑤确定附加的系统约束

细化分析结果,补充实现相关(OOD):

  ①改进和完善系统分析结果

  ②设计交互过程和用户接口

  ③设计任务管理,以及子系统与任务之间的协调方式

  ④设计全局资源,确定任务或子系统的资源分配

  ⑤对象设计

在面向对象方法设计上,我们常用的工具是UML图,UML图设计中的对象结构如下图所示:

在结束设计后我们就可以根据设计来实现我们的对象了。面向对象方法在设计上会和设计文档结合较为紧密,封装好的对象内部信息只能通过相应的方法和接口进行查看和改变,更加接近现实世界的操作。下图是面向对象方法的大致图解:

面向对象方法的基本原则

(1)抽象

抽象是处理现实世界复杂性的最基本方式在OO方法中它强调一个对象和其他对象相区别的本质特性对于一个给定的域确定合理的抽象集是面向对象建模的关键问题之一

(2)封装

封装是对抽象元素的划分过程抽象由结构和行为组成封装用来分离抽象的原始接口和它的执行。

封装也称为信息隐藏Information Hiding它将一个对象的外部特征和内部的执行细节分割开来并将后者对其他对象隐藏起来

(3)模块化

模块化是已经被分为一系列聚集的和耦合的模块的系统特性对于一个给定的问题确定正确的模块集几乎与确定正确的抽象集一样困难通常每个模块应该足够简单以便能够被完整地理解

(4)层次

抽象集通常形成一个层次,层次是对抽象的归类和排序。在复杂的现实世界中有两种非常重要的层次一个是类型层次另一个是结构性层次 。确定抽象的层次是基于对象的继承,它有助于在对象的继承中发现抽象间的关系,搞清问题的所在理解问题的本质

面向对象方法的优势和缺陷

优点:

①强调从现实世界中客观存在的事物(对象)出发来认识问题域和构造系统,这就使系统开发者大大减少了对问题域的理解难度,从而使系统能更准确地反映问题域。

②运用人类日常的思维方法和原则(体现于OO方法的抽象、分类、继承、封装、消息通讯等基本原则)进行系统开发,有益于发挥人类的思维能力,并有效地控制了系统复杂性。

③对象的概念贯穿于开发过程的终,使各个开发阶段的系统成分具良好的对应,从而显著地提高了系统的开发效率与质量,并大大降低系统维护的难度。

④对象概念的一致性,使参与系统开发的各类人员在开发的各所段具有共同语言,有效地改善了人员之间的交流和协作。

⑤对象的相对稳定性和对易变因素隔离,增强了系统的应变能力。

⑥ 对象类之间的继承关系和对象的相对独立性,对软件复用提供了强有力的支持。

缺陷:

①面向对象方法,通过编译器实现代码的面向对象性。也就是说经过编译器后,代码会被翻译为相对应的结构化代码。所以要熟练开发,还要懂一定的结构化方法做为基础。

②面向对象方法比结构化对象方法复杂,难于理解。

③从执行效率来说,面向对象方法的执行效率较低

④需要一定的软件支持环境。

⑤不太适宜大型的MIS开发,若缺乏整体系统设计划分,易造成系统结构不合理、各部分关系失调等问题。

⑥由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小的都开销很大。

总而言之,在实际开发中,如果目标系统有需求比较灵活,执行效率要求较低,需要经常升级或者改动要求管理和使用较多的数据,系统需要较多的功能,数据多操作少等特性就比较适合面向对象的开发方式。例如:数据库,平常使用的APP、游戏等。

时间: 2024-07-30 10:17:16

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

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

一. 引言 在软件开发过程中,有很多不同的软件开发方法.选取合适的软件开发方法,对于软件开发的过程和结果有着非常重要的影响.我们知道自软件工程发展以来诞生了很多不同的软件开发方法,例如具有代表性的结构化方法.面向对象方法,以及其他的原型法.面向数据结构的Jackson方法.基于模型的VDM方法等.而结构化方法和面向对象方法在软件开发过程中的应用是最广泛的,因而了解两者的区别与联系,并将两者更好的结合是长期以来软件开发人员津津乐道的话题.所以我们今天来探讨一下结构化方法与面向对象方法之间的一些区别

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

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

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

软件开发方法指:在项目投资规模和时间限制内,设计.实现符合用户需求的高质量软件,根据软件开发的特点,提出的多种软件开发策略.在计算机软件领域,很多新的方法与技术都起源于程序设计语言,这种发展趋势具有十分重要的意义,它使那些富有生命力的新方法和新技术就此形成自己系统化的技术体系,它极大地推动了计算机软件技术的发展. 结构化方法和面向对象方法都是计算技术中常用的软件开发方法,两种开发方法目前都非常流行,选择哪一种方法要根据分析者的熟练程度和项目的类型而定.就目前而言,十全十美的开发方法是不存在的,真

Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使用,犹如盲人摸象,虽然都对,但是并不完整 1. 瓦哈比教派的核心思想1 1.1. 归一化,反对多神..反对邪教与不良的 修炼方式1 1.2. 规范化,标准化最佳实践 圣训立国,依法治国1 1.3. 主张整肃社会风尚,净化人们的"心灵1 1.4. 倡导团结,团队建设1 1.5. 回归传统,轻量化1 2

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

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

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

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

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

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

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

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

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

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