一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容:
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、问题描述
四则运算:开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。
要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分数。
四、第一阶段实验内容
1)查阅相关资料加深对敏捷开发和结对编程的理解;
敏捷开发:敏捷开发包含迭代开发,增量开发。其中敏捷开发最核心的时迭代开发,敏捷一定是采用迭代开发的方式。那么什么是"迭代开发"呢?
迭代的英文是 iterative,直译为"重复",迭代开发其实就是"重复开发"。对于大型软件项目,传统的开发方式是采用一个大周期(比如半年)进行开发,
整个过程就是一次"大开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样
的流程,所以看上去就好像重复在做同样的步骤。所谓的"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,
按照新增功能来划分迭代。
敏捷开发的第一个好处,就是早期交付,从而大大降低成本。
第二个好处是,及时了解市场需求,降低产品不适用的风险。
敏捷开发的价值观
《敏捷软件开发宣言》四个价值观。
1.程序员的主观能动性,以及程序员之间的互动,优于既定流程和工具。
2.软件能够运行,优于详尽的文档。
3.跟客户的密切协作,优于合同和谈判。
4.能够响应变化,优于遵循计划。
十二条原则
1.通过早期和持续交付有价值的软件,实现客户满意度。
2.欢迎不断变化的需求,即使是在项目开发的后期。要善于利用需求变更,帮助客户获得竞争优势。
3.不断交付可用的软件,周期通常是几周,越短越好。
4.项目过程中,业务人员与开发人员必须在一起工作。
5.项目必须围绕那些有内在动力的个人而建立,他们应该受到信任。
6.面对面交谈是最好的沟通方式。
7.可用性是衡量进度的主要指标。
8.提倡可持续的开发,保持稳定的进展速度。
9.不断关注技术是否优秀,设计是否良好。
10.简单性至关重要,尽最大可能减少不必要的工作。
11.最好的架构、要求和设计,来自团队内部自发的认识。
12.团队要定期反思如何更有效,并相应地进行调整。
参考资料来源:https://blog.csdn.net/yjn1995/article/details/99334737
结对编程:两个实力水平差不多的人在一起工作,稍差的人可以向优秀的人学习得以成长;而优秀的人会在不断的表达中,形成自己的编程风格和
思想;这样都会得到成长,并且使得代码质量得到大大的提高。结对编程,并且使得我们工作效率会大大提高,这样使得我们在工作时,不会花大量
的时间来处理私人问题,使得加班也会变少,其实自认为是一种利于公司,也利于程序员本身的编程方式。还有一点,不断的更换公司的结对时,使
得员工对公司的业务都很清楚,这样即使某个员工离开本项目组,对项目的影响度会大大降低。这其中,对程序员本身的素质需求非常高,每个人都
需要虚心的接受别人的意见;当出现分歧时,需要恰当的时机,恰当的人去处理。另外采用结对编程的话,设计算法的思路也会更广阔,两种不同的
思维碰撞在一起可以互相参考,两个人也可以指出对方的优势和不足之处,由此可以一起设计一个更高效的算法,更好的完成项目。不过相比于传统
编程,结对编程对程序员的沟通能力也有更高的要求,传统编程只需要一个人闷头码代码就行了,而结对编程则需要两个人互相说明自己的想法,表
达清楚自己的思路,同时也是对程序员处理分歧的能力的考验,当然,这些沟通感觉有时候也会拖慢项目的进度,但是比起传统编程很快写好代码,
花大量时间在debug和复查重构上,结对编程虽然编程过程比传统编程长,但是质量更高,代码也更鲁棒,重写的概率比较低,对于对代码质量要求
较为严格的项目的确不失为一种很好的编程方法。
此次结对编程本应该线下两个人坐在一台电脑面前共同完成一个项目的开发,但此次受疫情影响,我和我的组员依靠github的仓库完成结对编程。
2)组队情况,各队博客地址,github仓库地址,所选择的课题;
队员信息:曹合欢——博客地址(https://home.cnblogs.com/u/chh1012/)
刘继海——博客地址(https://home.cnblogs.com/u/jingxinerwei/)
github仓库地址:(https://github.com/caohehuan/Test)
课题:四则运算
3)针对课题查阅的资料,对课题的理解;
小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或
分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输
出统计答对的题数与分数。
查阅资料栈的规则是先进后出。利用压栈的思想来计算四则运算表达式方法如下:创建两个栈,一个存放四则表达式的
数字,另一个存放对应的操作符。
4)二个人商量后,采用开发平台和技术工具
经商量后,采用eclips开发平台,开发本次项目课题,使用javascript语言进行开发。结对协作采用github的仓库托管进行交流。
5)其他,如二人讨论的记录
附上在github中交流过程截图。