(计算机软件与理论专业论文)基于敏捷mda的web应用系统的研究与开发.pdf_第1页
(计算机软件与理论专业论文)基于敏捷mda的web应用系统的研究与开发.pdf_第2页
(计算机软件与理论专业论文)基于敏捷mda的web应用系统的研究与开发.pdf_第3页
(计算机软件与理论专业论文)基于敏捷mda的web应用系统的研究与开发.pdf_第4页
(计算机软件与理论专业论文)基于敏捷mda的web应用系统的研究与开发.pdf_第5页
已阅读5页,还剩83页未读 继续免费阅读

(计算机软件与理论专业论文)基于敏捷mda的web应用系统的研究与开发.pdf.pdf 免费下载

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

文档简介

匹t l l 大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 基于敏捷衄a 的w e b 应用系统的研究与开发 计算机软件与理论专业 研究生 盛鹏指导教师常致全 随着企业信息计算技术和群e b 新技术的发展,传统w e b 应用系统的软件开 发面临着巨大的挑战:一方面如何让w e b 应用系统既能够在业务持续完善的过 程中实现快速调整,又尽量降低业务需求变化带来的开发成本;另一方面w e b 新技术的不断发展,不同的工业标准和技术平台层出不穷,如何建立一个较长 远的w e b 应用系统的架构来集成企业的内部商业系统,使他们的关键任务数据 系统能不断的适应新的硬件和软件平台标准。敏捷m d a 正是解决上述问题的一 种新的软件开发方法。敏捷m d a 是m d a 与敏捷开发结合的产物,它是在o m g 提 出的传统m d a 开发过程中引入敏捷开发的思想,让开发既具有m d a 中模型驱动 的平台无关性特点,又有敏捷的特点。敏捷m d a 的核心是可执行模型,可执行 模型既充当模型驱动过程中平台无关性模型的角色,又起到了开发过程中与客 户业务需求交流的作用。 本文先分别介绍了m d a 与敏捷开发的相关特点,然后着重介绍了敏捷m d a , 在介绍敏捷m d a 的过程中重点介绍了可执行建模语言和如何构建可执行模型。 本文还介绍了当前w e b 应用系统广泛使用的多层分布式软件体系结构和b s 体 系结构。 在论述了敏捷m d a 后,本文提出了一种基于敏捷m d a 的w e b 应用系统的设 计。在分析和设计的过程中,先针对当前w e b 应用系统的特点提出并解决了开 发过程中的关键技术问题,然后选取支持构建可执行模型的m d a 开发工具,最 后用某项目管理系统的功能模块为示例,详细演示了基于敏捷m d a 开发w e b 应 用系统的全过程。 关键词:敏捷m d a ;可执行模型;x u m l ;w e b ;软件体系络构 婴型奎兰堡圭兰堡垒兰二茎王墼壁坚里皇塑翌! 皇旦墨堑盟堑塞皇堑垄 a g il em d a b a s ed e s i g na n dd e v e l o p m e n to fw e b a p p l i c a t i o n m a j o rc o m p u t e rs o f t w a r ea n dt h e o r y p o s t g r a d u a t ep e n gs h e n g d i r e c t o rz h i q u a nc h a n g w i t ht h ed e v e l o p i n go fe n t e r p r i s ei n f o r m a t i o n c o m p u t a t i o nt e c h n o l o g y a n dn e ww e b t e c h n o l o g y ,t r a d i t i o n a l s o f t w a r e d e v e l o p m e n to fw e b a p p l i c a t i o nf a c e sag r e a tc h a l l e n g e ;o no n eh a n d h o wt om a k et h ew e b a p p l i c a t i o na d a p tm u c hc h a n g ei nt h ep r o c e s so fb u s i n e s sc o n s u m m a t i n g , a n da tt h es a m et i m em a k et h ec o s to fd e v e l o p m e n tl e s sa sp o s s i b l eb e c a u s e o ft h ec h a n g e :o nt h eo t h e rh a n d ,w i t ht h e d e v e l o p m e n to fn e ww e b t e c h n o l o g y ,m a n yd i f f e r e n tt e c h n o l o g ys t a n d a r d se m e r g ei ne n d l e s s l y ,h o w t ob u i l dal o n g r a n g ew e ba p p t i c a t i o nw h i c hi n t e g r a t e st h ei n t e r i o r b u s i n e s ss y s t e mo fe n t e r p r i s ea n dm a k ei t sc r u c i a ld a t as y s t e mc o n s t a n t l y a d a p tn e wh a r d w a r ea n ds o f t w a r es t a n d a r d s an e ws o l u t i o nt ot h e s e p r o b i e m si sa g i l em d a a g i l em d ai st h ec o m b i n a t i o no ft h em d aa n da g i l e d e v e l o p m e n t a g i l em d ai st h a ti ti m p o r 廿a g i l ei d e at ot h et r a d i t i o n a l d e v e l o p m e n to fm d at h a to m gi s s u e d ,s oi tm a k e st h ed e v e l o p m e n th a s t h e a g i l et r a i ta n dp l a t f o r mi n d e p e n d e n tt r a i to fm d a t h ee x e c u t a b l em o d e l i st h ec o r eo fa g i l em d a i tp l a y sar o l eo fp l a t f o r mi n d e p e n d e n tm o d e l i nt h ep r o c e s so fm o d e ld r i v ea r c h i t e c t u r e ,a n di ta l s ot h eb r i d g q b e t w e e n c u s t o mw h ou s et h es y s t e ma n dd e v e l o p e r t h i sa r t i c l e f i r s t l yr e s p e c t i v e l yi n t r o d u c e s m d aa n d a g i l e d e v e l o p m e n t ,a n d t h e n e x p o u n d s t h ea g i l em d a i nt h ep r o c e s so f i n t r o d u c i n ga g i l em d a ,t h ea r t i c l ep u t st h ee m p h a s e so nt h eb u i i d i n g e x e c u t a b l em o d e ll a n g u a g e sa n dh o wt ob u i i dt h ee x e c u t a b l em o d e l t h i s i i 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的碍f 究与开发 a r t i c l ea l s oa n a l y z e st h ep o p u l a rm u l t i l a y e rd i s t r i b u t e ds o f t w a r e a r c h i t e c t u r ea n db sa r c h i t e c t u r e ,w h i c hw e ba p p l i c a t i o ns y s t e m sw i d e l y u s e a f t e ri n t r o d u c i n ga g i l em d a ,t h ea r t i c l eb r i n g sf o r w a r da na g i l e m d a b a s ed e s i g no fw e ba p p l i c a t i o n i nt h ep r o c e s so fi n t r o d u c i n gt h e a n a l y s i sa n dd e s i g n ,t h ea r t i c l ef i r s t l yp u t sf o r w a r da n ds o l v e ss o m e c r u c i a lt e c h n o l o g i c a lp r o b l e m sa i m i n ga tt h et r a i to fc u r r e n t l yw e b a p p l i c a t i o n s e c o n d l yi tc h o o s e st h ep r o p e r t o o lt h a ti sc a p a b l eo f b u i l d i n ge x e c u t a b l em o d e l a tl a s tt h r o u g has u bm o d u l e o fap r o j e c t m a n a g e m e n ti n f o r m a t i o ns y s t e m ,t h ea r t i c l ed e m o n s t r a t e st h ep r o c e s so f a g i l em d a b a s ed e v e l o p m e n to fw e ba p p l i c a t i o n k e yw o r d :a g i l em d a :e x e c u t a b l em o d e l :x u m l ;w e b ;s o f t w a r ea r c h i t e c t u r e i i l 口ujj l 大学硕士学位论文一基于敏捷m d a 的w e b 应用系统的研究与开发 第一章绪论 1 1 课题背景 近年来,随着当代社会经济活动日益走向全球一体化和区域集团化,企业 内外的经济关系更加复杂,信息联系更加密切,竞争更加激烈。为适应社会信 息环境的变化和企业经营管理的需要,企业的信息系统也在不断地加以调整和 变革。随着i n t e r n e t 技术的发展,由于企业商业运作受到w e b 的影响越来越大, 许多企业都要求建立自己的w e b 业务系统或将现有的业务系统该造成w e b 形式, 因此基于w e b 应用的系统得到了迅速发展。 随着企业信息计算技术和w e b 新技术的发展,传统w e b 应用系统的软件开 发面临着巨大的挑战:一方面如何让w e b 应用系统既能够全面,迅速的实现管 理者的管理和业务要求,又能够在业务持续完善的过程中实现快速调整。另一 方面w e b 新技术的不断发展,不同的工业标准和技术平台层出不穷,如何建立 一个长远的w e b 应用系统的架构来集成企业的内部商业系统,使他们的关键任 务数据系统能不断的适应新的硬件和软件平台标准。与客户、供应商以及业务 伙伴一起集成己建立的、正在建立的和将建立的系统。 基于上面的分析,可以看出传统w e b 应用系统的软件开发是不能适应w e b 应用系统的发展,因此需要我们提出一种新的软件开发模式。对象管理集团 ( o b j e c tm a n a g e m e n tg r o u po m g ) 定义了一个新的软件开发框架,模型驱动架 构( m o d e ld r i v ea r c h i t e c t u r e 如a ) 。m d a 把系统模型当作解决互操作性问题 的核心,将标准化的层次从系统实现上升到了系统设计,最大的特点就是系统 规范相对于实现技术和平台的无关性。系统定义独立存在于任何实现模型,并 能通过正式的映射对应到各个可能的平台结构。但是普通的m d a 开发方法具有 重型开发的特点,太讲究模型文档的建立,不能迅速移交产品,不能满足现在 流行的w e b 应用系统迅速开发的特点,尤其是中小型企业系统。因此将m i ) a 与 敏捷开发的思想结合,提出了敏捷m d a 的开发模式,进行w e b 应用系统的开发。 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 1 2 课题内容 本课题的主要目的利用敏捷m d a 的开发思想开发w e b 应用系统。围绕这个 目的,本文先介绍了敏捷m d a 的特点,然后结合现在w e b 应用系统的软件体系 结构特点,提出了一种基于敏捷a 的w e b 应用系统的设计开发。在介绍敏捷 m d a 的过程中,由于敏捷m d a 是m d a 与敏捷开发结合的产物,因此先分别介绍 m d a 与敏捷开发,然后再介绍敏捷m d a 。在介绍敏捷m d a 的过程中重点介绍了 可执行建模语言和如何构建可执行模型。在分析设计过程中,采用了敏捷m d a 的开发思想,提出了设计原则,并结合某系统模块,选取m d a 工具进行了演示 开发。在分析设计过程中,采月了最先进的软件设计方法一面向对象的方法, 结合敏捷开发原则进行系统的分析与设计,使用了标准u m l 以及扩展子集进行 建模。 1 3 本文特点 本文结合w e b 应用系统的特点,尤其是中小型w e b 应用系统业务模型不复杂、 但是业务需求多变以及需要迅速生成系统产品的特点,提出了使用敏捷m d a 来设 计开发系统。基于敏捷m d a 开发w e b 应用系统的设计,将a 与敏捷开发的思想相 结合,即利用m d a 的模型驱动架构的思想,屏蔽具体的实现技术细节实现了企业 业务模型的重用:又利用敏捷开发的思想,提倡轻型开发。在开发过程中,专 注重要业务需求,迅速构建可执行模型,利用模型变换工具生成系统代码,进 行测试迭代,提高了开发效率,也保证了开发质量。这是本课题内容的特点。 1 4 本文结构 第一章介绍了课题背景和内容;第二章介绍了m d a 的体系结构与核心技术; 第三章介绍了敏捷开发,重点介绍了敏捷开发原则以及重构;第四章介绍了敏 捷m d a ,其中介绍了敏捷m d a 的开发过程与核心技术,重点介绍了可执行模型建 模语言以及构建可执行模型的建模过程;第五章介绍了软件体系结构,重点介 绍了适用于w e b 应用系统的多层软件体系结构:第六章介绍了一种基于敏捷m d a 2 四川大学硕士学位论文一基于敏捷m d a 的w e b 应用系统的研究与开发 开发w e b 应用系统的设计,提出并解决了设计应注意的核心问题:第七章介绍 了使用敏捷m d a 的开发w e b 应用系统的示例;第八章对本文作了一个总结,分 析了本课题研究的优点和不足以及如何改进。 四川大学硕士学位论文一基于敏捷m d a 的w e b 应用系统的研究与开发 第二章m d a 的体系结构与核心技术 2 1 简述m d a 模型驱动架构( m o d e ld r i v ea r c h i t e c t u r em d a ) 是对象管理集团( o m g ) 定义的一个软件开发框架。它的核心思想是抽象出与实现技术无关、完整描述 业务功能的核心平台无关模型( 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 l a t f o r ms p e c i f i cm o d e l ,p 晰) ,最后将 经过充实的p s m 转换成代码。p i m 与p s m 这两种模型是m d a 体系结构中对于一个 系统的不同视角的模型描述,它们之间是抽象和求精的关系,而且两个模型之 间通过模型映射机制相互映射,从而保证了模型的可追溯性,这也正体现了m d a 软件开发过程是一个模型自顶向下,逐步求精的过程【l 】。m d a 的结构图如下 所示: 图2 。1b d a 结构 4 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 2 1 m d a 的基本概念 2 1 1 模型 m d a 中关键的就是模型。在m d a 中模型并不局限于软件模型,在整个软件开 发周期中模型在各个不同的阶段的分类以及所扮演的角色也不一样。在m d a 中, 模型是需要在一定的规则下实现模型的自动变换,因此o m g 这样定义m d a 中的模 型。模型是以精确定义的语言对系统( 或系统的一部分) 做出的描述,这里的 精确定义的语言是具有精确定义的形式( 语法) 和含义( 语义) 的语言,这样 的语言适合计算机的自动解释【1 9 】。 2 1 2 业务模型、平台独立模型和平台相关模型 业务模型,也被称为计算独立模型( 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 ) 。它描述的是业务领域,描述业务所涉及的对象和要素,以及它们的属性、 行为和彼此关系:平台独立模型( p i m ) ,是指具有高抽象层次,独立于如何实 现技术的模型,建模的视角是使系统如何更好地支持业务,忽略具体的实现技 术;平台相关模型( p s m ) ,与平台独立模型相对应,它是为某种特定实现技术 量身定做的模型,是p i m 经过变换而得到的模型。这三种模型正是m d a 体系结构 中对于一个系统的不同视角的不同的模型描述。它们之间是抽象和求精的关系, 而且三个模型之间通过模型映射机制相互映射,从而保证了模型的可追溯性, 这正体现了m d a 软件开发过程是模型自顶向下,逐步求精的过程【1 3 】。 2 1 3 变换 变换是模型和模型之间映射和转换的过程,m d a b 够提高软件开发的生产 力,就在于实现了模型重用和模型的自动变换,因此变换是m d a 能否实现模型的 输入输出变换的关键。因此o m g 在m d a 框架中是这样定义变换:变换是按照变换 定义从源模型到目标模型的自动生成 交换定义是一组变换规则,这些规则共 四川大学预士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 同描述了用源语言描述的模型如何转换为用目标语言表述的模型;变换规则是 对源语言中一个( 或一些) 构造如何变换为目标语言中一个( 或一些) 构造的 描述。要使变换有实用价值,变换必须要使目标模型的含义和源模型一致。同 时,变换规则在m d a 的方法中,也有以下一些特性:可调性,也就是当p i m 模型 改变的时候,能够改变一些应用规则,从而保证p s m 模型的一致性;可追溯性, 也就是目标模型中的元素和源模型中的元素具有对应性,是可追溯的;增量一 致性:也就是当目标模型发生变化后,重新生成的目标模型会保留这一变化信 息;双向性:也就是源模型和目标模型的变化是双向的,可逆的( 现在的工具 一般都只支持正向变换) 【1 0 】。 2 2 m d a 的核心技术 2 2 1 元对象设施( h e r so b j e c tf a c iii t y ,m o f ) m o f 是o m g 定义的一种为规约面向对象模型的公共抽象语言,是专门用来定 义其它所有语言的。在o m g 定义的四层建模构架中,m o f 是最抽象层,m 3 层的标 准语言,所有的建模语言都是m o f 的实例。正是因为m o f 是各种元模型的通用语 言基础,这样就使元模型之间不再是孤立的,而是可以相互映射,相互交换数 据,所以可以说m o f 是模型变换的语言基础。m o f 标准提供了: 抽象模型:定义m o f 对象和他们之间的关联。 规则的集合:将基于m o f 的元模型映射到语言无关的接口( 使用c o r b ai d l 来 定义) 。对这些接口的实现可以被用来访问和修改任何基于这个元模型的模型。 定义元模型元素的生命周期、复合、和关闭语义的规则。 层级的反射接口( r e f l e c ti v ei n t e r f a c e s ) :定义了通用的操作,用于发现 ( d i s c o v e r ) 和操纵基于m o f 元模型的模型,但是对于映射后的接口的属主是未知 的【3 4 】。 2 2 2u 札秘扩展u 啊l u m l ,统一建模语言,是现在通用的对系统结构建模的语言。它的以下特点 6 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 决定了它在m d a 中重要地位。( 1 ) u m l 是一种文字和图形共同描述模型的语言, 图形化的描述可以更好的理解模型之间的联系,文本化的描述又可以便于计算 机的自动处理。( 2 ) u m l 是一种语言表达能力很强的语言,便于建立c i m 、p i m 并h p s m 模型,同时语言中的约束标记,又增加了模型的精确程度。但是普通的u m l , 对于p i m 生成完整的p s m ,特别是模型中的动态部分,是不能达到模型的自动转 换要求的。这样也就需要对u m l 进行扩展【5 】。 对u m l 的扩展有两种方法,个是用p r o f i l e 扩展u m l ( 轻型扩展) ,另一个 是用m o f 扩展u m l 。( 1 ) 用侧面( p r o f i l e ) 扩展u m l ,就是利用u m l 的标准扩展机 制进行扩展。一个p r o f i l e 就是组构造型( s t e r e o t y p e ) 、一组相关约束 ( c o n s t r a i n t ) 和一组标记标值( t a g g e dv a l u e ) 的定义。构造型,是定义具 有一个名字并关联到u m l 元模型中的元素;约束,描述的是对应该构造型的模型 元素的实例的限制;标记值:是一个额外的元属性,同u m l 元模型中u m l 元类关 联,一个标记值有一个名字,还有一个类型,并且关联到一个特定的构造型。 总的说来,p r o f i l e 就是为特定目标定义的一个特化的u m l 变体。( 2 ) 用m o f 扩展 u m l ,也叫做重型扩展( h e a v y w e i g h te x t e n s i o n ) 。重型扩展就是利用m o f 重新 定义一些针对j a v a 、c o r b a 的元模型,这些元模型的结构与u m l 的类模型具有相 似的结构。比较两种扩展方法,各有各的特点。p r o f i l e 是u m l 的标准扩展机制 的变体,因此可以使用通用的u m l 工具就能做到,所以是最常使用的u m l 扩展方 法,现在最新的p r o f i l e 是u m l 2 0 的p r o f i l e 机制。但是它又缺乏m o f 提供的全面 的面向对象的能力,因此在需要用更深的语义层次来智能管理新类型的元数据 的时候,就只有使用m o f 来进行重型扩展【2 】。 2 2 3 公共仓库元模型( c o n r a o nw a r e h o u s em e t a m o d ei ,硼m ) c w m 是o m g 专门为与数据仓库和数据挖掘的相关系统建模而设计的语言。c w m 是一组元模型,目的是为了在数据仓库工具、数据仓库平台和数据仓库存储之 间建立一个商务智能元数据的交换机制。c w m 元模型同u m l 元模型有很多相似之 处,但是去掉了u 札元模型的行为部分( 状态机,协作) ,同时添加了一些特殊 的类。这些特殊类主要是体现了数据仓库细节。c 刚包括的元模型包括关系数据 库、记录或结构、o l a p 、数据挖掘、业务元数据、多维数据库、仓库过程等。 7 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 c w m 模型主要是用来定义高度通用的、用于外部表示和共享元数据的模型。对于 那些不适合c w m 格式的元数据( 例如,和工具高度耦合的元数据) ,可以通过c w m 的扩展机制来处理它,也可以通过扩展核心的c w m 元模型来处理它,或者通过其 它工具相关的方法来处理【3 6 1 。 2 2 4x m l 、x m l 与x s l t ) ( m l ( e x t e n s i b l em a r k u pl a n g u a g e ) 是w 3 c 的标准之一,它提供了在w e b 上 面进行结构化数据和文档交换的通用格式。x m i ( x m l - b a s e dm e t a d a t a i n t e r c h a n g e ) 是x m l 的元数据交换格式,是由o m g 提出的标准。它定义了如何从 类模型映射到x 她的i ) t d 或s c h e m a 的规则,其目的是为了便于u m l 建模工具之间的 数据和元数据交换,并在多层分布式环境中提供元数据存储机制。x s l t ( e x t e n s i b l es t y l e s h e e tl a n g u a g et r a n s f o r m a t i o n s ,扩展样式语言转换) 也是w 3 c 标准之一,定义了x m l 文档的转换语言。由于糊l 经常作为模型的存储语 言,因此x s l t 顺理成章的成为了一种实用的模型转换语言。因此,x m l 、x m i 与 x s l t 是m d a 开发过程中模型映射转换的基础,也是m d a - 具与其他建模工具进行 数据交换的基础,同时这也是m d a 实现技术平台无关性开发的关键【3 5 。 q v t ( q u e r yv i e wt r a n s f o r m a t i o n ) 是o m g 为了改进模型转换技术在2 0 0 3 年 提出的关于模型的查询,视图和转换标准的一个邀请书,是未来模型转换标准, 其核心标准就是命令性语言( i m p e r a t i r e ) 、模板( t e m p l a t e ) 和声明行语言 ( d e c l a r a t i v e ) 。在o 粥近期公布的技术报告中,已经收到了8 个提案,并且提 出了相应的一些标准,如建议使用o c l 2 0 ( o b j e c tc o n t r a c tl a n g u a g e ) 为查询 语言。q v t 定义和规范了一系列术语,如查询,视图和变换。查询是寻找一个模 型的表达式,其结果是一个或几个类型的实例,这些类型可以是用原模型定义 的,也可以是用查询语言定义的。同时,q v t 提出了模型转换的典型应用场景, 根据这些场景才能翩定相应的转换规则。在这些场景中,m 到n 的转换显得比较 突出。它定义了从m 元模型到n 元模型的相互转换原则,而且已经在m d a 开发中得 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 到了应用,从p i m 至 j p s m 的转换就是这种场景的体现【3 3 1 。 2 3m d a 的框架 在m d a 的整个软件开发过程中,模型是驱动整个开发过程的原动力,模型之 间通过变换工具的相互映射是m i ) a 实现多样化实现技术的关键,可以这样说m d a 离开了模型和变换工具就失去了价值和意义。因此在m d a 的整个框架中。模型和 变换是最重要的【1 】。m d a 的框架图如下所示: 2 4i d a 的开发流程 图2 2m d a 框架 m i ) a 软件开发过程是一个模型自顶向下,逐步求精的过程。其本质就是完 成由业务模型到平台独立模型( p i m ) 再到平台相关( p s m ) 模型之间的变换。 整个开发流程如下: 用例驱动抽象求精映射变换 自动生成 需求分析 圈2 3m o b 开发流程 编译、部署、运行 9 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 2 5m d a 开发工具介绍 由于o m g 为m d a 制订的u i i l 2 o 的推广,以及i b m 和b o r l a n d 等软件开发商的支 持,现在市面上支持m d a 的开发工具越来越多。从其对m d a 开发过程的支持程度 来划分,可以将m d a 工具分为两类,一类是完全式,另一类是不完全式。( 1 ) 完全式,即完全支持整个开发过程,从u m l 建模,模型变换和代码的生成。比较 有代表性的有m e t a n o l o g yc o r p o r a t i o n 的m e t ad e v e l o p m e n te n v i r o n m e n t ( m d e ) ,i n t e r a c t i v e o b j e c ts o f t w a r e 的a r c s t y l e r ,c o m p u w a r ec o r p 的 o p t i m a l j 以及i b m 的r a t i o n a lx d e 。由于对m d a 开发过程的完全支持,完全式是 现在应用最为广泛的,也是发展最快的。( 2 ) 不完全式,即支持将从其他模型 工具得到的模型生成代码,比较有代表性的有c o d a g e nt e c h n o l o g yc o r p 的 a r c h i t e c t 以及t e l e l o g i c 的t a u 。 1 0 螋川人学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 第三章敏捷开发 3 1 简述敏捷开发( a g ii ed o v e i o p m e n t ) 2 0 0 1 年初,由于看到许多软件开发公司的开发团队陷入了不断增长的过 程的泥潭,一些业界专家就聚集在一起概括出了一些可以让软件开发团队具有 快速工作,响应变化能力的价值观和原则,并建立了敏捷联盟,他们所提出的 声明也就是敏捷宣言。敏捷开发是一种面临迅速变化的需求快速开发的能力, 其核心思想就是在软件开发过程中提出和执行一些保持软件灵活、可维护的设 计原则,减少分析设计过程中的文档,迅速编程,移交项目产品。对比需要大 量的需求分析和设计文档的庞大、重型的开发过程方法来说,敏捷开发的最大 特点就是“务实”。根据在开发中采用不同的敏捷手段,敏捷开发的过程也有很 多种,如s c r u m 、c r y s t a l 、特征驱动软件开发f d d ( f e a t u r ed r i v ed e v e l o p m e n t ) 、 自适应软件开发a d p ( a d a p t i v es o f t w a r ed e v e l o p m e n t ) 以及最重要的极限编 程x p ( e x t r e m ep r o g r a m m i n g ) 【4 】。 3 2 敏捷开发的核心价值观和原则 敏捷联盟在敏捷联盟宣言中提出了敏捷开发区别与其他重型开发的四点 价值观声明,这四点声明奠定了整个敏捷开发原则的基础。 ( 1 ) 个体和交互胜过过程和工具:人是获得成功的最为重要因素,如果团 队中没有优秀的成员,那么就是使用好的过程也不能从失败中挽救项目。合适 的工具对于成功来说是非常重要的,但是工具的作用如果被过分的夸大,使用 过多的庞大、笨重的工具就象缺少工具一样。总的说来团队的构建比环境的构 建重要。 ( 2 ) 可以工作的软件胜过面面俱到的文档:没有文档的软件是一种灾难, 然而过多的文档比过少的文档更糟。编制众多的文档需要花费大量的时间,并 且要是使这些文档和代码同步,就需要花费更多的时间。对于系统来说,编写 ! 业i 本学硕士学位论文一基于敏捷m d a 的w e b 应用系统的研究与开发 一份系统原理和结构方面的文档是必要的,但是应该是短小的而且是主题突出 的。代码是唯一没有二义性的信息源,在团队成员的头脑中保持着时常变化系 统的脉络图,人和入之间的交互是把这种脉络图传授给其他人的最快、最有效 的方式。因此提出了一个叫做“m a r t i n 的文档第一定律( m a r t i n sf i r s tl a w o fd o c u m e n t ) ”来预防文档拖延进度的缺陷:直到迫切需要并且意义重大时, 才来编制文档。 ( 3 ) 客户合作胜过合同谈判:成功的项目需要有序、频繁的客户反馈,不 是依赖于合同或者关于工作的描述,而是让软件的客户和开发团队密切的在一 起工作,并尽量经常地提供反馈。 ( 4 ) 响应变化胜过遵循计划:响应变化的能力常常决定一个软件项目的成 败。当我们构建计划时候,应该确保计划是灵活的并且易于适应商务和技术方 面的变化。计划不能考虑的太远,因为商务环境很可能会变化,客户在系统运 行的时候也会改变器求以及我们不能很精确的估算出开发需要的全部时间。所 以较好的做计划的策略是为下周做详细的计划,为下三个月做粗略的计划,再 以后就做极为粗略的计划。 从上面的价值观中,又引出了下面的1 2 条原则,它们是敏捷实践区别于重 型过程的特征所在。 ( 1 ) 我们最优先要做的是通过尽早、持续的交付有价值的软件来使客户 满意。 ( 2 ) 即使到了开发的后期,也欢迎改变需求。敏捷过程使用变化来为客 户创造竞争的价值。 ( 3 )经常的交付可以工作的软件,交付的间隔可以从几周到几个月,交 付的时间间隔越短越好。 ( 4 )在整个项目开发期间,业务人员和开发人员必须天天在一起工作。 ( 5 )围绕被激励起的个人来构建项目,给他们提供所需要的环境和支持, 并且信任他们能够完成工作。 ( 6 )在团队内部,最具有效果并且富有效率的传递信息的方法,就是面 对面的交谈。 ( 7 )工作的软件是首要的进度度量标准。 ( 8 ) 敏捷过程提倡可持续的开发速度。责任人、开发者和用户都应该能 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 够保持一个长期的,恒定的开发速度。 ( 9 ) 不断地关注优秀的技能和好的设计会增强敏捷能力。 ( 1 0 ) 简单使未完成的工作最大化的艺术一是根本的。 ( 1 1 ) 最好的构架、需求和设计出自于自组织的团队。 ( 1 2 ) 每隔一段时间,团队会在如何才能更有效地工作方面进行反省,然 后相应地对自己的行为进行调整【4 】。 3 3 敏捷开发中过程中的核心元素 3 。3 1 计划与迭代: 通过一次次的迭代与计划发布,使项目进入一种可以预测的,舒适的开 发节奏。客户通过迭代的反馈,看到项目的进展,安排自己用例实现的优先级, 拥有他们所需要的所有数据和控制权去管理项目。开发人员看到的基于t l 己他 们自己估算并且有他们自己度量的开发速度控制的合理计划,选择他们感觉舒 适的任务,并保持高的开发质量。 ( 1 ) 计划探究:即用几天时间去原型化一个或者两个需求用例来了 解团队的开发速度的过程。在项目开始时,由于开发人员和客户对真正需要的 需求用例是模糊的,再加上过大或者过小的用例都是难以估算的,因此开发人 员只能分割大的需求用例,根据适合的小用例来估算自己的开发速度。随着项 目发展,由于可以度量每次迭代中已经完成的用例点数,所以对于计划的开发 速度是越来越准确。 ( 2 ) 发布计划:在知道了开发速度的前提下,客户可以在自己众多 的用例中的去选择那些最想完成的同时又与开发速度相符合的用例,并大致确 定这些用例的实现顺序。 ( 3 ) 迭代计划:开发人员与客户决定迭代的规模以及在迭代期间需 要实现的用例。一旦迭代开始,客户就不能再改变该迭代期内需要实现的用例, 但是可以改变项目中的其他用例。即使没有完成所有的用例,迭代必须要在先 前指定的时间结束。每次的迭代速度会作为计划下一次迭代速度的基础,这样 的速度反馈有助于保持计划与开发团队的实际状况相同步。 1 3 四川大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 ( 4 ) 任务计划:在新的迭代开始时,开发人员和客户共同制订计划。 开发人员把用例分解成开发任务,一个任务就是一个开发人员能够在4 一1 6 小时 之内实现的一些功能。开发人员可以签订任意类型的任务,不同专业的开发人 员的任务也可以交叉,这样能够使项目的知识能够传播给每一个团队成员,使 团队更加健康。在任务计划后期,如果任务没有完成或者还没分配出去,开发 人员可以进行相互协商,基于各自的专长交换相应任务或者去掉某些任务。同 样如果提前完成任务,也可以去完成更多的其他未分配的任务。 ( 5 ) 迭代的中点:在整个迭代开发过程进行到一半的时候,团队应 该开一次会议,在这个时间点上,本次迭代中所安排半数用例应该全部完成。 如果没有完成,那么团队应该重新分配任务和职责,以保证在迭代结束的时候 完成所有任务。如果重新分配后仍然无法完成,就需要告诉客户,改变需要用 例实现的优先级别。 3 3 2 测试 编写单元测试是种验证行为,更是一种设计行为。同样,它更是一种 编写文档的行为。编写单元测试避免了相当数量的反馈循环,尤其是功能验证 的反馈循环。单元测试和验收测试是可编译和执行的一种文档,因此是准确和 可靠的。测试最大的好处就是它对于系统设计和构架的影响,系统越是具有可 测性,程序模块的耦合关系就越弱。 ( 1 ) 测试驱动的开发方法:在程序开发过程中,首先设计测试方案,利 用测试驱动进行开发。这种方法会有以下的好处:会让程序中的每一项功能都 有测试来验证它的操作的正确性:首先编写测试会让开发者拥有不同的观察点, 让开发者必须从程序调用者的有利视角去观察叫要编写的程序,在关注功能的 同时也关注它的接口,从而设计出便于调用的软件;测试是作为种无价的文 档形式,便于开发人员与客户交流,而且这种文档是可编译,可执行的,与代 码同步的。 ( 2 )测试促使模块之间隔离;在编写代码之前,先编写测试常常会暴露 程序中各个模块之间应该被解祸合的区域,从而使开发者对模块进行隔离,使 整个程序结构都处于有益的解耦合设计状态中。 四川i 大学硕士学位论文一基于敏捷m d a 的w e b 应用系统的研究与开发 ( 3 ) 单元测试:单元测试是由开发者根据程序的内部逻辑设计测试案例, 设计的宗旨就是测试案例尽可能提高程序内部逻辑的覆盖程度。单元测试用来 验证系统的小的组成单元应该按照所期望的方式工作,是用来验证系统中个别 机制的白盒测试,是程序员用编程语言写的。编写单元测试促使开发者在小的 方面做出优良的设计决策。 ( 4 ) 验收测试:是用来验证系统作为一个整体工作的正确性,是用来验 证系统满足客户需求的黑盒测试,是客户自己设计的语言编写的。验收测试由 不了解系统内部机制的人编写,是关于一项特性的最终文档。也是可编译和执 行的。编写验收测试使开发者在大的方面做出优良的系统构架决策。 3 3 3 重构 ( 1 )重构的定义:以下引用m a r t i nf l o w e r 对重构的定义。重构就是一种 在不改变代码外在行为的前提下对代码做出修改,以改进代码的内部结构的过 程。重构是一种有纪律的、经过训练的、有条不紊的程序整理方法,可以将整 理过程中不小心引入错误的机率降到最低。本质上说,重构就是在代码写好之 后改进它的设计【6 】。 ( 2 )软件模块的职责;功能性,能运行起来所完成的功能,这是软件模 块存在的原因;适应性,要响应变化,几乎所有的模块在它们的生命周期中都 要变化,开发者应该使这种改变尽可能的简单;要有很好的阅读性,对模块不 熟悉的开发人员应该能够比较容易的阅读并理解它。 ( 3 )重构过程中的“三次原则”:第一次做某件事情的时候,尽管去做; 第二次做同样的事情的时候,尽管很厌烦但还是去做了;第三次再做的时候, 就应该考虑重构了。在“三次原则”下,具体的重构原则如下:a 在添加功能 的时候重构,在添加新功能特性的时候重构,会弥补以前犯的错误,也使新特 性的添加更加容易;b 修补错误时重构,在修补错误时候重构,能够使代码具 有可读性,同时也能发现程序中的b u g :c 程序复审的时候重构,在复审程序的 时候重构,能够让程序员加深对代码的理解以及加强对开发经验的交流,从而 提高整个团队的开发能力。 ( 4 )重构的实现技术:a 模式匹配技术( p a t t e r nm a c h i n e ) :这是一种 四川大学硕士学位论文基于敏捷m d a 的w = b 应用系统的研究与开发 早期的技术。开发者利用s h e l l - b a s e d 正则表达式工具( 例女l l s e d ) 和编译器的 语意分析器联合使用来进行重构。这种方式的特点是比较灵活,但是只能小步 重构。b 元建模技术:这种技术是把执行重构看作模型转换。在执行重构前, 应该验证重构的前提条件,保留编译能力和行为特征不变。比较典型的有两种 方式:命令式,就象j a v a 能够抽象出表示j a v a 抽象树的类模型一样,以代码开 发环境为核心的重构。这个方式的特点是需要加入类型约束符,以保证推论的 正确性;说明性,利用说明性的体系来推论行为从而实现重构,例如u m l 中的0 c l 表达式就能实现重构契约,如重构的代码味道、不变式、前件和后件【1 8 。 ( 5 ) 重构的作用:a 重构为评测代码易维护性提供了一种衡量尺度 重构的代价越小易维护性越好;b 重构为解除b u g 提供了一种解决方案;c 重构 对于读懂别人的代码有很大的益处,甚至可以成为阅读代码的一种方法;e 重 构为消除过渡设计提供了一种衡量方法;f 重构可以消除重复设计、优化代码、 提高代码执行效率。 1 6 四j i i 大学硕士学位论文基于敏捷m d a 的w e b 应用系统的研究与开发 第四章敏捷m d a 4 1 软件开发方法学 4 1 1 定义 软件开发方

温馨提示

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

评论

0/150

提交评论