HNU创新课程结对编程项目总结

  与我的搭档陈春蕾在经历了一整个国庆假期的努力后,我们终于合力完成了结对编程项目,现将复用个人项目的方法与本次开发过程的经验与教训总结如下:

  首先,我们对项目需求进行了需求分析,很快发现,不论是个人项目的数学卷子自动生成系统,还是结对项目的小初高数学学习软件,其核心功能都为生成数学题目,这是可以复用的一个核心模块,为我们在结对编程项目中节省了不少力气。此处由于我的代码中算法较为呆板,同时生成的题目不具有良好的随机性,我们考虑使用搭档的数学题生成模块代码,并在此基础上增加结对编程需求中的计算题目得分与UI系统交互等其他功能。

  此前我与搭档都在个人项目中使用了c++语言,为了减少复用代码时的不必要劳动,我们决定继续使用c++语言完成结对项目开发。但是,关于c++的图形化开发工具Qt的使用,我们此前并没有接触过,因此,本次任务完成的难点基本在于如何用Qt实现用户交互的功能,同时确保已完成的其他功能在Qt工具下的环境也中能正常运作。

  由于我的电脑在安装Qt环境的时候出了问题,无法运行项目,且开发期间我与搭档身处异地,所以本次开发过程全程由搭档担任驾驶员,我担任领航员,通过腾讯会议投屏进行实时沟通。

  在开发过程中,我们遇到的第一个难题就是Qt的使用。在结对编程的双方都不了解开发工具的情况下,我们的工作效率大打折扣,第一天的上半天进展不顺。为了克服这一问题,我们选择分工,由搭档负责对Qt提供的示例程序进行研究,争取尽快摸清各部分功能结构,我则负责在互联网收集整理Qt开发项目的教程,将我们需要的部分提取出来,这基本就是第一天的全部工作内容。经过第一天工作的磨合,我们渐渐找到了节奏,同时对接下来的开发需求分条目进行梳理,列出工作计划。

  之后,我们依照工作计划,从题目选择界面开始进行设计。我们发现Qt可以直接对ui文件进行图形化设计,这大大加快了我们的界面设计速度,但同时,我们也迎接了第二个难题,即Qt中信号槽的使用,这可以说是实现交互功能的核心问题。对于此,我们依旧遵循了此前的工作模式,比起直接研读大段的说明性文字,我们发现研究他人成功运行的样例代码更具效率。在成功搭建信号槽连接后,我们接下来的任务就是按部就班地实现各模块任务。

  在需求中,输入不合法时,系统应当拒绝接收输入。对于这一功能,我们起初依靠生活经验,提出了在输入不合法时输出提示信息的设计需求,但由于Qt工具使用不熟练,我们在实现这一功能时遇到了显示不完整,且难以搜索到解决方案的困难。最后由于时间短,开发任务重,我们选择妥协,考虑用输入框强制清空代替输出提示信息,这是项目开发过程中的一个遗憾。

  关于数学题答案计算的功能,这部分我们的分工是由我负责学习使用堆栈的数据结构,编写计算答案的算法,搭档负责将这部分代码与Qt中的出题模块与计算得分模块耦合到一起。在计算得分功能实现过程中,我们曾陷入瓶颈,也有意见不统一的时候,很大一部分原因还是工具使用不熟。由于搭档在之前的实操中,对工具的掌握程度已有较大的程度的提升,因此归功于她在工作时间外的努力,这一部分也圆满完成了,感谢她的付出。

 

  实现了大部分功能后,我们的最后一个难题是如何实现短信验证码功能。在陈春蕾负责完成编码工作的同时,我也在持续搜索着有c++接口的短信服务平台,最后我们选择了互亿无线平台。然而在实际使用中,我们发现该平台提供的接口是Unix系统的,由于我们是在Windows系统下进行开发,因此还要对其进行相应的转换。在研究该功能中,我们虽然一度陷入瓶颈,也想过就此放弃,但经过持续的学习与查找资料,我们成功发出了自己的第一条验证码短信。这是我在开发过程中感到最为激动雀跃的时刻。

  回顾结对项目的开发历程,我们的经历一波三折,现将主要困难列举如下:

  1、对于开发工具不熟悉。

  2、缺少图形化开发经验,不熟悉相关机制。

  3、原本在dev-c++实现的代码,可能与Qt环境不适应。

  4、验证码与答案计算这类新增的核心功能开发困难大,耗时长。

  5、由于我的电脑环境问题,搭档承担了全部驾驶员工作,个人任务重。

  但在短短几天的开发中,我们也顺利完成了任务,现将成功经验总结如下:

  1、在开发初期即进行需求分析,并对开发流程合理安排,时间虽然紧张但不影响整体进度。

  2、虽然我们无*换职责,但这样的优点在于,代码风格较为统一,在做好分工的情况下,个人可以专注自己的任务,减少了一些磨合的难度。

  3、我们的时间分配较为合理,没有出现前松后紧的状况。

  4、开发过程中虽然屡遭挫折,但我们心态平和,及时沟通,没有因为情绪状态影响到项目的完成。

  最后,感谢我的搭档陈春蕾,我们的合作非常顺利且愉快。我在结对编程实践中感受到了搭档的重要性,希望我们都能在接下来的实践任务*同成长。

上一篇:HNU JAVA 反转字符串


下一篇:五黑小队需求分析心得体会-HNU-软件工程导论