(计算机系统结构专业论文)模型驱动架构研究及在轻量级web服务器开发中的应用.pdf_第1页
(计算机系统结构专业论文)模型驱动架构研究及在轻量级web服务器开发中的应用.pdf_第2页
(计算机系统结构专业论文)模型驱动架构研究及在轻量级web服务器开发中的应用.pdf_第3页
(计算机系统结构专业论文)模型驱动架构研究及在轻量级web服务器开发中的应用.pdf_第4页
(计算机系统结构专业论文)模型驱动架构研究及在轻量级web服务器开发中的应用.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机系统结构专业论文)模型驱动架构研究及在轻量级web服务器开发中的应用.pdf.pdf 免费下载

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

文档简介

东南大学学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特多l i j j j r l 以标注和致谢的地方外,论文中不包含其他人 已经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育机构的学位或 证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 研究生签名: 东南大学学位论文使用授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文 的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档 的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借 阅,可以公布( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权东 南大学研究生院办理。 研究生签名:j 丛盏一导师签名: 盏璺墨垒日期:丝! ! :兰:! , 摘要 摘要 题名:模型驱动架构研究及在轻量级w e b 服务器开发中的应用 硕士研究生姓名:刘毅 导师姓名:张月琳 学校名称:东南大学 模型驱动架构( m d a ) 是由对象管理组织( o m g ) 提出的一种软件开发框架,其核心 思想是将实现细节与业务功能分离,把软件开发的注意焦点提升到更高的抽象层次。它基于 统一建模语言( u m l ) 以及一系列工业标准,支持基于可视化的软件设计、内容存储和交 换,是一种基于模型的软件开发架构。m d a 先建立一个完整而精确的平台无关模型( p i m ) , 再通过自动转换工具将p i m 转换成对应不同技术平台的平台相关模型( p s m ) ,最终将p s m 转换成代码。 论文首先回顾了软件开发方法史,讨论了现代软件开发中存在的一些弊端,以此为背景 引出了m d a 的基础理论,并对m d a 的基本原理、开发模式和核心技术进行了深入的研究。 接着,论文详细论述了w 曲服务器的工作原理及相关技术,并探讨了m d a 在轻量级w e b 服务器开发上所具备的优势。随后论文分析了轻量级w e b 服务器的需求,并在此基础上建 立了系统的p i m ;在p i m 完成后,论文定义了一套转换规则,设计并实现了自动转换工具, 进而实现了完整的m d a 转换流程。在手工完善生成的代码后,论文对实现的轻量级w 曲 服务器进行了评测。论文最后总结了研究工作,并对进一步的工作进行了展望。 关键词:m d a ,u m l ,w e b 服务器,模型转换 a b s t i d c t a b s t r a c t t i t l e :n er e s e a r c ho nm d aa n dt h ea p p l i c a t i o no fm d ai nl i g h t w e i g h tw e bs e r v e r d e v e l o p m e n t s t u d e n t :l i ny i a d v i s o r :p r o f z h a n gy u e l i n s o u t h e a s tu n i v e r s i t y m o d e ld r i v e na t c h i t e c t u r e ( m d a ) i sas o f t w a r ed e v e l o p e m e n tf r a m e w o r kp r o p o s e db yo b j e c t m a n a g e m e n tg r o u p ( o m g ) t h ec o r ei d e ao fm d a i st os e p a r a t ei m p l e m e n t a t i o nd e t a i l sf r o m b u s i n e s sf u n c t i o na n dp r o m o t et h el e v e lo ff o c u so ns o f t w a r ed e v e l o p m e n t m d a ,w h i c hi sb a s e d o nu n i f i e dm o d e l i n gl a n g u a g e ( u m l ) a n das e r i e so fi n d u s t r i a ls t a n d a r d ,a n ds u p p o r t ss o f l e w a r e d e s i g nb a s e do nv i s u a l i z a t i o n ,c o n t e n ts t o r ea n de x c h a n g e ,i sas o f t w a r ed e v e l o p e m e n tf r a m e w o r k b a s e do nm o d e l m d ab e g i n sb yb u i l d i n gac o m p l e t ea n d p r e c i s ep l a n t f o r mi n d e p e n d e n tm o d e l , a n dt h e nt r a n f o r m sp i mt op l a t f o r md e p e n d e n tm o d e l ( p s m ) o nd i f f e r e n tt e c h n i c a lp l a t f o r m s , f i n a l l yt r a n f o r m sp s m t oc o d e f i r s t l yt h i sp a p e rr e v i e w st h eh i s t o r yo fs o f t w a r ed e v e l o p m e n tm e t h o d o l o g y , d i s c u s s e st h e d i s a d v a n t a g e so fm o d e r ns o f t w a r ed e v e l o p m e n t ,b a s e do nw h i c hl e a d so u tm d a sf u n d a m e n t a l t h e o r y , a n dm a k e sa l li n d e p t hr e s e a r c ho nf u n d a m e n t a lp r i n c i p l e s ,d e v e l o p m e n tm o d ea n dc o r e t e c h n o l o g yo fm d a a n dt h e n ,t h ew o r k i n gp r i n c i p l e sa n dt e c h n o l o g yr e l a t e do fw 曲s e r v e ri s d i s c u s s e di nd e t a i l a n dt h ea d v a n t a g e so fd e v e l o p i n gl i g h t w e i g h tw 曲s e r v e rb a s e do nm d ai s d i s c u s s e d n e x tt h i sp a p e ra n a l y z e st h er e q u i r e m e n t so ft h i st i g h t w e i g h tw 曲s e r v e r , b a s e do n w h i c hb u i l d st h es y s t e m s sp i m ;a f t e rt h ec o m p l e t i o no fp i m ,t h i sp a p e rd e f i n e sas e to f t r a n s f o r m a t i o nr u l e s ,d e s i g n sa n di m p l e m e n t sa na u t o t r a n s f o r m a t i o nt o o l ,a n di nt u r ni m p l e m e n t s t h ec o m p l e t et r a n s f o r m a t i o nf l o wo fm d a a f t e rc o m p l e t i n gc o d em a n u a l l y , t h el i g h t w e i g h tw 曲 s e r v e ri m p l e m e n t e di se v a l u a t e d f i n a l l yt h i sp a p e rs u m m a r i z e st h ew o r ka n dp r o s p e c t st h ef a r h t e r w o r k k e y w o r d s :m d a ,u m l ,w e bs e r v e r , m o d e lt r a n s f o r m a t i o n 目录 目录 摘要i a b s t r a c t i i 目录1 第一章绪论1 1 1 研究背景1 1 2 研究现状2 1 3 研究内容2 1 4 论文组织结构3 第二章 m d a 基础理论4 2 1 传统软件开发的问题4 2 1 1 生产效率问题。4 2 1 2 需求变更问题4 2 1 3 可移植性问题。5 2 1 4 互操作性问题5 2 1 5 维护与文档问题5 2 2 m d a 的基本概念一5 2 2 1 模型一5 2 2 2 平台6 2 2 3 计算无关模型( c o m p u t a t i o n a li n d e p e n d e n tm o d e l ,c i m ) 6 2 2 4 平台独立模型( p l a f f o r mi n d e p e n d e n tm o d e l ,p i m ) 6 2 2 5 平台相关模型( p l a t f o r ms p e c i f i cm o d e l ,p s m ) 6 2 3 元建模6 2 3 1 元建模导引6 2 3 2 o m g 的四个建模层次7 2 4 模型转换9 2 4 1 模型转换基本概念9 2 4 2 转换定义语言1 0 2 4 3 转换特性1 1 2 5 m d a 框架1 1 2 6 m d a 核心技术1 2 2 6 1m o f 12 2 6 2u m l 1 2 2 6 3x m i 1 4 2 6 4 c w m 一1 4 2 7 m d a 开发模式1 4 2 7 1 m d a 开发生命周期1 4 2 7 2 m d a 优点1 5 第三章 w e b 服务器及相关技术介绍17 3 1 w e b 服务器概述仃 3 2 h t t p 协议17 目录 3 2 1h r r p 请求1 8 3 2 1 1 请求方法1 8 3 2 1 2请求u r l 1 9 3 2 1 3h t r p 版本1 9 3 2 2h t r p 响应1 9 3 2 3h 兀p 1 1 的主要改进2 0 3 3 w e b 服务器工作原理2 0 3 3 1 w e b 服务器工作方式2 0 3 3 2 客户端与服务器间的参数传递2 1 3 3 3服务器与子进程间的参数传递2 1 3 3 4子进程的输出2 1 3 4 轻量级w e b 服务器2 2 3 5 m d a 在开发轻量级w e b 服务器方面的优势2 3 第四章轻量级w e b 服务器建模2 4 4 1 w e b 服务器的分析与设计2 4 4 1 1 服务器工作模型2 4 4 1 2 服务器功能模型2 5 4 2 p i m 的创建。2 6 4 2 1r a t i o n a ls o i t w a r ea r c h i t e c t ( r s a ) 简介2 6 4 2 2 基于域的分解2 7 4 2 3 服务域2 8 4 2 3 1 s e r v e r 域一2 8 4 2 3 2 c o n f i g 域。3 0 4 2 3 3 f i l e 域3 0 4 2 4 应用域3 0 第五章自动转换工具的开发以及转换的实现3 3 5 1 p i m 到p s m 转换定义的建立。3 3 5 1 1 转换规则需求3 3 5 1 2 转换定义语言的语法一3 3 5 1 3 元模型描述3 4 5 1 3 1 p i m 元模型一3 4 5 1 3 2 p s m 元模型3 6 5 1 4 p i m 到p s m 的转换定义3 7 5 2 转换的基本过程4 5 5 2 1 u m l 模型的导出4 5 5 2 2 自动转换工具的设计与实现4 6 5 2 2 1 解析x m l 模型文件4 6 5 2 2 2 解析转换规则文件4 8 5 2 2 3 执行转换一4 9 5 2 3 p s m 到c + + 代码的转换4 9 第六章 w e b 服务器评测6 0 第七章结束语6 2 7 1 研究工作总结6 2 7 2 进一步的工作展望6 2 2 目录 致谢6 3 参考文献6 4 作者简介6 6 3 第一章绪论 1 1研究背景 第一章绪论 程序设计语言虽然为计算机的应用开拓了无比广阔的前景,但无法规避的一个问题是: 如何应对软件危机( s o f t w a r ec r i s i s ) ? 软件危机是计算机软件在它的开发和维护过程中所 遇到的一系列严重问题。概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软 件日益增长的需求;如何维护数量不断膨胀的已有软件。 上世纪6 0 年代末,随着计算机硬件技术的进步,开发与之匹配的计算机软件的呼声也 越来越高,由此提出了一些开发大型软件系统的要求。然而软件技术的进步一直未能满足形 势发展的需要,在大型软件的开发过程中出现了复杂程度高、研制周期长、正确性难以保证 的三大难题。遇到的问题找不到解决方案,致使问题堆积,形成了人们难以控制的局面,出 现了所谓的软件危机。 针对这场软件危机,1 9 6 8 年n a t o ( n o r t ha t l a n t i ct r e a t yo r g a n i z a t i o n ,北大西洋公约 组织) 会议上首次提出了“软件工程”的概念,力图使软件开发从“艺术”、“技巧”和“个 体行为”向“工程”和“群体协同工作”转变【l 】。在这之后,业界围绕如何采用“工程”的 方法、技术、管理与控制,开展了大量的研究和实践工作,以期提高软件生产效率、改善软 件质量、克服软件危机。 软件工程是一门研究采用工程化方法构建和维护有效的、实用的和高质量的软件的学 科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。 软件工程的发展大体可以分为两个阶段。 第一阶段围绕软件项目,开展了有关开发模型、方法以及支持工具的研究。其主要成果 有:提出了瀑布模型,开发了一些结构化程序设计语言( 例如p a s c a l 语言,a d a 语言) 、 结构化方法等。这一阶段的主要特征是,前期着重研究系统实现技术,后期开始强调开发管 理和软件质量。 第二阶段主要围绕软件过程以及软件复用,并伴随着“软件工厂”这一概念的提出,开 展了有关软件生产技术和软件生产管理的研究与实践。其主要成果有:提出了应用广泛的面 向对象语言( 例如s m a l l t a l k 语言,c + + 语言) 以及相关的面向对象方法,大力开展了计算 机辅助软件工程的研究与实践。在这一阶段,针对软件复用及软件生产,软件构件技术以及 软件质量控制技术、质量保证技术得到了广泛的应用。 现代软件生产开始跟传统制造业一样出现工业化生产趋势,软件的开发始终都围绕在如 何提高己有系统的复用度,缩短软件开发周期,提高项目的成功率等因素上面。但是仍然有 一些根本性的问题得不到解决: 首先,业务需求变化太快。需求的改变,往往会引起系统设计的改变,从而导致大量代 码的增删和修改; 其次,随着软件开发技术的不断发展,各种新兴技术平台层出不穷。由于不同的平台间 缺乏共同的元数据基础,所以彼此之间无法相互集成和互操作,直接导致了软件成本的提高、 应用及开发的复杂度增大。因为各平台的技术相关性,同一个系统如果要在新的技术平台上 实现,就必须修改模型以适应新平台,这往往使得系统的许多模块甚至全部模块重新开发, 导致人力物力的浪费。 为了从根本解决这些问题,并促进和规范建模技术的进一步发展,对象管理组织o m g 东南大学硕士学位论文 ( o b j e c tm a n a g e m e n tg r o u p ) 在2 0 0 1 年7 月提出了全新的软件开发框架模型驱动架构 ( m o d e ld r i v e n a r c h i t e c t u r e m d a ) 。m d a 基于u m l ( u n i f i e dm o d e l i n gl a n g u a g e ,统一建 模语言:其含义详见2 6 2 ) 以及一系列工业标准,支持基于可视化的软件设计、内容存储 和交换,是一种基于模型的软件开发架构。m d a 将实现细节与业务功能分离【2 j ,并提供了 统一的元数据管理框架,这样就无需在每次新技术到来的时候,对应用程序或系统的功能和 行为重新建模,建模工作只需要做一次,就能应用到不同的技术平台上,即“一次设计,在 任何平台运行( d e s i g no n c e ,b u i l di to na n yp l a t f o r m ) ”。在m d a 中,模型不仅是描绘系统辅 助沟通的工具,更是软件开发的核心。m d a 的终极目标是把针对特定技术平台的编码工作 交由计算机自动完成,从而使模型的价值在包容己有技术的条件下被最大化。从软件开发人 员的观点来看,就是使软件复用由组件复用扩展到模型复用,从而最大程度地提升软件开发 效率和质量、降低开发成本、延长软件寿命,实现工厂化开发软件。m d a 把软件开发的注 意焦点提升到了更高的抽象层次,因此也提升了r r 业的成熟度。 1 2 研究现状 m d a 还处在一个发展的过程中,还在不断地演进。在m d a 中,模型转换是最重要的 一个部分,只有圆满地解决了模型转换的技术,才能够实现代码的自动生成。o m g 关于模 型转换提出了一个q v t 的标准提案,但目前尚未形成最后的“标准”,导致模型转换技术 至今未有突破性进展。虽然现在有不少工具提供了模型转换的支持,但总不尽如人意,还难 以做到精确的全自动模型转换。 国外对m d a 的关注已有5 - 6 年的历史,目前在m d a 开发工具市场上的情形是:模型 转换方法的标准化工作尚未完成,重点放在集成应用工具的开发上面。m 、b o r l a n d 等大 型厂商在他们的开发工具中提供部分的m d a 功能,但并没有完全遵循o m g 定义的m d a 规范。m d a 急需解决的问题就是规范标准化问题,由于规范没有标准化,厂商的m d a 实 现都是私有实现,m d a 工具厂商无法快速推出成熟的产品,关键在模型的动态转换。虽然 如此,m m 除了在r a t i o n a ls o f t w a r e a r c h i t e c t ( 以下简称r s a ) 中增加m d a 功能之外,在 开源项目e c l i p s e 中,也提出了e m f ( e c l i p s em o d e l i n gf r a m e w o r k ) 这一创新的m d a 代码 生成项目,由此可见i b m 对m d a 这一发展中技术的重视程度。b o r l a n d 公司宣传他们也在 关注m d a 技术,并且准备在t o g e t h e r 中配置基于m d a 的模型自动生成功能。相对业界大 厂商的冷静和矜持,一些中小厂商反而特别活跃,像i n t e r a c t i v e o b j e c t s 公司的a r e s t y l e l , c o m p u w a r e 公司的o p t i m a l j ,还有开放源码的a n d r o m d a 等遵循o m g 标准规范的m d a 工具已经在一些项目中得到了广泛的应用,并取得了显著的成效p j 。与工业界相比,学术界 更加关注m d a 相应技术的实现,其研究的重点放在新框架的提出上面。 1 3研究内容 本文以如何将m d a 技术应用到轻量级w e b 服务器开发为主要研究内容,对m d a 的基 本原理和开发模式、模型自动转换技术以及轻量级w e b 服务器的设计和实现进行了深入的 探索。主要研究内容如下: ( 1 ) 分析阐述m d a 的基本原理和开发模式,为后续的研究提供理论基础; ( 2 ) 研究w e b 服务器的基本工作原理及相关技术; ( 3 ) 设计一个满足一定指标的轻量级w e b 服务器,并遵循m d a 的开发模式予以实 现。 2 第一章绪论 ( 4 ) 基于模型转换的基本特性设计并实现一个模型自动转换工具。 1 4 论文组织结构 全文共分七章。第一章回顾了软件开发方法史并引出了m d a ,阐述了实践m d a 的意 义,并简要介绍了国外对m d a 的研究现状;第二章主要分析了m d a 的基本概念和核心技 术,并与传统软件开发模式进行对比,讨论了m d a 的开发模式及其优势;第三章阐述了 w e b 服务器的工作原理及相关技术;第四章分析了本轻量级w e b 服务器的需求,并在此基 础上创建了p i m ;第五章创建了转换定义,设计实现了自动转换工具,并在此基础上讨论了 转换的实现流程;第六章针对不同的指标对实现的轻量级w e b 服务器进行了评测;第七章 总结了研究的工作并展望了进一步的工作。 3 东南大学硕士学位论文 第二章m d a 基础理论 对于模型驱动架构m d a ,o m g 并没有给出一个明确的定义。由d a v i ds f r a n k e l 编著 的第一本介绍m d a 的书籍m o d e ld r i v e na r c h i t e c t u r e :a p p l y i n gm d at oe n t e r p r i s e c o m p u t i n g ) ) 中提出,m d a 是一种基于u m l ,以及其它工业标准的框架,支持软件设计和 模型的可视化、存储和交换,以独立实现的技术开发,以标准化的方式储存机器可读和高度 抽象的模型,并进行数据交换等操作。简单地说,m d a 是o m g 为实现模型可执行所做的 努力,其目的是“把建模语言当作编程语言来用,而不是设计语言” 4 1 。基于m d a 的软件 开发过程与传统方法大相径庭,这一章围绕m d a 的基本概念、核心技术及基于m d a 的软 件开发过程作了一些探讨。 2 1 传统软件开发的问题 2 1 1 生产效率问题 传统的软件开发通常是由底层的设计和编码驱动的,图2 1 描述了一个典型的传统软件 开发生命周期【5 1 。 舀函宙回回 图2 1传统软件开发生命周期 在这个过程中,无论我们使用传统的瀑布模型还是增量或迭代模型,文档和图表都是在 第一阶段至第三阶段产生的,其中包含了需求描述以及很多u m l 图表。一旦开始编码,这 些文档和图表很快就会失去价值。随着编码阶段的进展,图表和代码之间的联系会逐渐减少。 图表常常会变得与代码或多或少脱节,而不再是代码的精确说明。如果精简掉建立和更新高 层次的文档和图表的工作,又会给后期维护带来巨大的负担。所以,要么在软件开发的起始 阶段花费时间来创建高层次的文档和图表,要么在维护阶段花费时间来明确软件的架构。这 两种选择都是低效的,都不产生直接收益。 2 1 2 需求变更问题 由于残酷的竞争,企业的管理与业务经常发生变化,客户常常会要求变更需求,对于开 发方来说,这意味着调整系统实现的范围,增删系统功能,更严重的情况是系统架构的修改。 这些问题落实在生产过程中,则是设计的变动以及大量代码的修改。如果不能有效处理这些 需求变更,项目计划会一再调整,软件交付日期一再拖延,严重的话会导致软件开发的失败。 如何应对不断变更的需求是困扰软件开发人员的一道难题。 4 第二章m d a 基础理论 2 1 3可移植性问题 软件产业有一个特性可以区分于其他产业:每年( 有时候甚至更短时间内) 都会有新的 技术被发明并变得流行。旧的技术被淘汰,新的技术给公司带来了实际的好处,这就导致了 对老技术的投资迅速贬值。更复杂的情况是,技术本身也在改变,它们以不同的版本出现, 新版本并没有确保向后兼容。于是,现存的系统要么被移植到新的技术,要么移植到老技术 的新版本。如果系统与某技术紧密绑定的话,那么其扩展性和可移植性就必然很差。 2 1 4 互操作性问题 软件系统很少可以与世隔绝地存在,大多数系统需要同别的已存在的系统交流。哪怕系 统是从头建立的,它们也常常跨越多种技术,包括新技术和老技术。目前构建系统的趋势是 建立组件,让这些组件互相交互来完成任务,从而使对系统做改动变得简单。不同的组件均 使用最适合于它们的技术来创建,但是这些组件需要交互,这就带来了互操作性的需求。 2 1 5 维护与文档问题 文档一直是软件开发过程的薄弱环节。大多数开发者觉得他们的主要任务是编写代码, 在开发过程中编写文档需要花时间,会降低开发速度。文档并没有为开发者当前的主要任务 提供支持,而是为以后的任务提供支持。这是文档常常质量不高的一个主要原因,也是文档 常常没有与代码同步更新的原因。虽然有些编程语言如j a v a 提供从源代码直接生成文档的 机制,但这一解决方案只解决了低层次的文档问题,高层次的文档( 文字和图表) 依然需要 手工维护。只要创建的系统比较复杂,较高抽象层次的文档就不能省略。 2 2m d a 的基本概念 2 2 1 模型 m d a 这个名字强调了模型是m d a 的关注焦点。这里所说的模型并不局限于软件模型。 当某个软件用来支持一项业务,那么业务模型也同软件开发相关。在m d a 中,模型是以精 确定义的语言对系统( 或系统的一部分) 的功能、行为和结构做出的形式化的描述。精确定 义的语言是具有精确定义的形式( 语法) 和含义( 语义) 的语言,这样的语言适合计算机自 动解释。图2 2 表明了语言、模型和系统之间的关系。 图2 2 语言、模型和系统 5 酷卜圈 东南大学硕士学位论文 2 2 2 平台 在m d a 中,平台是指以接口或操作使用模式为应用程序提供功能集的子系统和技术的 集合,并且应用程序无需关注平台提供功能的实现细节。也就是说,平台是与软件的基本功 能无关的技术和过程细节。这并不是说平台不重要,事实上恰恰相反,但它和对系统过程的 描述之间的关系并不密切。当要实现系统的时候,平台就变得重要起来,因为平台就是对将 要使用的技术的规约。平台的例子包括c o r b a 、j 2 e e 、c + + 、n e t 和实时操作系统等。 2 2 3 计算无关模型( c o m p u t a t i o n a li n d e p e n d e n tm o d e l ,c i m ) c i m 描述的系统是一项业务或一个企业( 或它的一部分) 【6 】,它从用户的角度来描述特 定领域所面临的问题及系统需求的模型。c i m 包含了系统的数据信息等,它代表了生命周 期中的需求模型。当一部分业务需要由软件系统来支持时,我们就需要为该系统创建一个特 定的软件模型,这个模型描述了软件系统。业务系统和软件系统是现实世界中的不同范畴。 c i m 的一些部分可能是由软件系统来支持的,但c i m 本身依然是独立于软件的。 2 2 4 平台独立模型( p l a t f o r mi n d e p e n d e n tm o d e l ,p i m ) p i m 描述了系统独立于任何实现平台的系统结构和功能特征,是具有高抽象层次,独立 于任何实现技术的模型川。p i m 包含了我们对系统的所有规约,但是中立于任何实现平台。 p i m 代表了生命周期中的分析模型,只定义了系统的结构和功能,而不考虑系统的实现细节。 2 2 5 平台相关模型( p l a t f o r ms p e c i f i cm o d e l ,p s m ) p s m 描述了建立在特定技术基础上的系统结构和功能特征,包含了所有在p i m 中表示 的功能,并且还添加了针对实现平台的设计思想鹏1 ,是针对具体实现平台、实现技术的模型。 p s m 代表了生命周期中的详细设计模型,定义了系统的功能在特定平台上的实现方式。 2 3元建模 2 3 1 元建模导引 过去,语言常常是通过用b n f 描述的文法来定义的,文法描述了语言中哪些符号序列 是正确的表达式。这种方法适合基于文本的语言,并且被广泛运用。我们可以用b n f 文法 来定义建模语言,但却把语言限制为纯文本。因为建模语言未必是基于文本的事实上它 们通常不是基于文本的,它们可以有图形语法,例如u m l 。于是,我们需要一种不同的机 制来在m d a 环境中定义语言,这种机制称为元建模。 模型定义了系统中能够存在的元素,语言也定义了哪些元素可以存在,它定义的是模型 中可用的元素。例如,u m l 语言定义了我们可以在u m l 模型中使用类、状态、包等概念。 建模者可以使用的每种元素都是通过建模者所用语言的元模型定义的。在u m l 中,之所以 可以用类、属性、关联、状态、动作等,是因为在u m l 的元模型中有这些元素的定义。如 果u m l 元模型中没有包含元类c l a s s ,那么建模者在u m l 模型中就无法定义c l a s s 。 因为元模型也是模型,所以元模型本身必须用精确定义的语言表述。这种语言称为元语 言。值得注意的是,元语言在m d a 框架中扮演的角色不同于建模语言,因为它是描述建模 6 第二章m d a 基础理论 到旦哇 卜 倒旦酷 图2 3模型、语言、元模型和元语言 因为元语言本身也是语言,所以可以通过用另一种元语言表述的元模型来定义。理论上, 模型语言元模型元语言这样的关系层次是无穷无尽的。o m g 定义的标准用了四个层次。 2 3 2o m g 的四个建模层次 o m g 对其标准使用了四层构架。按照o m g 的术语,这些层次分别被称为m 0 、m 1 、 m 2 和m 3 1 9 1 。 ( 1 ) m 0 层:实例 m 0 层是数据层,包含了现实的对象、数据和系统。这是实例所存在的层次。举例来说, 这些实例可以是“学号为0 0 0 0 1 的学生李明”或是“学号为0 0 0 0 2 的学生张亮”。通常而言, 实例会很多,每个实例都有它们自己的数据。这些实例可能会以多种形式出现,比如数据库 中的数据,或者计算机中正在运行的活动对象。当为业务建模时,m 0 层的实例就是业务对 象,比如人、产品。当为软件建模时,实例是真实世界中的对象的软件表示,比如人事数据、 产品信息的电子版本。 ( 2 )m 1 层:系统的模型 m i 层是模型层,包含了对现实的抽象和建模,比如软件系统的u m l 模型。在m 1 层 的模型中我们定义诸如s t u d e n t 这样的类及其i d 、n a m e 属性。 m 0 层和m 1 层之间有确定的关系。m 1 的概念都是m 0 层实例的归类。换句话说,m 0 层的元素都是m i 层元素的实例。李明和张亮都是m 1 层元素s t u d e n t 的实例。 m 1 层元素直接规定了m 0 层的世界看上去是什么样的。u m l 类s t u d e n t 描述了m 0 层 的学生实例是什么样的。不可能出现不遵守m 1 层规约的实例。例如,如果某个实例有n a i l l e 属性但没有d 属性,那么它就不是s t u d e n t 类的实例,必须由另一个类来规定。图2 4 给出 了m 0 层和m l 层之间的关系。 7 东南大学硕士学位论文 图2 4m 0 层和m 1 层之间的关系 ( 3 ) m 2 层:模型的模型 m 2 是元模型层,规定了模型的描述规则,即建模的语言。位于m 1 层的元素( 类、属 性以及其他模型元素) 本身就是m 2 层( 更高一层) 类的实例。m 2 层的元素规定了m 1 层 的元素。m 1 层和m 0 层之间的关系同样也出现在m 2 层和m 1 层之间,每个m 2 层的元素 都是对m 1 层元素的归类。正如m 1 层包含了用来思考m 0 层元素的概念,m 2 层也包含了 用来思考m 1 层概念的概念,例如c l a s s 和a s s o c i a t i o n 。 位于m 2 层的模犁称为元模型,每个m 1 层的u m l 模型都是u m l 元模型的实例。当 我们创建系统的模型的模型时,我们创建的就是元模型位于m 2 层( 元建模层) 的模型。 事实上,创建元模型就意味着定义一种建模语言,模型就是用这种语言来表述的。图2 5 展 示了m 1 层和m 2 层之间的关系。值得注意的是,在u m l 模型中,s t u d e n t 类被显示为m 2 层u m lc l a s s 类的实例,而在图2 4 中,同一个s t u d e n t 被视为类。 正如图2 4 和图2 5 所示,用来描述元模型的符号和用来描述模型的符号是相同的。事 实上,m 1 层和m 2 层用到的概念是完全相同的。m 1 层的类定义了m 0 层的实例,m 2 层的 类定义了m 1 层的实例。 图2 5m 1 层和m 2 层之间的关系 ( 4 ) m 3 层:m 2 的模型 m 3 是元元模型层,往往是定义m 2 层所用的语言和标准。可以把m 2 层元素看成是 8 第二章m d a 基础理论 m 3 层的元素的实例。m 0 层和m 1 层元素以及m 1 层和m 2 层元素之间的关系同样也存在于 m 2 层和m 3 层的元素之间。m 2 层的每个元素都是m 3 层元素的实例,m 3 层的每个元素都 是m 2 层元素的归类。m 3 层定义了思考m 2 层概念所需的概念。图2 6 展示了m 3 层和m 2 层之间的关系。用于描述元元模型的符号和用于描述元模型以及模型的符号是一样的。在 o m g 中,m o f ( m e t ao b j e c tf a c i l i t y ,元对象设施;其含义详见2 6 1 ) 是标准m 3 语言, 所有的建模语言都是m o f 的实例。 图2 6m 2 层和m 3 层之间的关系 原则上,可以继续增加更多的层次,但实践表明,更多的层次没什么用。o m g 没有定 义m 4 层,而是规定所有m 3 层的元素必须定义为m 3 层本身概念的实例【l 们。当然,在现实 中,所有元素都是在现实世界中存在的,因此它们都属于m 0 层。有些m 0 层元素是对其他 元素的归类,因此属于m 1 层。m 0 层的一些别的元素是对前面这些元素的归类,因此属于 m 2 层。m 3 层元素的集合石m 2 层元素的子集,m 2 层元素的集合是m 1 层元素的子集, m 1 层元素的集合是m 0 层元素的子集。图2 7 描述了这一点。四层架构只是辅助思考模型 和归类的组织方式。 2 4模型转换 图2 7m 0 、m 1 、m 2 和m 3 之间的关系 2 4 1 模型转换基本概念 模型转换是模型驱动软件开发的关键技术,在模型驱动架构( m d a ) 中的模型转换技 9 东南大学硕士学位论文 术就是p i m 、p s m 和代码之间相互演化的技术。m d a 开发过程中的模型转换可以分为两大 类:模型到模型的转换和模型到代码的转换,这些转换总是由转换工具执行的。一个转换工 具以p i m 为输入,将之转换为p s m ;另一个转换工具再把p s m 转换为代码。目前已经有许 多c a s e 工具可以把p s m 转换成代码,而m d a 致力于p i m 到p s m 的自动转换。 转换工具中包含了描述如何转换模型的定义,这个定义叫做转换定义。转换定义包含了 一系列的转换规则,这些规则是无歧义的规约,规定了如何从一个模型( 或者它的一部分) 创建另一个模型。转换就是依据模型及转换定义产生新模型的过程。 下面是转换、转换规则和转换定义的正式定义: 转换是按照转换定义从源模型到目标模型的自动生成。 转换规则是对源语言中一个( 或一些) 构造如何转换为目标语言中一个( 或一些) 构造的描述。 转换定义是一组转换规则,这些规则共同描述了用源语言表述的模型如何转换为用 目标语言表述的模型。 上述定义没有对源语言和目标语言施加限制,因此源模型和目标模型可以用相同或不同 的语言表述,例如可以定义从u m l 模型到u m l 模型的转换或者从c + + 到c + + 的转换。 2 4 2 转换定义语言 从一个模型生成另一个模型,必须把源模型中的每个元素同目标模型中的一个或多个元 素建立联系,这可以通过建立源模型元素的元类同目标模型元素的元类之间的联系来实现 【1 1 1 ,因为模型元素和元类之间有实例类型的关系,元类在源模型中每个实例都必须遵从对 元类设置的规则。 图2 8 展示了一个模型转换的例子,将以u m l 描述的一个高层次的p i m 转换为一个低 层次的面向j a v a 的p s m 。 s t u d e n t + i d :i n t e g e r l + n a m e :s t r

温馨提示

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

评论

0/150

提交评论