(计算机应用技术专业论文)mda软件开发方法的研究与应用.pdf_第1页
(计算机应用技术专业论文)mda软件开发方法的研究与应用.pdf_第2页
(计算机应用技术专业论文)mda软件开发方法的研究与应用.pdf_第3页
(计算机应用技术专业论文)mda软件开发方法的研究与应用.pdf_第4页
(计算机应用技术专业论文)mda软件开发方法的研究与应用.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机应用技术专业论文)mda软件开发方法的研究与应用.pdf.pdf 免费下载

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

文档简介

中山大学硕士学位论文 m d a 软件开发方法的研究与应用 m i ) a 软件开发方法的研究与应用 专业:计算机应用技术 硕士生:何国华 指导教师:陈有青副教授 摘要 目前在软件开发过程中,关注的焦点是代码,软件开发也是以代码为核心。 但是,纵观软件开发的发展历史,程序设计语言还将经一步抽象化、智能化,关 注的焦点也将是更高的一个层次模型,软件的开发也将转向以模型为核心。 对象管理组织( 伽g ) 提出了模型驱动架构的新方法就是顺应了这样的一个发展趋 势。i q t d a 的主要思想就是把原来的以代码为核心的开发转向以模型为核心的开 发。其目标就是把建模语言当成编程语言来使用,而不只是当作设计语言来用。 本文首先简单回顾了软件开发方法的发展历史,介绍了当前的主流开发技术 基于组件的开发技术,分析了程序设计语言的发展历程及其规律,这个规律 就是软件开发是不断提高抽象层次,不断融入更多智能化思想。之后,本文研究 了m d a 的体系框架。重点研究了从p i m 到p s m 的模型变换途径以及n i d a 中的关键 技术,并且分析了j 2 e e 平台与m 1 ) a 之间的关系。接着,本文研究了泐a 的开发 模式,包括m d a 软件开发生命周期、m i ) a 的角色及其任务、加a 与建模成熟度级 别和模型可执行的关系、m d a 开发模式的优势。 本文的重点是按照m d a 方法对广州市科技局项目基于中小型制造业企业可 重构e r p 系统中的一个子系统进行了实现,并详细介绍了实现过程。一方面获 得了应用m d a 的实践经验,另一方面在实验当中获得了实验结果数据,通过将此 实验结果数据与使用传统方法进行开发得到的相关数据进行比较,验证了这样的 结论:m d a 方法较大的提高了开发效率。另外,通过对代码进行分析,并使用相 关的工具进行相应的测试,发现使用m d a 方法开发的代码比使用传统方法开发的 代码更为规范,质量也有一定程度的提高。这一结论对今后的软件开发将产生积 极意义。文章最后对i v i d a 方法进行了展望并讨论了下一步研究工作。 关键字:模型驱动架构;平台无关模型;平台相关模型;统一建模语言 生当查兰受圭堂堡丝壅 些鏊堡茎垄查垫塑婴兰壁旦 r e s e a r c ha n da p p lic a ti o no f 姐) as o f t w a r ed e v e l o p m e n ta p p r o a c h m a j o r :c o m p u t e ra p p l i c a t i o nt e c h n o l o g y n a m e :h eg u o h u a s u p e r v i s o r :c h e ny o u q i n g ( a s s o c i a t ep r o f e s s o r ) a b s t r a c t n o w a d a y s ,t h ec o r eo fs o f t w a r ed e v e l o p m e n tb a s eo nc o d e b u tf r o mt h e h i s t o r yo fs o f t w a r ed e v e l o p m e n t ,t h ep r o g r a md e s i g nl a n g u a g e s h o u l db em o r e a b s t r a c t l ya n di n t e l l i g e n t ,t h ef o c u ss h o u l db eo nah i g h e r - l e v e l - - m o d e l u n d e rt h e t r e n d ,o b j e c tm a n a g e m e n tg r o u p ( o m g ) b r i n g so u tm o d e ld r i v e na r c h i t e c t u r e ( m d a ) t h em a r ei d e ao fm d a i ss h i f tt h ec o r eo fs o f t w a r ed e v e l o p m e n tf r o mc o d e t om o d e la n dt h ep u q ) 0 s ei st h a tu s i n gm o d e l i n gl a n g u a g ea sp r o g r a md e s i g nl a n g u a g e , n o to n l yd 瞄i g nl a n g u a g e t h i sp a p e rf i r s tr e v i e w st h eh i s t o r yo fs o f t w a r e d e v e l o p m e n tp a t t e r na n d i n t r o d u c e sc o m p o n e n t - b a s e ds o f t w a r ed e v e l o p m e n t ;a n a l y z e st h eh i s t o r yo fp r o g r a m d e s i g nl a n g u a g e ;c o n c l u d e st h a ts o f t w a r ed e v e l o p m e n tc o n t i n u a l l yr a i s e dt h el e v e lo f a b s t m c t l o n t h e na n a l y z e st h ea r c 2 m e c t u r eo fm d a ,e s p e c i a lt h ek e yt e c h n o l o g yo f m o d e lt r a n s f o r m a t i o na n dt h er e l a t i o n s h i po fj 2 e ep l a t f o r ma n dm d a t h e nt h e p a p e rd i s c u s s e 3t h ed e v e l o p m e n tp a t t e r no fm d a , 硫l n d i n gt h em d ad e v e l o p m e n t p r o c e s s , t h em d a l e t h er e l a t i o n s h i po fm d a a n dm o d e t i n gm a t u r i t yl e v e la n d e x e c u t a b l e m o d e l , a n d t h ea d v a n t a g e o f m d a d e v e l o p m e n t p a t t e r s t h ee m p h a s i so ft h i sp a p e ri su s i n sm d a a p p r o a c ht o 托妇p r o d u c td a t a m a n a g e m e n ts y s t e ma n dd i s c u s s e st h ed e t a i lo ft h ed e v e l o p m e n tp r o c e s s t h o u g h t t h a tg e t st h ee x p 。l i e n c eo fm d a a p p r o a c ha n dt h ce x p c r i m e n t a ld a t a a sc o m p a r i n g t h ed a t at ot h ec o r r e s p o n d i n gd a t ao ft r a d i t i o n a ld e v e l o p m e n ta p p r o a c h , s u m m a r i z e t h er e s u l t :m d aa p p r o a c hr e m a r k a b l yr a i s e sd e v e l o p m e n te f f i c i e n c ya n dh i g h e r q u a l i t yo ft h es y s t e m t h er e s u l tw i l lb r i n gs i g n i f i c a n c ei nt h e8 0 】脚a l cd e v e l o p m e n t i nt h es u m m a r i z a t i o n , w eg i v es o m ed i r e c t i o n so ft h en e x tr e s e a r c hw o r k k e y w o r d s :m d a ;p i m ;p s m ;j 艇m 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 引言 以计算机技术为代表的信息技术,已逐步渗透到社会的各个领域,正在改变 着人们的生产与生活方式、工作和学习方式。随着网络通信技术的进一步发展, 人们对于信息的获取、传输、处理的要求也越来越高。在信息技术中,计算机硬 件及网络设施是载体,而软件是核心。软件是计算机的灵魂,没有软件就没有计 算机应用,也就没有信息化。然而,软件生产却一直没有成熟起来,面对软件工 业化生产的需求,必须改变传统手工艺阶段的软件开发模式。 早期的软件主要是指程序,程序的开发采用个体工作方式,开发工作主要依 赖于开发人员的个人技能和程序设计技巧。当时的软件通常缺少与程序有关的文 档,软件开发的实际成本和进度往往与预计的相差甚远,软件的质量得不到保证, 开发出来的软件常常不能使用户满意。随着计算机应用的需求不断增长,软件的 规模也越来越大,然而软件开发的生产率远远跟不上计算机应用的迅速增长。此 外,由于软件开发时缺少好的方法指导和工具辘助,同时又缺少有关的文档,使 得大量已有的软件难以维护,从而导致了“软件危机”。“1 软件工程就是用工程化的原则和方法来克魇软件危机软件工程是一门交叉 学科它应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法, 创建软件以达至h 提高质量、降低成本的目的。其中,计算机科学、数学用于构造 模型与算法。工程科学用于制定规范、设计模型、评估成本及确定权衡;管理科 学用于计划、资源、质量、成本等管理。软件工程是- f 指导计算机软件开发和 维护的工程学科。 软件工程包括三个要素:方法、工具和过程。软件工程方法为软件开发提供 了“如何做”的技术。软件工具为软件工程方法提供了自动的或半自动的软件支 撑环境软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及 时地进行软件开发地目的。软件工程就是包含方法、工具及过程在内的一些步骤。 软件工程学科的研究内容主要包括:软件开发模型、软件开发方法、软件过程、 中山大学碗士学位论文 m d a 软件开发方法的研究与应用 软件工具、软件开发环境、计算机辅助软件工程c a s e ( c o m p u t e ra i d e ds o f t w a r e e n g i n e e r i n g ) 及软件经济学等。 六十年代末,人们提出了结构化程序设计思想。这种理论的思想是自顶向下, 逐步求精,大问题分解为小问题,最后分解为个一个单独的模块来进行编码, 再一个一个模块进行测试,最后组装起来统一进行测试。 七十年代,软件开发的前期阶段受到重视,人们开始研究结构化分析和设计 方法;程序设计方法学研究成为独立研究领域;以数据为中心的抽象数据类型概 念的提出;软件工具开始出现。 八十年代,从程序设计方法学研究转向软件开发方法学研究;计算机辅助软 件工程( c a s e ) 及软件工程环境的研制成为热点;面向对象技术开始出现并逐步 流行。 九十年代,面向对象方法和技术成为主流软件开发技术;软件过程研究及企 业软件过程改善成为热点;软件复用和软件构件技术被视为解决软件危机的一条 现实可行途径。九十年代后期,在面向对象基础上提出了基于组件开发的方法。 基于组件开发的目标是改进软件开发的过程,手段是通过一些预先构建的软件组 件来组装成新的软件。这种方法的提出确实使软件的重用提升到一个新的层面, 但是基于组件的软件重用并没有大规模的铺开,绝大多数软件还是必须从头开 始,其中的原因是多方面的。 与组件技术同时成熟起来的还有面向对象建模技术。九十年代初,各种各样 的面向对象建模语言的大量出现,并在实践中不断完善。但是,面向对象方法的 用户并不了解不同建模语言的优缺点及相互之间的差异,因而很难根据应用特点 选择合适的建模语言,于是爆发了一场“方法大战”。经过b o o c h 、r u m b a u g h 和 j a e o b s o n 三人的共同努力,面向对象建模语言逐渐形成了统一的标准语言 统一建模语言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 0 0 1 年对象管理组织0 ( o b j e c tm a n a g e m e n t g r o u p ) 提出模型驱动架构鼢a ( m o d e ld r i v e na r c h i t e c t u r e ) ,表明把模型作 为核心贯穿于整个开发过程的始终。毫无疑问,这种以模型为核心的开发方法必 将会给软件开发带来极大的变革。 2 中山大学碗士学位论文m d a 软件开发方法的研究与应用 第1 章绪论 1 1 基于组件的软件开发技术 为了能够利用软件复用的研究成果,加快应用系统开发的效率和质量,改进 软件开发的过程,人们提出了基于组件开发的思想。1 基于组件开发与面向对象 和客户服务器等有着本质的区别,它不只是一种分布计算的新方法,更是一种 广泛的体系结构。基于组件的开发可以提高软件的可重用性,使软件开发摆脱小 作坊的工作方式,按照大规模的工业化方式进行。基于组件的开发技术是软件开 发方法发展的必然结果。 1 1 1 组件的定义 一个软件组件是可执行软件的个可分离的部分,作为一个单元来说也是有 意义的,可以与其它组件实现互操作,需要某种环境的支持。只能通过组件的借 口来访问它,在进行了必要的安装和配置过程之后。它就能以接口规定的方式来 使用。为了能与其它组件一起共同工作,必须能够得到其接口的细节。 1 1 2 分层的架构 为了更好的改动组件或替换组件,我们一般把一个应用宠| 分为三个层次:表 示层、业务逻辑层、数据访问层。如图1 一l 所示。 表示层负责: 1 ) 处理对用户的信息表示,并提供一种机制允许用户与系统交互; 2 ) 处理用户界面事件,这些事件将触发业务逻辑层中的处理流程; 3 ) 管理其它与外部系统之问的数据进出接口; 4 ) 处理数据报表生成以及批处理文件; 业务逻辑层负责: 1 ) 处理业务过程,提供业务过程工作流的支持; 3 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 2 ) 处理核心业务相关的逻辑,响应表示层所触发的事件 3 ) 以业务对象的方式对业务领域进行建模; 4 ) 调用数据访问层的相关操作; 数据访问层负责: 1 ) 实现数据存取,通常是使用一个数据库管理系统; 2 ) 确保数据以正确的形式存储; 3 ) 隔离业务逻辑层,使其不必知道数据是如何存取的: 1 1 3 组件模型 图卜1 系统的三层架构 目前,主要有三种组件模型,分别是: 1 ) c o m 组件模型; 2 ) c o r b a 组件模型; 3 ) e j b 组件模型; c o m 是微软的组件对象模型。c o m 为组件交互定义了一个二进制的标准,这 种交互可以在一个进程内部进行,也可以穿过进程边界,通过一个与实现语言无 关的接口。基于c o m 的实现包括微软提供组件软件服务的a c t i v e x ,提供事务服 务的m t s 和提供数据访问服务的o l ed b 。 c o r b a 是o m g 为o r b 制定的标准。o r b 产品使用对象能够在异种分布式的环 4 主生奎堂堡主兰垒篓壅! 坠! 堕茎茎查鎏堕塑塞兰窒星 境中透明地发出请求并接受回应。c o r b a 标准允许用不同地编程语言来编写对象 ( 或组件) ,对象( 或组件) 不必知道另一对象( 或组件) 是不是在同一台主机 上,或使用的是何种操作系统。 e j b 是s u n 推出的基于j a v a 的服务器端构件规范j 2 e e 的一部分,它是基于 j a v a 语言,提供了基于j a v a 二进制字节代码的重用方式。e j b 给出了系统的服务 器端分布组件规范,这包括了组件、组件容器的接口规范以及组件打包、组件配 置等的标准规范内容。e j b 技术的推出,使得用j a v a 基于组件方法开发服务器端 分布式应用成为可能。 1 2 程序设计语言的发展历程 纵观软件开发的历史,我们不难得出结论:软件开发是不断提高抽象层次的。 作为软件开发中最为重要的部分程序设计语言经过了三个发展阶段,分别是 机器语言阶段、汇编语言阶段、高级语言阶段。 在计算机发展的早期,人们使用机器语言进行编程。机器语言表现形式就是 0 和1 ,人们通过编写0 和l 来输入计算机指令,而不同的c p u 所使用的指令是 不同的,这就使得人们需要针对每种c p u 来进行编程。使用机器语言编程的前提 是程序员必须熟悉计算机的指令系统,并记住各个寄存器的功能,还要了解机器 的许多细节。机器语言不需要任何翻译就可以立即执行,但是由于它是采用二进 制形式表示的,很难阅读和理解,还容易出错,给编程带来极大困难。因此,机 器语言是直接面向硬件的,抽象层次最低,编程方面没有任何智能化。 针对机器语言的缺点,人们发明了便于理解和阕读的汇编语言。它主要就是 用英文字母、符号来表示指令操作码、寄存器、数据和存储地址等,并在程序中 用它们来代替二进制编码数。汇编语言的抽象层次也是锻低的。而且可移植性较 差。但是,从机器语言到汇编语言是一个巨大的进步,因为程序员可以使用比较 符合人们思维习惯的语言来进行编程,然后通过汇编程序把汇编语言源程序翻译 成可直接执行的机器指令程序这样汇编语言通过汇编程序提高了编程的抽象层 次,方便人们的编程,使得在编程方面可以体现出一定的智台甚化。 高级语言的出现是程序设计语言的一大进步。它屏蔽了机器的细节,提高了 语言的抽象层次。人们可以使用比较接近思维习惯的自然语言进行编程,从而便 5 中山大学硕士学位论文m d a 软件开发方法的研究与应用 于人们对程序的理解和阅读。另外,通过使用高级语言,人们需要编写的代码也 相对减少了,提高了编程的效率。高级语言不依赖特定机器的结构和指令系统, 使用高级语言编写的程序通常能在不同的机器上使用,可移植性较好。上个世纪 八十年代,在高级语言的基础上,出现了面向对象程序设计语言,它能更直接地 描述客观世界个存在的事物( 即对象) 以及它们之间的关系,这进一步提高了语言 的抽象层次,同时也体现了较高的智能化编程技术,因为面向对象程序设计更加 符合客观现实和人们的思维习惯。 厂厂n阿 川今 二二二二殛匣圈哩e 三三 图l _ 2 抽象层次的不断提高 纵观整个程序设计语言的发展历程,我们可以看出,程序设计语言的发展是 不断提高抽象层次的,使得人们在编程的时候可以尽量使用符合人们思维和客观 现实的方式来进行,同时在软件过程中也越来越体现出智能化的编程思想。 t e l 按照这样的发展趋势,我们可以预料今后的程序设计语言的发展必将是朝着符合 人们思维习惯和客观现实的方向进行,同时在编程的智能化方面也将不断提高, 即未来的开发将建立在可执行模型基础之上,而m d a 的目标就是把建模语言当成 编程语言来使用,创建可执行模型。 1 3m d a 的发展与应用现状 关于m d a ,o m g 并没有给出一个明确的定义。在参考文献 4 中提到: “m d ai sa na p p r o a c ht os y s t e md e v e l o p m e n t ,w h i c hi n c r e a s e st h ep o w e r o fm o d e l si nt h a tw o r k i ti sm o d e l d r i v e nb e c a u s ei t p r o v i d e sam e a n s f o r u s i n gm o d e l st od i r e c tt h ec o u r s eo f u n d e r s t a n d i n g ,d e s i g n , c o n s t r u c t i o n ,d e p l o y m e n t ,o p e r a t i o n ,m a i n t e n a n c ea n dm o d i f i c a t i o n ” 6 中山大学硬士学位论文 m d a 软件开发方法的研究与应用 在参考文献 6 中提到,m d a 是一种基于u m l 及其它工具标准的框架,支持 软件设计和模型的可视化、存储和交换。以独立于具体的技术开发,以标准化的 方式存储机器可读和高度抽象的模型,并进行数据交换等操作。 2 0 0 1 年o m g 提出了m d a ,2 0 0 2 年初o m g 将m d a 定为战略发展方向,之后m d a 的发展是比较迅速的。2 0 0 3 年5 月,o m g 正式出版了m d ag u i d ev e r s i o n1 0 。 之后正式通过了u m l 2 0 ,进一步加大了对m d a 的支持,特别是在元对象设施m o f ( m e t ao b j e c tf a c i l i t y ) 和x m l 元数据交换x m i ( 珈lm e t a o a t ai n t e r c h a n g e ) 方面。另外查询、视图和变换标准q v t ( q u e r y 、v i e w sa n dt r a n s f o r m a t i o n s ) 也 正在制定过程中,这个标准主要就是负责变换定义的标准化,用标准语言来定义 变换定义。该标准的提案已于2 0 0 3 年公布,目前正式标准已在最后的制定过程 中。m 1 1 ”“” 目前在m d a 开发工具的市场上,i b m 、b o r l a n d 等大型厂商大多持谨慎的态 度,这主要是因为q v t 标准尚未正式制定完成,但是他们逐渐在他们的开发工具 中提供部分的m b a 功能。i b m 在新版的r a t i o n a l 、x d e 、r o s e 等开发工具中也增 加了部分m d a 功能。另外,在i b m 倡导的开源项目e c l i p s e 中。提出了e m f ( e c l i p s e m o d e li n gf r a m e w o r k ) 这- - 6 0 新的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 和e c o 等工具中加入了m d a 的模型自动生成功能。相对于大型厂商的谨慎,一些中小厂商却非常活跃,其中 比较优秀的有c o m p u w a r e 公司著名的o p t i m a l j 开发工具、i n t e r a c t i v eo b j e c t s 公司著名的a r c s t y l e r 开发工具和m a t a n o l o g y 公司的t i d e 开发工具。另外在开 发源代码的工具方面,比较优秀的有h n d r o m i ) h 开发工具。在国内厂商方面,凯 科思特( 北京) 科技有限公司推出的k c 咖也宣称是支持肋 功能。 在成功案例方厩,以下公司宣称他们使甩了u 1 ) a 技术进行商业系统的开发, s w i s s l o gs o f t w a r ea g 公司的s u p p l yc h a i nm a n a g e m e n ts y s t e m 项目, f f - e c o m m e r c es o f t w a r e 公司的e r ps y s t e m 项目,d a n z a s 公司的i b a sb u d g e t i n g s y s t e m 项目、o b b 公司的n a t i o n a la u s t r i a nr a i l w a y sl d z ( l e i s t u n g s d a t e n z u g f a h r t ) 项目等等。秘儿鹞1 耵1 7 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 1 4 本文的主要工作及组织结构 1 4 1 本文的主要工作 m d a 是o m g 提出的新的开发方法,。它的主要思想就是把建模语言用作一种编 程语言,而不仅仅是设计语言。本文对这一新的软件开发方法作了深入的分析, 其中包括舳a 的体系结构、基本框架、p i m 到p s m 的模型变换、重点介绍了m d a 的核心技术。此外,还分析了m d a 的开发模式,尤其是m d a 的软件开发生命周期 以及m d a 开发模式的优势。在此基础上,本文按照a 方法对一个研究项目进行 开发。此研究项目来源于基于中小型企业的可重构e r p 系统,本人此前曾参 与此项目的开发,之前的开发是采用传统的开发方法。通过使用她a 方法来开发 其中的一个子系统,得出相关的实验结果。通过比较此实验结果与传统开发方法 当中的相关数据,验证了这样的结论:m d a 方法较大的提高了开发效率。另外, 通过对代码进行分析,并使用相关的工具进行相应的测试,发现使用m d a 方法开 发的代码比使用传统方法开发的代码更为规范,质量也有一定程度的提高。此结 论对今后的软件开发将产生积极的影响。 1 4 2 本文的组织结构 本文共分六章,第一章为绪论部分,主要包括基于组件的软件开发、程序设 计语言的发展历程以及m d a 的发展与应用现状。 第二章介绍了m d a 的体系框架,主要包括醒d a 的体系结构、基本框架、p i ) a 到p s m 的变换途径、m d a 的核心技术等。 第三章分析了m d a 的开发模式。主要内容包括m d a 的软件开发生命周期、抛a 方法中的角色及其任务、l m a 与建模成熟度级别、重点分析了m d a 开发模式的优 势。同时还分析了j a v a 平台与m d a 的关系。 第四章是本文的重点。主要是采用d a 方法来实现具体的研究项目,其中包 括使用m d a 方法进行开发的步骤以及一些相关的内容。通过实验得到了相关的实 验数据,并结合之前使用传统方法进行开发的一些相关数据,通过比较得出结论。 第五章总结了本文的研究内容,并对下一阶段的研究工作进行了展望。 g 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 第2 章m d a 体系框架 2 1 基本概念 2 1 1 抽象、求精 一般来说,在考虑任何问题的模块化解决方案时,可以以给出很多的抽象级 别。在最高的抽象级别中,解决方案使用问题环境的语言来进行概括性的术语描 述,在低一些的抽象级别中,会有更加面向具体过程的倾向。为了描述解决方案, 要一同使用面向问题的术语和面向实现的术语,最后,在最低的抽象级别中,用 能够直接实现的方式描述解决方案。 软件工程过程中的每一个步骤都是软件解决方案抽象级别上的求精。在系统 工程时,软件划分为基于计算机的系统的一种元素;在软件需求分析时,使用“问 题环境中熟悉的”术语来描述软件解决方案;当我们在设计过程中时,降低了抽 象级别,最终,当源代码生成时,就到达了最低的抽象级别。 逐步求精方法是一种自顶向下设计策略,程序的体系结构是通过过程细节的 逐层细化开发的,层次结构通过逐步地分解功能的宏观声明。直至形成程序设计 语言的语句而开发出来。 求精实际上也是一个不断细化和推敲的过程。我们从高抽象级别定义的功能 描述开始,也就是说,该描述概念性地说明了功能,但没有提供有关功能内部工 作的情况。求精的过程使得设计者去推敲原始声明,并在后续的求精活动中提供 越来越多的细节。 抽象和求精是一组互补的概念,简单地说,抽象就是略去无关的细节,求精 就是现实化。抽象使得设计者能够刻画过程和数据而同时忽略低层细节,求精有 助于设计者在数据过程中揭示低层的细节,两个概念均帮助设计者在设计演化中 构造出完整的设计模型。“儿蚓 2 1 2 模塑及其分类 9 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 模型是m d a 的关注焦点,它同软件开发是密切相关的。模型具有以下的共同 特征:”洲 1 ) 模型总是现实中的系统的抽象。 2 ) 模型和被建模的系统是两个概念。 3 ) 模型可用来指导仓0 建现实中的系统。 4 ) 模型描述系统的方式使我们可以依据模型建立类似的系统。 5 ) 模型总是需要以某种语言来进行描述的。 在m d a 中,模型是指以精确定义的语言对系统或其一部分做出的描述。精确 定义的语言是指具有精确定义的语法和语义的语言,这样的语言才适合计算机自 动解释。 一个系统可能会有很多不同的模型,这些模型是对同一系统不同方面抽象而 得到的。显然,在同一系统上建立的多个模型之间必然有某种关系。对同一系统 建模得到的多个模型之间的关系多种多样,比如其中个模型可能只描述系统的 一部分,而另一模型则描述另一部分,这两部分可能会有重叠之处。一个模型也 可能比另一个模型更加细致地刻画了同一个系统。两个不同的模型还可以从完全 不同的视角来描述同一个系统。在m d a 中,关注的是模型闻种特殊的关系,即 自动生成关系,也就是一个模型可以由另一个模型自动生成。 模型提供了一个物理系统的抽象,开发人员可以通过忽略无关的细节而把注 意力放到系统的重要部分来对系统进行建模。开发过程中所有工作都依赖模型来 理解复杂的、现实的系统。模型作为开发人员理解物理系统的一种方式,因此必 须优先建模。当然,模型也可以根据一个已存在的系统或者开发中的系统而被建 立,这样模型就是开发人员理解系统行为的一种帮助手段。 图2 - 1 描述了不同种类的模型的基本分类法。主要有以下几种: 业务模型和系统模型。业务模型主要描述业务方面,系统模型侧重用更为专 业、更为精确的语言来描述业务模型。因此,系统模型的作用域要比相应的业务 模型的作用域小。 逻辑模型和物理模型。逻辑模型通过类模型和行为模型描述了系统的逻辑。 物理模型主要描述在开发时和运行时用到的相关资源,包括模型文件、源代码文 件、可执行文件和处理器等等。 1 0 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 需求模型和计算模型。需求模型主要是通过独立于计算的方式来描述逻辑系 统,也就是需求模型尽量不考虑具体的技术因素。计算模型则侧重于从具体的技 术角度来描述逻辑模型。 图2 - i 模型的分类 平台无关模型和平台相关模型。软件平台是指用来构建与支撑应用软件的独 立软件系统。它是开发与运行应用软件的基础,是任何一个应用软件得以实现与 应用的必要条件。在u 1 ) a 中,平台无关模型p i m ( p l a t f o r mi n d e p e n d e n tm o d e l ) 是指具有高抽象层次、独立于任何具体技术的模型。在p i n 中,主要需要考虑的 问题是“系统如何才能最好地支撑业务”,至于系统是用大型机上的关系数据库 实现,还是用e j b 应用服务器实现,这不是p i m 所考虑的间愿平台相关模型 p s m ( p l a t f o r ms p e c i f i cm o d e l ) 是为某种特定实现技术量身定做的,在p s m 中可以使用这种特定技术中可用的实现构造来摇述系统。例如,e j bp s m 是用e j b 结构来表述的系统模型。它通常包含e j s 特有的术语“e n t i t yb e a n ”、“s e s s i o n b e a n ”等等。关系数据库p s m 则包含“t a b l e ”、“c o l u m n ”、。f o r e i g nk e y ”等术 语。p i m 可以被变换成一个或多个p s m ,为每个特定的技术平台生成一个单独的 p s m 。 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 2 1 3 变换规则、变换定义与变换 变换规则是对源语言中某一构造如何变换为目标语言中的对应构造的描述。 变换定义是一组变换规则,这些规则共同描述了用源语言表述的模型如何变 换为用目标语言表示的模型。 变换是源模型按照变换定义到目标模型的自动生成。 对于变换工具来说,它输入的是一个模型,输出的是另一个模型。在这个工 具中就包含了一个变换定义,这个变换定义描述了模型是如何变换的。变换定义 包含了一系列的变换规则,这些规则是无歧义的规约,规定了如何从一个模型创 建另一个模型。变换是依据模型及变换定义产生新模型的过程,对于所有的输入 模型,变换工具使用同一套变换定义。如图2 2 所示。 多 使_矗_ 圈圃应 - 咂亟卜( 垂夏超 图2 - 2 变换过程 为了让变换有实用价值,变换必须具备一些特征。最重要的特性就是变换必 须保持目标模型的含义同源模型一致。当然,这仅局限在一定范围内:只有源模 型和目标模型都能够表达的含义才能够保持不变。例如,u m l 模型可以包含行为 规约,但e r 模型无法表示行为规约。即便如此,哪l 模型还是可以变换为e r 模 型,但是只有系统的结构特性被保持了。呻嗍 2 i 4 元建模 对于基于文本的语言通常是使用b n f 描述的语法来定义的,语法描述了语言 中哪些符号序列式正确的表达式。我们可以用b n f 语法来定义建模语言。b n f 语 法满足了“适合自动解释”的要求,但是却把语言限制为纯文本。但是,通常建 模语言还需要有图形语法,因此我们就需要一种不同的机制来在m d a 环境中定义 建模语言。这种机制就称为元建模。蛳“”因为元模型也是模型,所以元模型本身 中山大学磺士学位论文 m d a 软件开发方法的研究与应用 必须用精确定义的语言表达。这种语言称为元语言。它们之间的关系如图2 3 所示。 蔓i 编写垂塑蛩舣( 蔓二卜编写呕委囊匿翌 图2 3 元语言、元模型、语言和模型 建模人员可以使用的每种元素都是通过他所用的语言的元模型来定义的。在 u m l 中,可以使用类、属性、关联、状态、动作等等,是因为在u m l 的元模型中 有这些元素的定义。如果u 1 i i l 元模型中没有包含元类i n t e r f a c e ,那么建模人员 在u i i l 模型中就无法定义接口( i n t e r f a c e ) 。 2 2m d a 的体系结构 m d a 体系结构的核心建立在u m l 、m o f 和c 哪上。每个核心模型都独立于 任何中间件平台,都表示所属类别中所有平台的共同特性。无论最终目标是c c m ( c o r b ac o m p o n e n tm o d e l ,c o r b 组件模型) 、e n t e r p r i s ej a v a b e a n s ( e j b ) 、 m i c r o s o f tf f s 还是n e t 体系结构,或者其他基于组件或者基于事务的平台, 图2 - 4l 1 1 ) a 的体系结构 中山大学硕士学位论文m d a 软件开发方法的研究与应用 构造基于m d a 的应用程序的第一步都是使用u m l 创建一个平台独立的、与相应 核心模型一致的应用程序模型。然后,变换工具可以把这个一般的应用程序模型 转化成针对特定平台的模型,如c c m 、e j b 或n e t 。图2 4 把这些目标平台放 在围绕核心的简单环形结构中。“” 虽然标准映射使工具能够自动完成某些转换,多数情况下还是需要一些手工 编码,特剐是在m d a 工具还不完善的情况下。随着用户和工具构建人员积累的 经验越来越丰富,建模应用程序语义的技术越来越先进,对人为干预的需要也会 越来越少。 特定于平台的模型表示了应用程序在业务和技术上运行时语义。它仍然是一 个u m l 模型,不过是用u 扎p r o f i l e 表示的( 因为经过了转换步骤) ,这种 p r o f i l e 准确地反映了目标平台技术上的运行时元素。原来的平台无关模型的语 义被带入特定于平台的模型中。 下一步是生成应用程序代码本身。对于组件环境雨言,系统必须生成多种类 型的代码和配置文件,包括接口文件、组件定义文件、程序代码文件、组件配置 文件和装配配置文件。特定平台的u m lp r o f i l e 对实际平台环境的反映越完 整,在特定平台的应用程序模型中能够包含的应用程序语义和运行时行为就越 多,生成的代码也就越完善。 2 3m d a 的基本框架 m d a 的基本框架如图2 - 5 所示。 从开发者的角度来看,p s m 和p i m 是最为熏要的元素。开发者把注意力集中 在开发p i m 上,在高抽象层次来描述软件系统。然后,他选择一种或多种工具来 执行对p i m 的变换。这些工具是按照特定的变换定义开发的。变换韵结果是p s i ! , 这个p s m 在经过相关的工具变换成代码。一个p i m 常常可以生成多个p s m ,而且 还会生成它们自己可能的桥接器。图2 4 中只给出了一个从p i m 到p s m 的变换和 一个从p s m 到代码的变换。“”“” m d a 框架中的组成部件主要有: 1 ) 高抽象层的模型。用精确定义的语言编写,包含足够的系统信息。 2 ) 一种或多种标准、精确定义的语言。用来编写高层次模型。 1 4 中山大学硕士学位论文 , i d a 软件开发方法的研究与应用 3 ) 把p i m 变换到特定p s m 的变换定义,变换定义需要被标准化,用户也可 以根据需要调整这些定义。 4 ) 编写这些定义的语言。这种语言必须是形式化的,能够被变换工具解释 执行。 5 ) 能够执行p i m 到p s m 变换的工具。 6 ) 把p s m 变换到特定代码的变换定义,交换定义需要被标准化,用户也可 以根据需要调整这些定义。 7 ) 能够执行p s m 到代码的变换的工具。 2 4p i m 到p s i 的变换 图2 - 5m a 的基本框架 在m d a 方法中,有两个变换,一个是从p i m 到p s m 的变换,另一个是从p s a 到代码的变换。从p s m 到代码的变换技术相对成熟,这里主要分析从p i m 到p s m 的变换,根据文献 4 1 1 ,这个变换可以通过五种途径;添加标记( i v l a r k i n g ) 、 元模型变换( m e t a m o d e lt r a n s f o r m ) 、模型变换( m o d e lt r a n s f o r m ) 、模式应 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 用( p a t t e r na p p l i c a t i o n ) 、模型合并( m o d e lm e r g i n g ) 。 2 4 1 添加标记( m a r k i n g ) _ r _ _ _ _ _ _ l ! 型 厂i 图2 - 6 添加标记 图2 - 6 给出了这样的变换途径。这种途径主要就是,在需要变换之前选择一 个特定的平台,与此平台对应有一个映射规则集( m a p p i n g ) ,这些映射规则集中 的规则包含一系列预先定义的标记( m a r k s ) 。这些标记的主要作用就是给模型中 的元素增加标注,用来指导模型的变换过程。在给模型元素增加完标记以后,将 使用此平台对应的映射规则对加了标记的模型进行转换,生成对应平台的p s m 。 2 4 2 元模型变换( 1 4 e t a m o d e lt r a n s f o r m ) 图2 - 7 给出了通过元模型变换定义来实现p i m 到p s m 的变换途径。在这种途 径中,p i m 模型使用平台无关的语言来定义,而这种平台无关的语言使用平台无 关的元模型来描述,p s m 模型使用平台相关的语言来定义,对应的这种平台相关 的语言是使用平台相关的元模型来描述。在这两个元模型之间存在变换规则集, 按照此变换规则集就可以将平台无关的元模型转换为平台相关的元模型,对应的 也就实现从p i m 生成p s m 的转换目的。 1 6 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 图2 - 7 元模型变换 2 4 3 模型变换( m o d e lt r a n s f o r m ) 图2 - 8 给出了通过模型变换的方式来实现从p i m 到p s m 的变换。在这种途径 中,p i m 模型使用平台无关的类型来说明,p i m 中的元素是这种平台无关的类型 的子类型,p s m 模型使用平台相关的类型来说明,p s m 中的元素是平台相关类型 的子类型。由于选定的特定平台存在对应的变换按刚,因此可以按照此规则将平 台无关的类型转换为平台相关的类型,从而可以实现从p i m 变换生成对应的p s m 。 图2 - 8 模型变换 1 7 中山大学硕士学位论文 m d a 软件开发方法的研究与应用 2 4 4 模式应用( p a t t e r na p p l i c a t i o n ) 图2 - 9 模式应用 图2 _ 9 给出了通过模式应用来实现从p i m 到p s m 的变换途径。这种途径扩展 自模型映射和元模型映射方式,在它们的基础上增加了模式( p a t t e r n ) 概念, 通过与模型语言或者类型的概念配合使用。在平台无关的类型基础上,作为一 个通用的模型还可以补充一些模式。平台无关的类

温馨提示

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

最新文档

评论

0/150

提交评论