XDE中模式驱动的设计与开发(一)

摘要:

软件模式,特别是设计模式在现今的软件开发中越来越重要。在许多的标准,工具,以及开发方法中都引入了模式的概念。本文介绍了如何在UML中对软件模式进行建模,并结合具体的工具Rational XDE,对如何定义,如何应用模式作了详细地介绍,并指出了一些相关的问题。

第一部分:模式的UML表示

1.1 软件模式

软件模式(Software Pattern)的概念由来已久,当初软件业从建筑业等其他的工程行业中汲取模式的概念,并把它演化成为软件模式的时候,无疑的是软件工程领域中一项革命的成果。而GoF对设计模式的分类与描述,更使得模式这一概念具体入微,能够被成熟的应用在软件开发之中。

所谓模式,简单而言,是一种针对某一特定的,反复出现的问题的成功的解决方案。就问题本身而言,可以使任意领域和范畴的。在诸如建筑,音乐,写作,管理等等领域中,都有模式的概念存在。在软件领域中,模式被以一种约定的文档形式表现出来,以便于纪录,学习和交流。经验丰富的程序员,可以将他们的知识,通过模式这种更形式化的东西,传递给别人。因而,模式可以看作是一种具体化的,文档化的经验和知识。

在将近十年的时间里,软件模式的有了很大的发展,它不仅仅只是一种经验的表达,现在已经能够作为程序开发的一种驱动力了。模式驱动的软件开发过程(Pattern Based Development),已经不是一种新事物。但是,在今天的软件开发领域中,一个开发思想,或者过程,如果没有一种强有力的工具支持,它就很难得到广泛的应用。

软件模式,就其抽象的级别,可以分为体系结构模式,设计模式和Idiom三种。

1、体系结构模式:提供对体系结构设计中所遇到的问题的解决方案。体系结构的例子包括有:Pipe-Filter模式,白板模式,MVC模式,ORB模式等等。体系结构模式并不一定是面向对象的,它的思想可以为任何开发方法所使用。因而,在利用UML进行描述的时候会有一些困难,而通常使用一些特定专有的描述方法,比如C2(Component-Connector)等。对它的工具支持比较的少,现在大多数尚处于研究阶段。

2、设计模式:提供对面向对象的具体设计中的问题的解决方案,使得设计的结果更具有良好的可扩展性和重用性。通常所说的设计模式,是指的GoF一书中所分类的好了的23个模式。设计模式更具其设计功用,被分为构建型,结构型和行为型三类,包括桥接模式,工厂模式,组合模式等等。对这些模式的描述以及工具支持已经比较成熟。现在已经出现了一些支持设计模式的CASE工具,比如TogetherJ,Rational XDE等。其中以XDE对模式的支持最好。本文将在后面的文章中就XDE中的模式开发展开讨论。

3、习惯用法(Idiom):是针对具体语言的使用模式。主要涉及的问题是,如何用特定方法来解决程序代码编写过程中所遇到的问题,如何更优的编写程序代码。通常一种语言,比如Java,C++等,都会有相应的Idiom。这种模式的抽象层次比较低,且涉及到具体的语言,在这儿不予过多的讨论。

1.2 UML的模式机制--协作,参数化协作

在早期的UML中,并没有提供对模式的支持。而随着模式的日益普及,OMG也终于在新版的UML引入了新的概念来提供对模式建模(主要是设计模式)的支持。

稍稍熟悉UML的人,会对协作图(Collaboration Diagram)的非常地了解,协作图是UML的9大视图之一,主要用来提供对模型的动态描述。

而协作(Collaboration)的概念同协作图其实并不太一样。在面向对象的模型中,一个特定的行为,是由一组对象以及对象之间的消息传递来实现的。这种模型信息就是由协作来表示。协作描叙了在一定的语境中一组对象以及用以实现特定行为的这些对象之间的相互作用。它包含结构和行为两个方面,结构方面与静态视图相似,包含一个对象(更为确切的说应该是角色)的集合和他们之间的关系。行为方面是一个消息的集合,这些消息在具有某一角色的各对象之间进行传递交换,也就是所谓的交互(Interaction)。协作的静态方面可以用类图来表示,协作图实际上也给出了一些静态的模型信息,而动态方面的描述通常使用顺序图(Sequence Diagram)或者协作图来表示。

从这个角度来看,模式就是一种协作。对设计模式而言,它实质上描述的就是对象的结构以及对象之间的交互--并应用这样的一种协作来解决某一个问题。在UML中,模式使用的是一种特殊的协作,参数化的协作(parameterized collaboration)来表示的。

在一个参数化的协作中,协作的参与者(比如类,也可以是关系等其它元素)可以是一个泛化的协作的参数。每当应用这个协作到一个具体的模型中去的时候,用具体的模型元素来替代这些参数。这样,在这个协作中参数之间的关系就被固定在这个模型中了。虽然对设计模式而言,它包含了比协作更多的含义。但是这样的一种参数化协作的建模方式,已经能够描述模式大部分的语义信息。模式还可以包括使用背景,使用指导,以及使用后果等其他的描述,这些内容可以作为注释写在单独的文本文件中。

时间: 2024-12-03 20:49:35

XDE中模式驱动的设计与开发(一)的相关文章

XDE中模式驱动的设计与开发(三)

第三部分:XDE中模式的高级话题 在前面的部分中,我们详细介绍了XDE的使用方法,但是XDE中关于模式的概念有很多,有一些很直接,而有一些却比较的隐讳.这一部分的内容,将对XDE中的一些高级概念作初步的阐释,并给出了一些小的例子.希望能够帮助大家更在对XDE本身,以及XDE所提倡的模式驱动的开发方法有更多,更为深入地了解.如果没有看过前几期的读者,还是最好找来看看,直接看着一期的内容,理解起来可能会有一些困难. 1.代码模版(Code Template) 模式,或者说设计模式,很大程度上是对对象

XDE中模式驱动的设计与开发(二)

第二部分:XDE中的模式机制 1 概述 在前一期的系列文章中,我们对模式,特别是设计模式在UML中的建模方法作了简要地,理论上的介绍.现在该要进行实践了.现在支持模式建模并能够基于模式进行应用程序开发的工具并不是很多.Rational XDE是其中最为著名的一个,并且确实提供了极为优秀的功能. XDE的Java版有两种,一种是基于Eclipse内核的独立运行版本(目前只支持Eclipse1.0).另为一个是集成在WASD中的,作为WASD的一个插件同其以其运行(目前只支持WASD 4.0).实际

设计与开发JAX-WS 2.0 Web服务

开始之前 关于本教程 在本教程中,我们将设计和开发一个订单处理应用程序,并将其功能作为 Web 服务公开,以便各种使用者以独立于平台的方式提交订单信息. 目标 完成了此教程后,可以应用相关概念和知识来使用 JAX-WS 技术为应用程序开发 Web 服务. 先决条件 要成功完成此教程,应该对 Web 服务技术具有基本的了解,而且需要能较为熟练地进行 Java 编程. 系统要求 要运行此教程中的示例,需要安装 Java Platform, Standard Edition (Java SE) 6.0

领域驱动设计和开发实战(转)

背景 领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中.大部分关于此主题的著作和文章都以Eric Evans的书<领域驱动设计>为基础,主要从概念和设计的角度探讨领域建模和设计情况.这些著作讨论实体.值对象.服务等DDD的主要内容,或者谈论通用语言.界定的上下文(Bounded Context)和防护层(Anti-Corruption Layer)这些的概念. 本文旨在从实践的角度探讨领域建模和设计,涉及如何着手处理领域模型并实际地实现它.我们将着眼于技术主管和架构师在实现

基于Docker的开发模式驱动持续集成落地实施

11月30日,资深质量优化专家陈能技老师,在[DBA+社群]中间件用户组进行了一次主题为"基于Docker的开发模式驱动持续集成落地实施"的线上分享.小编特别整理出其中精华内容,供大家学习交流.同时,也非常感谢陈能技老师对DBA+社群给予的大力支持.    嘉宾简介   资深质量优化专家,12年软件测试与质量管理经验 <软件性能测试诊断分析与优化>等多本IT畅销书作者 演讲实录   今天主要交流的主题是基于Docker的开发模式如何驱动持续集成落地实施,这里会涉及两个主要的

领域驱动设计和开发实战-住房贷款处理系统

本文先阐述领域驱动设计的基本概念,然后以住房贷款系统的需求为引线,一步一步实战讲解如何进行领域驱动设计的开发,文章来源与网上,先贴出与大家一起分享. 李锡远 2010-8-20   背景 领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中.大部分关于此主题的著作和文章都以Eric Evans的书<领域驱动设计>为基础,主要从概念和设计的角度探讨领域建模和设计情况.这些著作讨论实体.值对象.服务等DDD的主要内容,或者谈论通用语言.界定的上下文(Bounded Context)

领域驱动设计和开发实战

背景 领域驱动设计(DDD)的中心内容是如何将业务领域概念映射到软件工件中.大部分关于此主题的著作 和文章都以Eric Evans的书<领域驱动设计>为基础,主要从概念和设计的角度探讨领域建模和设计情况 .这些著作讨论实体.值对象.服务等DDD的主要内容,或者谈论通用语言.界定的上下文(Bounded Context)和防护层(Anti-Corruption Layer)这些的概念. 本文旨在从实践的角度探讨领域建模和设计,涉及如何着手处理领域模型并实际地实现它.我们将着 眼于技术主管和架构师

移动开发中的极简设计

本文讲的是移动开发中的极简设计, 设计是一件用户驱动很强的工作.随着用户越来越偏好更简洁的交互界面,如何剔除多余的元素,保留最基础最重要的元素是极简设计的关键.极简设计形式和功能完美结合.它最大的优点是极简的表现形式,简洁的线条,大方的留白,简约的图形化元素,就算是很复杂的内容,在这样的设计下也会显得很简洁和干练.当然,如果能有效的利用这些元素. 极简设计必须要 简洁明了和一致的可用性 .你的交互系统应该通过 清晰的视觉传达(clear visual communication) 来解决用户的问

请问在可穿戴设备的芯片固件开发中底层驱动开发与上层应用开发的区别是什么?

问题描述 请问在可穿戴设备的芯片固件开发中底层驱动开发与上层应用开发的区别是什么? 请问可穿戴设备的芯片固件开发中底层驱动开发与上层应用开发的区别是什么? 解决方案 固件底层驱动是面向硬件驱动,给上层提供调用接口,尽量与业务无关. 上层应用开发面向业务逻辑,使用底层驱动提供的接口,尽量与硬件无关