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% |