结队编程
结队编程的标准配置环境
What is pair programming?
Two programmers working side-by-side, collaborating on the same design, algorithm, code or test. One programmer, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work. On demand, the two programmers can brainstorm any challenging problem. Because the two programmers periodically switch roles, they work together as equals to develop software.
成对编程 ( Pair Programming )
XP: 认为在项目中采用成对编程比独自编程更加有效。成对编程是由两个开发人员在同一台电脑上共同编写解决同一问题的代码,通常一个人负责写编码,而另一个负责保证代码的正确性与可读性。
其实,成对编程是一种非正式的同级评审 ( Peer Review )。它要求成对编程的两个开发人员在性格和技能上应该相互匹配,目前在国内还不是十分适合推广。成对编程只是加强开发人员沟通与评审的一种方式,而非唯一的方式。具体的方式可以结合项目的情况进行。
我们在项目中并没有采用成对编程的实践,而是在项目实施的各个阶段,加强了走查以及同级评审的力度。需求获取、设计与分析都有多人参与,在成果提交后,交叉进行走查;而在编码阶段,开发人员之间也要在每个迭代周期后进行同时评审。
Peer Review , nightlybuild CMM里面的软件配置管理 ((scm),内容就包含这些东东
很多国外的大软件公司都有Peer Review制度
虽然不等同于Pair Programming ,但是可以说xp是它的极端化
按照XP的理论,既然Peer Review 是好的,那么就把Peer Review极端化-----Pair Programming
至于单元测试----既然unit test 是好的,那么就把unit test 极端化---测试先行
至于代码共有--则最好有版本控制手段来集中管理,最好能达到持续集成---当然
不能持续集成每日集成(nightly build)也可以。
在这里,我建议使用以下工具--全部可免费得到:
CVS---版本控制工具
xUnit---单元测试framework
ANTHILL---持续集成工具
scarab----bug track system
结队编程 我认为目前在国内还是无法一时实行。
XP许多思想还是需要长期工作的积累才能做好。
在XP中还讲了两个准则:
1 本地适应。
2 递增修改。
我们可以这此准则再广义化。
有一种变通的结队编程:在项目小组化分单元,由小组组长来进行"结队编程"。
这样我认为比较可行。
Pair Programming是XP所有的Practices中最被争议和被认为是最难接受。
Pair Programming是获得XP最大价值的关键。
没有Pair Programming,无法实现有效的Continuous Code Review,代码质量下降。
没有Peer Pressure,流程的执行很容易出现偏差。
没有Pair Programming,Communication很容易弱化,进而影响Team work。
Pair Programming象XP流程中的粘合剂,把各个环节连接起来实现最大的价值。
XP Without Pair Programming?
这是引进XP时最难被接受的规则。但如果在采用其它XP的惯例和规则时,抛弃Pair Programming,那么会面对以下问题:
如何进行有效的Design Review
如何进行有效的Code Review
如何保证代码质量
如何保证流程的执行
如何增进Communication
如何进行Cross-Training
如何增强Teamwork
以上是我从我们的关于pp的ppt中考出来的。
ppt在这里
http://www.chinaxp.org/forum/viewThread.go?parentId=1041562052661&forum=1
这里有一些关于pp的讨论
http://www.chinaxp.org/forum/AboutXP.jsp
构建一个敏捷的开发团队的小结 :
1。敏捷的团队建设,确实是一个渐进的过程。好像没有那个团体是一下子就自动产生,大家只有在比较长期的磨合中,才能达到某种默契。
2。在磨合的过程中,有一个良好的习惯养成,同样也很重要。在这方面Schelemiel如斯说:“敏捷团队最要紧的是每个成员的习惯。把持续集成、测试驱动、重构、结对、短会议、每周40小时……这些习惯培养好了之后,团队的建设基本上就成形了。”
3。而在习惯如何养成上也是有很多方法的,比如某种激励或者惩罚,但是我相信大家也许更能赞同以下几个人的说法吧:),Schelemiel:“敏捷团队对于leader的要求会更高,因为你无法像带一支CMM团队那样参考大量的正式文档和度量,你必须更多地依赖自己的才华、人格和直觉。”;scalene:“以有经验的人为骨架,寻找有纪律性的新人,建设一支稳定的团队”;而我说:“一个敏捷团体习惯的
养成,不是靠强制,也不是靠奖励等,确实需要靠一些潜移默化的东西来引导。”。我想不同的团体都有其自己的养成好习惯的方法。
4。每个成员都应该对敏捷开发基本步骤有所了解吧,计划游戏,隐喻(metaphor),持续集成、测试驱动、结对、短会议、每周40小时……
5。我想每个成员对常用的敏捷技巧都要熟知吧,象重构,面向对象设计原则(OCP等),设计模式,测试驱动开发(TDD)。
没有评论:
发表评论