软件设计模式浏览器的UML模型

时间:2022-07-11 05:07:31

软件设计模式浏览器的UML模型

摘要:针对软件设计模式的应用中的一个瓶颈,提出软件设计模式浏览器研制。使用软件设计模式的思想,从功能模型、对象模型等方面提出软件设计模式浏览器的UML模型。采用层次结构对软件设计模式的信息进行组织。为软件设计模式的学习、选择、应用提供了一个有效的工具。

关键词:软件设计模式浏览器;UML;用例模型;对象模型

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)17-4692-02

Model of Software Design Pattern Explorer

XIE Shu-yun1,2, LIU Xiao-yan1, HUANG Ji-ya1,2

(1.Department of Computer Science, ZhaoTong Teacher's College, Zhaotong 657000, China; 2.Faculty of Information Engineering and Automation, Kunming University of Science and Technology, KunMing 650551, China)

Abstract: This article is aimed at one of the bottleneck problems in application of Software Design Pattern, putting forward the development problem of Soft Design Pattern Explorer. Its’ UML model is proposed from use case model, object model and dynamic model, etc. by using the idea about Soft Design Pattern. The information is organized from hierarchical structure. It provides an effective tool for the study, the choice and the application of Software Design Pattern.

Key words: software design pattern explorer; UML; use case diagram; object model

自出现软件以来,软件质量就是一个永恒的话题。在软件开发方法的探索中,提出了很多种设计思想。面向对象软件方法的兴起,在很大程度上为提高软件质量和开发效率奠定了很好的基础。目前软件业广泛采用设计模式进行软件设计,因为它们与构建应用程序直接相关,为代码复用开辟了新的道路。Erich Gamma、 Richard Helm、Ralph Johnson和 John Vlissides在参考文献1中第一次将设计模式提升到理论高度,对应用中的各种模式进行总结、筛选,并规范化,提出了23种基本设计模式,这些模式分析了在设计和构造应用程序时遇到的常见问题和解决方案。之后,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。参考文献2把模式分成体系模式、设计模式和代码模式三个层次,并提出了一些新的模式。

参考文献3特别强调了Design Patterns are Bad for Software Design,主要原因在于熟悉传统的结构化方法的设计人员过渡到面向对象方法存在很多困难,要应用软件设计模式更没有经验可言。同时,软件设计模式会随着学科经验的积累而不断更新,在对软件设计模式不熟悉的情况下套用软件设计模式会对设计的效率和重构潜力产生很坏的影响。

从国内外的研究来看,软件设计模式应该是变化的、不断成熟的理论,新的更好的软件设计模式会不断的产生,老的软件设计模式可能会过时。要从众多的软件设计模式中选择适合自己系统的模式显然是使用模式的瓶颈,特别是对软件设计模式并不熟练的人员。虽然使用软件设计模式不是目的,但它确实可以在很大程度上提高程序的重构能力。要应用设计模式,首先应该需要熟悉并深入理解这些模式,其次,需要一种有效的软件设计模式选择方法和工具。

有很多人在研究软件设计模式以及具体设计模式的应用,对软件设计模式的学习和选择来源于书籍,或者一些不可补充的电子参考,比如参考文献4,这对于不断发展的软件设计模式理论显然是不够的,迫切需要较为直观的软件设计模式学习和浏览的工具。这里希望找到一个有效并尽量完善的软件设计模式浏览器(SDPE,Software Design Pattern Explorer)模型,为软件开发者提供一个了解、比较、学习、选择软件设计模式的工具。

UML(Unified Modeling Language,统一建模语言)是一种面向对象建模语言,它采用可视化的方法对软件进行描述、可视化处理、构造和建立软件产品的相关文档,具有创建系统静态结构和动态行为等多种结构模型的能力,具有可扩展性和通用性,适合于多种多变结构系统的建模,便于迭代。是面向对象分析和设计的基本工具。

Rational Rose是Rational公司基于UML规范的可视化建模工具。Rose与Rational其他一系列的软件工程方面产品的集成度比较高,并且使用方便,提供从模型到代码的自动化,Rational Rose遂成为UML建模的首选。

本文采用UML规范,用Rational Rose 2003实现SDPE的功能建模和对象建模。

1 模式信息的组织

目前的软件设计模式主要有三个来源,一个是GOF提出的23种设计模式;一个是POSA中提出的模式;然后是一些没有系统化提出但是应用比较广泛的模式。从GOF和POSA对软件设计模式的描述来看,对众多的模式均采用多级分类进行组织。参考文献1中,根据目标准则,GOF把模式分成行为型、结构型、创建型三大类;根据范围准则,则分为类模式和对象模式,按照这两种依据的组合,可以分成六个小类。参考文献2中,把模式分成服务访问和配置模式、事件处理模式、同步模式、并发模式四大类。综合这些分类方法,选择采用三级树型结构进行组织,如图1。第一级为根,称为SoftwareDesignPattern。第二级为模式的来源,有GOF、POSA、Others等类别。第三级是具体的模式。模式的描述另外说明。这个结构应该是活动的,软件可以根据模式携带的信息主动构建这个结构,从而实现模式的动态更新。同一个模式对应多种语言的示例代码,独立于模式信息存储。

2 SDPE的功能模型

在SDPE中,用户使用最多的是模式浏览功能,由于对模式最直接的认识来源于模式的结构图,据此设计模式浏览的主体功能为结构图,同时可以选择显示模式的其它文字信息,通过示例代码分析模式的实现方法。用户初步选定某个模式之后,如果需要深入了解,可以导出该模式的模型、代码,并进行编辑。浏览的基础是对模式信息的存储,因此需要模式的管理功能。

根据以上分析,SDPE应该实现设计模式的管理功能,模式浏览打印功能,模型导出编辑功能,模式示例代码分析功能。从用户的角度看到希望得到的功能是SDPE的功能需求,表现为用例图。SDPE中的事务有:

1) 用户要浏览软件设计模式信息,设计支持顺序浏览和选择浏览,并简洁信息和完整信息两个方案;

2) 用户需要编辑模式信息,涉及加入新模式,修改现有模式,以及删除已有模式;

3) 用户要深入了解或者引用某个模式的模型,这里涉及为模式的相关信息导出,可以导出文字信息,图形信息和Rose模型;

4) 用户要使用某个模式,需要进行代码方面的研究,设计为模式代码编辑和导出。

SDPE是开放式软件,任何用户都可以直接操作SDPE实现所有的功能,归为同一类参与者;由SDPE导出的文件需要使用一些专门的软件打开,在这里归为被动参与者。由SDPE导出的模型使用Rational Rose编辑,Rational Rose属于被动参与者,同样RTF文件的浏览软件(如Microsoft Word)也是被动参与者。根据以上分析,SDPE的用例模型表示为图2。

模式浏览提供类似于Windows资源管理器的浏览界面,在界面控制上有所区别;模式管理用例由加入模式、修改模式、删除模式、代码编辑三个用例实现;模式引用由导出MDL模型、导出模式信息、代码编辑三个用例实现。模式浏览用例由完整浏览和简洁浏览两个用例实现。

3 SDPE的对象模型

对象模型描述系统类的数据元素和界面元素。在SDPE中,最核心的数据是模式信息,每个模式的信息均需要永久存储于磁盘,需要定义永久类Pattern和永久类Code。

根据GoF对模式的描述,每个模式本身需要用名称(Name)、意图(Intent)、别名(AlsoKnownAs)、动机(Motivation)、适用性(Applicability)、参与者(Participants)、协作(Collaborations)、效果(Consequence)、实现(Implementation)、已知应用(KnownUses)、相关模式(RelatedPatterns)、结构图(Structure)等十三个属性进行刻画,Pattern类的相关模式属性(Related Patterns)与Pattern类自身关联。为便于对模式信息进行分类组织,增加模式组、模式类型两个属性。

在SDPE运行期间,所有模式信息作为一个集合进行访问,每次访问一个模式的信息,可以定义为集合与记录的关系,由此定义一个模式管理器类PatternManager。其属性在Pattern类的基础上加入当前模式位置信息CPos。按同样的方式定义代码类Code和代码管理器类CodeManager。

PatternManager类的结构与永久类基本相同。Pattern类支持的操作定义为方法,从提高软件重构能力出发,为永久类Pattern定义方法SDPExport ()实现结构图导出,定义ModelExport()方法实现Rose模型的导出,定义Pattern类的打印方法Print()实现模式信息的打印输出,定义Pattern类的多态显示方法Display()实现在人机界面的信息显示。

作为对系统功能的描述,根据上文的分析定义行为类ExplorerForm、MaintainForm和CodeEditForm。ExplorerForm类实现浏览, MaintainForm类实现模式管理。CodeEditForm类实现代码编辑。

根据以上分析,SDPE的对象模型定义如图3(由于Pattern类属性较多,没有一一画出)。从图3来看,PatternManager类和Pattern类之间是一对多的依赖关系。Pattern类通过RelatedPatterns/Name与自身关联,为一对多的反射关联关系。

4 SDPE中的模式思想

在设计中使用软件设计模式可以在很大程度上提高程序的重构能力,这里提出SDPE设计中的模式思想。

工厂模式,在实现软件设计模式浏览时,由模式信息的数据集合产生具体模式的信息,并且在任何时刻都只有一个模式存在。工厂模式一般采用单实例模式实现,单实例(Singleton)模式属于对象创建型模式,它保证一个类只有一个实例,图3中的Pattern由PatternManager实例化,Code由CodeManager实例化,每次只产生一个实例。

外观模式,使用对象连接数据库时用到了外观模式,只需要提供数据库文件路径就可以填充返回数据集合。并且,单实例通常也采用外观模式实现。

以上列举了几个软件设计模式应用的例子,模式之间不是完全独立的,在一个应用中,可能会同时用到多种设计模式。同样,同一个模式也会有多种形式,不应该拘泥于模式的某种结构。

5 结论

本文使用通用的UML面向对象建模语言对软件设计模式浏览器进行用例模型分析和对象模型分析,并采用集成化的OOCASE工具Rational Rose实现这些模型,探讨了SDPE中的软件设计模式思想。为软件设计模式的研究提供了一个实用的工具软件模型,具有现实意义。

参考文献:

[1] Gamma E,Helm R,Johnson R,et al.设计模式:可复用面向对象的软件基础(双语版)[M].李英军,马晓星,蔡敏,等,译.北京:机械工业出版社,2007.

[2] Buschmann F,Meunier R.Pattern-Oriented Software Architecture, Volume 1: A System of Patterns[M].Addison Wesley,1996.

[3] Sommerlad,Peter.Design Patterns are Bad for Software Design[J].Software IEEE,2007,24(4):68-71.

[4] 国刚,周峰,孙更新.UML与Rational Rose 2003软件工程统一建模原理与实践教程[M].北京:电子工业出版社,2007.

[5] 刁成嘉.UML系统建模与分析设计[M].北京:机械工业出版社,2007.

[6] 绍维忠,杨芙清.面向对象的系统分析[M].北京:清华大学出版社,南宁:广西科学技术出版社,2006.

[7] RedSword软件工作室.设计模式迷你手册[EB/OL]..st.

上一篇:Linux Ext2fs文件系统分析 下一篇:高职院校“数据结构”教学改革的探索与实践