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

合集下载

结构化和面向对象的系统分析设计方法的对比

结构化和面向对象的系统分析设计方法的对比

结构化方法和面向对象方法的对比1 结构化和面向对象的方法1.1 结构化方法结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界。

用结构化开发能提高软件的运行效率,且能够增加软件系统的可靠性。

结构是指系统内各个组成要素之间的相互联系、相互作用的框架。

结构化的系统分析设计方法是一种传统的系统开发方法。

针对软件生存周期各个不同的阶段,有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。

它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。

1.1.1 结构化分析结构化分析是面向数据流进行需求分析的方法,主要采用数据流图DFD (Data Flow Diagram)来描述边界和数据处理过程的关系。

结构化分析的主要工作是使用数据流程图、数据字典、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。

1.1.2 结构化设计结构化设计是将数据流图表示的信息转换成程序结构的设计描述,和功能的实现方法,并且采用系统结构图表示系统所具有的功能和功能之间的关系。

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

第二步详细设计,即过程设计。

在总体设计的基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图1.2 面向对象方法面向对象方法是从内部结构上模拟客观世界,其基本思想为:对象是对现实世界客观实体的描述,均由其属性和相关操作组成,是系统描述的基本单位。

面向对象方法更强调运用人类在日常的逻辑思维中经常采用的思想方法和原则,例如抽象、分类、继承、聚合、封装等,这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。

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

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

结构化⽅法与⾯向对象⽅法的介绍与对⽐结构化⽅法与⾯向对象⽅法的介绍与对⽐结构化和⾯向对象,这两个概念在计算机领域的中应⽤⼗分⼴泛。

在软件⼯程中,结构化和⾯向对象的思想也占有重要地位,产⽣了结构化⽅法和⾯向对象⽅法,⽤来指导软件⽣产。

⼀、结构化⽅法结构是指系统内各个组成要素之间的相互联系、相互作⽤的框架。

结构化⽅法强调开发⽅法的结构合理性以及所开发软件的结构合理性。

针对软件⽣存周期各个不同阶段,可以分为结构化分析(SA)、结构化设计(SD)、结构化程序设计(SP)等⽅法。

1.1结构化分析⽅法结构化分析⽅法是⾯向数据流的分析⽅法,是70年代由Yourdon、Constaintine及DeMarco 等⼈提出和发展,并得到⼴泛的应⽤,其基本思想为分解和抽象。

结构化分析⽅法的设计原则有:(1)使每个模块尽量只执⾏⼀个功能(坚持功能性内聚);(2)每个模块⽤过程语句(或函数⽅式等)调⽤其他模块;(3)模块间传送的参数作数据⽤;(4)模块间共⽤的信息(如参数等)尽量少。

在结构化分析⽅法中,常⽤的⼯具有:数据流图数据流图(Data Flow Diagram,简称DFD)是描述系统中数据流程的图形⼯具,它标识了⼀个系统的逻辑输⼊和逻辑输出,以及把逻辑输⼊转换逻辑输出所需的加⼯处理。

通常,⼀个系统的DFD图会进⾏分层设计,使数据处理过程更加有层次,逻辑更加清晰。

DFD图的设计原则为:数据守恒与数据封闭原则、加⼯分解的原则、⼦图与⽗图的平衡、合理使⽤⽂件。

数据字典分层数据流图只是表达了系统的“分解”,为了完整地描述这个系统,还需借助“数据词典”(data dictionary)对图中的每个数据和加⼯给出解释。

对数据流图中包含的所有元素的定义的集合构成了数据词典。

它有四类条⽬:数据流、数据项、⽂件及基本加⼯。

在定义数据流或⽂件时,使⽤下表给出的符号,将这些条⽬按照⼀定的规则组织起来,构成数据词典。

在以上⼯具的辅助下,我们可以进⾏完整的结构化分析,⼀个典型的结构化分析过程为:①分析当前的情况,做出反映当前物理模型的DFD;②推导出等价的逻辑模型的DFD;③设计新的逻辑系统,⽣成数据字典和基元描述;④建⽴⼈机接⼝,提出可供选择的⽬标系统物理模型的DFD;⑤确定各种⽅案的成本和风险等级,据此对各种⽅案进⾏分析;⑥选择⼀种⽅案;⑦建⽴完整的需求规约。

软件工程 比较结构化方法和面向对象

软件工程 比较结构化方法和面向对象

软件工程比较结构化方法和面向对象一、引言软件工程是一门关注软件开发过程的学科,它涉及到软件开发的各个方面,包括需求分析、设计、编码、测试和维护等。

在软件工程领域中,有两种主要的开发方法:比较结构化方法和面向对象方法。

本文将对这两种方法进行详细的比较和分析。

二、比较结构化方法1.概念结构化方法是一种基于模块化设计思想的软件开发方法。

它将一个大型系统划分为多个小模块,每个模块都有明确的输入和输出,并且通过调用其他模块来实现其功能。

2.特点(1)强调程序流程控制;(2)采用自顶向下或自底向上的设计方式;(3)使用层次结构图表示程序流程;(4)采用数据流图表示数据流动情况;(5)模块之间通过参数传递来交换信息。

3.优缺点①易于理解和维护;②适合大型系统开发;③能够提高程序可读性。

(2)缺点:①不够灵活,难以应对需求变更;②不支持复杂的数据类型;③容易出现模块间的耦合。

三、面向对象方法1.概念面向对象方法是一种基于对象思想的软件开发方法。

它将一个系统看作是由多个对象组成,每个对象都有自己的属性和方法,并且通过消息传递来实现对象之间的交互。

2.特点(1)强调数据抽象和封装;(2)采用自下而上的设计方式;(3)使用类图表示程序结构;(4)采用序列图表示消息传递过程;(5)支持继承和多态等高级特性。

3.优缺点①能够提高代码重用性;②支持动态绑定,具有更好的灵活性;③能够提高系统可扩展性。

(2)缺点:①易于出现类爆炸问题;②需要掌握较为复杂的概念和技术。

四、比较分析1.设计思想不同结构化方法注重程序流程控制,通过模块化设计来实现程序结构清晰、易于维护。

而面向对象方法则注重数据抽象和封装,通过对象之间的交互来实现程序功能。

2.设计方式不同结构化方法采用自顶向下或自底向上的设计方式,通过层次结构图和数据流图来表示程序结构和数据流动情况。

而面向对象方法则采用自下而上的设计方式,通过类图和序列图来表示程序结构和消息传递过程。

结构化方法和面向对象方法的特点、优点与不足。

结构化方法和面向对象方法的特点、优点与不足。

结构化方法和面向对象方法的特点、优点与不足。

结构化方法和面向对象方法是两种重要的程序设计方法,它们分别有各自独特的特点、优点和不足。

在本篇文章中,我将对这两种方法进行全面评估,并据此撰写一篇有价值的文章,以便你能更深入地理解这个主题。

一、结构化方法1. 特点结构化方法是一种从任务分解的角度来思考问题的方法。

它强调程序的模块化和层次化设计,将整个系统划分成若干个较小的、相对独立的模块或功能单元,然后逐步细化这些模块,直至得到可直接转换成程序的模块为止。

2. 优点(1)易于理解和维护:结构化程序易于理解和维护,因为每个模块都相对独立,不会相互影响。

(2)适合大型项目:结构化方法适合大型项目的开发,因为它能够将复杂的系统分解成若干相对简单的模块,便于团队协作。

(3)代码重用:结构化方法能够促进代码的重用,提高开发效率。

3. 不足(1)难以处理复杂关联:结构化方法在处理复杂关联和交互较多的系统时,容易使得程序的结构变得复杂,不易理解和维护。

(2)不够灵活:结构化方法在应对需求变化时,不够灵活,需要重新调整模块之间的关系。

二、面向对象方法1. 特点面向对象方法是一种从对象抽象的角度来思考问题的方法。

它将系统中的各种实体抽象为对象,这些对象包含了数据和操作这些数据的方法,同时也能够与其他对象进行交互。

2. 优点(1)便于理解:面向对象方法更符合人类的思维模式,因此更容易理解。

(2)灵活性:面向对象方法更灵活,能够更好地应对需求变化。

(3)代码重用:面向对象方法通过继承和多态,能够更好地促进代码的重用。

3. 不足(1)学习曲线较陡:面向对象方法对程序员的抽象能力要求较高,因此刚开始学习时往往感到困难。

(2)性能开销:在一些性能要求较高的场景下,面向对象方法可能带来一些性能开销。

结合以上对结构化方法和面向对象方法的评估,我认为两种方法各有优劣。

在实际项目中,我们应根据项目的特点和需求来选择合适的方法,甚至可以结合两种方法的优点,定制出适合项目的开发方法。

软件工程 比较结构化方法和面向对象

软件工程 比较结构化方法和面向对象

软件工程一、引言在当今信息技术高速发展的时代,软件的开发和维护变得越来越重要。

为了有效管理软件项目,提高开发效率和质量,软件工程的概念应运而生。

软件工程是一门研究如何按照系统化、规范化、定量化和可重复性的方式开发和维护软件的学科。

在软件工程中,结构化方法和面向对象是两种常用的开发方法。

本文将对结构化方法和面向对象进行比较,并探讨它们在软件工程中的优劣和适用场景。

二、结构化方法2.1 定义和特点结构化方法是一种基于数据流和流程的软件开发方法。

它将软件系统视为一系列逐步细化的模块,通过分析数据流和流程来设计和实现软件系统。

结构化方法强调模块化、层次化和自顶向下的设计思想,以确保程序逻辑清晰、易于理解和修改。

2.2 优点1.结构化方法强调模块化,将软件系统分解为多个模块,每个模块负责特定的功能。

这种模块化的设计使得程序易于理解、修改和测试,提高了软件的可维护性和可测试性。

2.结构化方法采用自顶向下的设计思想,先设计系统的总体框架,再逐步细化到具体的模块。

这种逐步细化的设计方式使得开发过程更加可控,项目管理更加容易。

同时,自顶向下的设计过程也便于团队协作和分工。

3.结构化方法将程序逻辑分解为一系列有序的步骤,每个步骤都有明确的输入和输出。

这种严格的输入输出规定使得程序的设计和测试更加方便。

4.结构化方法在软件开发初期就明确定义了数据流和流程,使得开发人员能够更好地理解和掌握软件系统的整体架构,从而减少了项目失败的风险。

2.3 缺点1.结构化方法的设计过程较为复杂,需要详细分析系统的数据流和流程。

对于较大规模的软件系统,分析和设计的工作量较大,容易导致项目开发周期延长。

2.结构化方法强调模块化,但对于一些复杂的问题,模块化的设计可能不够灵活和强大。

这就需要在设计阶段尽可能考虑全部的需求和功能,否则可能会在后期的修改过程中遇到困难。

三、面向对象3.1 定义和特点面向对象是一种以对象为基础的软件开发方法。

在面向对象方法中,软件系统由一组相互作用的对象组成。

软件工程:结构化方法VS面向对象方法

软件工程:结构化方法VS面向对象方法

软件⼯程:结构化⽅法VS⾯向对象⽅法⼀、基本概念1、结构化⽅法 结构化⽅法是⼀种传统的软件开发⽅法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合⽽成的。

基本思想:把⼀个复杂问题的求解过程分阶段进⾏,⽽且这种分解是⾃顶向下,逐层分解,使得每个阶段处理的问题都控制在⼈们容易理解和处理的范围内。

2、⾯向对象⽅法 ⾯向对象⽅法是⼀种把⾯向对象的思想应⽤于软件开发过程中,指导开发活动的系统⽅法,简称OO,是建⽴在“对象”概念基础上的⽅法学。

对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,⼀个对象类定义了具有相似性质的⼀组对象。

基本思想:尽可能模拟⼈类习惯的思维⽅式,使开发软件的⽅法与过程尽可能接近⼈类认识世界、解决问题的⽅法与过程, 也就是使描述问题的问题空间与实现解法的求解空间在结构上尽可能⼀致。

⼆、两者对⽐1、基本单位不同 结构化⽅法的基本单位是模块。

⾯向对象⽅法的基本单位是对象。

2、分析⽅法不同 结构化分析⽅法是⼀种⾯向数据流⽽基于功能分解的分析⽅法, 在该阶段主要通过采⽤数据流程图、编制数据字典等⼯具, 描述边界和数据处理过程的关系, ⼒求寻找功能及功能之间的说明。

⾯向对象分析是把对问题域和系统的认识理解, 正确地抽象为规范的对象( 包括类、继承层次) 和消息传递联系, 最终建⽴起问题域的简洁、精确、可理解的⾯向对象模型, 为后续的⾯向对象设计和⾯向对象编程提供指导。

⾯向对象分析通常建⽴三种模型: 对象模型、动态模型、功能模型。

其中, 对象模型描述了系统的静态结构,确定类的名称和类间的关系;动态模型表⽰瞬时的、⾏为化的系统的“ 控制”性质, 规定了对象模型中的对象的合法变化序列;功能模型表明了系统中数据之间的依赖关系, 以及有关数据的处理功能。

3、各⾃局限(1)结构化⽅法 i.不能直接反映问题域: 结构化分析⽅法以数据流为中⼼, 强调数据的流动及每⼀个处理过程, 不是以问题域中的各事物为基础, 打破了各事物的界限, 分析结果不能直接反映问题域, 容易隐蔽⼀些对问题域的理解偏差。

软件工程之结构化方法与面向对象方法之比较与结合

软件工程之结构化方法与面向对象方法之比较与结合

软件⼯程之结构化⽅法与⾯向对象⽅法之⽐较与结合 软件开发⽅法指,在项⽬投资规模和时间限制内,设计、实现符合⽤户需求的⾼质量软件,根据软件开发的特点,提出的多种软件开发的策略。

随着20世纪60年代,计算机软件、硬件发展不均衡,使⼤型软件的开发过程中出现了复杂程度⾼、研制周期长、正确性难以保证的三⼤难题,引发了“软件危机”。

为了同时提⾼软件效率和质量,软件开发⽅法不断⾰新。

经过⼏⼗年的研究和应⽤,两种基于相应的程序设计思想和语⾔的软件开发⽅法,结构化⽅法与⾯向对象⽅法,成为了主流的开发⽅法之⼀,⼴泛地使⽤于软件⼯程。

结构化⽅法包括结构化分析(Structured Analysis,简称SA)、结构化设计(Structured Design,简称SD)和结构化程序设计(Structured Program Design,简称SP)三部分内容。

相应地,⾯向对象⽅法包括⾯向对象分析(Object-Oriented Analysis,简称OOA)、⾯向对象设计(Object—Oriented Design,简称OOD)和⾯向对象程序语⾔(Object-Oriented Program Design,简称OOP)。

两种软件开发⽅法从起源、思想、分析、设计,到程序设计、扩展重⽤、应⽤等各个⽅⾯有着许多的联系和区别,下⽂我将对⼆者进⾏⽐较分析。

两种⽅法针对不同的⼯作环境和应⽤场景,各具优势,也都有所不⾜,我也将讨论⼆者在软件⼯程中的结合,以期产⽣更好的效果。

(⼀)从起源上看 结构化⽅法与⾯向对象⽅法都起源于相应的程序设计思想和语⾔。

20世纪60年代后期,《程序结构理论》和《GOTO陈述有害论》的提出,证明了任何程序的逻辑结构都可以⽤顺序结构、选择结构和循环结构来表⽰,确⽴了结构化程序设计思想,产⽣了如FORTRAN、PASCAL、C等语⾔。

结构化⽅法把对程序的分析、设计,延伸⾄对项⽬⼯程的分析、设计,结合程序设计语⾔的技术⽀持,得以产⽣和发展。

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

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

结构化⽅法与⾯向对象⽅法之应⽤⽐较结构化⽅法与⾯向对象⽅法是最具代表性的,也是⽬前应⽤最为⼴泛的软件开发⽅法。

本⽂将分别对两者进⾏介绍和⽐较。

⼀、结构化⽅法 结构化⽅法(Structured Methodology)是计算机学科的⼀种典型的系统开发⽅法。

它采⽤系统科学的思想⽅法,从层次的⾓度,⾃顶向下地分析和设计系统。

基本思想是基于功能的分解和抽象,形成系统的模块结构,从⽽针对每个模块进⾏结构化设计及结构化编程来完成系统的开发。

结构化⽅法由结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)三者组成。

(⼀)结构化分析 结构化分析是⾯向数据流进⾏需求分析的⽅法。

采取的⼯具主要有数据流图、数据字典、实体关系图等。

数据流图(Data Flow Diagram,DFD)是⼀种分层的建⽴系统逻辑模型的⽅法,模拟系统的⼀个⼤致边界,并展⽰系统和外部的接⼝、数据的输⼊输出以及数据的存储。

它有四个基本要素:数据流、实体、数据加⼯和数据存储。

数据流图分层的思想体现为,⾸先确定系统和系统涉及到的外部实体之间的数据流,画出第0层数据流图(顶层图);其次在顶层图的基础上对系统的主要功能进⾏分析,抽象出功能作为系统的加⼯,确定实体和加⼯之间的数据流,将顶层图细化为第1层数据流图;依此类推,之后不断细化得到第2、3乃⾄更多层的数据流图,直到不能再细化为⽌。

数据字典(Data Dictionary)是⼀个包含所有系统数据元素定义的仓库。

数据元素的定义必须是精确的、严格的和明确的。

⼀个实体⼀般应包含以下⼏个部分的内容:名字、别名、⽤途、内容描述、备注信息。

实体关系图(E-R图)是数据库设计的基础,是指以实体、关系、属性三个基本概念概括数据的基本结构,从⽽描述静态数据结构的概念模式。

(⼆)结构化设计 结构化设计是指在结构化分析的基础上,映射分析模型到设计模型,得到系统的模块结构、数据库结构等。

如在数据流图的基础上,进⾏相应的变换分析和事务分析得到系统的模块结构,在ER模型的的基础上,进⾏数据库设计得到数据库结构。

理解结构化和面向对象的区别

理解结构化和面向对象的区别

理解结构化和⾯向对象的区别结构化⽅法 结构化程序设计⽅法包含结构化分析(SA)、结构化设计(SD)、结构化程序设计(SP)三个⽅⾯,分别对应了软件开发中的分析、设计和编码阶段。

结构化分析是由DeMarco和Yourdon在20世纪70年代所倡导的。

结构化分析是⼀种基于功能分解的分析⽅法,在分析过程中使⽤了各种⼯具,例如数据流图等,这些⼯具本质上是⼀个对⽤户需求的解读,也是⾯向⽤户展⽰的⼀个“说明书”,⽬的在于使软件真正符合⽤户的需求。

结构化设计⾯向数据流,其最⼤的着⼒点在于设计系统各个组成部分之间的内部联系,以满⾜软件所需要的层次和结构。

结构化设计中,软件被⾃顶向下地不断细分,并谨慎地对待数据流通软件时的每⼀个步骤。

David Hay曾经说过(1999):"信息⼯程是1970年代开发的结构化技术的逻辑延伸。

结构化编程导致结构化设计,这⼜导致结构化系统分析。

这些技术的特点是使⽤图表,例如为结构化设计的产⽣的结构图和为结构化分析⽽产⽣的数据流图,这些图表都是为了帮助⽤户与开发者之间的交流,以及规范化分析、开发过程⽽产⽣的。

在20世纪80年代,各种⼯具开始出现,它们⾃动绘制图表,并跟踪在数据字典中描述的东西。

"[1] 例如CAD/CAM这样的CASE⼯具。

⾯向对象⽅法 和结构化设计类似,⾯向对象技术包括⾯向对象分析(OOA)、⾯向对象设计(OOD)和⾯向对象编程(OOP)三部分。

⾯向对象⽅法有⼏个需要遵循的基本原则:即抽象、封装、继承和多态。

在⾯向对象建模中,代码和数据被合并成⼀个单⼀的不可拆分的单元,也就是⼀个对象。

这样的特性允许对象保持像⼀个⿊盒⼦,也就是说没有⼈需要看到⾥⾯的具体原理。

⽽为了达到这⼀点,对任何对象的所有修改是通过作⽤于对象的消息来完成的,并且实际上所有对象都从消息中获得它们的动作。

在⾯向对象建模中,这种特性被称为封装性,它⼤⼤便利了软件部件、包或者库的调⽤,并且更便于重⽤。

结构化程序设计和面向对象程序设计

结构化程序设计和面向对象程序设计

结构化程序设计和面向对象程序设计结构化程序设计和面向对象程序设计程序设计是计算机科学领域的基础,是软件开发的重要部分。

结构化程序设计和面向对象程序设计是两种方法,被广泛使用。

本文将分别介绍这两种方法的特点和优势。

一、结构化程序设计结构化程序设计是一种程序设计的方法,它通常采用顺序、选择和循环等基本结构,使用结构化编程语言编写程序。

结构化程序设计强调程序的清晰性和易维护性,对程序员而言,它更容易理解。

结构化程序设计将程序分解为若干小的、独立的模块,每个模块包含若干明确定义的输入和输出,这样能够使程序员更好地组织代码,并且在必须修改时更容易进行维护。

由于它可以实现代码的重用,因此可以使得程序员更加高效率和节省时间和精力,而且非常适合需求比较简单的软件项目。

二、面向对象程序设计面向对象程序设计(OOP)是目前最为先进的程序设计方法之一,它包括了对对象建模、类和继承等概念的广泛应用。

面向对象的编程语言,如Java、Python和C++,都采用了这种方式。

在面向对象的程序设计中,程序被看作一个对象的集合,每个对象都具有属性和方法。

对象可以相互作用,通过方法来告知计算机他们想要做的事情。

因此,面向对象程序设计将程序员体验变为了“物体之间的关系”,从而更贴近现实世界。

面向对象程序设计的特点在于代码的复用性,它能够提高程序员的工作效率,而且更便于阅读和修改。

面向对象程序设计能够最大限度地减少程序员编写重复代码的问题,从而避免了出现代码的冗余和失误,而对于比较复杂的项目,它更为合适,在软件系统中的应用越来越广泛。

因此,如果需要完成一个高质量的、复杂的软件项目,面向对象程序设计是不可或缺的。

综上所述,结构化程序设计和面向对象程序设计都是程序设计领域中重要的方法。

两者都有其自身的优势和使用场景,根据不同的需求来选择不同的编程方法。

当程序比较简单、需求不复杂时,可以采用结构化程序设计;如果程序需要拥有更多的灵活性和可扩展性时,建议采用面向对象的编程方法。

结构化系统分析方法与面向对象分析方法的区别何在

结构化系统分析方法与面向对象分析方法的区别何在

1、结构化系统分析方法与面向对象分析方法的区别何在?答:结构化系统分析方法是采用“自顶向下,由外到内,逐层分解”的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。

而面向对象的分析方法则是通过将数据和逻辑结构抽象成为对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。

两者的区别在于:当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型,结构化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测和扩展系统的机制,通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件系统的方法。

2. 在实际项目中,具体地是采用结构化系统分析方法,还是或面向对象分析方法,是否存在相应的前提条件?或者说依据什么来选择不同的分析方法?答:两种方法不是对立的,没有谁先进谁过时之说,可在项目中结合使用。

恰当的运用方法解决问题才是根本性的问题。

在运用时应关注运用方法的成本和价值。

如果软件项目较小、系统分析员能力足够高的时候,用结构化方法较好,如果系统需求变化较大,内部逻辑关系较复杂,复用性要求较高,可采用面向对象的方法。

3.结构化系统分析方法是否已经过时?为什么现在很多项目都要采用UML进行系统分析和设计?谈谈你的理解答:结构化系统分析方法没有过时,当软件项目较小、系统分析员能力足够高的时候,结构化方法是快速的找到最简洁、高效率的逻辑方式;UML是一种应用于面象对象软件开发过程的建模语言,是一种简单、直观的表示符号和标准,UML的优点在于:1、对于开发团队的层面来说:有利于队员间在各个开发环节间确立沟通的标准,便于系统文档的制定和项目的管理。

UML的简单、直观和标准性,在一个团队中用UML来交流比用文字说明的文档要好得多。

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

对结构化方法和面向对象方法的对比和讨论
二 结 构 化 方 法
① 基 于 映 射 : 把现 实世 界 的 工 作 过程
从 超 类 继 承 属 性 和 操 作 ; 超 类 — — 也 称 作 基 类 ,是 一 组 相 关 类 的泛 化 。 () 向 对 象 的 特 点 2面
结 构 化 方 法 是 强 调 开 发 方法 的 结 构合 理 性 以及 所 开 发 软 件 的 结 构 合 理 性 的 软 件 开 发 方 法 。 结 构 化 分 析 方 法 给 出 一 组 帮 助 系 统
进 行 仿 真 , 引 入 了类 概 念 和 继 承 机 。 7 年 代 0
结 构 化 方 法 是 强 调 开 发 方 法 的 结 构 合 理 性 以及 所 开 发 软 件 的 结 构 合 理 性 的 软 件 开 发
末 ,另 一个专用 的面 向对象语 言S a 1 a k m l t l 开 始进 行设 计 ,并在8 年提 出一个 完善 版本 。 O 但 这时只 在实 验室和 科研 活动 中使用 。随着 软件 复 杂程度 的进 一步提 高 ,低 耦 合、高 内
实体有 直接对 应关 系 ,一 个对 象类定 义 了具 有相似 性质 的一组 对象 。而每 继承性 是对 具 有层次 关系 的类 的属性和 操作 进行共 享 的一
种方式 。所 谓面 向对象就 是基 于对象 概念 , 以对 象 为 中心 , 以 类 和 继 承 为 构 造 机 制 , 来 认 识 、理 解 、 刻 画 客 观 世 界 和 设 计 、 构 建 相 应 的 软件 系 统 。
面 向对 象 的 思 想 应 用 于 软 件 开 发 过 程 中 , 指 导 开 发 活 动 的 系 统 方 法 , 简 称 O 方 法 ,是 建 O 立 在 “ 象 ” 概 念 基 础 上 的 方 法 学 。 对 象 是 对 由数 据 和 容 许 的 操 作 组 成 的 封 装 体 , 与 客 观

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

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

结构化方法与面向对象方法一、概述结构化方法和面向对象方法是软件开发中两种不同的编程思想。

结构化方法强调程序的流程控制,将程序划分为多个模块,每个模块完成特定的功能。

面向对象方法则强调数据和行为的封装,将数据和操作数据的函数封装在一个类中,通过类来描述问题。

二、结构化方法1. 模块化设计结构化方法将程序划分为多个模块,每个模块完成特定的功能。

在设计过程中需要考虑模块之间的接口和数据传递方式。

通常采用自顶向下或自底向上的设计方式。

2. 顺序、选择和循环控制结构结构化方法强调程序的流程控制,其中顺序、选择和循环控制结构是最基本的三种控制结构。

在编写代码时需要根据实际情况选择合适的控制结构。

3. 结构体和数组结构体是一种用户定义类型,在一个结构体中可以包含多个不同类型的变量。

数组是一种相同类型变量组成的集合。

在处理大量数据时可以使用数组来简化代码。

4. 函数和指针函数是一段可重复使用的代码,可以接受参数并返回值。

指针是一种特殊的变量,它存储的是内存地址。

在结构化方法中,函数和指针是非常重要的概念。

三、面向对象方法1. 类和对象面向对象方法强调数据和行为的封装,将数据和操作数据的函数封装在一个类中。

类是一种用户定义类型,它描述了一组属性和方法。

对象则是类的一个实例。

2. 继承继承是面向对象编程中最重要的概念之一。

通过继承可以实现代码复用和层次关系描述。

派生类可以继承基类中所有公有成员,并且可以添加自己的成员。

3. 多态多态是指同一操作作用于不同的对象上面时,可以产生不同的解释和不同的执行结果。

多态性分为静态多态性和动态多态性两种形式。

4. 封装封装是将数据和行为包装在一个单元中,并保护其内部状态不被外部访问或修改。

通过封装可以提高代码重用性、可读性和可维护性。

四、结构化方法与面向对象方法比较1. 设计思路不同结构化方法强调程序流程控制,而面向对象方法强调数据和行为的封装。

2. 技术实现不同结构化方法主要采用模块化设计、顺序、选择和循环控制结构、结构体和数组、函数和指针等技术实现。

面向对象与结构化区别

面向对象与结构化区别

面向对象与面向过程的区别1、面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

2、面向对象以数据(属性)为导向,将具有相同一个或者多个属性的物体抽象为“类”,将他们包装起来;而有了这些数据(属性)之后,我们再考虑他们的行为(对这些属性进行什么样的操作),面向过程以功能(行为)为导向,按模块化的设计,在你在脑袋中也许也有一个类似“类”的概念,但是表现出来的是属性与行为的分离,1.什么是面向对象技术?面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。

它具有抽象性、封装性、继承性及多态性。

2.面向对象与面向过程程序设计有什么不同?面向对象与面向过程程序设计有如下不同:(1)面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来;面向对象程序设计方法将数据和对数据的操作封装在一起,作为一个整体来处理。

函数与数据是否分离(2)面向过程程序设计方法以功能为中心来设计功能模块,难于维护;而面向对象程序设计方法以数据为中心来描述系统,数据相对于功能而言具有较强的稳定性,因此更易于维护。

以功能为中心;以数据为中心(3)面向过程程序的控制流程由程序中预定顺序来决定;面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际需要。

预定顺序;由运行时各种事件的实际发生来触发(4)面向对象程序设计方法可以利用框架产品(如MFC,Microsoft Foundation Classes)进行编程。

面向对象可利用框架面向对象和面向过程的根本差别,在于封装之后,面向对象提供了面向过程不具备的各种特性,最主要的,就是继承和多态。

3.面向对象技术有哪些优点?面向对象技术具有程序结构清晰,自动生成程序框架,实现简单,可有效地减少程序的维护工作量,代码重用率高,软件开发效率高等优点。

软件开发方法——结构化方法与面向对象方法比较

软件开发方法——结构化方法与面向对象方法比较

【 src] o ue ow r o e sineadtcnlg e otn s tsa drl, a eo eteifr t nsceyo ek y AbtatC mptrsf aei m dm cec n h ooyi vr i r t t u n oe hsb cm h omai oit fh e t n e s y mp a a n o t
( ) 据 字典 1数 数 据 字 典是 一 个 包 含 所 有 系 统数 据 元 素 定 义 的仓 库 。 据 元 素 的 数
言 , 种 发 展 趋 势 具 有 十 分 重 要 的意 义 , 使 那 些 富有 生 命 力 的新 方 这 它 定 义 必须 是 精 确 的 、 格 的 和 明确 的 。一 个 实 体 一 般 应 包 括 以 下几 个 严 法 和新 技 术 就 此 形 成 自己 系统 化 的 技 术 体 系 , 它极 大地 推 动 了计 算机 部 分 的 内容 : 软 件技 术 的发 展 。 ①名字 ; ②别名 ; ③用途; 内容描述 ; ④ ⑤备注信息。 结 构 化 方 法 和 面 向对 象 方 法 都 是 计 算 技术 中 常 用 的 软 件 开 发 方 ( ) 据 流 图 2数 法 , 种 开 发 方 法 目前 都 非 常 流 行 , 择 哪 一种 方 法 要 根 据 分 析 者 的 两 选 数据 流 图是 S 和 S 的 核 心技 术 .它 采 用 面 向处 理 过 程 的思 想 A D 熟 练程 度 和 项 目的类 型 而定 。就 目前 而 言 , 十全 十美 的开 发 方 法 是 不 来 描 述 系 统 。 是 一 种 描述 信 息 流 和 数 据从 输 入 到输 出变 换 的应 用 图 它 存 在 的 , 正 实 用 的 系统 开 发 方 法 往 往 是 多种 开 发 方 法 的结 合 。如 何 真 形 技 术 。 拟 系 统 的 一 个大 致 边 界 , 展 示 系统 和外 部 的 接 口、 据 的 模 并 数 综 合应 用 , 根 据 开 发 系统 的规 模 、 统 的 复杂 程 度 、 统 开 发 方 法 的 输 入 和输 出 以及 数 据 的存 储 。 要 系 系 特点 , 以及 所 能使 用 的计 算 机 软 件 等诸 多 因素 综 合 考 虑后 决 定 。 ( ) 态 变 迁 图 3状 状 态 变 迁 图及 时地 描 述 了 对 象 的状 态 , 着 重 系 统 的 时 间 依 赖 行 它 2 结 构 化 方 法 为 。 态 变 迁 图源 于 实 时 系统 的建 模 。状 态 变 迁 图 看 起来 非 常像 数 据 状 结 构 化 方 法 ftJtrdMehdlg) 计 算 学 科 的 一 种 典 型 的 系 流 图 , 而 , Sncue toooy是 然 它们 之 间却 存 在 着 本 质 的不 同 。 据 流 图 着重 于数 据 流 和 数 统开发方法。 它采 用 了系 统 科 学 的思 想 方 法 , 层 次 的 角度 , 从 自顶 向下 数 据 转 换 的过 程 , 状 态变 迁 图 着 重 于 状 态 的 描 述 , 而 如激 励 发 生 时 的 地 分 析 和 设计 系统 。结 构 化 方 法 包括 结 构 化 分 析 (t c rdA ayi, 开 始 状 态 和 系统 执 行 响 应 后 的 结果 状 态 。 态 变 迁 图 的条 件 和一 个 过 Sr t e n l s u u s 状

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

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

结构化⽅法和⾯向对象⽅法的⽐较⼀、引⾔20 世纪60 年代以来。

软件的发展⼀直受到开发综合症“软件危机”的影响。

为了提⾼软件质量,软件开发⽅法不断推陈出新,其中结构化⽅法经过30 多年的研究及应⽤,最为成熟且影响最⼤,直到现在仍有许多系统仍然是使⽤结构化⽅法开发的。

⽽⾯向对象⽅法是在结构化⽅法、信息建模⽅法等基础上发展起来的,近10 年来发展较快,现已呈现出取代结构化⽅法的趋势。

⼆、结构化⽅法结构化⽅法是⼀种传统的软件开发⽅法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合⽽成的。

它的基本思想:把⼀个复杂问题的求解过程分阶段进⾏,⽽且这种分解是⾃顶向下,逐层分解,使得每个阶段处理的问题都控制在⼈们容易理解和处理的范围内。

结构化⽅法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界. ⽤结构化开发的软件运⾏效率较⾼, 且能够增加软件系统的可靠性。

2.1、结构化分析结构化分析(Structured Analysis,简称SA)是软件⼯程中的⼀种⽅法,结构化分析和结构化设计可以分析商业的需求,再转换为规格⽂件,最后再产⽣电脑软件、硬件配置及相关的⼿册及程序。

结构化分析包括将系统概念转换为⽤数据及控制的来表⽰,也就是转换为数据流程图。

数据流程图中的程序以泡泡来表⽰,因此也称为“泡泡图”。

不过完整的数据流程图中可能有许多的“泡泡”,使得很难去追踪数据移动的情形。

数据字典⽤来描述数据和指令的移动,⽽⽤程序规格来描述交易或数据转换的相关信息。

结构化分析的步骤如下:(1)、分析当前的情况,做出反映当前物理模型的DFD;(2)、推导出等价的逻辑模型的DFD;(3)、设计新的逻辑系统,⽣成数据字典和基元描述;(4)、建⽴⼈机接⼝,提出可供选择的⽬标系统物理模型的DFD;(5)、确定各种⽅案的成本和风险等级,据此对各种⽅案进⾏分析;(6)、选择⼀种⽅案;(7)、建⽴完整的需求规约。

结构化与面向对象的程序设计方法比较

结构化与面向对象的程序设计方法比较
( 封 大 学 a 机 电 工程 学 院 ;. 开 . b 软件 职业 技 术 学 院 , 南 开 封 4 5 0 ) 河 70 4

要 : 序设 计的基 本方 法 包括早期 的 结 构化 程序 设计 方 法 和 面向对 象的程序 设 计 方 法. 程 程 从
序设 计的 角度看 , 结构化 方法和 面向对 象方 法各有优 缺点. 从提 高程 序 的重用性和 可维护 性的 角度 看, 面向对 象方 法有较好 的应 用前景. 面 向对 象程 序设 计方 法 的基础 仍 然是 结构化 程序 设 计 , 但 即
收稿 日期 :0 0—1 2 2 1 2— 5
面 向对 象方 法 与结 构 化方 法不 同 , 把数 据 和 它
行为看成 同等重 要. 它是 一种 以数据 为主线 , 把数据
和对数据 的操作 紧密地 结合 在一起 的方法 .
2 1 面向对 象方 法的特 点 .
把 面 向对象 作为融 合 了数 据及 在数据 上的操作

1 结构化 程序设 计方 法
1 1 结构化程序 设计 的提 出 .
步分解 , 进入另 一个抽 象层次 . 12 2 基本 控制结 构 .. 用顺 序 方式 确 定各 部分 的执行 顺序 ,选 择方 用
计算 机软件 是伴 随着计算 机硬件 的发展 而发展
的. 早期 的程序 多为个人 的设计 产 品 , 开发者 和维 护
结构 化程 序设 计 的原 则 可 表 示 为 : 序 =( 程 算
法 ) 数据 结构 ) +( . 算 法 是 一 个 独 立 的 整 体 , 据 结 构 ( 含 数 数 包 据类 型 与 数 据 ) 是 一 个 独 立 的 整 体 . 者 分 开 也 两 设计 , 以算 法 ( 函数 或 过 程 ) 主 . 具 体 结 构 见 为 其 图 13( 中 的虚 线 表 示 上 面 的算 法 与 下 面 的 数 _ 图 据是 分 离 的 , 双箭 头 表 示 函数 或 过 程 对 数 据 的 输

面向对象和面向结构区别联系

面向对象和面向结构区别联系

面向对象方法与结构化方法比较答:分析是问题抽象 (做什么),设计是问题求解 (怎么做),实现是问题的解 (结果)。

在问题抽象阶段,结构化方法面向过程,按照数据变换的过程寻找问题的结点,对问题进行分解。

因此,与面向对象方法强调的对象模型不同,描述数据变换的功能模型是结构化方法的重点。

如果问题世界的功能比数据更复杂或者更重要,那么结构化方法仍然应是首选的方法学。

如果数据结构复杂且变换并不多,那么如以过程主导分析和设计,一旦有系统变更就会给下游开发带来极大混乱。

由于对过程的理解不同,面向过程的功能细分所分割出的功能模块有时会因人而异。

而面向对象的对象细分,从同一问题领域的对象出发,不同人得出相同结论的比率较高。

在设计上,结构化方法学产生自顶向下、结构清晰的系统结构。

每个模块有可能保持较强的独立性,但它往往与数据库结构相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。

如果数据结构复杂,模块独立性很难保证。

面向对象方法抽象的系统结构往往并不比结构化方法产生的系统结构简单,但它能映射到数据库结构中,很容易实现程序与数据结构的封装。

在软件工程基本原则中有一条“形式化原则”,即对问题世界的抽象结论应该以形式化语言 (图形语言、伪码语言等) 表述出来。

结构化方法可以用数据流图、系统结构图、数据辞典、状态转移图、实体关系图来进行系统逻辑模型的描述;而面向对象方法可以使用对象模型图、数据辞典、动态模型图、功能模型图。

其中对象模型图近似系统结构图与实体关系图的结合,动态模型图类似状态迁移图,功能模型图类似数据流图。

结构化方法三大模型:分析模型;设计模型;实现模型面向对象方法三大模型:对象模型;动态模型;功能模型等价划分的基本思想是什么?答:根据程序的输入特性,将程序的定义域划分为有限个等价区段—“等价类”,从等价类中选择出的用例具有“代表性”,即测试某个等价类的代表值就等价于对这一类其它值的测试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第29卷 第2期陕西师范大学学报(自然科学版)Vol.29 No.2 2001年6月Journal of Shaanxi Normal University(Natural Science Edition)J un.2001 文章编号:100123857(2001)022*******结构化方法与面向对象方法的比较分析张 莉, 裘国永(陕西师范大学计算机科学学院,陕西西安710062)摘 要:剖析了结构化方法和面向对象方法这两种软件开发方法具体的分析设计过程,讨论了各自在不同软件开发中的应用及局限性,提出了在选用面向对象方法开发大型软件系统的同时可结合结构化方法.关键词:软件开发;结构化方法;面向对象方法;问题域中图分类号:TP316 文献标识码:A20世纪60年代以来,软件的发展一直受到开发综合症“软件危机”的影响.为了提高软件质量,软件开发方法不断推陈出新,其中结构化方法[1,2]经过30多年的研究及应用,最为成熟且影响最大,直到现在仍有许多系统是用它开发的.而面向对象方法[1,3]是在结构化方法、信息建模方法等基础上发展起来的,近10年来发展较快,现已呈现出取代结构化方法的趋势.本文具体分析两者在软件开发中的差别以及面向对象方法的优越性.1 结构化方法结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界.用结构化开发的软件运行效率较高,且能够增加软件系统的可靠性.1.1 结构化分析它是面向数据流进行需求分析的方法,在该阶段力求寻找功能及功能之间的说明.它主要采用的工具是数据流图DFD(Data Flow Diagram),利用DFD描述边界和数据处理过程的关系.1.2 结构化设计结构化设计是将数据流图表示的信息转换成程序结构的设计描述,在该阶段力求寻找功能的实现方法,采用系统结构图表示系统所具有的功能和功能之间的关系.设计过程分两步完成,第一步以需求分析的结果作为出发点,构造出一个具体的系统设计方案,决定系统的模块结构(包括决定模块的划分、模块间的数据传递及调用关系).第二步详细设计即过程设计,在总体设计的基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图.因此,结构化方法比较适合于像操作系统、实时处理系统等这样的以功能为主的系统.1.3 结构化方法的局限(1)结构化方法在需求分析中对问题域的认识和描述不是以问题域中固有的事物作为基收稿日期:2000211228作者简介:张莉(1969─),女,陕西西安人,陕西师范大学讲师本单位,而是打破了各项事物之间的界限,在全局范围内以数据流为中心进行分析,所以分析结果不能直接反映问题域.同时,当系统较复杂时,很难检验分析的正确性.因此,结构化分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难;(2)结构化方法中设计文档很难与分析文档对应,因为二者的表示体系不一致.结构化方法的结果2数据流图(DFD )和结构化设计结果2模块结构图(MSD )是两种不同的表示体系,从分析到设计的“转换”实际上并不存在可靠的转换规则,而是带有人为的随意性,容易因理解上的错误而埋下隐患,使得设计文档与问题域的本来面貌相差甚远;(3)结构化方法对需求变化的适应能力比较弱,软件系统结构对功能的变化十分敏感,功能的变化会引起一个加工和它相连的许多数据流的修改,同时设计出的软件难以重用,延缓了开发的过程.2 面向对象方法面向对象方法是从内部结构上模拟客观世界,其基本思想为:对象是对现实世界客观实体的描述,均由其属性和相关操作组成,是系统描述的基本单位.面向对象方法更强调运用人类在日常的逻辑思维中经常采用的思想方法和原则,例如抽象、分类、继承、聚合、封装等,这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来.OOA 和OOD 的软件开发方法层出不穷,其中有代表性的有Coad 和Y ourdon 的五层次分析方法和四组件设计方法、Booch 的静态和动态的描述方法以及Rumbaugh 的三种模型描述法等,这些方法都有各自的特点.但总的来说,这些方法还不完善.目前OO 方法所采用的统一建模语言UML (Unified Modeling Language )[4~6],它是面向对象开发中一种通用的、图形化的模型语言,是近代软件工程环境中对象分析和设计的重要工具.以下通过UML 语言来分析OOA 和OOD 过程.2.1 面向对象分析OOA 阶段是通过行为分析法认定对象及它们之间的关系.具体过程如下:(1)使用用例图1 顾客和销售商通过电话联系的用例模型Fig.1 Use Case model of the communication of customer and seller图[7](Use Case Diagram )从用户角度描述系统功能并指出各功能的操作者.用例(Use Case )是指用户使用系统时所执行的一个与行为相关的事务序列,这个序列是在与系统的会话中完成的.用例之间存在三种关系:角色(Actor )与用例之间的连接,用例之间的使用(Use )和扩展(Extend )关系,通过角色执行用例,可以识别出不同的用例.图1显示了顾客和销售商通过电话联系的用例模型;(2)根据需求建立系统的静态模型来构造系统的结构.静态模型包括类图(Class Diagram )、对象图(ObjectDiagram )和包图(Package Diagram ).类图描述了系统中的类及其相互之间的关30 陕西师范大学学报(自然科学版)第29卷系,其本质反映了系统中对象的类型以及对象之间的各种静态关系,如关联、依赖、聚合等.对象图是类图的实例,几乎使用与类图完全相同的标识,它们的不同点在于对象图显示类的多个对象实例而不是实际的类.包图由包或类组成,表示包与包之间的关系,包图用于描述系统的分层结构;(3)根据系统执行时的时序状态或交互关系来描述系统的行为,从而构造其动态模型,包括交互图(Interaction Diagram )、状态图(Status Diagram )、活动图(Activity Diagram )等.交互图描述对象间的交互关系,包括顺序图和合作图.顺序图显示对象之间的动态合作关系,图2 铁路模型中火车的状态图Fig.2 Status diagram of train in the Railway model 强调对象之间消息发送的时间顺序;合作图也显示对象间的动态合作关系,但更强调上下级关系.状态图描述对象的所有可能状态以及事件发生时状态的转移条件;活动图描述为满足用例要求所进行的活动以及活动间的约束关系,用于识别并行活动.图2显示铁路模型中火车的状态图,其中以“@”开头的表示复合状态,需进一步精化.2.2 面向对象设计OOA 和OOD 采用一致的概念、原则和表示方法,二者之间不存在鸿沟,不需要从分析文档到设计文档的转换,二者之间也不强调严格的阶段划分.能体现二者之间关系的是近几年提图3 喷泉模型Fig.3 Fountain model 出的一种新的软件生命周期模型———喷泉模型(图3),其中分析与设计这两个水泡表明OOA 与OOD 没有严格的边界,它们是连续的、无缝的、允许有一定的相交(一些工作既可以看作是OOA 的,也可以看作是OOD 的).在分析阶段所获得的信息,不仅是设计阶段的输入,同时也是设计阶段的一个完整部分,分析得到对象及其相互关系,而设计则是解决这些对象及其相互关系的实现问题.具体过程:(1)对象行为和对象间交互作用的进一步细化;(2)用例的设计和实现.用例的分析工作从系统的外部角度展示系统的功能,系统内部的对象为实现这些外部功能而要发生的相互作用的行为是由用例的设计和实现工作来确定的;(3)精化分析阶段的交互图、状态图、活动图;(4)确定系统可重用的类或部件;(5)用构件图(Component Diagram )描述代码部件的物理结构及相互之间的依赖关系;(6)用配置图(Deployment Diagram )描述软硬件的物理体系结构.面向对象方法中的OOA 对问题域的观察、分析和认识是很直接的,使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌.OOD 是对OOA 所得出的对象模型的直接细化和抽象,得到可直接实现的类图.因此,OO 设计不但是一个细化的过程,同时还是数据抽象的过程.从应用范围看,面向对象方法适用于数据库、信息管理系统等这些以数据为主而操作较少的系统.2.3 面向对象方法的局限(1)面向对象方法中对象的确定有时会因客观边界模糊而难以确定,这样就很难保证软件描述的正确性;(2)面向对象在描述问题域方面的不足.在问题域模型中,面向对象方法把具体 第2期张莉等:结构化方法与面向对象方法的比较分析31 或抽象的问题域现象直接表述为对象,同时把现象类型直接表述为类.大多数OOA 方法支持多视角模型,即对同一问题域现象,不同的主体可以将它表述为同一对象或类型.但系统的描述者在应用面向对象方法进行建模时常遇到这样的困惑,描述者力图通过面向对象的表述对存在的问题域现象达成一致,然而,结果得到的对象或类并不很适合于某个描述者对对象的独自观察而得到的表述.也就是说,在面向对象模型中,不同的系统描述者在观察描述同一个问题域现象时,都可以把该现象表述为对象(或类),但却不能表述各自之间存在的对问题域现象的不同认识,除非通过底层结构(如操作、协议等)的处理.3 结束语从上面的分析设计过程可以看出,结构化方法是对系统功能建模,基于功能分解设计系统结构,从内部功能上模拟客观世界.面向对象方法则是从行为的角度进行建模,基于行为分析法认定对象及它们之间的关系,从内部结构上模拟客观世界,它采用了新概念、新方法、新的表示形式,有助于软件开发人员加深对系统的理解,给软件开发带来很大益处.但在实际应用中,开发的大型软件系统通常是混合型系统,即需要处理实时信息、又需要数据库的支持,同时还涉及大量的事务性操作请求,在这种情况下,在选用面向对象方法的同时在局部处理上可以结合使用结构化方法.参考文献:[1]缪淮扣,高晓雷,李刚.结构化方法、面向对象方法和形式方法的比较与结合[J ].计算机工程和科学,1999,21(4):28~29.[2]郑人杰,殷人昆,陶永雷.实用软件工程[M ].北京:清华大学出版社,1997.[3]邵维忠,杨芙清.面向对象的系统分析[M ].北京:清华大学出版社,1998.[4]鲁博,柴跃廷.关于统一建模语言———UML.计算机工程与科学[J ],2000,22(4):59~60.[5]The Object Management Group.doc.no.ad/97208204.UML Semantics[OL ].versions1.1,1September ,1997.[6]The Object Management Group.doc.no.ad/97208205.UML Notation Guide [OL ].version 1.1September ,1997.[7]刘作伟,宁洪.现代软件开发方法中的use case 技术[J ].计算机科学,1999,26(4):70~74.〔责任编辑 张惠民〕Structured methodology and Objected 2oriented methodologyZHAN G Li ,Q IU Guo 2yong(College of Computer Science ,Shaanxi Normal University ,710062Xi ′an ,Shaanxi ,China )Abstract :This paper anatomizes the analysis and design process of Structural method and objected 2oriented method ,discusses their applications and disadvantages and proposes that structural method can also be used while developing the large-scale software systems in selecting the object-oriented method.K ey w ords :software 2development ;structured methodology ;objected 2oriented methodology ;problem domain 32 陕西师范大学学报(自然科学版)第29卷。

相关文档
最新文档