20145206《Java程序设计》实验三实验报告
20145206《Java程序设计》实验三实验报告
实验内容
- XP基础
- XP核心实践
- 相关工具
实验步骤
(一)敏捷开发与XP
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
一个常见的公式是:软件工程=开发流程+工具
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。其中,极限编程(eXtreme Programming,XP)是一种全新而快捷的软件开发方法。
一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈、假设简单性、递增更改、提倡更改、优质工作。
XP软件开发的基石是XP的活动,包括:编码、测试、倾听、设计。
(二)编码标准
编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
程序没有最基本的缩进,让人读起来很费劲,这个问题在Eclipse中比较容易解决:
处理之前:

我们单击Eclipse菜单中的source->Format处理之后:

Java中的一般的命名规则有:
·要体现各自的含义
·包、类、变量用名词
·方法名用动宾
·包名全部小写,如:io,awt
·类名第一个字母要大写,如:HelloWorldApp
·变量名第一个字母要小写,如:userName
·方法名第一个字母要小写:setName
·...
标识符名字应当直观且可以拼读,可望文知意,不必进行“解码”,一般采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名。
标识符的长度“min-length && max-information”的原则,可以通过去元音法把变量名变短,一般全局变量用具有说明性的名字,局部变量用短名字:单字符的名字,常见的如i,j,k等用作局部变量。
(三)结对编程
结对编程中有两个角色:
·驾驶员(Driver)是控制键盘输入的人。
·领航员(Navigator)起到领航、提醒的作用。
如何结对编程,为何要结对编程,重点是:
·驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
·领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。
·驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。
·主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“他/她的代码”,只有“我们的代码”。
·只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。
(四)版本控制
XP的集体所有制意味着每个人都对所有的代码负责;这一点,反过来又意味着每个人都可以更改代码的任意部分。这意味着代码要放到一个大家都能方便获取的地方,我们叫代码仓库。
版本控制提供了很多好处:
·版本控制提供项目级的 undo(撤销) 功能;
·版本控制允许多人在同一代码上工作, 只要遵守一定的控制原则就行;
·版本控制系统保存了过去所作的修改的历史记录;
·版本控制系统还支持在主线上开发的同时发布多个软件版本;
·版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况;
由于对git不是很熟悉,所以学习了一下git教程:






最终,HelloWorld推送成功!
(五)重构
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
一个完整的重构流程包括:
·从版本控制系统代码库中Check out code
·读懂代码(包括测试代码)
·发现bad smell
·Refactoring
·运行所有的Unit Tests
·往代码库中Check in code
(六)实践项目
和结对同学完成实验,她把实验一的代码上传至git,我进行下载。

重构过程:
给类、包、方法、变量改名字。

重构完效果如下:

队友把我的实验一代码进行下载并修改,完成结对编程。
实验中遇到的问题及解决过程
问题1:在托送代码时,不知道如何能一次推送多个.java,是一个一个.java文件名敲上去吗?
解决过程:通过询问同学得知需要哪个文件就可以敲哪个上去,也可以直接传整个文件夹的内容,只要敲上文件夹的名字就可以。
问题2:在下载结对同学的代码时,只能下载对方的文件夹,不能做到只下载一个.java文件,这样就会很不方便,我们尝试着下载其中一个文件,但是没有成功,我觉得一定是有办法的,只是我们还没有找到。
解决过程:未解决。
实验体会与感悟
本次实验采用了新的形式,即两个同学一组完成实验,让我体会到了合作的重要性,两个人要分工明确,刚开始我和合作的小伙伴对于git的操作不是很熟悉,于是我们通过学习教程以及询问同学弄懂了git,并且尝试着上传了一些代码(比如helloworld),然后我们把自己实验的代码上传,并且让对方进行下载,修改对方的代码,再进行上传,这个过程我觉得是互相学习的过程,可以知道自己原来的代码有什么不足之处,也可以了解对方对于自己代码有什么想法、思路,对于我们今后的学习是很有好处的,一项工作的完成通常都不是一个人努力的结果,而是团队合作,这体现了合作的重要性,所以我们对于这方面能力的培养也不容忽视。
PSP时间
| 步骤 | 耗时 | 百分比 |
|---|---|---|
| 需求分析 | 30min | 25% |
| 设计 | 30min | 25% |
| 代码实现 | 20min | 16.7% |
| 测试 | 20min | 16.7% |
| 分析总结 | 20min | 16.7% |
对方博客链接
http://www.cnblogs.com/schwarizard/
参考资料
20145206《Java程序设计》实验三实验报告的更多相关文章
- 20145120 《Java程序设计》实验三实验报告
20145120 <Java程序设计>实验三实验报告 实验名称:敏捷开发与XP实践 实验目的与要求: XP基础 XP核心实践 相关工具 (一)敏捷开发与XP 极限编程(eXtreme Pr ...
- 20155206 《Java程序设计》实验三实验报告
20155206 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 提交一: 提交二: 提交三: 提交四:
- 20155232 《Java程序设计》实验三实验报告
20155232 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发(Agile ...
- 20145303《Java程序设计》实验三实验报告
20145303<Java程序设计>实验三实验报告 ssh公钥配置及git安装: eclipse中git配置: 队友链接: http://www.cnblogs.com/5321z/p/5 ...
- 20145328 《Java程序设计》实验三实验报告
20145328 <Java程序设计>实验三实验报告 实验名称 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发是一种以人为 ...
- 20145236 《Java程序设计》实验三实验报告
实验三实验报告 和张亚军同学一组: 实验三实验报告
- 20144303 《Java程序设计》第一次实验实验报告
20144303 <Java程序设计>第一次实验实验报告 北京电子科技学院(besti)实验报告 课程:java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 ...
- 20145240 《Java程序设计》第一次实验报告
20145240 <Java程序设计>第一次实验报告 实验内容 一.命令行下java程序开发 1.建立Code目录,输入mkdir 20145240命令建立实验目录,并使用dir命令查看目 ...
- 20145330《Java程序设计》第一次实验报告
20145330<Java程序设计>第一次实验报告 实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...
随机推荐
- 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...
- 十进制转为N进制
昨天笔试遇到的题,如果是正数,不断以余数做除法即可: void convert(int num, int N, vector<char>& data) { int number = ...
- am335x sd卡启动开启识别emmc kernel 上的改动
sbc 7109-454 sd 卡启动qt系统后一直识别不了 emmc 也就是mmc1口, 一开始以为是硬件初始化的问题,后面又以为是io口复用,最后才知道是根本没有注册mmc1设备. 更改下面的代 ...
- Python自动化之面向对象进阶
1 静态方法 静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法. class Dog(ob ...
- 7.6--找过点最多的直线(CC150)
直接两个点确定一条直线.然后两两组合,再写一个看过多少个点的函数.一直更新max就行. import java.util.Arrays; public class Solution { public ...
- iOS 深入理解UINavigationController 和 UIViewController 之间的关系
创建三个类 BasicViewController : UIViewController SecondViewController : UIViewController ThirdViewContro ...
- ubuntu14.04 us sources.list
deb http://us.archive.ubuntu.com/ubuntu/ trusty main restricted deb-src http://us.archive.ubuntu.com ...
- Git – Fast Forward 和 no fast foward
Git 很是强大,在体验过rebase的华丽之后,再次发现之前在TFS上遇到的问题一下都有解了.但也印证了Git深入并非易事.这篇就谈下一个容易迷糊的概念:Fast forward. Fast-For ...
- Shortest Palindrome
Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. ...
- 7.31 签到,js 全局预处理笔记
js 解析与执行过程: 一.全局: 1.预处理阶段 : 1.LexicalEnviroment === window {1.预处理 var | 2.function xxx //预处理申明的 ...