实验二 结对编程 第一阶段
一 、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容:
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、实验过程:
一、查阅相关资料加深对敏捷开发和结对编程的理解;
(1)敏捷开发:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态;核心:用户的需求进化;方法:迭代、循序渐进;原则:主张简单,拥抱变化,可持续性,递增的变化,令投资最大化,有目的的建模,多种模型,高质量的工作,快速反馈,轻装前进;工具:Visual Studio Team Foundation Server,TFS,即团队基础服务器是微软应用程序生命周期管理服务器,用于帮助团队在Visual Studio的协作开发。最近,它进有了升级包括工作项目执行改进、富文本编辑器的改进,以及富文本编辑器中改善的超链接体验。 TFS中的Kanban面板也做了改善,提升了可以录入和跟踪的项目数量,该服务器现在有一个"利益相关者"许可,来规范服务器的访问权限。Atlassian Jira,Atlassian的是一个很流行的工具,主要用于跟踪产品开发、帮助团队整理问题、安排工具,以及记录团队行为。它Jira Agile插件使开发人员更容易部署关键敏捷策略,这包括用户故事开发、冲刺模块构建,以及可视化的团队活动。Axosoft,Axosoft以前被称为Axosoft OnTime Scrum,这一软件套件有四个功能模块:Scrum、Bug追踪器、帮助台和Wiki。它是基于HTML5构建的,帮助开发团队管理待办事项列表、发布和冲刺,带有燃尽图功能,有一个 管理仪表板用于跟踪编码和修改BUG的时间。LeanKit,使用 LeanKit的团队可以看到工作负载的分布并导出历史数据。最近 LeanKit 进行了一次升级,包含单点登录功能 和附加报告功能,从而提供更细粒度的数据详细信息。Planbox,Planbox 敏捷管理工具通过燃尽图跟踪进程,集成客户反馈,它的目标人群很广泛。最近它对应用的前端和后端都做的升级,添加了更强大的报告功能和新仪表盘,来提升项目速度。时间跟踪特性和工具允许用户得到所有他们在Planbox产生的数据。敏捷开发_360百科 https://baike.so.com/doc/3151875-3321607.html。
(2)自己对于敏捷开发的理解:传统开发方法是一开始用户把能想到的需求罗列出来,我们根据需求来假设,建模,设计出符合需求的软件。但是大部分情况下需求并不能一下都能想到,在开发过程中需求会越来越多,随着开发的不断进展而不断发现出来的,而无法在项目初期就明确的定义它,所以采用迭代、循序渐进的方法进行软件开发。
(3)结对编程:结对编程技术是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。结对编程技术是一个非常简单和直观的概念,能达到事半功倍的工作效果。但是,人与人之间的合作不是一件简单的事情--尤其当人们都早已习惯了独自工作的时候。实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。而另一方面,两个有经验的人可能会发现配对编程里没有什么技能的转移,但是让他们在不同的抽象层次解决同一个问题会让他们更快地找到解决方案,而且错误更少。两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决方案。而这个解决方案恰恰是其它软件工程方法学中所没有的。由于我们目前都在家中,没法采用最基本的结对编程,此次我们采用远程结对编程。远程结对编程:远程结对编程,也称作虚拟结对编程或分布式结对编程,是指两个程序员不在同一地点,通过协同编辑器,共享桌面,或远程结对编程的IDE插件进行的结对编程。远程结对编程引入了一些在面对面的结对编程中不存在的困难,例如协作的额外时延,更多的依赖"重量级"的任务跟踪工具,而不是"轻量级"的索引卡片,以及没有口头交流导致的在类似谁"控制键盘"问题上的混乱和冲突。有许多工具,例如Eclipse有插件支持远程结对。有些团队尝试使用VNC和RealVNC,每个程序员使用他们自己的计算机。其他人使用基于文本的GNU Screen的多显示模式。结对编程_360百科 https://baike.so.com/doc/6031258-6244259.html。
二、组队情况,各队博客地址,github仓库地址,所选择的课题;
队名:西瓜与橘子;
组长:晁海燕;
组员:刘晓絮;
博客地址:晁海燕:https://www.cnblogs.com/12345chy/
刘晓絮:https://www.cnblogs.com/liuxiaoxu/
github仓库地址:https://github.com/liuxiaoxu66/pp_project.git
选择课题:四则运算
三、针对课题查阅的资料,对课题的理解
四则运算:开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分数。
对课题理解:输入出题数10,先输出一个运算式,一个一个运算式输出,用户每回答完一个,再输出。用户输入答案,系统判断对错并显示出来,如果答对,答对题数加一,分数加分变化;如果答错,答对题数不变,分数不变;第十题做完后,系统显示的答对题数和分数既是本次测验成绩。关键难点在于随机产生四则运算和验证答案是否正确。随机数和加减乘除的排列,验证时,优先级的比较等等,这些都是需要解决的问题。
四、二个人商量后,采用开发平台和技术工具
开发语言:C语言
开发平台:VC6.0++
技术工具:github
五、其他,如二人讨论的记录
首先我们两人对这两个课题进行了探讨,说出自己对两个课题的理解和自己的想法,发现四则运算的思路我们能够更加理解一点,但是编程代码部分还是没有太大信心,于是我们在第一阶段确定了课题,编程语言,技术平台。然后我们在github上完成了自己的组队信息,建立了仓库,选择了合适的远程调控,桌面共享等的工具,为第二阶段做准备工作。目前为止只是建立了仓库,确定了课题,还没有正式投入进去。讨论后得到对课题理解:输入出题数10,先输出一个运算式,一个一个运算式输出,用户每回答完一个,再输出。用户输入答案,系统判断对错并显示出来,如果答对,答对题数加一,分数加分变化;如果答错,答对题数不变,分数不变;第十题做完后,系统显示的答对题数和分数既是本次测验成绩。关键难点在于随机产生四则运算和验证答案是否正确。随机数和加减乘除的排列,验证时,优先级的比较,系统如何算出正确答案等等,这些都是需要解决的问题。这周开始投入正式实际编程,在博客中进行更新。