一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容:
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、问题描述
开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分数。
四、第一阶段
1)查阅相关资料加深对敏捷开发和结对编程的理解;
1、敏捷开发:
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
敏捷开发,没有其他开发那么复杂繁琐,敏捷开发是当代信息社会孕育出来的适应社会的需求的一种开发模式,我认为,敏捷开发比较快速,有了什么想法立马编程,所写的文档比较少,节约了大量时间,很快的面向市场了,推动了社会信息化的发展。
敏捷开发适合小型,中型大型的项目,开发比较快,像那种软件公司,小游戏公司比较适合。还有就是项目的组员不多,5-7个人就可以了。节约了大量的人才,可以提高效率,创造更高的价值。
相比迭代式开发两者都强调在较短的开发周期提交软件,敏捷方法的周期可能更短,并且更加强调队伍中的高度协作。
相比瀑布式开发,瀑布是开发的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期需求的变化难以调整,代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。敏捷方法则在几周或者几个月的时间内完成相对较小的功能,强调的是能将尽早将尽量小的可用的功能交付使用,并在整个项目周期中持续改善和增强。
敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净和富有表现力。敏捷开发是我们当今发展的必需品,是我们学习的必备的技能。
2、结对编程技术:
是一个非常简单和直观的概念,能达到事半功倍的工作效果。但是,人与人之间的合作不是一件简单的事情——尤其当人们都早已习惯了独自工作的时候。实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。而另一方面,两个有经验的人可能会发现配对编程里没有什么技能的转移,但是让他们在不同的抽象层次解决同一个问题会让他们更快地找到解决方案,而且错误更少。
2)组队情况,各队博客地址,github仓库地址,所选择的课题;
1、队名:WxWz
2、各队员博客地址:3170701103 王旭(https://www.cnblogs.com/014wangxu/)
3170701104 王振(https://www.cnblogs.com/wshu221/)
3、课题及仓库:四则运算 https://www.gitHub.com/jdbcsy/yunsuan
3)针对课题查阅的资料,对课题的理解;
1、课题:
开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分数。
2、理解:
(1)随机产生100之内的正整数的题目。此处要用到随机数
4)二个人商量后,采用开发平台和技术工具
使用VC++6.0,C语言编写代码。
5)其他,如二人讨论的记录
1、由于是整数运算的题目,因此需要考虑真分数对题目的影响,要将其排除掉。
2、可以把各运算分开进行。
3、运算顺序问题,设计时应该考虑。
4、结果的范围要求有很多,要注意不能遗漏