结构化方法与面向对象方法的比较分析.doc_第1页
结构化方法与面向对象方法的比较分析.doc_第2页
结构化方法与面向对象方法的比较分析.doc_第3页
结构化方法与面向对象方法的比较分析.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

结构化方法与面向对象方法的比较分析吴松娇(凯里学院信息工程学院,09本(1)班,2009406012)摘要:剖析了结构化方法和面向对象方法这两种软件开发方法具体的分析设计过程,讨论了各自在不同软件开发中的应用及局限性,提出了在选用面向对象方法开发大型软件系统的同时可结合结构化方法. 通过对具体实例的剖析,揭示DFD 与UML 之间的对应关系,从而提出结构化软件分析方法与面向对象软件分析方法存在的对应关系,在软件需求分析方法上实现了二者的相互转换,这种对应与转换关系对现有结构化软件的维护及再工程具有指导意义。关键词:软件开发; 结构化方法; 面向对象方法; 问题域20 世纪60 年代以来,软件的发展一直受到开发综合症“软件危机”的影响. 为了提高软件质量,软件开发方法不断推陈出新,其中结构化方法1 ,2 经过30 多年的研究及应用,最为成熟且影响最大,直到现在仍有许多系统是用它开发的. 而面向对象方法1 ,3 是在结构化方法、信息建模方法等基础上发展起来的,近10 年来发展较快,现已呈现出取代结构化方法的趋势. 本文具体分析两者在软件开发中的差别以及面向对象方法的优越性.1 结构化方法结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界. 用结构化开发的软件运行效率较高, 且能够增加软件系统的可靠性.1. 1结构化分析它是面向数据流进行需求分析的方法,在该阶段力求寻找功能及功能之间的说明. 它主要采用的工具是数据流图DFD(Data Flow Diagram) ,利用DFD 描述边界和数据处理过程的关系.1. 2 结构化设计结构化设计是将数据流图表示的信息转换成程序结构的设计描述,在该阶段力求寻找功能的实现方法,采用系统结构图表示系统所具有的功能和功能之间的关系. 设计过程分两步完成,第一步以需求分析的结果作为出发点,构造出一个具体的系统设计方案,决定系统的模块结构(包括决定模块的划分、模块间的数据传递及调用关系) . 第二步详细设计即过程设计,在总体设计的基础上,确定每个模块的内部结构和算法,最终产生每个模块的程序流程图. 因此,结构化方法比较适合于像操作系统、实时处理系统等这样的以功能为主的系统.1. 3 结构化方法的局限(1) 结构化方法在需求分析中对问题域的认识和描述不是以问题域中固有的事物作为基本单位,而是打破了各项事物之间的界限,在全局范围内以数据流为中心进行分析,所以分析结果不能直接反映问题域. 同时,当系统较复杂时,很难检验分析的正确性. 因此,结构化分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难; (2) 结构化方法中设计文档很难与分析文档对应,因为二者的表示体系不一致. 结构化方法的结果2数据流图(DFD) 和结构化设计结果2模块结构图(MSD) 是两种不同的表示体系,从分析到设计的“转换”实际上并不存在可靠的转换规则,而是带有人为的随意性,容易因理解上的错误而埋下隐患,使得设计文档与问题域的本来面貌相差甚远; (3) 结构化方法对需求变化的适应能力比较弱,软件系统结构对功能的变化十分敏感,功能的变化会引起一个加工和它相连的许多数据流的修改,同时设计出的软件难以重用,延缓了开发的过程.2 面向对象方法面向对象方法是从内部结构上模拟客观世界,其基本思想为:对象是对现实世界客观实体的描述,均由其属性和相关操作组成,是系统描述的基本单位. 面向对象方法更强调运用人类在日常的逻辑思维中经常采用的思想方法和原则,例如抽象、分类、继承、聚合、封装等,这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来.OOA 和OOD 的软件开发方法层出不穷,其中有代表性的有Coad 和Yourdon 的五层次分析方法和四组件设计方法、Booch 的静态和动态的描述方法以及Rumbaugh 的三种模型描述法等,这些方法都有各自的特点. 但总的来说,这些方法还不完善. 目前OO 方法所采用的统一建模语言UML (Unified Modeling Language) 46 ,它是面向对象开发中一种通用的、图形化的模型语言,是近代软件工程环境中对象分析和设计的重要工具. 以下通过UML 语言来分析OOA和OOD 过程.2. 1 面向对象分析OOA 阶段是通过行为分析法认定对象及它们之间的关系. 具体过程如下: (1) 使用用例图1 (Use Case Diagram) 从用户角度描顾客述系统功能并指出各功能的操作者. 用例(Use Case) 是指用户使用系统时所执提供商品行的一个与行为相关的事务序列,这个序列是在与系统的会话中完成的. 用例 处理电话请求类型之间存在三种关系:角色(Actor) 与用例使用关系之间的连接,用例之间的使用(Use) 和订购商品扩展( Extend) 关系,通过角色执行用例,可以识别出不同的用例. 图1 显示了顾扩展关系客和销售商通过电话联系的用例模型;使用关系订单处理(2) 根据需求建立系统的静态模型来构造系统的结构. 静态模型包括类图使用关系付款过程( Class Diagram ) 、对象图( ObjectDiagram) 和包图( Package Diagram) . 类图描述了系统中的类及其相互之间的关图1 顾客和销售商通过电话联系的用例模型开始空闲准备系,其本质反映了系统中对象的类型以及对象之间的各种静态关系,如关联、依赖、聚合等. 对象图是类图的实例,几乎使用与类图完全相同的标识,它们的不同点在于对象图显示类的多个对象实例而不是实际的类. 包图由包或类组成,表示包与包之间的关系,包图用于描述系统的分层结构; (3) 根据系统执行时的时序状态或交互关系来描述系统的行为,从而构造其动态模型,包括交互图( Interaction Diagram) 、状态图(Status Diagram) 、活动图(Activity Diagram) 等.交互图描述对象间的交互关系,包括顺序图和合作图. 顺序图显示对象之间的动态合作关系, 强调对象之间路过车站消息发送的时间顺序;合作图也显示对象间的动态合作关系,但更强调上下级关系. 状判断转移态图描述对象的所有可能状态以及事件发生到达车站时状态的转移条件;活动图描述为满足用例离开车站要求所进行的活动以及活动间的约束关系,进行中用于识别并行活动. 图2 显示铁路模型中火车的状态图,其中以“”开头的表示复当前方无车合状态,需进一步精化。2. 2 面向对象设计OOA 和OOD 采用一致的概念、原则和表示方法,二者之间不存在鸿沟,不需要从分析文档到设计文档的转换,二者之间也不强调严格的阶段划分. 能体现二者之间关系的是近几年提的一种新的软件生命周期模型喷泉模型,其中分析与设计这两个水泡表明OOA与OOD 没有严格的边界,它们是连续的、无缝的、允许有一定的相交(一些工作既可以看作是OOA 的,也可以看作是OOD 的) . 在分析阶段所获得的信息,不仅是设计阶段的输入,同时也是设计阶段的一个完整部分,分析得到对象及其相互关系,而设计则是解决这些对象及其相互关系的实现问题. 具体过程: (1) 对象行为和对象间交互作用的进一步细化; (2) 用例的设计和实现. 用例的分析工作从系统的外部角度展示系统的功能,系统内部的对象为实现这些外部功能而要发生的相互作用的行为是由用例的设计和实现工作来确定的; (3)精化分析阶段的交互图、状态图、活动图; (4) 确定系统可重用的类或部件; (5) 用构件图(Component Diagram) 描述代码部件的物理结构及相互之间的依赖关系; (6) 用配置图(Deployment Diagram) 描述软硬件的物理体系结构.面向对象方法中的OOA 对问题域的观察、分析和认识是很直接的,使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌. OOD 是对OOA所得出的对象模型的直接细化和抽象,得到可直接实现的类图. 因此, OO 设计不但是一个细化的过程,同时还是数据抽象的过程. 从应用范围看,面向对象方法适用于数据库、信息管理系统等这些以数据为主而操作较少的系统.2. 3 面向对象方法的局限(1) 面向对象方法中对象的确定有时会因客观边界模糊而难以确定,这样就很难保证软件描述的正确性; (2) 面向对象在描述问题域方面的不足. 在问题域模型中,面向对象方法把具体或抽象的问题域现象直接表述为对象,同时把现象类型直接表述为类. 大多数OOA 方法支持多视角模型,即对同一问题域现象,不同的主体可以将它表述为同一对象或类型. 但系统的描述者在应用面向对象方法进行建模时常遇到这样的困惑,描述者力图通过面向对象的表述对存在的问题域现象达成一致,然而,结果得到的对象或类并不很适合于某个描述者对对象的独自观察而得到的表述. 也就是说,在面向对象模型中,不同的系统描述者在观察描述同一个问题域现象时,都可以把该现象表述为对象(或类) ,但却不能表述各自之间存在的对问题域现象的不同认识,除非通过底层结构(如操作、协议等) 的处理.3结束语从上面的分析设计过程可以看出,结构化方法是对系统功能建模, 基于功能分解设计系统结构,从内部功能上模拟客观世界. 面向对象方法则是从行为的角度进行建模, 基于行为分析法认定对象及它们之间的关系,从内部结构上模拟客观世界,它采用了新概念、新方法、新的表示形式,有助于软件开发人员加深对系统的理解,给软件开发带来很大益处. 但在实际应用中,开发的大型软件系统通常是混合型系统,即需要处理实时信息、又需要数据库的支持,同时还涉及大量的事务性操作请求,在这种情况下,在选用面向对象方法的同时在局部处理上可以结合使用结构化方法.参考文献:1 缪淮扣,高晓雷,李刚. 结构化方法、面向对象方法和形式方法的比较与结合J . 计算机工程和科学,1999 ,21 (4) :2829.2 郑人杰,殷人昆,陶永雷. 实用软件工程M . 北京:清华大学出版社,1997.3 邵维忠,杨芙清. 面向对象的系统分析M . 北京:清华大学出版社,1998.4 鲁博,柴跃廷. 关于统一建模语言UML. 计算机工程与科学J ,2000 ,22 (4) :5960.5 The Object Management Group. doc. no. ad/ 9720

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论