结构化方法与面向对象方法结合方案的探讨

来源 :科技创新导报 | 被引量 : 0次 | 上传用户:woai2011ni
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:结构化方法(SM)和面向对象方法(OOM)是当前应用最为广泛的软件开发方法。它们既有各自的优缺点和适应场合,又存在内在的联系,本文在此基础上分析了二者结合的必要性以及结合的可能性,详细对比分析了现存的两类结合方案并提出该课题未来研究的方向。
  关键词:结构化方法 面向对象方法 可结合性
  中图分类号:TP3-0 文献标识码:A 文章编号:1674-098X(2012)07(b)-0043-03
  Abstract:Structured method and object-oriented method are the most widely used softwaredevelopment methods today.They have their respective advantages and disadvantages and applications,but also have inherent connection.Based on above, this paper analyzes the
  necessity and the possibility of their combination,analyzes and compares the two existing combination schemes detailedly and comes up with the future research direction of the
  subject.
  Key Words:Structured method; Object-oriented method; combination
  SM更接近于计算机世界且有利于从整体上把握系统结构和特性,而OOM更符合人类的认识习惯,两者都存在各自的优缺点,很自然想到将两者的优点结合起来,运用到软件开发的过程中,弥补各自的不足[1];从应用的范围看,SM适用于数据少而操作多的问题。而OOM适用于数据库、信息管理等以数据为主、操作较少的系统[4]。在实际应用中,开发的大型软件系统通常是混合型系统,既需要处理实时信息,又需要数据库系统的支持,有时还涉及大量的事务性操作请求,既有需要采用SM的需求,又有适应OOM的一面,所以有必要将二者结合起来[7]。基于以上两点原因可以看出将SM与OOM结合起来是一个值得研究的课题。
  1 SM与OOM结合的可行性
  SM与OOM有很多内在一致性,使它们有结合在一起的可能性。比如在运用分解和抽象原则上的一致:在面对现实问题的时候,二者都要通过分解和抽象的原则分析问题、化解问题。又如在局部化和重用上设计的一致:在SM中,局部化主要体现在代码与数据分隔,程序各部分彼此相互隔离,只有必要的信息交流。而OOM则将数据、代码、和操作方法封装成一个类似黑箱的整体对象,提高了程序的可靠性、安全性及系统的可维护性,也就是说在局部化与重用上OOM比SM的更具优势。
  从范式来看二者的内在联系,SM把解空间分成数据和功能两部分,各模块间的接口是通过传递数据实现的;OOM将解空间分解成各种对象,系统中模块接口通过传递消息实现[1]。在编程实现中,SM采用的范式是“数据结构+算法”,而面向对象是“ 对象+消息”[3]。这两种方法的范式表示如下:
  SM: 数据结构 +算法
  算法集
  数据结构
  OOM: 对象 +消息
  对象的方法集
  对象中的属性
  一般来说,OOM中对象的方法集与SM中所采用的算法集对应,面向对象中对象的属性与SM中的数据结构对应,OOM中对象的属性与SM中的数据结构相关联,对象之间的消息通讯与SM中模块间的数据接口相关联,OOM中若干不同对象中的方法与SM中一个功能模块对应[3]。基于以上分析,说明可以综合考虑SM与OOM的优点,在软件开发中把OOM与SM结合使用。
  2 SM与OOM结合的方案
  一般系统的开发过程分为分析、设计和实现三个阶段,以下基于阶段的划分讨论SM与OOM可能的结合方案。如图1所示,0表示该阶段采用OOM,S表示该阶段采用SM,得到几种结合方案:
  图1中的方案1和方案8分别是纯OOM和纯SM。SM在分析、设计阶段得到的是系统的数据流图和系统的模块结构图,最后依据分析设计的结果按模块化编程实现。数据流图将现实问题域映射为数据流和加工,模块结构图是围绕如何实现系统需求进行的功能分解。而OOM在分析阶段把具体或抽象的问题域或现象表述为对象,在设计阶段要把所有具有相同服务的实体对象集抽象描述为类。对象包含了属性和消息,类是同类对象数据特性和行为特性的封装体。图1中的方案3和方案6需要进行两次由OOM到SM或者由SM到OOM的转换,由于OOM和SM在各阶段得到的是不同的表述,所以二者之间的转换是件难事,这两种方案不可取。
  一般来说,SM提供了合适的抽象和功能分解的机制,利于从整体上把握系统功能和逻辑结构,所以比较适合系统开发的前期阶段。而在清楚的了解了系统的对象、数据和操作后,具体的软件实现采用OOM比较合适,能充分发挥其优势。因此方案4和方案5更符合实际。每一种方案的具体实现又可以细化出多种方法,下面对目前已经提出的一些方案进行归纳和分析。
  2.1 结合方案一
  该类方案的特点是在系统开发过程中SM与OOM的结合方式为串行,前期工作用SM完成,后期应用OOM的思想,后期的工作在前期获得信息的基础上完成。
  文献中提出的结合方案在抽象分析前期阶段用SM得到系统数据流图,根据数据流图得到对象和类的设计,面向对象的系统设计以结构化的系统分析为基础。该方案系统开发的具体过程如下:
  1)用SM分析用户需求、系统功能,得到系统的数据流图(DFD)。
  2)从DFD中抽象出对象,分析对象,确定对象的属性操作等。如将DFD中的信息处理点归结为对象,根据信息处理点的处理功能和输入输出确定对象的功能和服务。   3)依据功能和服务划分对象集,抽象出类。
  4)进行详细设计。
  5)编程实现(用面向对象语言)、测试、维护。
  茎锡等人将结合方案成功应用到博物院文物藏品管理系统中。采用自顶而下的设计方法,在面向对象基础上综合应用结构化开发方法,而且实现中在系统方法步骤中给出了检查完善系统的机会,从而得出一个较为真实的对象模型。
  文献中提出的结合方案不同之处在于在系统分析和设计阶段都采用SM,由结构化设计得到的系统结构图映射出OOM所需的对象和类。其具体实现过程为:现实世界→流程图→系统结构图→(映射)→类图→面向对象语言→执行求解。该方案系统开发的具体过程如下:
  1)用SM分析用户需求、系统功能,得到系统的数据流图( DFD) 。
  2)用SM进行系统设计,将系统的所有功能和功能之间的关系表示为系统结构图。
  3)用OOM实现具体的行为或功能。首先参照上一步得到的结构图,用OOM合理规划、设计类,然后把上面设计阶段的结构图细化映射为对象与类。
  4)编程实现(用面向对象语言)、测试、维护。
  可以看出该方法的关键是“映射”,即由模块图映射出系统中的类和对象。结构化设计的结果是系统模块图(结构图),而面向对象实现所要求的是对象类(控件),而转换成功的前提是对象的粒度必须小于结构图中每个模块数据的粒度。
  成朋等人同时用SM、OOM和结合方案应用到加密软件的设计和实现中,对比了它们的不同。SM的后期维护存在问题,OOM设计过程存在差异,相结合后的方法因
  为先用比较清晰的数据流图来表述系统,大大减少了设计的差异,后期采用面向对象方法实现,所以更新维护变得相对容易,结果证明采用SM与OOM结合的方法比单独采用一种方法能发挥更好的效果。
  2.2 结合方案二
  该类方案的特点是在系统开发过程中SM与OOM的结合方式为并行,同时从结构化和面向对象的角度看问题,分析、设计问题域。
  参考文献中提出的结合方案基于以下思想:数据流图是SM的主要表示手段,如果OOM中每个对象的方法可以由数据流图的一个或几个“加工”组成,则面向对象的分析结果也可以表示为数据流图。这样可以用数据流图检验OOM方法分析的成果,使设计开发的软件结构更合理、一致和完整。该方案系统开发的具体过程如下:
  1)用SM分析用户需求、系统功能,得到系统的数据流图(DF D) 。
  2)用OOM进行类的规划与设计,给出类的结构图、对象状态图及事件脚本。
  3)细化数据流图,使数据流图中的每一个“加工”的粒度必须小于或等于对象中的一个方法并用数据流图来校验上一步类的设计的合理性。
  4)概要设计及详细设计。
  5)编程实现(用面向对象语言)、测试、维护。
  严静等人将这种OO方法与SA方法相结合的软件开发技术应用到了“邮电九七工程”项目中,并取得了良好的结果。
  文献中提出方案的不同是分析、设计阶段同时应用两种方法,提出了“面向对象与结构的系统分析与设计方法”。该方法中用结构化的思想分析系统整体的特性及系统中实体的特性,整体上把握系统,同时参照SM的结果用面向对象的方法详细的具体的分析设计系统。该方案系统开发的具体过程如下:
  1)应用SM总体分析系统的功能和数据特性,得到系统总体数据流图。
  2)应用OOM分析系统的实体构成,得到系统的实体对象集。
  3)结合1)、2)的结果,从实体对象集中抽象出类,分析类提供的服务。
  4)根据DFD或功能分析图,分析功能模块及模块间接口,画出系统功能模块结构图。
  5)根据类所提供的服务对类进行分组。
  6)应用OOM,结合4)、5),对类的属性和服务及类之间的消息通讯进行详细设计。
  7)编程实现(用面向对象语言)、测试、维护。
  仲辉等人将结合方案应用到IDEF0功能建模软件系统,实验证明结合方案综合了结构化和面向对象两种方法的分析与设计思想,克服了两种方法单一使用所存在的不足,可较优地同时发挥两种方法的优势,是一种应用效果良好的系统分析与设计方法。
  2.3 对比分析结合方案
  本文列举的两类结合方案都在系统的分析和设计阶段用到了SM,用面向对象的方法编程实现。利用二者的结合既克服了SM可重用性、易维护性和易扩展性差的缺点,也弥补了OOM分析问题域时可能存在的不确定性,减少了开发人员的分歧。
  但SM在这两类方案中所起的作用不同。在第一类结合方案中,无论是先进行结构化分析得到数据流图,由数据流图映射出类图还是进一步进行结构化设计得到结构图,在由结构图映射出面向对象编程的类和对象,数据流图都是类图的来源,是得到类图的基础。第二类结合方案中的第一种方法要分别从结构化和面向对象的角度分析系统,细化结构化分析得到的数据流图来校验、修改、完善面向对象分析得到的类图,数据流图不是类图的来源。第二种方法在分析与设计阶段都用到结构化和OOM,不仅进行结构化分析得到数据流图,而且在此基础上进行结构化设计得到系统模块图,综合考虑分析设计得到数据流图、模块图、实体对象及类,完成概要设计、详细设计。第一类方案将SM融合到了系统的开发中,是系统开发过程必不可少的一个组成部分。而第二类方案中SM只是一个辅助面向对象开发的过程。
  从整个开发过程看,两类方案都既发挥了SM的系统结构性好、利于整体分析与设计的优点,又发挥OOM易理解、易实现、利于具体分析与设计的优点;既强调了系统的功能结构和数据特性,又强调了系统的实体构成特性。
  3 结语
  SM与OOM的结合方案适合于大型的复杂的系统开发,这种结合充分发挥了二者的优点,相互的结合弥补了对方的不足。但应用场合有一定限制如:方案一中的“映射”对象的粒度必须小于等于结构图中的每个模块的粒度;方案二中“细化数据流图”,要使数据流图的每个加工粒度小于对应的对象的方法。无论二者串行还是并行的结合方案,串行中的转换过程及并行中的重复工作都可能会延长开发周期,降低开发效率,而且具体实现有一定难度。所以如何更有效的将二者结合并且降低结合开发方案的难度、缩短开发周期仍然是我们应该继续探讨的课题。   参考文献
  [1] 茎锡,塑建彰.一种基于面向对象思想和结构化技术的软件开发方法[J].小型微型计算机系统.第17卷第4期1996年4月.
  [2] 缪淮扣,高晓雷,李刚.结构化方法、面向对象方法和形式方法的比较与结合[J]. 计算机工程与科学.第21卷第4期1999年.
  [3] 成朋,李代平,杨丈伟.结构化方法与面向对象方法的可结合性[J].广东工业大学学报.第23卷第3期2006年9月.
  [4] 单家凌.结构化方法与面向对象可结合性研究[J].开发研究与设计技术.1009-3044(2007)04-11057-01.
  [5] 严静、周立新、潘云鹤,面向对象方法与结构化方法相结合的MIS系统开发技术[J], 维普资讯,第5期.
  [6] 仲辉、曹淑艳、邱涤珊.面向对象与结构的系统分析与设计方法应用研究[J/OL].维普资讯. 1002-8331-(2003)23-0105-03.
  [7] 林华、夏耕. 面向对象与结构化[J]. 计算机工程. 第26卷第7期2000年7月.
  [8] Lionel C. Briand,Christian Bunse, John W, et al. An Experimental Comparison of the Maintainability of Object-Oriented and Structured Design Documents[J].Empirical SoftwareEngingeering.Volume2.Numbers,291-312,DOI:10.1023/A:1009720117601,1997.
  [9] R Wieringa, Univ.of Twente, Enschede, et al. A survey of structured and object-oriented software specification methods and techniques[J].ACM Computing Surveys(CSUR).Volume 30 Issue 4,Dec.1998.
  [10] Wasserman,A.I,Pricher,P.A ,Muller,R.J ,et al.The object-oriented structured design notation for software design representation[J].IEEE Computer Society.10.1109/2.50272,Aug.2002.
其他文献
对二例高血压伴脑梗塞患者资料进行分析,找到其心理护理方法:满足患者被尊重、被接纳的心理需要,为患者创造一个舒适、优美的疗养环境,提供优质服务,根据其病情,制定合适的护
黄浦江作为上海的最重要的河流,具有多种功能.关于黄浦江微量元素污染的公开资料零星地分散在有关长江口的研究论文中[1-2],近年来发现黄浦江江水和沉积物中汞含量明显偏高,
创业教育是高等院校教育的重要内容。在新的历史时期,提升创业教育成效不仅是贯彻落实国家教育方针的需要,而且是促进我国经济发展和社会和谐的迫切要求。唯有树立创业教育的理
植物营养学课程作为农业资源与环境专业的主干专业课,缺少实验教学环节,极大地影响了教学质量的提高。本文从实验教学体系的建立与形成、实验教学内容的确定、实验教学方法的
基于终身教育的角度建设远程教育图书馆,应该引入公共图书馆的建设理念。努力取得政府的支持,加大资源建设和信息超市网点建设步伐,提升服务能力和水平,营造终身教育的全民学
V.S.奈保尔自1950年离开西印度群岛,始终将英国当成自己的家园。在受到西方批评界追捧的同时,奈保尔遭遇第三世界学者的抨击:认为作家竭力试图离开殖民地,到达宗主国。笔者通过梳理