软件工程 实验二 结对编程(第二阶段)

一、实验目标:

1)体验敏捷开发中的两人合作。

2)进一步提高个人编程技巧与实践。

二 、实验内容:

1)根据以下问题描述,练习结对编程(pair programming)实践;

2)两个学生组合,每人使用一台计算机,二人共同编码,完成实验要求。

3)针对课题查阅相关资料,加深对课题的理解;

4)在结对编程工作期间,两人的角色至少切换 4 次;

5)实验过程中合作编程两人互相探讨后采用开发平台和技术,语言工具,准备实验开展工作;

6)做好试验记录和分析工作。

三.实验过程

(一)问题描述

生命游戏(在与合作者夏晓峰讨论之后,我们选择了生命游戏为主题开始实验)

根据老师在学习通上初步的介绍以及自己的小组在课后查阅资料所获得的信息,我对生命游戏做了一个基本的了解。

生命游戏事实上并不是通常意义上的”游戏”, 它没有游戏玩家各方之间的竞争, 也谈不上输赢,可以把它归类为“仿真游戏”。事实上,也是因为它模拟和显示的图象,看起来颇似生命的出生和繁衍过程而得名为“生命”。游戏在一个类似于围棋棋盘一样的,可以无限延伸的二维方格网中进行。例如,设想每个方格中都可放置一个生命细胞,生命细胞只有两种状态:“生”或“死”。图中,用黑色的方格表示该细胞为“生”, 空格表示该细胞为“死” 。游戏开始时, 每个细胞可以随机地(或给定地)被设定为“生”或“死”之一的某个状态, 然后,再根据某种规则(生存定律)计算下一代每个细胞的状态:

并且生命游戏可以定义一定的生命定律如下所述:

1.每个细胞的状态由该细胞及周围八个细胞上一次的状态所决定;
2. 如果一个细胞周围有3个细胞为生,则该细胞为生,即该细胞若原先为死,则转为生,若原先为生,则保持不变;
3. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
4. 在其它情况下,该细胞为死,即该细胞若原先为生,则转为死,若原先为死,则保持不变。
(二)敏捷开发(课后搜索资料和基于自己的理解)
概念:是一种新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队;在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。
(三)结对编程(基于百度中对此概念的认识)
首先,敏捷开发是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。其次,这种开发方法可以使我们从双方的角度思考写出更高效的代码。

(一)、程序的总体设计流程图

 

软件工程 实验二 结对编程(第二阶段)_第1张图片

 

 

 

程序结对编程过程及功能实现情况

结对编程情况:

(1)关于图形化界面如何设计一起商讨,最终决定使用paint类并且在该类中设计包括drawImage、translate、paintState等方法来分别完成图形界面的表示以及在细胞生死状态变化的不同样式。

软件工程 实验二 结对编程(第二阶段)_第2张图片

 

 

 

最终代码:

      (1)cell.java

软件工程 实验二 结对编程(第二阶段)_第3张图片

       (2)lifeGame.java

软件工程 实验二 结对编程(第二阶段)_第4张图片

       (3)lifeGamePanel软件工程 实验二 结对编程(第二阶段)_第5张图片

 

项目github地址

软件工程 实验二 结对编程(第二阶段)_第6张图片

 

实验总结

  通过这此结对编程让我切实的感受到了合作的力量,一个人的能力固然重要,但是当个人能力与其他人的能力在相互合作的条件下将展现出更加强劲的力量。一个人遇到技术瓶颈时常常表现出来的就是一直处于思维定势之中,但是当处于一个团队中时,团队的其他成员的话可能会成为自己的破解问题的关键因素。

  就本次结对编程对我自己来说最大的收获还是接触到能力和学习的方式。结对编程其实是一个相互促进自身专业能力发展的过程,水平较低的一方会潜移默化地受水平略高的同学影响,学到一些新的东西,而水平高的一方同样因为不断地把自己的想法说出来而整理了自己的思路,两个人都在相互的学习相互的进步。两个人的结对编程中有一种默契,大家都会集中精力在主要的任务上,都不会忍心去主动做出一些影响对方的不好的事情,所以相应的开发时间和产品质量相比较一个人开发都会有很好的提高。

 

你可能感兴趣的:(软件工程 实验二 结对编程(第二阶段))