摘要
极限编程是敏捷开发中的一种,是软件开发方法学泰斗Kent Beck先生最为推崇的方法之一,他强调交流,简化,反馈和胆识,在测试驱动开发、重构、小型发布等13种经典实践的帮助下,指导软件工程师进行软件系统开发。
本文首先对全日空网上预定系统及其子系统划分、系统架构等做了简要阐述;然后对该系统特殊性做了分析,根据其需求变化大,客户要求得到高质量、可运行的小型发布版本试运行的特点,最终选取极限编程方法作为系统开发的指导方法论,并在全日空网上预定系统开发中进行了认真实践。
全日空网上预定系统的开发过程包括多种实践,如完整团队、结对编程、集体代码所有权等。在采用极限编程的应用程序开发中,文章就UML指导需求分析、利用自动化测试工具JUnit等辅助测试驱动开发实践、利用设计模式提高系统构架质量、利用重构不断完善和改进代码及设计缺陷等几个方面进行了详细阐述;在基于极限编程的数据库开发中,作者提出了测试驱动数据库开发的思想,并在现有的自动化测试工具DBUnit和DBMonster等的辅助下完成了项目,通过以上方法的实践,数据库处理部分的性能得到大大的提高。极限编程的引入在一定程度上缩短了开发时间,节约了开发成本,并将发现错误的时间大大提前,提高了软件的质量。最后,本文总结了所做的工作,指出了该方法学存在的问题,提出了需要进一步研究的方向。
eXtreme Programming, is promoted by the father of software development methods, Kent Beck, which is one of the agile methods, which emphasized in communication, simplicity, feedback and courage. XP's classic methods include Test Drive Development (TDD), Refaction, Continious Integration and another 10 methods which can instruct XPers to develop their projects.
At first, paper presents Skyholiday system's subsystem and architecture. We decided to adopt XP as our software development methodology to instruct our system development and put it into practice, because that the system's requirement is uncertain, our guest requires good-quality and runable small release.
Skyholiday's development procedure include Whole Team, Pair Programming, Collective Ownership etc.. In the application development basing on XP, paper described detail in UML, using automatic test tool JUnit to assist in TTD, utilizing design model and refaction to promote the quality of codes. In the database development basing on XP, we promote the concept Test Drive database Development, and using automatic test tools DBUnit and DBMonster to assist our development. Database development basing on XP also make a great improvement in our database's performance. Application development basing on XP improves the quality of our codes and reduce the error hiding in our codes greatly. Finally, it summarizes the research and analyzes the present problems and the work in future.
引文
[1] 张海藩.软件工程导论(第三版)[M].清华大学出版社,1998.156~158.
[2] 梅宏,陈锋,冯耀东,杨杰.基于体系结构、面向构件的软件开发方法[J].软件学报,2003,14(04):721~732.
[3] 朱三元,钱乐秋,宿为民.软件工程技术概论[M].科学出版社.2001.50~57.
[4] Schwaber, Ken. Controlled Chaos: Living on the Edge. American Programmer, April 1996.
[5] James A. Highsmith Ⅲ. Adaptive Software Development[M]. Dorset House. 2000.34~35.
[6] 钱乐秋,张敬周,朱三元.Aaile方法研究综述[J].
[7] 马丁,邓辉.敏捷软件开发:原则、模式与实践[M].北京:清华大学出版社.2003.9.120~121.
[8] Martin Fowler. The new methodology[J]. Development Magazine. 2000(12): 34~37.
[9] [美]Robert C.Martin. Agile Software evelopment, Principles, Patterns and Practices[M].北京:机械工业出版社.2002.220~221.
[10] Ziv, H. and D.Richardson(1997). The Uncertainty Principle in Software the Engineering.ICSE97, 19 International Conference on Software Engineering, Boston, MA, IEEE.
[11] 芮雄健,王忠民.基于敏捷软件开发方法的基金管理信息系统开发[J].计算机应用.2004.24(11):162~165.
[12] Cockburn.A. Just-in-time methodology construction[M]. Extreme Programming and Flexible Processes, 2000.
[13] Cockburn.A. Selecting a project's methodology[J]. IEEE Software, July/August 2000. 64~71.
[14] [美]Embrace Change, Kent Beck.Extreme Programming Explained[M].北京.机械工业出版社.1999.30~32.
[15] Beck Kent. Extreme Programming Explained: Embrace Change Reading[J], IEEE Computer, 1999.32.
[16] Beck Kent. Embracing Change with Extreme Programming[J]. IEEE Computer. October 1999.70~77.
[17] XP websites: http://www.XProgramming.com http://www.extremeprogramming.org
[18] James Grenning. Using XP in a Big Process Company—a Report From the Field[J]. XP Universe Conference. 2001.
[19] Chaelynne M. Wolak, Extreme Programming (XP) Uncovered[J], DISS 725 Spring 2001.
[20] Charles Poole, Jan Willen Huisman. Extreme Maintenance[J]. XP Universe Conference 2001.
[21] Mark C. PaulK. Extreme Programming from a CMM Perspective. Paper for XP Universe, Raleigh. NC, July 2001.22~25.
[22] Fowler, M.(2001). "Is Design Dead?". Software Development 9(4): 12~13.
[23] 浅谈测试驱动开发(TDD) http://www-128.ibm.com/developerworks/cn/linux/1-tdd/
[24] [美]Kent Beck.Test Driven Development[M].北京.机械工业出版社,2002.
[25] [美]Roben S.Koss Testing Things That Seem Hard to Test[M].北京.机械工业出版社.2001.
[26] [美]Paul C.Jorgensen.Software Testing,软件测试[M].北京:机械工业出版社.2003.7.
[27] [美]John D.McGregor.A Practical Guide to Object-Oriented Software,面向对象软件测试[M].北京:机械工业出版社,2002.8.
[28] 杨彬,李心科,刘磊.基于Java自动化重构工具的研究[J].计算机与现代化.2005.1:22~23,32.
[29] K.Schwaber. SCRUM web page: http://www.controlchaos.com/
[30] Ken Schwaber. SCRUM Development Process[J]. OOPSLA'95 Workshop on Business Object Design and Implementation.
[31] Jeff Sutherland. Inventing and Reinventing SCRUM in Five Companies. Cutter IT Journal, 21 Septmeber, 2001.
[32] Mike Beedle, Martine Devos, Yonat Sharon, Ken Schwaber, Jeff Sutherland. SCRUM: An extension pattern language for hyperproductive software development (PLOP: The 1998 Pattern Languages of Programs Conference).
[33] FDD Website http://www.togethercommunity.com/ http://www.nebulon.com/
[34] DSDM Website http://www.versionone.net/
[35] Karl Franz Fogel, Karl Fogel, Open Source Development with CVS, Coriolis Group, 11/1999.
[36] Lech Madeyski. Preliminary Analysis of the Effects of Pair Programming and Test-Driven Development on the External Code Quality.
[37] Craig Larmans著.姚淑珍,李虎等译.UML和模式应用[M].机械工业出版社.2002.315~352.
[38] Craig Larman. Applying UML and Pattems: An Introduction to Object-Oriented, Prentice Hall, ISBN: 0137488807 05/1998.
[39] Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides著.李英军,马晓星等译.设计模式—可复用面向对象软件的基础[M].北京:机械工业出版社.2000.83~217.
[40] Bruce Eckel. Thinking in Patterns[M]. President, MindView, Inc.. 2001.
[41] 张绍成,李华林,马玉琴.基于Java的对象持久化方法研究[J].2005.26(2):264~267.
[42] Martin Fowler.重构—改善既有代码的设计(中文版)[M].中国电力出版社.2003.245~246.
[43] [美]Martin Fowler, Kent Beck. Refactoring: Improving the Design of Existing Code[M].北京:机械工业出版社.1999.
[44] 华奇兵,许文波,费娜.面向对象软件重构[J].重庆邮电学院学报.2004.16(2):96~100.
[45] 华奇兵,许文波,费娜.面向对象的软件重构[J].计算机工程.2005.31(5):82~84.
[46] Agile Database Techniques. scott W.Ambler. 2006.1.
[47] 叶忠杰.数据库概念模式及其设计[J].现代电子技术.2005(24).73~75.
[48] 戴大蒙,刘均.关系数据库重构模型的研究与实现[J].计算机工程.2005.31(23):211~213.
[49] Scott W.Ambler.Agile Database Techniques[M].机械工业出版社.2006.59~189.
[50] 栾跃.敏捷模式在微软项目经验谈[J].程序员.2006(9):76~79.
[51] Kent Beck谈极限编程新进展[J].程序员.2005(12):75.
[52] 极限编程发展趋势 http://manager.csdn.net/n/20060623/91992.html