结构化方法与面向对象方法的比较分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构化方法与面向对象方法的比较分析
吴松娇
(凯里学院信息工程学院,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) [4~6 ] ,它是面向对象开发中一种通用的、图形化的模型语言,是近代软件工程环境中对象分析和设计的重要工具. 以下通过UML 语言来分析OOA 和OOD 过程.
2. 1 面向对象分析
OOA 阶段是通过行为分析法认定对象及它们之间的关系. 具体过程如下: (1) 使用用例 图1 (Use Case Diagram) 从用户角度描
述系统功能并指出各功能的操作者. 用 例(Use Case) 是指用户使用系统时所执
行的一个与行为相关的事务序列,这个 序列是在与系统的会话中完成的. 用例
之间存在三种关系:角色(Actor) 与用例 之间的连接,用例之间的使用(Use) 和 扩展( Extend) 关系,通过角色执行用例,
可以识别出不同的用例. 图1 显示了顾 客和销售商通过电话联系的用例模型; (2) 根据需求建立系统的静态模型来构
造系统的结构. 静态模型包括类图 ( Class Diagram ) 、对象图( Object Diagram) 和包图( Package Diagram) . 类
图描述了系统中的类及其相互之间的关 图1 顾客和销售商通过电话联系的用例模型 系,其本质反映了系统中对象的类型以及对象之间的各种静态关系,如关联、依赖、聚合等. 对象图是类图的实例,几乎使用与类图完全相同的标识,它们的不同点在于对象图显示类的多个对象实例而不是实际的类. 包图由包或类组成,表示包与包之间的关系,包图用于描述系统的分层结构; (3) 根据系统执行时的时序状态或交互关系来描述系统的行为,从而构造其动态模型,包括交互图( Interaction Diagram) 、状态图(Status Diagram) 、活动图(Activity Diagram) 等.交互图描述对象间的交互关系,包括顺序图和合作图. 顺序图显示对象之间的动态合作关系, 强调对象之间 消息发送的时间顺序;合作图也显示对象间
的动态合作关系,但更强调上下级关系. 状