结对编程:第一阶段
***一、实验目标:***
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
***二 、实验内容:***
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
***三、第一阶段:***
***1) 组队:***
我的搭档是周阳,因为我只有手机端,所以前期很多工作都是我的搭档完成的,我们都认为对四则运算题目更加了解和感兴趣,所以我们选择了四则运算这个题目。
**2) 选题要求:**
开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分数。
**3):敏捷开发和结对编程;**
1、敏捷开发:
敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。
四个原则:
递增,而不是连续的:如果开发实践是真正的敏捷精神,那么交付的工作软件是一小部分一小部分递增的。不必等到一个阶段完全完成后才开始另一个,工作也不是向大的发布日期而努力。完成的工作,但并不是业务最终期限,驱动着敏捷交付。但敏捷精神也承认业务操纵着最后截止日期。
避免不必要的开销:如果实践仍然是真正的敏捷精神,那么团队就致力于尽可能多地减少项目计划和文档。与其讨论要做什么,然后再写下来,不如赶紧动手去做,否则,就是在浪费时间在工作的工作上。在工作对工作中,敏捷精神有利于实际的工——作交付工作软件。而且它也值面对面的交流通过邮件和其他书面文件。
协作:根据需求,团队成员一直与其它人进行交互,以及一些外部利益相关者。在敏捷教练世界中,整个团队的负责人Lisa Crispin能够解决所有问题,在问题出现之前 。真正的敏捷精神团队是自助的。他们分配需要做的工作。虽然每个成员承担的任务都在他们的专业技能范围内,他们还是需要与团队协作的。没有人的工作是孤立的,也没有团队本身是独立工作的。没有业务利益相关者,以及诸如用户体验方面的外部专家的重大投入,团队就不可能使项目向前发展,
说真话:为了保证真正的敏捷,团队探讨的与项目相关的一切都要是真实的。在一些至关重要的专业领域,如冲刺测试的编码技能,他们承认存在差距。关于实际生产力,他们的要讲事实;这也就是说,在y时间内,团队是否有能力做到x。他们承认错误。说真话是一项挑战,因为他们害怕承认缺点会让他们显得很弱。但敏捷精神知道说出事实需要勇气。承认问题需要信心,然后快速地去解决问题。
2、结对编程技术:
结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。
在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。结对编程是极端编程的组成部分。
优势:
其实结对编程做起来很简单也很有趣,找个水平差的不太远的程序员和自己配成一对。只用一台计算机,大家选一个人坐在键盘前面负责输入,另一个人坐在后面口述。两个人要不断的交流,频率不应低于一分钟一次。整个的设计思想由后面只动口不动手的人主导,而由操键盘的人做实现。由于人的思维速度是快于输入代码的速度的。那么观看的人可以有空闲的时间做额外的思考,观察代码写的有没有问题,结构有没有问题。
如果程序员的经验积累足够,是很容易看出存在潜在问题的代码的,即表面上实现了功能,但实际上是一种糟糕的做法。这在XP(eXtreme Programming 极限编程)中被称为代码坏味道,在 Martin Fowler的《重构》一书中有详细的介绍。两个有经验的程序员同时在一起工作,看起来好像浪费了一个人的时间:但实际上的效果确实完成了更高质量的代码。程序编的不那么容易出BUG,而且代码也写得更为优雅和紧凑。
关于结对编程,发现了一些新的受益之处。首先,它可以促进参与项目的程序员自身的提高,一对程序员工作的时候,水平较低的一方会潜移默化地受水平略高的程序员影响,学到一些新的东西。而水平高的一方同样因为不断地把自己的想法说出来而整理了自己的思路。
***4)组队情况:***
1、队名:老年人业务队
2、各队员博客地址:
周光宏3170701228 https://www.cnblogs.com/zgh083417/
周 阳3170701229 https://www.cnblogs.com/0516zy/
***5) 课题分析:***
1、课题:
开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分数。
2:讨论:
用随机数产生0-100以内的数,然后随机产生运算符。此时程序会计算一个结果,如果结果大于100,为负数,或者商为小数,那么删除这一个算式,并且返回,重新产生算式,重复下去。如果学生输入的答案和程序运行的答案相同,则分数加1,不同则分数不变,指针指向下一个算式。最后得出总分。
***6)开发平台:***
使用eclipse,java语言编写代码
***7) 小结:***
这次我和我的搭档一起讨论了程序最基本的东西,因为我没有带电脑,所以前期很多工作都无法完成,非常感谢我的搭档。我们通过一个下午的讨论,大致确定了编程的方向,为后面的编程奠定了基础。
原文地址:https://www.cnblogs.com/zgh083417/p/12545261.html