典型敏捷软件开发方法的灵活应用概述

更新时间:2024-05-23 17:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

典型敏捷软件开发方法的灵活应用概述

摘 要 敏捷软件开发是一种面临迅速变化的需求快速开发出高质量软件产品的新方法,极限编程是一种基于实践的典型的敏捷软件开发方法,它强调交流、简化、反馈和胆识,对质量和速度并重,比较适合中小项目的开发,稍加改造也可适用于较大项目的开发。文章对灵活运用XP的关键实践准则进行了概要分析。

关键词 敏捷开发 极限编程 测试驱动开发 重构 中图分类号:TP31文献标识码:A

Flexible Application of Typical Agile Software Development Methods ZHENG Yi

(School of Mathematics and Computer Science, Xiangfan University, Xiangfan, Hubei 441053)

Abstract Agile software development is a new

methodology of developing high quality software timely when facing quick changes. Extreme Programming (XP) is a typical software development methodology that is agile and based on practice. It emphasizes in communication, simplicity, feedback

and courage, while emphasizing both the quality and speed of development. It has strong attraction to middle & small projects. After a little transformation, it can also be used to develop little larger projects. This article briefly analyzes flexible application of key practice Principles of XP.

Key words agile method;extreme programming;test drive development;refactoring

传统的软件开发模式,从需求到设计到开发再到测试需要层层环节,每个环节都要靠相关的文档来传递各自的成果,但是,在当今无论是商业需求还是技术需求都瞬息万变的环境里,软件开发者要承担来自各方面的竞争压力,包括如何更快更高质量地开发产品,如何应对客户需求的频繁变化等等,这都促使开发者不得不重新审视传统的软件工程模式。敏捷开发方法特别是极限编程方法,正是作为一种应对高速变更软件开发所提出的轻量级软件开发方法学,已经越来越受到业界的广泛关注。

敏捷软件开发是一种面临迅速变化的需求快速开发出高质量的软件产品的新方法,而被软件开发方法学泰斗Kent Beck先生最为推崇的方法之一的极限编程(Extreme Programming,简称XP)则是一种基于实践的典型的敏捷软件开发方法,它强调交流、简化、反馈和胆识,在测试驱动开

发、重构、小型发布等12种经典实践的帮助下,指导软件工程师进行软件系统开发。① 1 XP的核心实践

XP的价值和原则如表1所示,由此构成12个核心实践,根据各个实践准则所反映的XP价值将其分成精密的反馈、连续过程而非批处理、共享认识和程序员福利四个部分。② (1)精密的反馈,主要包括测试驱动开发、计划制订、现场客户和结队编程四种实践。

测试驱动开发:程序员在编码开始之前,首先将测试写好,增加一项新功能前就完成测试程序,当整个系统都能运行时,测试任务才结束。

计划制订:以尽可能快地产生商业效益为目标,以业务优先级和技术估计为基础,将软件开发过程划分成若干迭代周期,在每一个迭代周期前确定下一周期要开发与发布的系统范围。业务提供了一张系统的期望特征表,把每个特征作为一个用户需求记录下来,开发工作要估计每条需求所需要的工作量以及开发团队在一次迭代里能完成的工作量,然后确定用何种顺序实现哪些用户需求以及可发布产品的发布频度。

现场客户:软件开发过程需要开发团队与用户间交流与协作,开发团队要经常和系统的实际用户接触,对于有很多客户的商业软件,可以用客户代理来代替,要求至少有一名

实际的客户代表在现场持续地参与到项目组中,负责完成确定项目需求、回答团队问题以及编写功能验收测试等业务。 结对编程:所有代码都是坐在同一台电脑前的两个开发人员共同编写,因此代码在编写的同时就完成了复查,通常一个程序员负责编写代码,而另一个负责审查代码以确保其正确性与可读性。

(2)连续过程而非批处理,主要包括持续集成、重构和小型发布三种实践。

持续集成:指能够自动集成已经提交的代码直至发布到测试服务器供QA人员测试的整个过程,提倡只要有任务完成就集成新代码构造系统,一天中可集成系统多次,而且随着需求的改变要不断进行回归测试,要求至少每天都将所有的改变整合到代码库中,在整合前后都要保证测试100%的通过。

重构:在不改变系统行为的前提下,重新调整、优化系统的内部结构,去掉在编码过程中产生的任何重复代码,其目的是简化系统、消除冗余、增加灵活性以及提高系统的性能。

小型发布:在非常短的周期内以递增的方式发布新版本,以实现最小的可用特征集开始,每次只增加少数几个新特征,尽早发布和更新。

(3)共享认识,主要包括简单设计、系统隐喻、代码

集体所有和编码标准四种实践。

简单设计:使用尽可能简单的设计来完成工作,代码设计只需满足当前功能的要求即可。

系统隐喻:每个项目都有一个有规律的绰号,提供容易记住的命名规则。XP客户、开发人员和管理人员都可以通过隐喻来描述系统如何运作、新的功能以何种方式加入系统。

代码集体所有:开发团队中没有哪一个人能独自拥有一个模块,整个团队拥有全部代码并对其负责,开发小组中每个成员都能在任何时候针对代码库的任何部分开展修改等工作。

编码标准:XP通过指定严格的代码规范来进行沟通,强调每个人都按相同的标准编写代码,理想情况下,无法通过代码来看出是团队中的谁编写的。

(4)程序员福利:XP强调程序开发应该以适当的节奏进行,努力营造一种轻松的工作环境,以保障程序员的福利,这主要由每周工作40小时来约定,要求让开发人员按时回家,保证每天的工作都是高效的,在特殊情况下最多也只允许加班一周。

2 XP的几个关键开发准则应用分析 2.1 测试先行

软件测试是保障软件质量的关键,传统的软件工程大多

采用瀑布模型,采取先编码后测试的方式,而XP则采用原型模型,强调的是测试优先,它将一个软件开发项目分成多个迭代周期,在每个迭代周期内都包含一个完整的开发过程,由于人们在构思和创建软件时,身边的环境不断在变更,作为最著名的敏捷软件开发方法,XP就是为了在动荡的业务环境中获得响应变革的能力。

XP要求事先设计好一个大概的界面,客户体验后开发者得到反馈,使得客户需求在开发前就确定下来,编码前先把测试程序写好,使得编码后马上可以开始测试来发现程序的不足和漏洞。XP提出了结对编程的思想,一个人编码的同时,另一个人可以查找错误和漏洞,大大提高了编码效率。③

作为轻量方法论的极限编程是一个周密而严谨的软件开发流程,它特别强调测试,遵守测试先行原则。XP中的测试包括单元测试和验收测试两种类型。对XP来说,要测试所有可能出错的地方,而且所有测试都要100%的通过,这就是XP的极限理论之一,也是测试的基本原则。采用传统软件开发方法的人员通常都是先写代码后测试,但当时间紧迫时,测试就变得很困难并且经常被忽略,而极限编程最佳实践之一的测试驱动开发在写代码之前先写测试,解决了这一问题,可以提供高质量可测试的代码。 2.2 及时重构

维护一个大的系统很困难且充斥着问题,因此有许多软件开发人员宁愿在系统开发的前期花费大量精力尽量构建一个完善的系统,以求一劳永逸,然而事实证明,预测未来是徒劳的,不论我们有多聪明,思想有多超前,总会有一些不曾预料到的需求。如果变化是不断演化的或不可预测的,那就不可能存在什么一步到位的设计方法,在设计时过多的考虑以后可能的变化完全是一种浪费,这就是为什么在软件开发中需要重构的原因。

软件会随着时间的延伸变得越来越难于理解,越来越难于维护,因此程序员必须在软件失去控制前重新构造它,重构是在保持程序外部可观察行为不变的情况下,对软件的内部结构进行重新改造和组织的技术,是获得软件质量的一项关键技术,然而,重构在实际中并没有得到预期的应用,最主要的障碍是要耗费太多的时间和精力去寻找需要重构的位置以及选择适当的重构方法。

在本质上,重构不改变软件可见的外部功能,它只是增强了软件的内部结构。当有新的功能需要添加时,第一步常常是对软件进行重构,使添加更简化。事实上,这种添加的新功能为重构提供着推动力,与重量级的再设计相反,重构可以被认为是增量式的再设计,XP强调在变化的环境中采用连续的、增量式的重构方法,XP要求程序员要有勇气,能大胆的重构,这样就保证了软件的质量,与其同时,有两

样东西在驱动和提高现在的重构技术:一是更好的程序设计语言和开发工具;二是更快的变化需求。 2.3 XP的项目管理

XP项目开发周期依赖于项目团队的开发效率,这个效率可以用每个迭代开发阶段加入的用户Story被成功实现的概率来描述。在XP项目里,如何尽早发现隐藏的“坏味道”,保证用户story易设计、可测试、大小合适,是影响项目开发进度的重要环节。一个好的用户story将减少重构次数,从而提高开发效率,用户story的重写及代码的重构过于频繁,是延缓XP项目的主要原因。④

XP是一种注重它所强调的价值和原则的软件开发方法学,在实际开发过程中,不同项目组在不同的项目环境下可裁剪出适合项目、适合组织的方法学。比如,检查个人履职情况在每个项目组都会有各自的符合公司文化和价值的评审方法,在传统的文档式开发过程中,开发人员的工作量被量化成代码行数或者bug修正数,而在XP中,难于通过统计个人的代码行数或修改的bug数进行绩效考核,因此必须找到对个人履职情况进行合理评价的新方法,这时可以由每个开发人员找4~5个项目同事来提供对他在项目里表现的反馈,若都基于比较客观的态度对同事进行评价,则从项目同事的反馈里就能得到比较全面的个人履职信息。 XP提倡简单设计和通过重构来增进设计,设计时考虑

更多的是要满足当前的业务需求以及容易让项目组其他成员理解,同时,XP可以使用金卡实践来激励个人创造,允许项目组成员申请金卡来进行新技术研究或大范围设计,只要开发人员有具体理由并且项目组同意就应该给予支持,让每个人都在开发软件项目的过程中获得幸福感和成就感。需求管理是软件开发过程中一个重要的环节,贯彻于整个软件开发过程的始终,在软件开发过程中,随时都有可能发生影响项目交付的问题,很多事情项目经理不可能事无巨细都察觉到,一个人的智慧总是有限的,这就要求XP开发人员既要听从项目管理人员的指挥,又要在有新的或不同想法时踊跃与管理人员沟通,如果每个开发人员都能勇于发表自己的看法,项目管理将变得轻松,另外,每个人都希望有一个上升的职业生涯,软件机构也希望能不断涌现优秀的员工,从而有利于组织的成长,这就更需鼓励开发人员积极参与管理,大胆提出对项目开发的意见或建议。XP提出的很多原则允许和鼓励开发人员积极沟通,表达自己的想法,运用XP建设一支拥有简单、勇气、沟通和反馈的良好氛围团队,对于组织和组织内每个成员都是有益的。 2.4 XP适合完成项目的规模

极限编程是一种轻量级的开发方式,非常适用于在开发软件过程中面对模糊或者快速多变需求的中小规模团队。XP既可以应用在单个人的开发过程中,又很容易完成一个需要

有12人的项目,若要完成一个两倍大的项目就比较困难了,这时就需要一些别的东西,或添加一些传统处理大任务型项目的实践,或把这个项目组分解到两个或两个以上XP团队中,让其中一些团队充当另外一些团队的客户。

由于在大型复杂项目中,存在多支使用不同软件过程的开发团队,多组具有不同要求的、分布在不同地理位置的客户,因此在大型复杂项目中采用极限编程开发时,标准的XP实践必须加以改造。⑤在使用极限编程方法的软件开发项目中,可以使用用户story点来度量项目的规模,这些体现了用户需求的story是以一定的效率被逐次迭代完成的,迭代结束时形成一个完整的软件产品。实践证明,通过XP扩展和改造,能够保证代码质量,帮助大项目按时成功交付。 3 结语

作为敏捷开发方法的主流,极限编程中许多部分其实都来自于业已存在的那些优秀的开发实践,尽管极限编程所用的实践方式不是全新的,但是概念的建立以及它们如何融合在一起极大地增强了那些老的实践。极限编程具有沟通、简洁、反馈、勇气和优质的工作等五个基本规则,除此之外,还可以从中提炼出变化的成本、重构、协作和简单化四个关键思想。

极限编程是一种轻量级的软件开发方法,由于它对质量和速度并重,因此对中小项目的开发具有相当大的诱惑力;

与其同时,稍加改进,它也可适用于较大项目的开发。不过,XP的实现至少需要三个环境特征:界面修改不会带来昂贵的代价、更密切的交流和自动的回归测试。 注释

① Kent Beck. Extreme Programming Explained: Embrace Change[M].2nd ed.[S.l.]: Addison-Wesley Professional,2004. ② Stewart Baird.极限编程基础、案例与实施[M].袁国忠,译.北京:人民邮电出版社,2003.

③ Sara Shahzad. Learning From Experience: The Analysis of an Extreme Programming Process[C].2009 Sixth International Conference on Information Technology: New Generations.

④ 王晓华,赵明.一种XP项目迭代周期估计方法[J].计算机应用,2007,Vol.27(5).

⑤ 梁海华,朱淼良.大型复杂项目的极限编程改造方案[J].计算机工程,2008,Vol.34(11).

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

与其同时,稍加改进,它也可适用于较大项目的开发。不过,XP的实现至少需要三个环境特征:界面修改不会带来昂贵的代价、更密切的交流和自动的回归测试。 注释

① Kent Beck. Extreme Programming Explained: Embrace Change[M].2nd ed.[S.l.]: Addison-Wesley Professional,2004. ② Stewart Baird.极限编程基础、案例与实施[M].袁国忠,译.北京:人民邮电出版社,2003.

③ Sara Shahzad. Learning From Experience: The Analysis of an Extreme Programming Process[C].2009 Sixth International Conference on Information Technology: New Generations.

④ 王晓华,赵明.一种XP项目迭代周期估计方法[J].计算机应用,2007,Vol.27(5).

⑤ 梁海华,朱淼良.大型复杂项目的极限编程改造方案[J].计算机工程,2008,Vol.34(11).

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

本文来源:https://www.bwwdw.com/article/pqx7.html

Top