20155308 2016-2017-2 《Java程序设计》实验3
20155308 2016-2017-2 《Java程序设计》实验3
实验内容
- XP基础
- XP核心实践
- 相关工具
实验步骤
(一)敏捷开发与XP
- 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。“敏捷流程”是一系列价值观和方法论的集合。从2001年开始,一些软件界的专家开始倡导“敏捷”的价值观和流程,他们肯定了流行做法的价值,但是强调敏捷的做法更能带来价值。 
- 敏捷开发包括很多模式,其中,极限编程是一种全新而快捷的软件开发方法。XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流: - XP是以开发符合客户需要的软件为目标而产生的一种方法论
- XP是一种以实践为基础的软件工程过程和思想
- XP认为代码质量的重要程度超出人们一般所认为的程度
- XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件
 
- XP准则来表达: - 沟通 :XP认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素。
- 简单 :XP假定未来不能可靠地预测,在现在考虑它从经济上是不明智的,所以不应该过多考虑未来的问题而是应该集中力量解决燃眉之急。
- 反馈 :XP认为系统本身及其代码是报告系统开发进度和状态的可靠依据。系统开发状态的反馈可以作为一种确定系统开发进度和决定系统下一步开发方向的手段。
- 勇气:代表了XP认为人是软件开发中最重要的一个方面的观点。在一个软件产品的开发中人的参与贯穿其整个生命周期,是人的勇气来排除困境,让团队把局部的最优抛之脑后,达到更重大的目标。表明了XP对“人让项目取得成功”的基本信任态度。
 
(二)编码标准
- 编程标准使代码更容易阅读和理解,甚至可以保证其中的错误更少。编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
- 代码标准中很重要的一项是如何给包、类、变量、方法等标识符命名,能很好的命名可以让自己的代码立马上升一个档次。Java中的一般的命名规则有:
- 要体现各自的含义
- 包、类、变量用名词
- 方法名用动宾
- 包名全部小写,如:io,awt
 类名第一个字母要大写,如:HelloWorldApp
- 变量名第一个字母要小写,如:userName
- 方法名第一个字母要小写:setName
 
(三)结对编程
结对编程是XP中的重要实践。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等。
结对编程中有两个角色:
- 驾驶员(Driver)是控制键盘输入的人。 
- 领航员(Navigator)起到领航、提醒的作用。 
如何结对编程,为何要结对编程,大家参考一下结对编程和两人合作 ,重点是:
- 驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
- 领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。
- 驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。
- 主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“他/她的代码”,只有“我们的代码”。
- 只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。
(四)版本控制
- XP的集体所有制意味着每个人都对所有的代码负责;这一点,反过来又意味着每个人都可以更改代码的任意部分。结对编程对这一实践贡献良多:借由在不同的结对中工作,所有的程序员都能看到完全的代码。集体所有制的一个主要优势是提升了开发程序的速度,因为一旦代码中出现错误,任何程序员都能修正它。
 这意味着代码要放到一个大家都能方便获取的地方,我们叫代码仓库。这引出另外一个话题叫版本控制(Version Control)。
- git命令上传代码:
$ cd /home/shiyanlou/Code/shiyanlou_cs212
# 修改代码文件
# 添加修改文件
$ git add 所有修改的文件
# 提交到环境中本地代码仓库
$ git commit -m '本次修改的描述'
# push到git.shiyanlou.com,无需输入密码
$ git push
例子:


- 在开源中国项目管理中,添加项目成员,让对方将自己添加到项目中,作为开发者 
  
- 修改他人代码 
- 用 - git init建立库,- git remote add origin+ 项目地址添加对方项目地址并输入- git pull origin master下载工程
  
- 将Complex代码加入三个JUnit单元测试用例 


(五)重构
- 在不改变软件外部行为的基础上,改变软件内部的结构 
- 修改类名:右击类名,选择菜单中的 
 - Refactor->- Rename
- 封装: - Refactor->- Encapsulate Field
- 在IDEA中给Student类产生一个 - toString方法:- Code->- Generate->- toString
 来重命名

代码调试中的问题
- 问题一:在rename时将类名称改为StudentTest,程序中明显看到“xuesheng”没有改成StudentTest,此时应该在“xuesheng”类中再进行右键,rename,改成StudentTest,程序正常。

- 问题二:
 当你的partner在修改你的运程代码库的时候,按照
 git add .->
 git commit -m ""->git pull origin master->git push origin master的顺序提交,不然会报错!
- 问题三:进行重构的实验时,按照老师的博客进行实验,结果不会出现
  
 而是出现

这个问题我不知道如何解决?
代码托管


实验体会
- 重新学习Git的使用方法,更好地进行代码的提交
- 学习了团队合作编写代码时,利用Git共享代码,修改对方代码,更好地进行共同学习,能够相互分享代码,了解自己的partner的优秀之处,共同勉励,取长补短!
统计的PSP(Personal Software Process)时间
| 步骤 | 耗时(min) | 百分比 | 
|---|---|---|
| 需求分析 | 20 | 12.5% | 
| 设计 | 40 | 25% | 
| 代码实现 | 40 | 25% | 
| 测试 | 50 | 31.25% | 
| 分析总结 | 10 | 6.25% | 
20155308 2016-2017-2 《Java程序设计》实验3的更多相关文章
- Java程序设计实验 实验五
		课程:Java程序设计实验 班级:1353 姓名:符余佳源 学号:20135321 成绩: 指导教师:娄嘉鹏 实验日期:2015. ... 
- 南邮JAVA程序设计实验1 综合图形界面程序设计
		南邮JAVA程序设计实验1 综合图形界面程序设计 实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. ... 
- Java程序设计 实验三
		北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指 ... 
- Java程序设计 实验二 Java面向对象程序设计
		北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ... 
- JAVA程序设计 实验一
		北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ... 
- JAVA程序设计 实验一报告
		北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1351 姓名:李畅宇 学号:20135129 成绩: 指导教师:娄嘉鹏 ... 
- Java程序设计 实验五
		实 验 报 告 课程:Java 班级: 1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 实验日期:2015.6. ... 
- 201671010127 2016—2017—2 Java怎样解决Java程序中中文乱码的问题。
		这是本次第二次分享新手在编程中遇到的问题,相信很多Java新手和我一样,在Java编程中会遇到中文乱码的情况,下面我就给大家分享我遇到问题和解决问题的具体过程. 我先用Notepad++写了一个如下的 ... 
- 201671010127 2016—2017—2 Java学习周结
		时间真是个最公平东西,只要能够好好地利用它,它可以为我们带来我们我们所想要的东西.学习Java已经有一周了,对于Java基础知识的认识也更进一步,对Java的兴趣也愈来愈浓.实现一个Java程序,主要 ... 
- java程序设计实验
		建立文件调试jdk idea断点调试 项目素数的寻遍 
随机推荐
- 学习EChart.js(四) 移动端显示
			ECharts.js 移动端显示 现在很多时候,我们是在用手机.pad等一些移动端设备来进行办公获取数据.所以我们的图表很多时候是需要用移动端设置来查看的,而我们的图表有时候因为数据的偏多,会出现遮挡 ... 
- 移动App中常见的Web漏洞
			智能手机的存在让网民的生活从PC端开始往移动端转向,现在网民的日常生活需求基本上一部手机就能解决.外卖,办公,社交,银行转账等等都能通过移动端App实现.那么随之也带来了很多信息安全问题,大量的用户信 ... 
- python操作mysql二
			游标 游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制,游标充当指针的作用,尽管游标能遍历结果中的所有行,但它一次只指向一行,游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行 ... 
- 【1】【MOOC】Python游戏开发入门-北京理工大学【第二部分-游戏开发之框架】
			学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ... 
- 2018-2019-2 网络对抗技术 20165322 Exp5  MSF基础应用
			2018-2019-2 网络对抗技术 20165322 Exp5 MSF基础应用 目录 实验内容与步骤 一个主动攻击实践 MS08-067(失败) ms17_010_psexec(成功且唯一) 一个针 ... 
- 【bbs】login.php
			require的路径 整体结构的复用 渐变效果的加入 按钮:实现背景透明,文字不透明:在background-color中使用rgba,标准浏览器中,背景透明,文字不透明background-colo ... 
- 20145314郑凯杰 《Java程序设计》第10周学习总结
			20145314郑凯杰 <Java程序设计>第10周学习总结 代码托管: 学习内容总结 网络编程 会打手机吗? 第一个问题:会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛 ... 
- HTML data-* 自定义属性
			HTML data-* 自定义属性 data-*是HTML5新添加的全局属性,通过它我们可以自定义属性,就像id,class等属性一样.我们可以使用JavaScript来操作这些属性. <div ... 
- 将本地已经存在的非git项目提交到github上的空仓库
			一.本地项目执行操作 1.在本地项目目录下初始化git仓库 git init 2.将本地项目下工作区的所有文件添加到git版本库的暂存区中 git add . (可以创建.gitignore文件忽略不 ... 
- 传递的值是this,在js里就不用再写$(this)
			<input class="editinput" value="${detail.earlymoneyrmb}" name="earlymone ... 
