实验内容:
1. XP基础
2. XP核心实践
3. 相关工具
实验仪器:
名称 |
型号 |
数量 |
PC |
surface |
1 |
Git |
1 |
|
IDEA |
1 |
实验步骤:
(一)敏捷开发与XP:
常见的开发流程有:
-
RUP(Rational Unified Process)
-
PSP(Personal Software Process )
-
TSP(Team Software Process )
-
Agile Process
-
……
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。其中,极限编程(eXtreme Programming,XP)是一种全新而快捷的软件开发方法。
-
XP是以开发符合客户需要的软件为目标而产生的一种方法论
-
XP是一种以实践为基础的软件工程过程和思想
-
XP认为代码质量的重要程度超出人们一般所认为的程度
-
XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件
XP软件开发是什么样的通过 XP准则来表达:
-
沟通 :XP认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素。
-
简单 :XP假定未来不能可靠地预测,在现在考虑它从经济上是不明智的,所以不应该过多考虑未来的问题而是应该集中力量解决燃眉之急。
-
反馈 :XP认为系统本身及其代码是报告系统开发进度和状态的可靠依据。系统开发状态的反馈可以作为一种确定系统开发进度和决定系统下一步开发方向的手段。
-
勇气:代表了XP认为人是软件开发中最重要的一个方面的观点。在一个软件产品的开发中人的参与贯穿其整个生命周期,是人的勇气来排除困境,让团队把局部的最优抛之脑后,达到更重大的目标。表明了XP对"人让项目取得成功"的基本信任态度。
一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈、假设简单性、递增更改、提倡更改、优质工作。
XP软件开发的基石是XP的活动,包括:编码、测试、倾听、设计。
(二)编码标准
单击Eclipse菜单中的source->Format 或用快捷键Ctrl+Shift+F就可以按Eclipse规定的规范缩进
Java中的一般的命名规则有:
-
要体现各自的含义
-
包、类、变量用名词
-
方法名用动宾
-
包名全部小写,如:io,awt
-
类名第一个字母要大写,如:HelloWorldApp
-
变量名第一个字母要小写,如:userName
-
方法名第一个字母要小写:setName
-
...
标识符名字应当直观且可以拼读,可望文知意,不必进行"解码",一般采用英文单词或其组合,便于记忆和阅读。
代码标准:七个原则
不要预先花费太多时间
目标应该是团队中没有人辨认各自的代码
以团队为单位对某一标准达成协议,然后遵守这一标准
不是事无巨细的规则列表,而是去本报代码可交流的指导方针
编码标准开始时应该很简单,然后根据团队经验逐步优化
创建能够工作的最简单标准,然后逐步发展
只制定适合本团队的
(三)结对编程
结对编程是XP中的重要实践。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。
驾驶员(Driver)是控制键盘输入的人。
领航员(Navigator)起到领航、提醒的作用。
• 驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
• 领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。
• 驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。
• 主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有"我的代码"、"你的代码"或"他/她的代码",只有"我们的代码"。
• 只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。
(四)版本控制
1、好处
• 版本控制提供项目级的 undo(撤销) 功能: 没有什么事情是终结版本, 任何错误必须很容易回滚。 假设你在使用世界上最复杂的文字处理系统。 它具备了所有的能想到的功能,就是没有支持 DELETE(删除) 键。想象你打字的时候得多么的谨慎和缓慢吧, 特别是一篇超大的文档的快临近末尾的时候, 一个不小心就要重头再来(试想你选中所有的文字, 不小心按了 DELETE 键, 因为没有撤销功能,只好重新录入)。编辑文字和版本控制相同,任何时候都需要回滚,无论是一个小时, 一天, 还是一周, 这让你的团队工作自由快速的工作, 而且对于修正错误也非常自信。
• 版本控制允许多人在同一代码上工作, 只要遵守一定的控制原则就行。 再也不会发生诸如一个人覆盖了另一个人编辑的代码,导致那个人的修改无效这样的情况。
• 版本控制系统保存了过去所作的修改的历史记录。如果你遭遇到一些惊讶的代码,通过版本控制系统可以很容易找出是谁干的, 修改了什么, 修改的时间, 如果幸运的话,还能找出原因。
• 版本控制系统还支持在主线上开发的同时发布多个软件版本。在软件发布的时候也不需要整个团队的停止工作,不需要冻结代码。
• 版本控制也是项目级的时间机器,你可以选择任何一个时间, 精 确地查看项目在当时的情况。 这对研究非常有用, 也是重现以前某个有问题的发布版本的基础。
举例:Hello World.java
(五)重构:
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更.
一个完整的重构流程包括:
1. 从版本控制系统代码库中Check out code
2. 读懂代码(包括测试代码)
3. 发现bad smell
4. Refactoring
5. 运行所有的Unit Tests
6. 往代码库中Check in code
实验运行截图
1.安装git完成
2.配置公钥
3.利用git建立链接并上传代码
4.修改队友20145301的代码
5.重构
实验中出现的问题:
求助:在这一步(给队友修改代码后提交)中为什么提交者显示为“你的用户名”而不是“xxy745214935”,并且任何浏览我的码云空间的人看到的显示都是这个“你的用户名”?
我在git提交代码的每一步要求填写用户名的地方都填的是“xxy745214935”,不应该出错吧?
或者和我改过用户名有关?我之前叫xxy_20145316后来改成了xxy745214935。
总结与体会:
在这次试验中遇到的问题有:
1.在进行git实验的时候,空格容易漏掉,出现错误,反复对照老师的截图后找到问题所在,修改成功;
2.整个实验来看,对于git命令操作不熟悉,有关命令不知道该怎么运用。在结对实验中通过对helloworld代码的编辑,对java语言有了进一步的了解和认识。体会到java语言的广泛应用性。
PSP时间:
步骤 |
耗时 |
百分比 |
需求分析 |
30min |
10 |
设计 |
60min |
20 |
代码实现 |
150min |
50 |
测试 |
45min |
15 |
分析总结 |
15min |
5 |
结对伙伴:20145301赵嘉鑫
博客地址:http://www.cnblogs.com/5301z/