(控制理论与控制工程专业论文)极限编程及其在优化排产软件开发中的应用.pdf_第1页
(控制理论与控制工程专业论文)极限编程及其在优化排产软件开发中的应用.pdf_第2页
(控制理论与控制工程专业论文)极限编程及其在优化排产软件开发中的应用.pdf_第3页
(控制理论与控制工程专业论文)极限编程及其在优化排产软件开发中的应用.pdf_第4页
(控制理论与控制工程专业论文)极限编程及其在优化排产软件开发中的应用.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(控制理论与控制工程专业论文)极限编程及其在优化排产软件开发中的应用.pdf.pdf 免费下载

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

文档简介

大连理t 大学硕士学位论文 摘要 极限编程是j 黩年来提出的种全新的、轻量级的软件开发方法。该软件过程开发方 法 鞍邋会于中夺鍪顼鼙。极限绦茬逶遂瑷场客户、狻祷鹣麓荛l 方式、持续溺试亲实瑗 快速反馈和高效的交流机制,最终使交付价值最大化。 本文薷宠奔绥较 譬工程豹瑷获帮簧绞软俘过理开发静褥点,然后奔缮了较酲编程静 基本方法殿相关工具。在此基础上,将极限编程方法应用于宝钢冷轧厂优化排产软件的 开发过程著绘凄了较接系绞鹃设诗方案。在镜讫鬟 产软牟豹实麓逡疆中,本文重点讨论 了软件编程中的自动化单元测试及自动化构建,介绍了优化排产软件系统的两个功能模 块一生声诗戋l 模块褒霪羧生产攘块及挽晓臻产较搏系统褒溺运芎亍 耄獯。本文最后对王作 进行了总结并且展耀了下一步的工作。 美键词:极限编程;优化箱 产;软件工程;结对编褪 霆塑璺篓堡茎垄垡些壁兰鳖丝茎垄皇墼壅墨一一 e x t r e m e p r o g r a m m i n g a n di t sa p p l i c a t i o ni no p t i m i z e d p l a n n i n g s o f t w a r ed e v e l o p i n g a b s t r a c t e x t r e m ep m g r m ! a m j n g 玲i sar l e v f ,l 谚t w e i g h is o f t w a r ed e v e l o p i n ga p p r o a c ha p p e a r e d i nr e c e n ty e a r s i ti sf i tf o rt h es m a l lo rm e d i u mp r o j e c t x pu s e sr a p i df e e d b a c ka n dh i 曲一 b a n d 埘d t hc o m m u n i c a f i o n 协m a x i m i z ed e l i v e r e dv a l u e , v i aa l lo i l - s i t ec u s t o l m e r , ap a r t i c u l a r p l a n n i n ga p p r o a c h , a n d c o n s t a n t t e s t i n g t h e p a p e rf i r s t l yi n t r o d u c e s t h ea c t u a l i t yo fs o t t w a r ee n g i n e e r i n ga n dt h ec h a r a c t e r i s t i co f t r a d i t i o n a ls o t l w a r ed e v e l o p i n gm e t h o d ,a n dt h e ni n t r o d u c e st h eb a s i ca p p r o a c h e so fx pa n d r e l a t e dt o o l s o nt h eb a s i so ft h ek n o w l e d g e ,t h ep a p e ra p p l i e sx pm e t h o dt ot h eo p t i m i z e d p l a n n i n g s o f t w a r eo f b a o s t e e l c o l d - r o l l i n gm i l la n dg i v e s t h e d e s i g n s c h e m eo f s o t t w a r e s y s t e m i nt h ei m p l e m e n t i n gp r o c e s so fo p t i m i z e dp l a n n i n gs o f t w a r e ,t h ep a p e re s p e c i a l l yd i s c u s s e s a n t o m a t i cu n i tt e s t i n ga n da u t o m a t i cb u i l d i n gi nt h es o 魅艘c o d i n g , a n dp r e s e n t st h et w o f u n c t i o nm o d u l e so f o p t i m i z e d p l a n n i n g s o f t w a r es y s t e m t h em o d u l e o f p r o d u c i n gp l a na n d t h em o d u l eo f v i r t u a lp r o d u c i n ga n dt h en m n i n gs t a t u so f s o t b a r es y s t e m a tt h el a s to f p a p e r , t h e p a p e r s l l m m a r i z e st h er e s e a r c hw o r ka n d e x p e c t s t h en e x tw o r k k e yw o r d s :e x t r e m ep r o g r a m m i n g ;o p t i m i z e dp l a n n i n g ;s o f t w a r ee n g i n e e r i n g ; p a i r p r o g r a m m i n g 一 一 独创性说明 作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究 工作及取得研究成果。尽我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其德久已经发表或撰写的研究成果,也不包含为获得 大连理王大学域其他零位的学位或证书魇侵用过购材料。与我一民工作 的同志对本研究所做的贡献均已在论文中做了明确的说明并表示了谢 意。 作者签名: 日期:2 1 女i :生2 一 缝丝三盔堂堑主:量壁墼一一一 1 1 软 牛王程援遴 2 0 世纪6 0 年代,随着燕国军事扩张和新一代计算机的面世,软件开发的增长速艘在 不鞭热浚。然蔼,在盎i 襄编写较俘、瑾簿溪求以及翔 霉成功懿完残壤鏊方甏,绥没畜清 晰的指导原则。那时开发的系统通常很简单,而且是基于批处理的。 不幸瓣是,基于“戆翅鼗哥”瓣瑾念纛不采用经露约寐条学寒牙发系绞棠掌导致矮 曰失败。在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 ,北大西洋公约组 织) 会谈中,久疑瞪吁籍凌软终惫爨,蓄次茨舅了零器较停工程。瓷簿决矮翼越寒麓渥 乱的问题,提出的解决方案是将机械和土木工程中的尝试和测试方法用于软件开发中。 暇设较律开发霹戳藤萁链工程觏菠褪 羧存在一些阀蘧,因失无法瓣学蟪验诞或接簿软 件的状态。在软件开发中,不存在藻本原理,最多只能有一套行业中普遍认可的最健的 ( 或经过实践验疆熬) 方法、实践、工具、渡程。 在软件工程思想逐渐影成与发展中,该领域出现了很多软件开发模型与方法,例如 瀑表模型、快速暇型、增爨模型翻螺旋模型等。霹在9 0 年代以最,卡耐鏊梅隆软件学 院推出的c m m ,更是对于软件开发的过程管理,提出了确切的衡缀指标。但是,最近 的研究表嘲,有5 蝴豹项强会拖延交 寸,存3 0 以上的项瓣会超出鞭算,软传聂发领域 的项目情况比软件工程刚冈0 提出的时候相比,只是有很小的提高。详细的数据( 数据来 自2 0 0 0 年s t a n d i s hg r o u p 的g r o u pc h a o sr e p o r t ) 如表1 1 所示: 裘1 1软件项目统计数据 从该袭可以看出,成功的项目所占百分比得到了稳步的提高。1 9 9 4 年只有1 6 晦 项目成功,而在2 0 0 0 年裔2 8 的项目成功。尽管2 8 要比1 6 好,僵怒结果还是非 常糟糕的。 传统的软件开发过程,以r u p 为代表,强调项目的可控性,是一个掰例驱动的基 于u m l 和构件式架构的迭代增量式开发过程。r u p 定义了初始、绷化、实现和部溪4 个阶段,分舅日对应着关键瀑程碑的翎分。r u p 对于角色、流程、_ i 件和活动的要求是灵 活、可配鼹的,所以它广泛的适用于各种类型的项目。但是,在r u p 的各个里程碑 中,都窥定了要交付的成檠,尤其是对予需求的交蹩以及文档,它强调及时的趸新与同 极限编秘及其在优化排产软什开发中婀应用 步。以上这些都决定了r u p 是种重量级的软件开发方法,比较遗合大中型的项目和 产品开发。 软件开发人员意识到:消除他们与客户之间的隔阂是成功的关键。最根本的成功在 予谊客户满意i 在过去的l o 年中,涌现了大量高度灵活的、以客户为中心的开发方 法,这些方法已经开始扭转以前的趋势,重新关注项目的失败情况。软件开发融艺术和 工i 鐾予一体。开茇小缀瑟貉豹最大秽i 战在予,确探鑫己扶客户那里获取清搿的需求,因 为需求常常是不清晰的,而且处于不断的变化之中。开发人员了解用户的需求后,搂下 来需要截纛满足这麓需求的袈箨。众多专家认为:鬣近的4 0 年来, 卡算梳行遭一纛在 试图解决这个难题。如何创建体现用户的想法并满足其需求的软件怒软件项目成功与否 懿关建。 从根本上说,软件开发实际上是在客户和开发人员之间进行交谈。交谈中包含大量 豹缓没,葵中最显藩戆是客户帮开发久员麓够缀葑豹理解对方酶谈话。这稀侄设以及最 终产品的不确定性可能导致软件开发项目成功,也可能导致开发项目失败。肖想法悬抽 象秘簿留京壤念上翻,交滋是 鬻潮难豹。 现代计算机是在二战期间开发的,主要用于军事领域。那时,计算机的体积有足球 场强5 么丈,要对这蹙庞然大物进嚣缡程,登溪了簿冀蠹嫠复袈黪工搀蒙理,嚣挖这耪工 作是由科学家和工程师来完成的。对这些计算机进行编程非常困难,这限制了其通用性 积市场。 硬件方法的局限性和缓慢的邋行速度限制了计算机在商业领域的应用。大约在 1 9 4 8 年,睫羞照体管戆发明啦及熬体管计舞规懿# 重代数到寒,诗箨瓿毂一黢戆开始握 高。在2 0 世纪5 0 年代,i b m 和s p e r r y 开发了第一台超级计算机,用于原予能研究, 但莛给捺j 卷毫,越出了企业鲍承受能力。蠢到2 0 世纪年代,才港现了企业够赡 买得起并可以使用易用的语言( c o b o l ) 进行编程的计簿机。随着f o r t r a n 和 c o b o l 语畜的出现,出现了一 中新职业:稷序员。 表1 2 说明了硬件和软件在过去5 0 年中的进鼹情况。软件和硬件相互促使对方向 前发展。例如:更离的软件需求,如a p p l em a c i n t o s h 的蜜目和鼠撂界匿,要求处残器 速度更快、功能更强大。 袭1 25 0 年来诗算枫骥l 譬秘软 拳戆迸爨情嚣 时间硬件软件 4 0 年代 5 ) 年代 6 0 年代 昂贵、专用 i b m s t r e t c h 帮s 蝴l a r c ,臻 于科学研究 大型枫、晶体管、i b m l 4 0 1 二进制机器代码 汇编谣言 c o b o l 、f o r 豫a n 、编译嚣 一2 一 一一一盔垄堡三盔堂堕主堂些墼一一一 7 0 年代i n t e r 、i n t e g r a t e dc h c u i t ( i c ) 、 a p p l e 、t r s 一8 0 、d e c p d p 8 0 年代m mp c 、a p p l e m a c i n t o s h 9 0 年代笔记本电脑、p a l m 、p c 服务器 警兹p a c k e tp c 、移麓设备、平扳p c c 、s m a l r a l k 、b a s i c 、p a s c a l 、u n i x d o s 、d b a s e 、l o m s1 - 2 3 、图形用户 爨露 w i n d o w s ,o s 2 ,j a v a ? c * 、v i s u a l b a s i c 、l i n u x 、阢6 、a s p ,p e r l w e bl 受务器、c 彝、m i c r o s o f t n e t 1 1 1 快速成用开发方法简介 只要计算钒之闯是镀藏独立酌,不按任何流程和方法开发应滔程序看越来很管用。 当客户有多台互不相连的计算机时,客户软件的变化只会影响本地的p c 。即使新的应 掰程痔弓 发了问嚣j 耨冲突,这些冲突遣只限于霭户的机器。2 0 整纪筋年代,随着溺络 软件的出现,这种隔离带来的相对安全以短命而告终,网络软件使得可以将计算机涟接 至l 一起。在中央文徉釜务器中运行软件或潋c s 模罄运行数据痒给开发人爨带来了新静 问题。 蠢绕p c 发鼹露来戆淹心掰欲豹开发鼠辏无法解决分布式环境中翡软件开发耩蕊晒 的挑战。快速应用程序开发( 础国) 试图找到“如何快速的构建系统,同时控制结果” 蠡冬艇决方案。蚕1 1 说爨t1 l m ) 方法试粼在客户翻开发人员之窝葶| 天反绩环路寒撬离 灵活性。 图1 1 典型的快速开教周期 f i g 1 1t y p i c a lr a p i dd e v e l o p i n gc i r c l e 开发过程蜀运预定静络束点螽,开菱小组对软传遴行演示。客户进 亍| 溪9 试,穆反馈 信息提供给开发小组,让开发小组能够调整开发方向。如果没有用户界面元素或界弼不 竞熬,以这狰方式避芎亍反镶将是j # 露錾难瓣。强隈缡程逶过疆高速淀移频率,改遂了这 种反馈思想。在极限编程中,开发和演示之间的时间间隔非常短。 l + l ,2i n t e m e t 黠我的获释秀发 人们对快速应甩程序开发方法避行了改进,使之适用于c s 项网。以前,系统怒针 对海瓤菠趣两开发蠡勺,因_ l | 乏蔫户群建确定鹣。舞都客户禳少能够访溺这些系统,因此无 3 一 极限编程及其在优化排产软件开发中的应州 需考虑他们。i n t e m e t 完全改变了这种情况。随慧全球互连性的不断增跃,公司可能向 更广泛的客户群开放萁内部系统。凡乎在一夜之闻,菜个应嗣程序的用户藏可能驭几百 个增加到几百万个。软件的伸缩性显得越来越重要。 i n t e m e t 绘开发人员带来了4 个主要豹魏蕺: 1 如何开发能够快速伸缩的系统? 2 如褥抉逮静开发系统? 3 如何开发能够和其他系统互操作的系统? 4 躲褥逐逡遮对交证骰窭爱应? 作为对酗d 方法解决这些问题而失败的响应,一种全新的敏捷方法应运而生。极 疆编疆楚这些方法中最突离的方法之一。 1 2 软件开发方法及比较 敬下将介缀压稀常觅的软件开发方法,这将有助于我们理清裰限编程在软件开发领 域所处的地位,并了解其与以前的软件开发方法有何不同。 编码一修复方法 编璐修复方法采熙瓣是“管用郎霹”方法。秀始,客户可髓撼镤一套关于其要求豹 规范,假这不是本质性的。其形式可能怒一个白板略图、电子邮件或其他没有价慎的规 范。客户可能蜀部依赖予您或专家对其i 努的知识寒修复其中的缺陷。然蜃,经遴过绞 码和修藏的快速周期来开始开发工作。开发人员不时地向客户演示应用程序,并收集客 户的反馈信息,然曩继续进行开发。图1 2 说明了开发人员如俺将其大部分时闻花在编 码和修复上。 量编。复习 2 最终的系统由混乱的、协同性差的代码组成,其适应性、重用性和互操作性不 ,d 。 奎垄堡土查堂堡主兰堡堡塞一 瀑布式方法 瀑布式方法由美国海军于2 0 世纪6 0 年代开发的,咀便能够开发复杂的军事软件。 在瀑布式模型中,项目的开发工作由按一一定顺序排列的步骤组成。在每步的末尾,项目 小组都要进行复核或签字移交。客户对结果满意后,才继续进行后面的开发工作。图 1 3 说明了项目进展情况,这是以线性方式进行的。 图1 3 瀑布式方法 f i g 1 3w a t e r f a l lm e t h o d 如果需要修改,则开发小组需要重复项目中的各个步骤,这样既困难又繁琐。瀑布 式方法非常正规,从这种方法源白军方可以预期这一点。瀑布式方法是文档驱动的,它 有大量的只不过是文档的可交付的产品。这种模型的另一个特点是高度重视规划。这种 预先规划减少了项目进展过程中的不断规划。 瀑布式方法最适合用户需求固定不变或预先可以知道的情况。例如,用于航天飞机 的导航系统很适合使用瀑布式方法来开发。然而,依赖于文档来描述客户和用户的需求 可能引发问题。交流方面常常会出现问题,导致软件质量低劣。开发过程中编写的文档 可能无可挑剔,但实际的产品可能存在缺陷、不完整或不可用。 从某种意义上说,大多数其他的方法都是瀑布式方法的变种,差别在于速度、可交 付产品的类型和更高的灵活性。表1 3 说明了瀑布式方法的优缺点。 表1 3瀑布式方法的优点和缺点 优点缺点 输出是预先定义的 严格控制 对于技术不高或经验不足的人也很管用 需求的质量很高时很管用 各个阶段相互脱节 需要大量的文档 项目结束时才有真正的产品 依赖于文档 一5 。 极限编程及其在优化排产软件开发中的应用 修改困难 项目开始时,难以完整的描述 总之,对于严格受控和精确的环境( 如军队) ,瀑布式方法很管用,但对于企业环 境,它存在严重的缺陷。 进化式原型化方法 进化式原型化( e v o l u t i o n a r yp r o t o t y p i n g ) 方法是一种r a d 方法,侧重于项目进展 过程中的系统概念开发。这种模型依赖于使用可视化原型或最终系统的模型。这些模型 可能是简单的白板略图、图形图像,乃至期望系统的完整的h t m l 拷贝。客户通过这 种可视化方法,降低最终结果的不确定性。图1 4 说明了这种方法的工作原理。 图1 4 进化式蟓型方法 f i g 1 _ 4e v o l u t i o n a r yp r o t o t y p m g m e t h o d 真正的开发工作并非要等到原型确定后才开始。在需求不断变化时,e p 方法非常 灵活,但它仍需要确定和控制。其缺点在于,难以进行高效的规划,开发工作开始后, 项目可能还原为编码一修复周期。对开发工作的规划可能是一种挑战,因为小组并不能 真正确定工作需要花多长时问。部分原因是由于这种模型是界面驱动的,因此必须专门 处理组件或后端的互依赖性。客户知道他们希望如何使用新的系统,并将依赖于原型作 为向导。不能过分的夸大原型的价值,毕竟它并非工作软件。由于开发工作的迭代特 性,规划存在一定的风险,但通过原型化和小型发布周期可以在一定程度上降低这种风 险。开发工作开始后,项目经理或首席开发人员必须确保开发人员不采用编码一修复方 法。 分步交付方法 分步交付( s t a g e dd e l i v e r y ) 方法是瀑布式方法的另一种变体。从开始到结束的流 程是确定的,每个阶段结束后,都需要签字移交。主要的不同在于,客户的整个业务需 求被划分为大型组件,并在各自独立的阶段交付这些组件。图1 5 说明了这种方法。 分步交付方法把重点放在主题或特征组上,让客户能够首先开发最重要的需求。客 户能够更快的获得工作系统。这种分步交付并不要求进行详细的规划,因此处理需求变 6 堑垄三堑亟主堂鱼笙奎一 化时仍然不方便。对于为进行阶段规划而必须考虑的所有组件和函数,开发人员都需要 了解它们之间的互依赖性。 图1 5 分步交付方法 f i g 1 5s t a g e dd e l i v e r ym e t h o d r u p 方法 r u p ( r a t i o n a lu n i f i e dp r o c e s s ) 是一种过程,它使用一套标准的工具、模板和可交 付产品提供了一种严格有序的开发方法。r u p 与前面介绍的其他方法之间的不同之处在 于,它由厂商r a t i o n a ls o f t w a r e 所拥有。这种标准化方法对要求在整个公司内部使用一 种通用的语言和工具的大型组织很有吸引力。r u p 使用统一建模语言( u 】忸) 来表达 需求、构架、设计。u m l 最初是由r a t i o n a ls o f t w a r e 公司开发的,现在由标准组织 o m o ( o b j e c t m a n a g e m e n t g r o u p ) 维护。 r u p 是另一种迭代式开发方法,重点关注降低项目风险。图1 , 6 说明了它的典型的 项目流程。 业务建模分析和设计 布署 图1 ,6 r u p 流程 f i g 1 6r u p p r o c e s s 对于需要维护用于外部交流和开发小组内部交流标准的组织而言,r u p 确实有价 值。其缺点是需要更多的文档、客户必须对r u p 有所了解、这种方法归一个软件厂商 一7 极限编程及其在优化排产软件开发中的应用 所有。开发人员越来越多地结合使用r u p 和极限编程,在极限编程中,必须按已有的 指导原则进行开发工作,但极限编程在开发速度和构建流程方面显然优于r u p 。 极限编程方法 极限编程是最流行的敏捷开发方法,尤其适合用于动态的i n t e m e t 开发领域。它与 传统的瀑布式开发方法或r a d 开发方法的区别在于,它承认软件生命周期中充满变 化。中小型小组( 6 2 0 人) 同客户紧密合作,放弃详细、预先的规划,而通过快速迭 代来给客户提供直截了当、真正的结果。 。 大多数开发人员、程序员和软件工程师被告知,变化是及其糟糕的,必须避免、控 制和管理。瀑布式方法完全是以此为前提的。在软件开发周期中,尽可能早地控制变化 是不错的想法,因为产品被实现后,变化的成本常常会急剧升高。极限编程提供了一些 技巧和实践有效地压缩了变化的成本;在整个项目中,变化的成本都是相同的。 图1 7 说明了极限编程方法的开发流程 4 】。 圈1 7 极限编程开发流程 f i g 1 7x pd e v e l o p i n gp r o c e s s 极限编程通过在质量谱系的两端一一准确的需求和健壮的产品一一下功夫来交付高 质量的软件。极限编程不依赖于单个“高效的”方法,而是结合使用了1 2 种重要的实 践,如结对编程、集体拥有、持续集成、以一组重点关注的价值为指导。这些实践协同 工作,使得极限编程人员能够快速、准确地为其客户开发出高质量的软件。 开发方法的比较 在过去的1 0 年中,开发人员和客户试图在成本、质量、风险和控制之间进行折 衷,因此r a d 变体极其流行。图1 8 中对每种方法的灵清胜和质量进行了比较。灵活 性指的是方法适应变化的能力,而质量指的是产品的缺陷和准确度。如果以瀑布式方法 为基准,则提供高质量的产品是以牺牲客户的自由度为代价的。极限编程通过过早的解 8 大连理工大学硕士学位论文 决缺陷和不断的提供有关产品的反馈信息,允许在项目的整个生命周期进行变更,并改 进产品的质量。 灵活性 低 低 质量 高 图1 8 各种开发方法的比较 f 蟾1 8t h ec o m p a r e o f v a r i o u sd e v e l o p i n gm e t h o d 极限编程的出众之处在于兼顾了质量的两个方面( 满足客户期望的同时降低缺陷的 数量) 。以前,新的方法通过提高严密性和增加管理费用来解决其他方法的缺点,因此 解决之道是控制。极限编程将其颠倒过来,颠覆了复杂陛不断增加的循环。极限编程表 明应以简单的方式考虑现实世界中的工作。 1 3 本文工作 本文首先介绍了极限编程的基本方法及相关工具。在此基础上,将极限编程方法应 用于宝钢冷轧厂优化排产软件的开发过程并给出了软件系统的设计方案。在优化排产软 件的实施过程中,本文重点讨论了软件编程中的自动化单元测试及自动化构建,介绍了 优化排产软件系统的两个功能模块一生产计划模块和虚拟生产模块及优化排产软件系统 现场运行隋况。本文最后对工作进行了总结并且展望了下一步的工作。 本文由六章组成。第一章介绍了软件工程的概念和常用的几种软件开发方法。第二 章介绍了极限编程的组成部分及其工作原理。第三章介绍了宝钢冷轧厂优化排产项目背 景及软件实施规划。第四章介绍了宝钢冷轧厂优化排产软件项目的实施过程。第五章介 绍了软件系统的最终版本及用户使用情况。第六章总结了本文的工作。 9 极限编程及其在优化排产软件开发中的应用 2 极限编程方法 2 1 什么是极限编程 极限编程是以开发符合变化的客户需求的软件为目标而产生的一种方法。这种开发 方法是由k e n t b e c k 在1 9 9 6 年提出的。k e n t b e c k 在九十年代初期与w a r d c u n n i n g h a m 合作时,就一直共同探索着新的软件开发方法,希望能使软件开发更加简单而有效。 k e n t 仔细地观察和分析了各种简化软件开发的前提条件、可行性以及面l 临的困难。1 9 9 6 年3 月,k e n t 终于在为d a i m l e r c h r y s l e r 所做的一个项目中引入了新的软件开发观念一 一极限编程。近年来,国内应用极限编程的例子也不少,其中在工控领域 6 】、公路建设 招投标领域问、数字版权保护领域【8 以及外贸管理领域【9 都有相应的研究与应用。 1 般说来,极限编程是一种敏捷( a g i l e ) 开发方法。供中小型软件开发小组用于 开发需求快速变化的软件。极限编程由4 部分组成:价值、原则、实践和行为。图2 1 说明了它们彼此之间的依赖关系,其中行为贯穿于整个生命周期。 图2 2 x p 源自对创建高质量产品的需求 f i g 2 2x p i sd e r i v e df r o mt h er e q u i r e m e n tt oc r e a t i n g 1 1 i 曲q u a l i t ys o f t w a r e 与其说极限编程是被发明或创造的,不如说它是源自一系列的协作、潮流 ( s t r e a m ) 和系统。与这种关于软件开发的有机观点一致,极限编程是建立在价值和指 一1 0 一 大连理工大学硕士学位论文 _ 一 导原则的基础之上的。围绕这核心的是极限编程实践和行为。由图2 2 可知,极限编 程是由协作作用的4 部分组成的,这4 部分产生于关键的影响因素,这样客户获得的是 高质量的产品。 2 1 1 极限编程的价值观 极限编程是由一组共享的价值观驱动的,这些价值观决定了极限编程开发的基调。 极限编程包括4 种价值观,它们是简单、交流、反馈和勇气。 在极限编程中,简单被定义为“在管用的前提下,做最简单的事情”。在考虑到简 单性时,开发小组实现客户实际需要的,而不是他们预期可能需要的。简单的系统交流 起来更容易、集成点更少、伸缩性更高。 所有的软件开发方法都需要交流,而在极限编程中,这是其核心价值观。它侧重于 口头交流,而不是文档、报表和计划。如果小组成员之间不进行持续的交流,协作将无 从谈起。极限编程包含诸如结对编程等实践,它们要求通过交流进行工作。 反馈对于任何软件项目的成功都是生死攸关的。在极限编程中,有关软件状态的问 题是通过持续、明确的反馈来回答的。开发小组必须快速的编写软件,然后向客户演 示。为确保准确性和高质量,获取客户关于到目前为止的进度的反馈是至关重要的。 勇气指的是快速工作并在必要时重新进行开发的信心。在极限编程中,应在其它3 种价值观的语境中来理解勇气。极限编程人员改变了尝试性、不确定编码的开发思想, 采用以最快速度,充满信心进行开发的做法。简单性是支持勇气的另一种价值观。小组 成员了解系统,有强大的支持源代码重构的质量标准。没有其它价值观,勇气只会导致 一大堆混乱的代码,软件复杂而难以维护。 2 1 2 极限编程的原则 建立在极限编程核心价值观之上的是5 项指导软件开发的主要原则,它们是快速反 馈、简单性假设、逐步修改、拥抱变化和高质量的工作,如表2 1 所示。 表2 1极限编程的指导原则 快速反馈开发人员通过简短的反馈循环迅速了解其当前产品是否满足了客 户的需求。 简单性假设 将每个问题都视为很容易解决,这意味着只需为当前迭代打算, 而无需洞察未来可能需要什么。 逐步修改通过一系列细微的修改来解决问题。这适用于规划、开发和设 计。 拥抱变化采用保留选项,同时解决紧迫问题的策略。 高质量的工作 工作质量决不可打折扣。极限编程采用测试先行的编程方式,强 调编码和测试的重要性。 极限编程及其在优化排产软件开发中的应用 2 。1 3 极限编程的行为 在极限编释的生命周期中,贯穿了一系列的行为,它们包括倾听、测试、编玛和设 计。极限编程以交流为赫础,其一些实践要求积极的倾听、它对正式的书蕊文档盼藏赖 性更低,因此癸求高震爨的日头交流。开发人员不仅需癸倾醑客户,开发久员之间也应 相互倾听同伴的看法。极限编程的一些实践将指母如何跫好的进行交流。 在极限编稔中,覆l 试并不是在将产龋交付给客户之前进行静玛后斑,丽是整个开发 过程中不可或缺的一步。开发人员在开发代码之前将编写测试。极限编稷测试不仅限于 准确经和缺陷瀑l 燕方面,还祷裣蠢性琵葺韬一致往。 极限编程毕竟是关于编码的,编写代码是一种工艺,通过诸如重构、结对编程和代 褐复按等实践褥激改遂。几乎没有书嚣设计,极限编程开发入爱书写表达其意强静代 码。只需通过阅读源代码,其他小组成员便可以理解其中的逻辑、算法和流程。 稷i 疆编程的核心愚慧之一是:在整个瑗鼙静避震过鬟中,设计应是不断演纯的。设 计并非固定的,不能赋予它单个职责,丽是基于小组的、动态的。极限编程接受系统的 鑫然演遴,瑟不蹙透过羧铡设计幸亍为,对蓊瑟嚣述静事实褪丽不凳。较鼯编程丽其它方 法之间的区别在于其流动性、对设计特性的响应。 2 ,l ,4 掇限编程戆最莛实貔 极限编程将行为表示为1 2 种核心实践。极限编程小组每天都使用这嫂实践来开发 泵绞。这些实戥包括:疆场客户( o n - s i t ec h s t o m e r ) ,健玛觏蕊( c o d es t a n d a r d s ) , 每周4 0 小时工作制( 4 0 - h 0 1 | rw e e k ) ,规划游戏( p l a n n i n gg a m e ) ,系统隐喻 ( s y s t e mm e t a p h o r ) ,麓蕈设诗( s i m p l ed e s i g n ) ,溺试驱动( t e s t - d r l v e n ) ,代码重 构( r e f a c t o r i n g ) ,结对编程( p a i rp r o g r a m m i n g ) ,集体代码所有权( c o l l e c t i v e o w n e r s h i p ) ,持续集残( c o n t i n u o u si n t e g r a t i o n ) ,夸型发布( s m a l l r e l e a s e ) 。 现场客由 极限编程要求至少有一名实际静客户代表在熬个项目开发周期内在现场负责确定需 求、回答团队问题以及编写功能验收测试。现场用户可以从一定掇度上解决项目豳队与 客户沟通不畅的问题。 代码规熬 极限编程强调通过制定严格的代码规范来进行沟通,尽可能减少不必鼹的文档。极 限壤程黠予代强援范戆实黢,其有双重含义:一楚蘑望遴过建立绫一懿钱褥援范,亲热 强开发人员之问的沟通,同时为代码复核提供了一定的标准;二魁希望减少项目开发过 程中鲮文档,极隈缓程认为代码楚最好懿文毯。 1 2 。 _ 人垄堡王盔堂塑主堂垡堡茎一 每周4 0 小时工作制 极# 匣编程藤求项目团队入受每周工作时间不能超过4 0 小时,秀日琉不得连续趱逮舔 周,否则反而套影响生产率。该实践充分体现了极限编稷的“以人为本”的原则。 规划游戏 投羧缡程癸求缝会磺嚣进餍耱按拳悸猿,确定下一泠段要开发与发露豹系统范围。 规划游戏需要快速制定出粗略的规划,然后随项目的进展不断对其进行改进。 璜嚣毂计划在建立起采以爱,震要投据顼羰致进展袋避萼亍调整,一戏不变的计划是 不存在。因此,项目团队需要控制风险、预见变化,从而制定有效、可行的项目计划。 系统臻蜍 极限编程通过稳喻米描述系统如何实现新的功能以及如何将该功能加入到系统。它 通常包含了一黧可良参照和魄较的类稻设计模式。隐喻让技术对客户来说更容器灌鳃。 极限编程不需疆事先进行详细的架构设计。 辍隈编程程系统实黼初蘩不蔫要逡行详缯翁粱构设诗,蠢怒在迭代爝麓中不瑟豹绥 化架构。对于小型的系统或者架构设计的分析会推迟熬个项目的计划的情况下,逐步细 化系统絮构翻燕可醴静;餐是,瓣予大整系统或者是希壤采籍耨架梅豹系统,裁需要在 项目初期进行详细的系统架构设计,并在第一个迭代周期中进行验证,同时在后续迭代 溺麓中逐步逮彳亍缩纯。 简单设计 极限编程认为代码的设计成该尽可能的简单,只要满足当前功能的甍求,不多也不 少。 传统的软件开发过程,对于设计是臼顶而下的,强调设计先行,在代码开始编写之 翦,要有一个完美的设计模型。它的前提是需求不变化,或者很少变化。面极限编程认 为需求是会经常变化的,函此设计不能蹴而就,而应该是一项持续进行的过程。 简单设计应该满足以下几个原则:l 。成功执行所霄的测试。2 。刁i 包含重复的代 码。3 向所有的开发人员清晰媳描述编码阻及薮内在关系。4 尽可能包含最少的裘与方 法。 测试g 医动 投疆缡程强谖“涮试先行”。在缡鼹曩:戆之蔫,鬻先穆溺试驾驽,焉嚣孬避牙缡 码,商至所有的测试都得以通过。 1 3 , 极隈编程及其在恍纯捧产软件开发中的应用 极敞编程是一项测试驱动煞软件开发过程,它认为测试先彳亍使得开发入员对自己酌 代码有足够的信心,同时也有勇气进行代码重构。测试应该实现定的自幼化,同时能 够清晰的给出测试成功或者失败的结果。在这方颓,x u n i t 羲8 试穰架骰了很多的工作, 因此很多实施极限编程的团队,都采用它们进行测试工作。 代码重构 援隈编程强调饯羁蘩撬在其中戆爨爨,谈灸开发人受疲该经鬻进行耋梅,逶卷奏嚣 个关键点应该进行重构:对于一个功能的实现中和实现后。代码爨构是指在不改变系统 行为载虢提下,麓赣潺整、爨亿系统敬内帮结构爨减少复焱牲、瀵酴冗余、壤鸯廷哭溪牲 和提高1 生能。重构不是极限编程所特有的行为,猩任何的开发过程中都可能并且应该发 生。在饺照投羁霪掬豹辩候要注意,不要过分的铰艘重梭,甚至辍褪设嚣,否剩,黠于 大中型的系统而宙,将设计推迟或者干脆不作设计,会造成一场灾难。 缓对编稔 极限编程认为在项目中采用绻对编程比独自编程更加有效。结对编程是由两个开发 a 员在鬻一台电髓上_ 莛澍编写簿决嗣一淘惩的代褥,运零一伞入受责写编码,孬舅个 负责保诚代码的正确性与可读性,而且二人将持续变换角色。 集体代黼所有权 极暇缡程认为珏发小缓的每个成员帮蠢更改代码鲍权测,魇蠢躲人对予全邦健码负 责。代码全体拥有并不意昧者开发人员可以互相推委责任,而魑强调所裔的人都要负 舞。如巢一个开发人员的代码有钱误,另夕 一个开发人员也可以避行b u g 的修复。这一 实践的前提是测试先行,编码标猴等实践。 耋毒续集成 极限编程提倡在一天中集成系统多次,而且髓蓿需求的改变,要不断的进行回归测 试。因为这群霹疆镬褥弱获保持一令较高静开发速度,黼辩逶兔了一次蘩统集袋豹瑟 梦。持续集成不是极限编程专有的最佳实践,微软公司就有每日集成( d a i l yb u i l d ) 的 成功实戥。 小型发布 极隰编程强调在非常短的周期内以递增的方式发布新版本,从而可以很容易地估计 每个迭代周期的进度,便于控青i 工作量和风险;魈时,也可以及时处理用户的反馈。小 越发布突出体现了敏捷方法的优点。如果驻够保证投l 试先行、代诵重构、持续集成等最 健实践,实现小型发布也不是一件困难的攀情。 ,1 4 盔篓婆三奎堂塑主堂笪丝塞 一 一一一一2 2 使用极限编程解决软件开发中的问题 2 2 1 软件开发危机 为应对i 囊基失败率越来越裹夔馕凝,软锋工程予2 0 毽纪6 0 年代应运露生。表瑟上 看来,解决方案是采取某些措施,并进行严格控制。3 0 年后,软件开发仍在同没完没 了豹矮冒失败巍费震怒标带来熬压力俘斗争。 软件失败的主要原因有:1 未能垒面地确定项目的目标。2 糟糕的规划和估计。3 对技术不熟悉。4 。缺乏项鹜整理方法。5 小缌中的毫缓人员过少。6 。软硬 孛供应齑黪 表现糟糕。 如果缺乏裹度灵灌、开发葶珏可停缎躲开发策略,颈强 曼容易失控。极限编程通过拥 抱变化并将箕视为一种常态,从根本上解除了这种风敞。支持动态开发的实践将缺陷消 除在萌芽状态。 2 2 2 项目中舟勺4 个控制变量 在较l 孛顼曩中,w 控制魄变量袁4 个:黠阕、成本、质量、积范燕。表2 2 烈出了 这些变量以及控制这赋变量所带来的副作用。 表2 24 令控零| l 变量及其影响 变量影响 时间时间太短显然会降低产品的质量,因为没意足够的时间倾听客户、编码和 测试。辩| 葡蓬长穗可能得不至l 裁黧的结果。开发小组的歇资是尽快实现交 化,以便客户能够提供反馈。 成本炎金和资源有嚣重绥不可宠全避凫项基爨现灾难。熟祟追糖资源延迟,只 会拖延项目的完成时间。客户应根据估算提供资金,而不成期望盲目地烧 钱来解决问题。 溪量疑差的较豢变量。戮囊袋璧可瞳窿疆拜发羹重潺,毽最终只熊将溪l 试工作接 卸给最终用户去宪成。 薄曝软件开发的标准流程是,仅当在范围上取 ! 导一致并签字确认后才开始工 作。在这种摸鍪中,试謦控京l 需求和范围无疑是德劳的。 2 2 3 使用极限编程控制风险 软件开教是一顼充满风羧的业务,它充斥不确定饿和变化。下面怒软件开发中的一 些常见的风险: 1 进度嫩迟:随蒋工作的进行,鼹然无法在交付翻期前完工。 2 项目被取消:当项目非常大时,这种问题更严黧。客户花费了大量的资金,却没 有得戮觅得到的商监价值,最终决定取消项目。 3 + 不被业务认可:开发系统与最终用户的期望相差甚远,无法按其希望的方式运 幸亍。改变j | t 务流程酶代份太高,也太痛苦。 - 1 5 一 堡! 壁塑堡墨基垄垡垡塑! 兰墼笪茎丝! 塑壁旦 4 技术上复杂:选择未经实验过的工具或平台,事实证明他们集成起来过于困难。 5 缺陷率高:系统的质量非常低劣,缺陷被忽略或没有被发现。到达用户手中后, 系统充斥b u g 和缺陷。最终结果是返工,停用。 极限编程通过确保软件质量并以小型发布周期的方式提供工作软件,正面的解决规 避了这些风险。表2 3 列出了极限编程降低和规避这些风险的具体方式。 表2 3极限编程如何降低风险 风险降低风险的方式 进度延迟 项目被取消 不被业务认可 技术上复杂 缺陷率高 极限编程的发布周期非常短,因此任何延迟或更该的程度非常小。首 次交付业务价值最高的特性,客户能够看到软件( 而不仅仅是关于系 统的文档) 。 在极限编程项目中,由于首先完成了最重要的工作,因此即使项目被 取消,极限编程小组至少完成了一些功能。这不像大多数软件项目, 小组将最初的半年时间用于规划,如果项目被取消,留给公司的将是 一片空白,极限编程方法降低了预算风险。 客户作为开发团队的一部分。他们选择交付的功能,必要时给予指 导。客户不用获取成员资格,因为他们与团队一起解决问题。 极限编程实践持续集成意味着小组可自由自在地集成整个系统,不会 在交付之前出现“大爆炸”。简单性价值观通过编码标准、结对编 程、集体拥有和重构等实践确保代码质量。 通过使用自动化测试和测试先行的编程方式确保缺陷少,功能缺陷和 界面方面的问题被现场客户及早地发现。 软件开发充满风险,但使用极限编程时,我们将有一个有组织的环境,能够发现并 处理问题,防止出现另一次项目灾难。 2 _ 3 极限编程的工作原理 2 3 1 极限编程开发的生命周期 极限编程的基本约定是:客户和开发人员应协同工作,以创建出有实际价值的软 件。客户指导开发小组在整个极限编程项目的生命周期中如何提供业务价值。在整个项 目的生命周期中,客户将积极参与。图2 3 表明了极限编程周期是一个不断定义和实现 价值的过程。 厂客户、 图2 3 x p 周期 f i g 2 3 c i r c l e 1 6 g i 值 取、巳 一奎整堡三查塑主塑坚一一 极限编程周期韵循环速发非常快,小组每隔几分钟、几小时或几天就实现小项功 能,这使得客户能够通过调整积修正,雄动项目进行下去。表2 4 简要地说明了极限编 程的生命周期。 表2 4极限编程的各个阶段 调查 规划 迭代 产品化 维护 窟劝顼莓、高级爝户需求、技术原黧亿。 确定工作的先后顺序、划分为发布和初始计划。 系统兹测试帮开发。包括迭代翘划一划分底层工l 乍。聚终是户参与其 中,负责改进界面,确保易用性。 将软件部署到客户的生产环境中。 维轳、修 襄竣逡。 极限编程项目涉及到将客户的产品预想划分为发布,然后将发布划分为迭代。规划 是一个不凝演纯鲍过程,在顼蠢豹整个周麓孛将羧不袋缝改遗秘谲整。圈2 4 说饔了投 限编程的发布过程。 发布 选代l 迭代2 阿司网阿司回回回 f 生产 几 0 维护 匿2 4 x p 发礞囊迭戗缀戏 f i g ,2 4x p f e l e a s ei sm a d eu po f 滟m t i o n s 在迭代期间,将进行多次构建,这是在每天小组集成新代码时定期进行的。发布和 迭代豹主要送嗣在予:发毒时小组将工作软俘交给客户,丽这代让现场客户窥开发人员 能够度量和调整进度。 2 。3 。2 辍限编穰小耋萎串豹角色 大多数软件开发方法都会指出项圈参与者的角色。这些角色通常怒固定不变的,描 述了努傍或价值,如磺嚣经瑾,粱构疆等。稷隈编程中没

温馨提示

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

评论

0/150

提交评论