极限编程在项目实践教学中的应用探索

时间:2022-06-30 06:35:48

极限编程在项目实践教学中的应用探索

摘要:极限编程是一种轻量级的软件开发方法。该文在介绍极限编程主要特点的基础上,探讨了在计算机项目实践教学中引入极限编程方法的必要性,以及如何在计算机项目实践教学中有效地应用极限编程方法。

关键词:极限编程;结对编程;教学

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)35-2400-02

The Application of the Extreme Programming in the Project Practice' Teaching

MA Jie

(Henan Industrial Technician College, Zhengzhou 450007, China)

Abstract: Extreme Programming is a lightweight software development methodology. This paper introduces Extreme Programming main feature, we also explored Extreme Programming method in the computer project practice teaching of the necessity. And how to design effective project practice' teaching with Extreme Programming.

Key words: extreme programming; pair programming; teaching

1 引言

极限编程(Extreme Programming, 简称XP)作为近年来逐渐普及的一种轻量级软件开发方法在很多方面和我们传统意义上的软件开发工程有所不同。XP从实践中来,是对实践的总结,也是经过实践检验的,其主要特征是要适应环境变化和需求变化,充分发挥开发人员的主动精神。正是由于它的特有方法帮助我们减轻了软件开发的压力,使软件能以尽可能快的速度开发出来并向客户提供最高的效益。

2 极限编程思想及其特点

极限编程强调我们将任务细分为可以在较短周期解决的一个个子任务,并且强调测试、代码质量和及早发现问题。通常,通过一个个短小的迭代周期,我们就可以获得一个个阶段性的进展,并且可以及时形成一个版本供用户参考,以便及时对用户可能的需求变更作出响应。其主要特点有:

2.1 软件开发采用原型法

极限编程要求将一个软件开发项目分为多个迭代周期,每个周期实现部分软件功能。在每个周期都进行提出需求、设计软件架构、编码、测试、软件开发的全过程。每个周期都进行充分的测试和集成。这样的好处是可以不断地从客户方面得到反馈,更逼近实际的软件需求。通过频繁的重新编码的过程,可以非常适应功能更改的需求,同时增加软件的易维护性。在不断的迭代中,避免架构设计的重大失误造成的软件不能如期交工,避免了软件设计的风险。

2.2 强调设计简单性

在软件设计中,强调简单性,就是坚决不做用不到的通用功能。同时,也不刻意避免重新编码,只有不断地重新编码才能保证软件得合理性。不害怕对整个软件推倒重做。认为重新编码是很正常得现象。每次得重新编码都会大大减少软件中得熵值。

2.3 引入现场客户

在专业分工中,提出在开发团队中要有全职的客户人员的参与,同时在软件团队中也要有自己的领域专家。这样,可以和客户充分交流,彻底了解应用需求。这种软件需求的提出不是一次性的,而是不断的交流。

2.4 在软件开发的顺序上,和传统方法完全相反

传统方法是按照整体设计、编写代码、进行测试、交付客户的方法。而XP是按照交付客户、测试、编码、设计的顺序来开发。首先将要交付客户的软件的界面做出来,先让客户对软件有实际体验,这样,可以获得客户的更多的反馈,使需求可以在开发前确定。在编码前就先把测试程序做好,这样,编码完成后就可以马上进行测试。通过不断的测试来保证软件的质量。在进行软件架构设计之前就进行编码,可以使问题更早暴露,可以使最后的软件设计更体现编码的特点,更符合实际,更容易实现,也保证了设计的合理,保证了软件设计的大量决定的正确性。

2.5 计划进度表由技术人员提出

在项目计划的实现上,每次的计划都是技术人员对客户提出时间表,由最后的开发人员对项目经理提出编码的时间表。这种计划都是从下而上的,不是从上到下的,更容易保证计划的按时完成。同时,多个迭代周期也使工期的估计越来越精确。

2.6 在分工上,强调角色轮换,项目的集体负责,分工的自愿性

分工的自愿性就是每个人的工作内容不是由项目经理分派,而是由每个人自愿领取,这样保证了每个人可以发挥自己的特长,适应自己的情况。当然,在每个问题上都要有唯一的决策人,同时,也要经过充分的交流和沟通。角色轮换就是在项目中,一个人在不同的周期中担任不同的角色,可以保证每个人对项目的整体把握,方便项目中的沟通和理解。项目的集体负责,就是每个人不是完成自己的工作就可以了,要对整个项目的完成负责,任何人都可以对工作的任何部分提出自己的建议。任何人都可以从事任何工作。任何人都要对整个项目熟悉。这样做的优点是可以充分的锻炼人、可以发挥每个人的积极性、可以使项目不依赖于某个特定的人,方便今后的软件的维护,通过工作内容的变换可以提高人工作的兴趣。通过角色轮换还可以使每个人都劳逸结合,方便相互理解,避免由于不理解而造成的各种配合问题。

2.7 每周40小时工作制

保证每天的工作都是高效的,不连续加班。

2.8 结对编程

提出了结对编程的思路,这也是极限编程的实施重点。

2.9 人员分工灵活

在人员的分工上要灵活,要保证软件开发中的角色的齐全,但每个角色可以由几个人共同担任,也可以一个人担任几个角色,并且在项目的不同时期,不同角色的人员数量会不断变化。

2.10 站立会议

每天或隔天,开一个站立会议(保证开会时间尽量短),来解决工作时间不一致和相互打扰工作的情况。在每个迭代周期也有一个计划和分工等的全体大会。

3 极限编程在项目实践教学中的应用

3.1 在项目实践中应用结对编程

极限编程的核心就是结对编程。所谓结对编程,就是每个模块的编码都是两个人一起干,共用一台电脑。这样,一个人编码时,另外一个人就可以检查代码,或对编码的思路进行思考,写文档等。不再有另外的测试人员,两个人同时完成代码的测试,并且是先写测试程序然后再编程。这样既避免了编程人员和测试人员的矛盾,又解决了一个人自己检查的局限性。两个人共同检查可以避免大多数的错误。在共同编程中还可以进行经验的交流和传授。也避免了将一个工作一直干下去的无聊,交流增加了情趣。并且两个人共同工作也增加了工作量的弹性,使项目计划的瓶颈工作能尽快解决。将这种结对编程的思路运用在学生做项目开发中,可以有效控制软件开发的进度和快速解决开发中出现的问题。

另外根据结对编程的思路,在带学生项目实践时,也可以将开发小组分为两个小组,一个小组进行开发,另一个小组作改进和bug修正等工作。也有同样的效果。

3.2 极限编程有利于学生培养自信心,全员参与,锻炼动手能力

传统的小组项目开发过程中,由于学生的程度不同,自信心不够,很多情况是一个小组中多是一位主力学生在编程序做项目,而其他学生则处于一个旁观者的位置。这种小组的不利于团队合作和项目的完成,。而极限编程则能有利地解决这个问题。在结对编程的方式中, 双方处于一个对等的位置, 每个人都是项目开发的主角。因此, 应用能力差的学生也有动手的机会, 完全摆脱了过去那种旁观、旁听的位置,并能从与对方的合作中学到许多自己不知道和了解的内容,从而锻炼了动手能力。同时由于学生存在不同的知识水平的差异,因此,在结对编程中双方容易学习到别人的优点,意识到自己的缺点并加以改正,从而在结对编程中达到提高综合素质和能力的目的。

3.3 在项目实践教学中应用极限编程有利于培养学生人际交往能力

沟通问题是一个项目开发设计成功与否的最重要因素之一。这种沟通不仅体现在设计人员和客户的沟通,同时也体现在团队内部。一个设计项目可能并没有什么正式的软件过程, 但是只要团队成员能够进行有效的沟通, 项目成功的可能性就很大, 但是如果项目中缺乏有效的沟通渠道,再优秀、再严谨的软件过程也没有用。从长期来看,内部能够进行有效沟通的组织能够得到很好的发展;但是反过来, 内部沟通不畅的组织将会出现很多的问题。

极限编程的核心准则是:沟通、简单、反馈和勇气。运用结对编程是一种非常有效改善沟通的方法。一对编程人员是协作过程中最基本的沟通单元。而结对编程的中心思想就是组内成员以及组与组之间的成员相互协作,相互沟通,迫使成员必须频繁的交流,增进知识经验的交流。这种以小组为单位共进退的方式取代了过去以个人为中心的竞争,避免了个人英雄主义。有利于成绩差,动手能力差的学生树立自尊和自信,同时也有利于成绩好,动手能力强的学生树立助人为乐的自豪感。通过相互之间具体的合作,从而顺利地建立起两者之间良好的人际关系。

4 结束语

XP作为一种轻量级的软件开发方法, 以过程简单为准则,以人员之间的信息沟通为保证、以提高软件质量为目标,可以有效应对软件开发中的需求变化,在世界各地已经得到越来越多的开发机构所采用。XP对于我们学习快速开发技术,减轻开发压力,提高软件产品质量,会起到极其重要的作用。但是根据我们国内软件开发的实际情况,以及XP本身还处于有待完善和改进阶段,对于它在软件开发和教学方面的应用仍然需要进一步的学习和探索

参考文献:

[1] Kent Beck. 解析极限编程――拥抱变化[M]. 雷剑文,等译. 北京:电子工业出版社,2006.

[2] Robert Martin. 敏捷软件开发:原则、模式和实践[M]. 邓辉 译. 北京:清华大学出版社,2003.

上一篇:Excel在数据处理中的应用技巧 下一篇:基于ASP网上工资查询系统的设计与实现